C SIGNE SOURCE CHAT 05/01/13 03:18:04 5004 SUBROUTINE SIGNE ************************************************************************ * * S I G N E * --------- * * SOUS-PROGRAMME ASSOCIE A L'OPERATEUR "SIGNE" * * FONCTION: * --------- * * DONNER LE SIGNE D'UN NOMBRE. * * PHRASE D'APPEL (EN GIBIANE): * ---------------------------- * * | (ENTIER) | * II = SIGNE | | AA ; * | FLOTTANT | * * LES PARENTHESES INDIQUANT UN OPERANDE FACULTATIF. * * OPERANDES ET RESULTATS: * ----------------------- * * AA 'FLOTTANT' ) NOMBRE DONT ON CHERCHE LE SIGNE. * OU 'ENTIER ' ) * ENTIER 'MOT ' MOT-CLE INDIQUANT QUE LE RESULTAT "II" SERA * DE TYPE 'ENTIER'. * FLOTTANT 'MOT ' MOT-CLE INDIQUANT QUE LE RESULTAT "II" SERA * DE TYPE 'FLOTTANT'. * II NOMBRE EGAL A +1 OU -1. * TYPE 'ENTIER' PAR DEFAUT. * * SOUS-PROGRAMMES APPELES: * ------------------------ * * LIRE, LIRTYP, ECRIRE. * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 19 FEVRIER 1985 * * LANGAGE: * -------- * * FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS * ************************************************************************ * IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO * PARAMETER (NBTYPE = 2) * * REAL*8 RSIGNE CHARACTER*(8) CTYP * REAL*8 REELDP CHARACTER*(8) CMOT * * * LECTURE DU TYPE DU RESULTAT: ICODE = 0 CALL LIRCHA (CMOT,ICODE,LUMOT) IF(LUMOT.EQ.0) CMOT ='ENTIER' IF (LUMOT.NE.0 ) THEN IF(CMOT.NE.'ENTIER '.AND.CMOT.NE.'FLOTTANT') THEN CALL REFUS ENDIF ENDIF * * LECTURE DU NOMBRE: CALL QUETYP(CTYP,0,IRETOU) IF(IRETOU.EQ.0) THEN CALL ERREUR ( 533) RETURN ENDIF IF(CTYP.NE.'ENTIER '.AND.CTYP.NE.'FLOTTANT') CALL ERREUR(15) IF (IERR .NE. 0) RETURN ISIGNE=1 IF(CTYP.EQ.'ENTIER ') THEN CALL LIRENT(IENT,1,IRETOU) IF(IENT.LT.0) ISIGNE=-1 ELSE CALL LIRREE(REELDP,1,IRETOU) IF(REELDP.LT.0D0) ISIGNE=-1 ENDIF * IF (CMOT.EQ.'ENTIER ') THEN CALL ECRENT (ISIGNE) ELSE RSIGNE=ISIGNE CALL ECRREE (RSIGNE) END IF * END