2023年12月13日发(作者:)

Fortran输入输出格式控制

Open, Read and Write in Fortran

1:write(*,*)"string";write(unit=*,FMT=*)"string";write(unit=6,FMT=*)"string"。以上等价,6是默认输出位置,即屏幕。

2:print*,"string"。Print只能对屏幕输出。

3:integer(kind=4) a !f90;integer*4 a !f77;integer(4) a !f77。以上等价。

real(kind=4) a !f90;real*4 a !f77;real(4) a !f77。以上等价。

4:f77,变量名长度1~6;f90,变量名长度1~31。

5:read(*,*)"string";write(unit=*,FMT=*)"string";write(unit=5,FMT=*)"string"。以上等价,5是默认输入位置,即键盘。

6:FORMAT

(202.118.74.226/fortran/pages/)

6.1 格式输出

格式输出语句由两部分组成:输出语句和输出格式语句。输出语句的一般形式为:

WRITE(*,L) 输出表列或:PRINT L 输出表列

其中:* 代表隐含的输出设备,L 指输出格式语句的标号。

输出格式语句的一般形式:

L FORMAT(1X,S)其中:L 输出格式语句的标号,1X 纵向走纸符,S 输出格式,用不同的―格式编辑符‖(简称―编辑符‖)来实现指定的输出格

式,各格式间用逗号相隔。

FORMAT语句又叫―格式语句‖,是一个非执行语句,本身不产生任何操作,只是提供输入或输出的格式。FORMAT语句可以

出现在程序的任何地方(但必须在PROGRAM语句之后和END语句之前,如果在子程序中用FORMAT语句,则应在子程序定

义语句之后)。系统按WRITE语句或PRINT语句中指定的语句标号找到相应的FORMAT语句,并按FORMAT语句所规定的格

式对数据进行输出。注意,PRINT语句中不能再用―*‖,PRINT语句中的第一个标识符是语句标号而不是要打印输出的数据。

输出格式分两类基本格式

6.1.1 I格式(又叫整数格式)

一般形式:Iw 或:Iw.m

其中:w 一个数据占的位数宽度(又称―字段宽度‖),m 需要输出的最少数字位数。例1:

WRITE (*,100)M,N

100 FORMAT(1X,I4,I4)

如果M=40,N=-12,则输出如下:

40 ?-12

例2:

WRITE (* , 100) I,J,K

100 FORMAT(1X,I5.3,I6.3,I4)

若I=1234,J=-24,K=24689 则输出为:

1234 -24 ****

(1)数字在指定的区域内向右端靠齐,如果数字位数比指定的字段宽度w小,则左边补以空格。负数的符号也包含在字段宽

度内。

(2)如果数字位数超过了规定的字段宽度w,则不输出有效数据,而在该字段宽度范围内充满―*‖符号。

(3)如果数字位数超过了m,则按实际应输出的位数输出(但条件是不能超过w)。m不包括负号所占的一列。

6.1.2 F格式(又叫小数型格式)

一般形式:Fw.d

w 各数值占的总位数d 输出数据的小数位数(小数点后的位数)。例1:WRITE(*,100)A,B,C

100 FORMAT(1X,F10.2,F9.3,F8.4)

若A=1234.56,B=3456.78,C=234.56789 则输出:

1234.56 ?3456.780 234.5679

例2:WRITE (* , 100) X,Y

100 FORMAT(1X,F10.4,F10.2)

若X=24680135.7, Y=0.0012345,则输出为:

********** .00

(1)数字在指定区域内向右端靠齐,如果数字位数(含小数点和符号位)比指定的字段宽度w小,则左边补以空格;如果数

字的位数超过了规定的字段宽度w,则不输出有效数据,而在该字段宽度范围内充满―*‖符号。

(2)如果数据的小数位数比指定的小数位数d小,则在小数右边补0以凑足d位;如果小数位数大于d位,则输出时多于的小数

位数按―四舍五入‖规则舍去。

(3)假设b为数据整数部分的位数,则应使w≥b+d+1(小数点占一列),如果输出负数,则应保证w≥b+d+2(小数点和负号各占

一列)。(4)用F格式输出时应注意,由于难以事先确切估计出数据的大小,输出大的数时容易产生―宽度不够‖的错误(由于w不够

大),输出小的数时会出现丢掉有用数字的情况(由于d不够大而将后面的数字截去),这就是―大数印错,小数印丢‖。

6.1.3 E格式(又叫指数型格式)

一般形式:w.d

w 各数值占的总位数,d 输出数据的小数位数(小数点后的位数)。例1:WRITE (*,100)X,Y

100 FORMAT(1X,E12.4,E12.5 )

如:X=3.17 Y=1234.56 则输出结果为:

0.3170E+01 ?0.12346E+04。

(1)采取标准化的指数形式输出一个实数,d为以指数形式出现的数据的数字部分的小数位数。

(2)指数部分一般占4列,其中字母―E‖和指数的符号各占一列,指数2列。小数部分d列,再加上一个小数点和小数点前的

一个―0‖,因此要保证w≥d+6,输出负数时,w≥d+7。

(3)有的计算机系统允许有较大的实数范围,FORTRAN77提供了一种扩充的编辑符,可以输出三位或四位指数。这种编辑

符的形式为:,用e指定指数的位数。有的计算机系统的FORTRAN编译系统已根据其允许的实数范围,自动将指数的

位数改为3位或4位,不必在RORMAT语句中用编辑符单独为某些数据指定所需的指数位数,只需写Ew.d形式即可,

输出时系统会给出三位(或四位)指数。

6.1.4 G格式

G格式可以根据输出的实数大小决定用小数形式(F格式)输出或指数形式(E 格式)输出。当输出大数值或小数值时自动按E

格式,当输出的数不大不小时用F格式。其一般形式为:Gw.d

(1)凡绝对值小于0.1的数或绝对值大于10d的数用E格式输出;其余的数用F格式输出。

(2)用E格式输出时,最后4列为指数部分,而用F格式输出时最后4列留空。

(3)用指数形式输出时,格式同Ew.d;用F格式输出时,不是按Fw.d形式输出,d规定的不是小数位数而是打印出来的全部

数字的位数,小数位数根据数值大小和d的大小而定,这样做的目的是使数的整数部分能全部保留,而适当截去小数部分,以

保证输出数值的正确性。因为小于10d的数,其整数部分最多为d位,因此,可以全部输出这d位整数,小数的位数为:d-(数值

整数位数)。

6.1.5 D格式

一般形式:Dw.a

用于双精度数据的输出,使用方法与E格式相仿,只是把字母―E‖换成―D‖。

6.1.6L格式

一般形式:Lw

用于逻辑型数据的输出,w 输出数据的字段宽度。逻辑值―.TRUE.",在输出时打印一个字母T;逻辑值".FLASE.",在输出时

打印一个字母F。T和F打印在字段范围内的最右端。

6.1.7 A格式

一般形式:Aw 或:A

用于字符型数据的输出,w为字段宽度,不指定w时(即形式:A),按字符变量的实际长度(即程序定义该变量时的长度)

输出。

字符串在指定的区域内向右端靠齐,如果字符串的位数比指定的字段宽度w 小,则左边补以空格;如果字符串的位数超过了规

定的字段宽度w,则只输出最左面的w个字符。

6.1.8 ?(撇号)格式

用来插入所需的字符串,例如:

WRITE(*,100) I,J100 FORMAT(1X,'I=',I3,'J=',I4)

如果I=123,J=2347,则输出:

I=123J=2347

如果需要输出的字符包括撇号,则用两个连续的撇号代表一个被输出的撇号字符。例如:

CHARACTER *10 STUD

READ * STUD

WRITE(*,10) STUD

10 FORMAT(1X,A,'IS LI''S STUDENT.')

END

如果输入给STUD的值为?ZHANG SUN‘,则输出为:

ZHANG SUN IS LI'S STUDENT.

6.1.9 H格式

一般形式:nH <字符串>

用来输出字符常量,与撇号格式相似。n为字符串中字符的个数。如上面的例子(I=123,J=2347),可改写为:

WRITE(*,100) I,J

100 FORMAT(1X,2HI=,I3,2HJ=,I4)

则输出与上例相同:

I=123J=2347

可以单独用撇号格式或H格式输出字符串而不必要求WRITE语句中有相应的输出项。如:

WRITE(*,100)

100 FORMAT(1X,'ZHANG SUN IS LI''S STUDENT.')

或:100 FORMAT(1X,26HZHANG SUN IS LI'S STUDENT.)

用H格式必须准确地数出字符串中的字符个数,数错了就会造成错误。所以最好不用H编辑符而用撇号编辑符,后者不必数字

符,使用方便,字符串界线清楚无误。FORTRAN 77之所以保留H编辑符主要是为了与FORTRAN 66兼容(FORTRAN 66只

能用H编辑符输出字符串而没有撇号编辑符)。

6.1.10 X格式

一般形式:nX

用于输出空格,n 输出的空格数目。即插入n个空格,或者说,使打印的―当前位置‖向右移动n列。例:

WRITE(*,100)I,A,B

100 FORMAT(1X,I3,2X,F6.2,2X,E11.5)

当I=146,A=124.32,B=1247.32时,输出为:

146 124.32 0.12473E+04

如果不用X格式插入空格,数据将连成一片,难以区分开。

注意:不要把2X作为与A对应的格式符,WRITE语句中的I,A,B分别与FORMAT语句中的I3,F6.2和E11.5格式符对应。X

格式符不能用来提供整数、实数、以及其它类型数据的输出格式,它只能插入若干个空格。

FORTRAN 77还允许n是负整数,表示从当前位置向左移动n的绝对值列。微机上使用的FORTRAN子集不能使用n为负值的格

式符。6.1.11 /(斜杠)格式

斜杠(/)编辑符的作用是:结束本记录的输出并开始下一个记录的输出。例如:

WRITE(*,100)I,A,J,B

100 FORMAT(1X,I3,F6.1/1X,I3,F6.1)

若I=246,A=12.36,J=35,B=173.5,输出结果为:

246 12.4

35 173.5

一个WRITE语句输出打印了二行信息,这是由于FORMAT语句中有一斜杠,使之产生两个输出记录(注意,斜杠之后也有一

个―1X‖,使第二个记录的第一个字符为―空格‖,作为纵向走纸符)。

如果有两个连续的斜杠,如:

100 FORMAT(1X,I3,F6.1//1X,I3,F6.1)

输出完第一行后,空一行,再输出第二行。即:

246 12.4

(空一行)

35 173.5

如果在编辑符的最后出现斜杠,如:

100 FORMAT(1X,I3,F6.1/1X,I3,F6.1/)

输出完第二个记录后,再输出一个空行。即:

246 12.4

35 173.5

(空一行)

6.1.12 重复系数

重复使用的编辑符可以在其前加一个重复系数,其形式为:rIw,rFw.d,rEw.d,rGw.d,rAw,rLw等,r为重复系数。以下两

个FORMAT语句等价:

100 FORMAT(1X,I3,I3,F10.2,F10.2,F10.2)

100 FORMAT(1X,2I3,3F10.2)

如果有以下FORMAT语句:

150 FORMAT(1X,I4,2X,F10.2,2X,I4,2X,F10.2,2X)

其中下划线的二组编辑符是相同的,可以只写一次而用重复系数使之重复使用:150 FORMAT(1X,2(I4,2X,F10.2,2X))

6.1.13 纵向走纸控制

如果需要本行的输出是换一行从头开始打印的话,就应该在本行的开头设置一个空格。―1X‖的本来意义是产生一个空格,但

按规定,将输出记录的第一个字符作为纵向走纸控制之用,它产生的动作是―走纸一行‖。因此,FORMAT语句中的第一项

―1X‖的作用是―纵向走纸控制‖。

(1)打印输出一行后不会自动换行,―打印的当前位置‖(即指针)停在本行输出的最后一个字符后面。

(2)只要输出记录的第一个字符是空格,就可使走纸一行。因此也可以不采用―1X‖而用? ‘(即空格)也可达到同样的目

的。

(3)如果不预先在输出记录的第一个字符处设一空格,则系统会将输出的第一个字符作为走纸控制符,从而使本来想打印的

内容缺少了一个字符。(4)如果走纸控制符为―+‖表示不换行,在本行睛再叠印一行新的内容。

6.1.14 WRITE语句与FORMAT语句的相互作用

输出记录的内容是同WRITE语句和FORMAT语句共同决定的。WRITE语句提供变量值,FORMAT语句提供字符串、空格、以

及数据输出的格式。FORMAT 语句中括弧内的内容称为―格式说明‖。对这两个语句相互关系说明如下:(1)WRITE语句中

的变量个数与FORMAT语句中的I,F,E,G,D,L,A编辑符的个数可以相等也可以不等。如果变量个数少于上述编辑符个

数,则多余的编辑符不起作用。(注意,上述编辑符不包括X编辑符、H编辑符、撇号编辑符,下同)。

在执行格式控制时,对WRITE语句的变量表列和FORMAT语句中的格式说明同时扫描,一一对应。当变量表列结束,而

FORMAT语句扫描到一个上述的编辑符,则扫描继续下去,直到遇到非X、非H、非撇号编辑符为止。

(2)如果变量个数多于格式说明中的编辑符个数,即WRITE语句中的变量

表列中还有未输出的元素,而格式说明中编辑符已用完,则重新使用该格式说明,但产生一个新记录。

(3)如果在格式说明中包含有重复使用的编辑符组,则当格式说明用完后再重新使用时,只有最右面的一个编辑符组(包括

其重复系数)和它右面的编辑符被重复使用。

(4)如果有输出量,但格式说明中无相应的编辑符,则输出永不停止。因此,如果WRITE语句中有一个或一个以上的输出变

量的话,则格式说明中至少应该有一个非X、非H(或撇号)的相应的编辑符。

(5)在扫描过程中,格式说明中的各编辑符(指I,F,E,G,A,L)都要有相应的变量才能组织输出,而X、H、撇号、斜

杠等编辑符不需要有相应的输出变量而直接进行输出。

(6)可以有―空格式说明‖,如FORMAT(),用来输出一个空行。此时WRITE 语句中不应有任何输出量。

(7)遇格式说明的右括号(即最后面一外括号)或斜杠―/‖时,结束本记录的输出,但不意味停止全部输出。只要输出表列

中还有未输出的量,将重复使用格式说明或按斜杠右面的格式说明组织输出。

右括号的作用与斜杠有一点不同:当扫描到右括弧而输出表列中已无输出变量时,输出即告结束。而斜杠只表示结束本行输

出,即使此时已列输出变量要输出,输出并未停止,它会重新开始一个新记录,直到遇到右括号或非X、H、撇号编辑符为

止。

(8)FORMAT语句可以与WRITE语句相邻,也可以放在程序任何地方(在PROGRAM语句或子程序语句之后,END语句之

前),习惯上将程序中全部FORMAT语句集中放在最前或最后,并给FORMAT语句以较大的标号(一般执行语句E和小标

号,FORMAT语句用大标号,如100以上或者说1000以上),以使程序清晰。

(9)用表控格式输出时,在WRITE语句中的输出项中可包含字符串,但如果在输出时用到FORMAT语句,则WRITE语句中

不能再包含输出的字符串。格式输出时,如需输出字符串,应在格式说明中设置。

7:OPEN语句(/doc/ /s/blog_)

OPEN语句用于把设备号与文件名连接起来,并且对文件的各项性质进行指定。它的一般形式为:

OPEN([UNIT=]unit[,ACCESS=access][,ACTION=action][,BLANK=blanks][,BLOC KSIZE=blocksize]

[,CARRIAGECONTROL=carriagecontrol][,DELIM=delim][,ERR =err][,FILE=file][,FORM=form][,IOFOCUS=iofocus]

[,IOSTAT=iostat][,PAD=pad][, POSITION=position][,RECL=recl][,SHARE=share][,STATUS=status])

其中的各项参数的意义及取值如下:

1) UNIT:设备号说明。unit是大于或等于0的正整数,设备号说明是OPEN语句的第—项时可以省略―UNIT=‖。

2) ACCESS:存取方式说明。access是字符串表达式:

APPEND 追加方式

SEQUENTIAL 顺序访问方式

DIRECT 直接访问方式

当省略此说明项时为顺序访问方式。

3) ACTION:描述文件的读写属性。action是字符串表达式:

READ 文件为只读方式打开

WRITE 文件为只写方式打开READWRITE 文件为可读写方式打开

当省略此说明项时,文件打开顺序:READWRITE->READ->WRITE。

4) BLANK:说明数据格式输入字段中空格的含义。blank是字符串表达式:NULL 空格忽略不计,相当于在格式描述符中的

BN编辑符

ZERO 空格处理成数字0,相当于BZ编辑符

当省略此说明项时为ZERO。此说明只能用于格式输入。

5) BLOCKSIZE:指定以字节为单位的设备缓存的大小,默认值为一4字节整数。

6) CARRIAGECONTROL:指明处理文件中的第一个字符的方式,其值为字符串表达式:

Fortran 对第一个字符作一般的Fortran解释

LIST 指出在文件的每两个记录之间有—个空格

默认状态下,对于连接到打印机和显示器这样的设备,设置值为Fortran,对于连接到文件的设备,设置值为LIST。当FORM

被设成UNFORMATTED和BINARY时,其值被忽略。

7) DELIM:指明分隔直接列表或格式化名称列表记录的方式,其值为字符串表达式:

APOSTROPHE 用单撇号(‘)分隔

QUOTE 用双撇号(‖)分隔

NONE 不用分隔符

如果在OPEN语句中设置了分隔符,则在文件中的单撇号和双撇号都是成对出现的。

8) ERR:出错处理说明。其值是同一程序中的一条语句的标号,当OPEN语句执行出错时执行此语句。如果省略该项,则出

错时给出出错信息并终止运行。9) FILE:文件名。file是一字符串表达式,可以是空、合法的数据文件名字、设备名字或是作

为内部文件的变量。在WinNT/9x中允许使用长度大于8的文件名和长度大于3的文件扩展名。省略此项时,编译器将自动产生

一个文件名唯一的临时文件,这个临时文件将在结束运行或与文件连接的设备关闭后被删除掉。10) FORM:记录格式说明。

form是字符串表达式:

FORMATTED 记录按有格式存放。

UNFORMATTED 记录按无格式存放。

当省略此说明项时为:对顺序文件是有格式的;对直接文件是无格式的。

11) IOFUS:指出一个新Quickwin子窗口是否为活动窗口,其值为逻辑值。缺省值为真。

12) IOSTAT:出错状态说明。iostat是—个缺省长度为4的整形变量。当执行此OPEN语句时系统给变量赋值:

零没有发生错误

负数文件结尾

正数发生错误,其值视具体计算机系统而定

若省略该项则没有此功能。

13) PAD:从格式化文件中记录的数据少于要读取的数据时,是否用空格来填充没有从记录中读到数据的变量。pad是字符串

表达式:

YES 填充(默认值)

NO 不填充

14) POSITION:指定打开顺序文件的访问位置,position是字符串表达式:ASIA 已被连接的文件的访问位置是固定的,未被

连接的文件的访问位置是文件的开始处。

REWIND 把文件的访问位置定在文件的开始处(文件己存在)。

APPEND 把文件的访问位置定在文件的末尾处(文件己存在)。对于一个新文件,文件的访问位置总是被定在文件的开始处。

15) RECL:记录长度(单位为字节)说明。recl是指定的正整型量或算术表达式,用来指定直接文件中的每条记录的字节数,或

顺序文件中的记录的最大长度。

16) SHARE:指明当文件打开时是否实现文件的锁定。share是字符串表达式:DENYRW 动态读写模式。不允许其他的进程

打开这个文件。

DENYWR 动态写模式。不允许其他的进程以写的方式打开这个文件。DENYRD 动态读模式。不允许其他的进程以读的方式

打开这个文件。DENYNONE 默认的非动态模式。允许其他的进程打开这个文件。

17) STATUS:文件状态说明。status是字符串表达式:

OLD 表示指定的文件是已经存在的老文件。这一状态一般用于读操作,如果用于写操作则重写文件,原文件内容将被覆盖。

如果指定的文件并不存在,则系统将给出出错信息。

NEW 表示指定的文件尚不存在。执行OPEN语句时将在磁盘上建立该文件并使其状态改变为OLD。NEW状态一般用于写操

作。如果指定的文件名已经存在将给出出错信息(有的系统不给出信息而是把这个已经存在的文件冲掉使原来的内容不复存

在)。

SCRATCH 表示与设备号相连接的文件在关闭时将被自动删除。注意:此状态不能与FILE说明共存,只能用于由计算机系统

指定的文件名,使该文件作为程序运行过程中的一个临时性文件。

REPLACE 表示替换一个有相同名字的文件,如果没有同名的文件存在,将产生一个新文件。

UNKNOWN 表示文件可以是已存在的或不存在的。系统打开文件状态的次序为:OLO->NEW->创建新文件。STATUS的设置

值只影响磁盘文件,像键盘和显示器这样的设备将忽略这一设置。

若省略该项时默认的状态为UNKNOWN。

8:read

8.1 表控输入

FORTRAN用READ语句实现输入数据,READ语句有三种格式:

表控格式(自由格式)输入

格式输入:按用户规定的格式输入

无格式输入:以二进制形式输入,适用从磁盘或磁带输入。

表控格式输入的一般形式:READ *,变量表

其中―*‖号表示―表控输入‖,例如:READ *,I,J,A,B要求从系统隐含的输入设备上读入两个整型数给I和J,读入两个实

数给A和B。可以从键盘输入以下数据:3,10,7.5,-15.8(数据间以逗号相隔)然后回车,或:3 10 7.5 -15.8然后回车(数据间

以一个或多个空格间隔)。

上面的READ语句没有明显地指明从哪个设备上读入数据,但这种写法表示了―从系统隐含的输入设备读数据‖。有的计算机

系统(尤其是FORTRAN77子集)不接受这种形式的READ语句,此时可以写成下面形式:READ (*,*)变量表第一个―*‖,

代表―系统隐含的输入设备‖(一般指显示器和键盘)第二个―*‖,代表―表控输入‖。例如:

READ(*,*)A,B,C,I,J,K 从键盘输入数据如下:7.6,8.5,7.4,6,7,8(然后回车),数与数之间也可以用空格相隔,7.6

8.5 7.4 6 7 8(然后回车),一个空格和多个空格的作用是一样的。

几点说明:

1.输入数据的类型与变量类型要求一致。如:READ(*,*)A,B,I,J 输入数据 3.4,5.6,8,9是正确的,而数据

3.4,5.6,8.0,9.0是错误的,如果数据是23,45,6,7,即变量A,B为实型,输入数据为整型,许多系统是通融的,先自动将它变成

实数然后输入给实型变量。

2.输入数据的个数应当不少于READ语句中变量的个数,如:READ(*,*)A,B,C,D,E,F 应输入数据:

5.6,7.8,7.4,6.3,4,6;如果输入的数据个数多于所需的个数,则多余的数据不起作用,在上例中输入5.6,7.8 7.4,6.3,4,6,9.3,

最后一个数9.3无效;如果输入的第一个数据行上数据个数少于READ语句中变量的个数,则系统会从输入的第二个数据行中

读数,依此类推。

3.每一条输入数据都从一个新的记录开始读数如:READ(*,*)I,J,K READ (*,*)L,M,N 输入数据:2,4 6,8回车;

10,13 14,16回车,结果:I=2 J=4 K=6 L=10 M=13 N=14 ,8和16是多余的4.输入数据时,用―/‖表示数据结束,READ语句不再继续读数。如:READ (*,*)A,B,C 输入数据:3.24,

5.8/3.6回车,将3.24,5.8送到A,B后,不再读数据给C。如果C已被赋值则保留原值。用这个方法可以控制对某些变量是否赋

于新值。甚至可以在一个输入行中一个数据也没有,用一个―/‖使READ语句中所有变量都不被赋值。

5.如果输入语句中有几个连续的变量需要赋予同一个值,可以用重复因子γ 表示,表示一数据重复出现γ次。如:

READ(*,*)A,B,C 输入数据:3.4,3.4,3.4 也可以:3*3.4;如输入-3.4 则3*–3.4。

6.由于空格是分隔两个数据的符号,因此在一个数据的中间不能插入空格。如:READ(*,*)M,N,K 输入数据如下:

1234,5678,56 I=1234 J=5678 K=56 如输入数据为:12?34?56?78?56 I=12 J=34 K=56。

8.2READ(说明项)[输入项表]

输入项表中各项可以是变量名、数组元素名、数组名。各项之间用逗号隔开。在READ语句中也可以没有输入项表,这时,每

执行一次READ语句就跳过一个记录,也就是说每执行一次READ语句文件指针向文件尾部方向移动一个记录位置。

说明项包括以下各项:

(1)设备号说明:[UNIT=]ie。可以是星号,表示从隐含设备输入;或者是OPEN语句中指定的设备号,指从与该设备号关联

的文件输入。

(2)格式说明:[FMT=]格式标识符。格式标识符可是*号、FORMAT语句标号或者格式字符串。只有在对格式文件进行输入

时才需要格式说明。对无格式文件进行输入操作时不允许出现格式说明。FMT=可以省略不写。

(3)记录号说明:REC=ie。ie是一个值为正整数的算术表达式,由用户给出。

对于直接存取文件进行输入时,此项必不可少,READ语句从文件中去读由ie 指定的那个记录号开始的记录。对于顺序存取文

件,在READ语句中不得出现这一项。

(4)文件结束说明:END=l。l代表本程序单位中的一个语句标号。当READ 语句中具有这一项说明时,当读到文件结束樗时

的士自动转向带有该标号的那条语句去执行,否则程序将终止执行,由系统给出出错信息。

(5)出错说明:ERR=l。l代表本程序单位中的一个语句标号。当READ语句执行过程中发生错误时(如格式不符等)程序将

自动转向带有该标号的那条语句去继续执行,否则程序将终止执行,由系统给出出错信息。

(6)输入状态说明:IOSTAT=iv。iv代表一个整型变量,当执行READ语句时,将给iv赋一个整型值。当READ正确执行

时,iv得零值;当遇到文件结束时iv得一大于零的数;当遇到出错条件时iv得一负数,整数的值由各计算机系统规定。