6 ¿é¤J©M¿é¥X

6.1 ®æ¦¡¤Æ¿é¥X

FORTRAN ¦³¤GºØ¿é¥X±Ô­z¡APRINT ©M WRITE¡C PRINT ¬O¸û²³æªº¡A¨ä§Î¦¡¦p¤U

       PRINT format-specifier, output-list

¨ä¤¤ format-specifier (®æ¦¡³W©w¦¡) ¬°¤U¦C¤TºØ¤§¤@

  1. *
  2. ¦r¤¸±`¼Æ©ÎÅܼơA¨ä­È³W©w¤F¿é¥X®æ¦¡
  3. FORMAT ±Ô­zªº¼Ð°O

¨Ò¦p

  1.        PRINT *, NUMBER, TEMP
    
  2.        PRINT '(1X, I5, F8.2)', NUMBER, TEMP
    
  3.        PRINT 20, NUMBER, TEMP
        20 FORMAT(1X, I5, F8.2)
    

±±¨î¦r¤¸

¦hºØ­pºâ¾÷¨t²Î¡A±Ä¥Î¿é¥X¨ì¦L¦r¾÷¨C¤@¦Cªº²Ä¤@­Ó¦r¤¸¡A°µ¬°¾÷¬[(carriage)±±¨î¤§¥Î¡C ³o²Ä¤@­Ó¦r¤¸¨Ã¤£¦L¥X¡A¦Ó¬O¥Î¥H±±¨î¦L¦r¯Èªº²¾°Ê¡C ¼Ð·Ç±±¨î¦r¤¸¤Î¨ä®ÄªG¡A¦p¤Uªí

±±¨î¦r¤¸ ²£¥Íªº®ÄªG ¨Ï¥Îªº®æ¦¡
ªÅ¥Õ ¥¿±`¶¡¹j¡F¦L¦r«e²¾¨ì¤U¤@¦C¡C 1X ©Î ' '
0 Âù¦æ¶¡¡F¦L¦r«eªÅ¸õ¤@¦C 1H0 ©Î '0'
1 ¦L¦r«e²¾¨ì¤U¤@­¶³»¡C 1H1©Î '1'
+ Å|¦L¥Ø«e³o¤@¦C¡C 1H+©Î '+'

®æ¦¡´y­z¦¡(descriptor)

¸ê®Æ«¬¦¡ ´y­z¦¡ ¨Ò¤l
INTEGER rIw ©Î rIw.m I5, 2I5, 3I5.2
REAL rFw.d 3F10.2
REAL rEw.d ©Î rEw.dEe 2E15.5
DOUBLE rDw.d 2D20.6
LOGICAL rLw 2L5
CHARACTER rA ©Î rAw 3A, A5
CHARACTER 'x ... x' ©Î nHx ... x  'ab', 2Hab
¦ì¸m nX 3X
¦ì¸m Tc T16
ªÅ¦C / ///

ªí¤¤

6.2 ¨ÒÃD

¨Ï¥Î®æ¦¡´y­z¦¡¡A¤ñ¨Ï¥Î list-directed §ó®e©ö±±¨î¿é¥X®æ¦¡¡A¤×¨ä¬Oªí®æªº¿é¥X¡C ¥»¨ÒÃD TABLE (source) §Y¬O¨Ï¥Î®æ¦¡´y­z¦¡³B²zªí®æªº¿é¥X¡AŪ¤J¤@¾ã¼Æ LAST¡A¦bªí®æ¤¤¦C¥X¥Ñ 1 ¨ì LAST ªº¥­¤è¡B¥ß¤è¡B©M¥­¤è®Ú¡C

6.3 ®æ¦¡¤Æ¿é¤J

FORTRAN ªº¿é¤J±Ô­z¬° READ ±Ô­z¡C READ¦³¤GºØ§Î¦¡¡A¸û²³æªº§Î¦¡¦p¤U

       READ format-specifier, input-list

¨ä¤¤ format-specifier ¬°¤U¦C¤TºØ¤§¤@

  1. *
  2. ¦r¤¸±`¼Æ©ÎÅܼơA¨ä­È³W©w¤F¿é¤J®æ¦¡
  3. FORMAT ±Ô­zªº¼Ð°O

¨Ò¦p

  1.        READ *, NUMBER, TEMP
    
  2.        READ '(1X, I5, F8.2)', NUMBER, TEMP
    
  3.        READ 20, NUMBER, TEMP
        20 FORMAT(1X, I5, F8.2)
    

6.4 WRITE ©M ¥t¤@ºØ READ ±Ô­z

WRITE ±Ô­zªº§Î¦¡¸û½ÆÂø¡A¦ý¬O¾A¥Î½d³ò¸û¼s¡A¨ä§Î¦¡¦p¤U

       WRITE (control-list) output-list

¨ä¤¤ control-list ªº¦¨¤À¡A¬°¤U¦C¤TºØ¤§¤@

  1. ³æ¦ì³W©w¦¡¡A³W©w¿é¥X¸Ë¸m
  2. ®æ¦¡³W©w¦¡¡A¨ä­È³W©w¤F¿é¥X®æ¦¡
  3. ¨ä¥LÀɮ׳B²z­n¥Î¨ìªº¶µ¥Ø

¨Ò¦p

  1.        WRITE ( 6, * ) A, B
    
  2.        WRITE ( UNIT=6, FMT=* ) A, B
    
  3.        WRITE ( UNIT=6, FMT='(1X, 2F5.2)' ) A, B
    
  4.        WRITE ( UNIT=6, FMT= 100) A, B
    100    FORMAT (1X, 2F5.2)
    

¾A¥Î½d³ò¸û¼sªº READ ±Ô­z¡A¨ä§Î¦¡¦p¤U

       READ (control-list) input-list

¨ä¤¤ control-list ªº¦¨¤À¡A¬°¤U¦C¥|ºØ¤§¤@

  1. ³æ¦ì³W©w¦¡¡A³W©w¿é¤J¸Ë¸m
  2. ®æ¦¡³W©w¦¡¡A¨ä­È³W©w¤F¿é¤J®æ¦¡
  3. IOSTAT = ©Î END =
  4. ¨ä¥LÀɮ׳B²z­n¥Î¨ìªº¶µ¥Ø

¨Ò¦p

  1.        READ ( 5, * ) A, B
    
  2.        READ ( UNIT=5, FMT=* ) A, B
    
  3.        READ ( UNIT=5, FMT='(2F5.2)' ) A, B
    
  4.        READ ( UNIT=5, FMT= 100) A, B
    100    FORMAT (2F5.2)
    
¨ÒÃD: TABLE -- version 2 (source)

6.5 Àɮ׳B²z²¤¶

¥Ø«e¬°¤î¡A©Ò´£¤Îªº¿é¤J©M¿é¥X¡A³£¬O¹w³]¸ê®Æ¬O¥Ñ¼Ð·Ç¸Ë¸m¿é¤J©Î¿é¥Xªº¡C °²¦p¸ê®Æ¶q¤p¡A³q±`³o¬O°÷ªº¡C µM¦Ó¯A¤Î¤j¶q¸ê®ÆªºÀ³¥Î¡A¨Ï¥ÎÀx¦s¦bÀɮתº¸ê®Æ¡A ¦b³B²z¤W§ó¥[¤è«K¡C ¦bÀɮפ¤¨C¤@¦C¸ê®ÆºÙ¬°°O¿ý (record)¡C

¶}ÀÉ

¦b¨Ï¥ÎÀɮ׿é¤J©Î¿é¥X¤§«e¡AÀÉ®×¥²¶·¥ý¼Ð©ú©Ò¥Îªº³æ¦ì³W©w¦¡¸¹½X¡C ³o´N­n¥Î OPEN ±Ô­z¡A¨ä§Î¦¡¬°

       OPEN ( open-list )

¨ä¤¤ open-list ¥]¬A

  1. ³æ¦ì³W©w¦¡
  2. FILE = ¤l¥y¡A¦C¥XÀɮצWºÙ
  3. STATUS =¤l¥y¡A³W©wÀɮתº·s¡C

³¬ÀÉ

CLOSE ±Ô­zªº¥\¥Î©M OPEN ¬Û¤Ï¡A§Y¥´Â_ÀɮשM¥¦ªº³æ¦ì¸¹½XªºÃö³s¡A¨ä§Î¦¡¬°

       CLOSE ( open-list )

¨ä¤¤ open-list ¥²¶·¥]¬A³æ¦ì¸¹½X¡C

Àɮתº¿é¤J©M¿é¥X

¤@¥¹Àɮ׳s¨ì³æ¦ì¸¹½X¤§«á¡A§Y¥i¨Ï¥Î¤@¯ëªº READ ©Î WRITE ±Ô­z¡C

¨Ò¦p

       OPEN ( UNIT = 12, FILE = 'INFO', STATUS = 'OLD')
       READ ( 12, * ) CODE, TEMP, PRESS

IOSTAT = ¤l¥y

¥Î¥H°»ª¾ÀɧÀª¬ªp©Î¿é¤J¿ù»~¡A¨ä§Î¦¡¬°

      IOSTAT = status-var

status-var ªº¼Æ­È¬°

  1. ¥¿¡A°²¦pµo¥Í¿ù»~¡C
  2. ­t¡A°²¦p¸I¨ì¸ê®Æ¥½§À¦Ó¥¼µo¥Í¿ù»~¡C
  3. ¹s¡A°²¦p¥¼µo¥Í¿ù»~¡A¤]¥¼¸I¨ì¸ê®Æ¥½§À¡C

¨Ò¦p


       READ (12, *, IOSTAT = EOF) CODE, TEMP, PRESS
10     IF (EOF .GE. 0) THEN
           COUNT = COUNT + 1
                 .
                 .
                 .
           SUMP = SUMP + PRESS
           READ (12, *, IOSTAT = EOF) CODE, TEMP, PRESS
       GO TO 10
       END IF

END = ¤l¥y

¥Î¥H°»ª¾ÀɧÀª¬ªp¡A¨ä§Î¦¡¬°

      END = statement-no

statement-no ¬°¸I¨ìÀɧÀª¬ªp®É¡A©Ò­n°õ¦æªº±Ô­z¼Ð°O¡C

¨Ò¦p

10     CONTINUE
           READ (12, *, END = 20) CODE, TEMP, PRESS
           COUNT = COUNT + 1
                 .
                 .
                 .
           SUMP = SUMP + PRESS
       GO TO 10
20     CONTINUE

Àɮשw¦ì±Ô­z

­n±NÀÉ®×°h¦^¨ì°_©lÂI(²Ä¤@­Ó°O¿ýªº°_ÀY)¡A¥Î

       REWIND unit

­n±NÀÉ®×°h¦^¨ì«e¤@­Ó°O¿ýªº°_ÀY¡A¥Î

       BACKSPACE unit

unit ¬OÀɮתº³æ¦ì¸¹½X¡C

6.6 ¨ÒÃD: Time, Temperature, Pressure and Volume Readings

  1. TEMVOL (source)
    Ū¤J¼Æ²Õ·Å«×©M®e¿nªº¼Æ­È¡A¦C¦¨ªí®æ¡A¨Ã¦C¥Xªñ¦ü¤½¦¡¡C
    ¸ê®Æ¦bÀÉ®× FIL6-3.DAT¡A¦U¶µ¸ê®Æ©Ò¦b¦ì¸m:
        ®Éè© 1-4¡A·Å«× 5-8¡AÀ£¤O 9-12¡A©M®e¿n 13-16
    

  2. TEMVOL (Run-Time Formatting version) (source)
    ®æ¦¡³W©w¦¡¤]¥i¥H¬O¦r¤¸°}¦¡¡A¤£¹L³¯¦¡­È¥²¶·¬O¤@®æ¦¡´y­z¦¡¦ê¦C¡C ¨Ò¦p¡A
           CHARACTER*40 FORM
           . . .
           FORM = '(1X, F8.1, F12.1)'
           PRINT FORM, TEMP, VOLUME
    

    ¥»¨Ò¨Ï¥Î¨â­Ó¸ê®ÆÀɮסA»¡©ú¦¹¥Îªk:

    1. ÀÉ®× FIL6-4A.DAT¡A®æ¦¡©M FIL6-3 ¤@¼Ë¡C
      ®æ¦¡³W©w¥Î (4X, F4.1, T13, F4.1)
    2. ÀÉ®× FIL6-4B.DAT¡A¼Æ­È¬Û¦P¡A¦ý®æ¦¡¤£¦P¡C
      ®æ¦¡³W©w¥Î (/F5.0, X5, F6.0)