Librairie utiliter > Fichier prntrm.f |
SUBROUTINE PRNTRM (NMTERM,NVTERM,THETRM,NCATRM)
Auteur : D.Martin (Janvier 1998) Derniere modification : D.Martin (21 Janvier 1999) Version 1.0.0 Codage des nom et niveau d'un terme sous la forme (NMTERM,NVTERM) Exemple : Si NMTERM='TOTO', NVTERM=10 et LEN(THETRM) > 8 la procedure retourne THETRM='(TOTO,10)' et NCATRM=9 -- Arguments d'entree -- NMTERM nom du terme NVTERM niveau du terme -- Argument de sortie -- THETRM chaine de caractere contenant (NOM,NIVEAU) NCATRM longueur de la chaine contenant (NOM,NIVEAU) -- Procedures utilisees -- ENCLER (utilite)
IMPLICIT NONE CHARACTER*(*) NMTERM,THETRM INTEGER NVTERM,NCATRM INTEGER NCHTRM,NCHDIS,NBCARN,NVTERA,DIXN
NCHDIS=LEN (THETRM) NCHTRM=LEN (NMTERM) THETRM(1:MIN(NCHTRM,NCHDIS))=NMTERM NCATRM=NCHDIS NVTERA=ABS (NVTERM) DIXN=10 DO 10 NBCARN=1,9 IF (NVTERA.LT.DIXN) GOTO 11 DIXN=10*DIXN 10 CONTINUE 11 IF (NVTERM.LT.0) NBCARN=NBCARN+1 IF (NCHDIS.GE.2+NCHTRM) THEN THETRM(1:2+NCHTRM)='('//NMTERM(1:NCHTRM)//',' NCATRM=NCHTRM+2 IF (NCHDIS.GE.NCHTRM+2+NBCARN) THEN CALL ENCLER (NVTERM,THETRM(NCHTRM+3:NCHTRM+2+NBCARN)) NCATRM=NCATRM+NBCARN IF (NCHDIS.GE.NCHTRM+3+NBCARN) THEN THETRM(NCHTRM+3+NBCARN:NCHTRM+3+NBCARN)=')' NCATRM=NCATRM+1 ENDIF ENDIF ENDIF END !PrnTrm