Question

Avant de commencer, je dois préfacer en disant que je suis un novice en matière de FORTRAN. Je suis maintenant un morceau de l'héritage de code à partir de 1978. Son but est de lire dans certaines valeurs de données à partir d'un fichier, les valeurs processus, puis sortie les valeurs traitées à un autre fichier texte.

Vu le code FORTRAN suivant:

      INTEGER NM,STUBS,I,J,K
      PARAMETER (NM=67,STUBS=43)
      INTEGER*4 MDS(STUBS,NM)

      CALL OPEN$A(A$RDWR,'/home/test/data.txt', MAXPATHLEN,1)
      CALL OPEN$A(A$WRIT,'out',11,2)

      DO 90 I=1,2
          READ(1,82) STUB     
          !-- data processing --!     
          WRITE(2,80) STUB,(MDS(I,J),J=1,24)
90    CONTINUE

80    FORMAT(/1X,A24,25I5)
82    FORMAT(1X,A24,25F5,1)

Ma question est en ce qui concerne la déclaration de WRITE().

Je comprends que (2,80) fait référence au flux de sortie de fichier ouvert et pointant vers le fichier 'out' et référencé par le 2. Je comprends que le chiffre 80 fait référence à la déclaration de format référencé par l'étiquette 80.

STUB est utilisé pour stocker les valeurs lues dans le fichier d'entrée 1. Ces valeurs sont ce qui est traité et enregistré dans MDS(I,J) dans la section !-- data processing --! que j'ai omis.

Ai-je raison de supposer que (MDS(I,J),J=1,24) rédigera 24 valeurs entières dans le fichier de sortie? En d'autres termes, en boucle 1-24?

Était-ce utile?

La solution

Oui, vous avez raison. La syntaxe (MDS(I,J), J=1,24) est un « implicite DO- boucle » et est couramment utilisé dans des situations comme ça.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top