📄 sec7-2.htm
字号:
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="4098">
<o:colormru v:ext="edit" colors="#fcc,#669,#99f,#ccecff,#9fc,#c5ffe2,#d9ffec,#dfe"/>
<o:colormenu v:ext="edit" fillcolor="#dfe"/>
</o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="#DDFFEE" lang=ZH-TW link=blue vlink=purple style='tab-interval:
21.0pt;text-justify-trim:punctuation'>
<div class=Section1 style='layout-grid:15.6pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span lang=ZH-CN
style='font-size:22.0pt;font-family:华文细黑;color:#333399'>文件的存取</span></b><b><span
lang=EN-US style='font-size:22.0pt;font-family:华文细黑;color:#333399'><o:p></o:p></span></b></p>
<p class=MsoNormal align=center style='margin-top:15.6pt;margin-right:0cm;
margin-bottom:15.6pt;margin-left:0cm;mso-para-margin-top:1.0gd;mso-para-margin-right:
0cm;mso-para-margin-bottom:1.0gd;mso-para-margin-left:0cm;text-align:center'><a
name="第7_2_1"><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:12.0pt;
mso-fareast-font-family:楷体_GB2312'>7.2.1</span></a><span lang=EN-US
style='font-size:16.0pt;mso-bidi-font-size:12.0pt;mso-fareast-font-family:楷体_GB2312'>
</span><span lang=ZH-CN style='font-size:16.0pt;mso-bidi-font-size:12.0pt;
font-family:楷体_GB2312;mso-ascii-font-family:"Times New Roman";color:red'>逻辑设备和文件</span><b><span
lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:12.0pt;mso-fareast-font-family:
楷体_GB2312'><o:p></o:p></span></b></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo2;
tab-stops:list 18.0pt'><a name="第7_2_1a"></a><![if !supportLists]><span
lang=EN-US style='font-family:宋体;mso-bidi-font-family:宋体;color:red'><span
style='mso-list:Ignore'>a)<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-family:宋体;
color:red'>逻辑设备</span><span lang=EN-US style='font-family:宋体;color:red'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>在</span><span lang=EN-US>Fortran</span><span
lang=ZH-CN>中对文件和外部设备的操作都是通过逻辑设备进行的。在对文件和外部设备进行操作之前,都要把它们连接到逻辑设备上。内部文件的设备描述符和外部文件的设备描述符是不同的:内部文件用一个字符变量或其它变量名来描述,外部文件用</span><span
lang=EN-US>OPEN</span><span lang=ZH-CN>语句打开文件时的数字</span><span lang=EN-US>(</span><span
lang=ZH-CN>单元号</span><span lang=EN-US>)</span><span lang=ZH-CN>作为文件的描述,或是用默认的设备单元号包括星号</span><span
lang=EN-US>(*)</span><span lang=ZH-CN>作为文件的描述。对于一个设备描述符,不能同时连接一个以上文件同样,—个文件也不能同时与一个以上设备描述符连接。在</span><span
lang=EN-US>F90</span><span lang=ZH-CN>中,可以用</span><span lang=EN-US>OPEN</span><span
lang=ZH-CN>语句打开一个已经打开的文件,但是通过这种方式打开的文件只能对这个文件的输入输出属性选项进行修改,而不能对其进行输入输出操作。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>除下列三种情况,必须在每个输入输出语句中使用设备描述符:</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=EN-US>1) </span><span lang=ZH-CN>使用</span><span lang=EN-US>PRINT</span><span
lang=ZH-CN>进行输出,</span><span lang=EN-US>PRINT</span><span lang=ZH-CN>语句的输出是把数据输出到标准输出设备上</span><span
lang=EN-US>(</span><span lang=ZH-CN>单元号</span><span lang=EN-US>6</span><span
lang=ZH-CN>,即屏幕</span><span lang=EN-US>)</span><span lang=ZH-CN>。例:</span><span
lang=EN-US>PRINT I</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=EN-US>2) </span><span lang=ZH-CN>只包含一个</span><span
lang=EN-US>I/O</span><span lang=ZH-CN>列表和格式描述符的</span><span lang=EN-US>READ</span><span
lang=ZH-CN>语句以及名称列表</span><span lang=EN-US>READ</span><span lang=ZH-CN>语句,其形式为:</span><span
lang=EN-US>READ </span><span lang=ZH-CN>格式描述符</span><span lang=EN-US> [,I/O</span><span
lang=ZH-CN>列表</span><span lang=EN-US>]</span><span lang=ZH-CN>和</span><span
lang=EN-US> READ</span><span lang=ZH-CN>名称列表,它是从标准输入设备上</span><span lang=EN-US>(</span><span
lang=ZH-CN>单元号</span><span lang=EN-US>5</span><span lang=ZH-CN>,即键盘</span><span
lang=EN-US>)</span><span lang=ZH-CN>输入数据的。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=EN-US>3) </span><span lang=ZH-CN>对文件按文件名进行的</span><span
lang=EN-US>INQUIRE</span><span lang=ZH-CN>操作,这时查询的参数是文件名,而不是连接着文件的设备号。</span></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo2;
tab-stops:list 18.0pt'><a name="第7_2_1b"></a><![if !supportLists]><span
lang=EN-US style='font-family:宋体;mso-bidi-font-family:宋体;color:red'><span
style='mso-list:Ignore'>b)<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-family:宋体;
color:red'>外部文件</span><span lang=EN-US style='font-family:宋体;color:red'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>根据所操作的文件是否在内存中可以把文件分为内部文件和外部文件。当把内存中的数据记录到到磁盘的文件中或输入输出到其他外部设备如打印机、显示器、键盘上时,被称为外部文件。连接着一个外部文件的设备描述必须是—整型表达式或是星号</span><span
lang=EN-US>(*)</span><span lang=ZH-CN>,其整型表达式的取值范围在</span><span lang=EN-US>-32768</span><span
lang=ZH-CN>到</span><span lang=EN-US>32767</span><span lang=ZH-CN>之间。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:15.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>例:</span><span lang=EN-US>OPEN(UNIT=10,FILE=</span><span
lang=ZH-CN>’</span><span lang=EN-US>output.dat</span><span lang=ZH-CN>’</span><span
lang=EN-US>)</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:23.4pt;line-height:17.0pt;
mso-line-height-rule:exactly'><span lang=EN-US>WRITE(10</span><span lang=ZH-CN>,<span
style='letter-spacing:-4.0pt'>’</span></span><span lang=EN-US>(A)</span><span
lang=ZH-CN style='letter-spacing:-4.0pt'>’</span><span lang=EN-US>) <span
style='letter-spacing:-4.0pt'><span style='mso-spacerun:yes'> </span></span></span><span
lang=ZH-CN style='letter-spacing:-4.0pt'>’</span><span lang=EN-US>how are you?<span
style='letter-spacing:-4.0pt'> </span></span><span lang=ZH-CN style='letter-spacing:
-4.0pt'>’</span></p>
<p class=MsoBodyTextIndent2 style='margin-bottom:6.0pt;line-height:17.0pt;
mso-line-height-rule:exactly'><span lang=ZH-CN>在</span><span lang=EN-US>Fortran</span><span
lang=ZH-CN>中有</span><span lang=EN-US>4</span><span lang=ZH-CN>个预定义的外部文件</span><span
lang=EN-US>(</span><span lang=ZH-CN>设备</span><span lang=EN-US>)</span><span
lang=ZH-CN>:</span><span lang=EN-US><o:p></o:p></span></p>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='margin-left:23.0pt;border-collapse:collapse;border:none;mso-border-alt:
solid windowtext .5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
<tr style='mso-yfti-irow:0'>
<td width=173 valign=top style='width:129.6pt;border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 align=center style='text-align:center;text-indent:
0cm;mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-char-indent-size:0cm'><span lang=ZH-CN>设备号</span><span lang=EN-US><o:p></o:p></span></p>
</td>
<td width=258 valign=top style='width:193.5pt;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 align=center style='text-align:center;text-indent:
0cm;mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-char-indent-size:0cm'><span lang=ZH-CN>连接的设备</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td width=173 valign=top style='width:129.6pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 align=center style='text-align:center;text-indent:
0cm;mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-char-indent-size:0cm'><span lang=ZH-CN>星号</span><span lang=EN-US>(*)<o:p></o:p></span></p>
</td>
<td width=258 valign=top style='width:193.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 style='text-indent:0cm;mso-char-indent-count:
0;line-height:17.0pt;mso-line-height-rule:exactly;mso-char-indent-size:0cm'><span
lang=ZH-CN>总是键盘和显示器</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:2'>
<td width=173 valign=top style='width:129.6pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 align=center style='text-align:center;text-indent:
0cm;mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-char-indent-size:0cm'><span lang=EN-US>0<o:p></o:p></span></p>
</td>
<td width=258 valign=top style='width:193.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 style='text-indent:0cm;mso-char-indent-count:
0;line-height:17.0pt;mso-line-height-rule:exactly;mso-char-indent-size:0cm'><span
lang=ZH-CN>缺省状态下是键盘和显示器</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:3'>
<td width=173 valign=top style='width:129.6pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 align=center style='text-align:center;text-indent:
0cm;mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-char-indent-size:0cm'><span lang=EN-US>5<o:p></o:p></span></p>
</td>
<td width=258 valign=top style='width:193.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 style='text-indent:0cm;mso-char-indent-count:
0;line-height:17.0pt;mso-line-height-rule:exactly;mso-char-indent-size:0cm'><span
lang=ZH-CN>缺省状态下是键盘</span></p>
</td>
</tr>
<tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
<td width=173 valign=top style='width:129.6pt;border:solid windowtext 1.0pt;
border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 align=center style='text-align:center;text-indent:
0cm;mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-char-indent-size:0cm'><span lang=EN-US>6<o:p></o:p></span></p>
</td>
<td width=258 valign=top style='width:193.5pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoBodyTextIndent2 style='text-indent:0cm;mso-char-indent-count:
0;line-height:17.0pt;mso-line-height-rule:exactly;mso-char-indent-size:0cm'><span
lang=ZH-CN>缺省状态下是显示器</span></p>
</td>
</tr>
</table>
<p class=MsoBodyTextIndent2 style='margin-top:6.0pt;line-height:17.0pt;
mso-line-height-rule:exactly'><span lang=ZH-CN>不能关闭星号设备号。设备号</span><span
lang=EN-US>0</span><span lang=ZH-CN>,</span><span lang=EN-US>5</span><span
lang=ZH-CN>,</span><span lang=EN-US>6</span><span lang=ZH-CN>可以通过</span><span
lang=EN-US>OPEN</span><span lang=ZH-CN>语句连接到其他文件上,当在程序中关闭设备号是</span><span
lang=EN-US>O</span><span lang=ZH-CN>,</span><span lang=EN-US>5</span><span
lang=ZH-CN>,</span><span lang=EN-US>6</span><span lang=ZH-CN>的外部文件后,如果下次还要使用这些设备号进行输入输出操作,这些设备号将自动连接到它们各自的缺省的设备上去。</span></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo2;
tab-stops:list 18.0pt'><a name="第7_2_1c"></a><![if !supportLists]><span
lang=EN-US style='font-family:宋体;mso-bidi-font-family:宋体;color:red'><span
style='mso-list:Ignore'>c)<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span lang=ZH-CN style='font-family:宋体;
color:red'>内部文件</span><span lang=EN-US style='font-family:宋体;color:red'><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>内存中的数据也可以像磁盘上的文件一样进行操作。把连接到设备描述符上的、进行与文件相类似的操作的一块内存中的数据称为内部文件。连接着一个内部文件的设备描述符是—个字符串或是一个字符数组。使用内部文件的规则是:对内部文件只能使用格式化的输入输出操作,包括用格式描述符和直接列表来限定格式的输入输出操作。只能用</span><span
lang=EN-US>READ</span><span lang=ZH-CN>和</span><span lang=EN-US>WRITE</span><span
lang=ZH-CN>语句对内部文件进行操作,不能用文件连接</span><span lang=EN-US>(OPEN)</span><span
lang=ZH-CN>、文件指针位置的设置</span><span lang=EN-US>(REWIND</span><span lang=ZH-CN>,</span><span
lang=EN-US>BACKSPACE)</span><span lang=ZH-CN>或是文件属性查询</span><span lang=EN-US>(INQUIRE)</span><span
lang=ZH-CN>语句。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>利用内部文件及输入输出系统的格式化功能,可以实现数据在外部的字符表示和在内存表示之间的转换。即可以通过从—个内部文件中读取数据到—个变量或数组中实现</span><span
lang=EN-US>ASCII</span><span lang=ZH-CN>的存储方式到数字、逻辑或字符等内存存储方式的转换,或者是通过把—个变量写到内部文件中,实现内存存储方式到</span><span
lang=EN-US>ASCII</span><span lang=ZH-CN>存储方式的转换。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>在进行内部文件的写操作时,当写入的内容长度小于内部文件的一个记录的长度时,记录中剩余的空间被空格填满;大于时多余的数据将被删除。在进行内部文件的读操作时,当内部文件的一个记录的长度小于希望读取的数据长度时,没有读取到数据的变量填为空格;大于时多余的内部文件数据被删除。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:15.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>例:</span><span lang=EN-US>CHARACTER(10) str</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:23.4pt;line-height:15.0pt;
mso-line-height-rule:exactly'><span lang=EN-US>CHARACTER(14) fname</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:23.4pt;line-height:15.0pt;
mso-line-height-rule:exactly'><span lang=EN-US>str = " 1<span
style='mso-spacerun:yes'> </span>2<span
style='mso-spacerun:yes'> </span>3"</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:23.4pt;line-height:15.0pt;
mso-line-height-rule:exactly'><span lang=EN-US>READ(str,*) n1,n2,n3<span
style='mso-spacerun:yes'> </span>!</span><span lang=ZH-CN>直接列表</span><span
lang=EN-US>READ</span><span lang=ZH-CN>语句设置</span><span lang=EN-US> n1=1, n2=2,
n3=3</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:23.4pt;line-height:15.0pt;
mso-line-height-rule:exactly'><span lang=EN-US>i=4</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:23.4pt;line-height:15.0pt;
mso-line-height-rule:exactly'><span lang=EN-US>WRITE(fname,200) i<span
style='mso-spacerun:yes'> </span>!</span><span lang=ZH-CN>格式化</span><span
lang=EN-US>WRITE</span><span lang=ZH-CN>语句设置</span><span lang=EN-US>fname
='FM004.DAT'.</span></p>
<p class=MsoBodyTextIndent2 style='line-height:15.0pt;mso-line-height-rule:
exactly'><span lang=EN-US>200 FORMAT('FM',I3.3,'.DAT')</span></p>
<p class=MsoNormal align=center style='margin-top:15.6pt;margin-right:0cm;
margin-bottom:15.6pt;margin-left:0cm;mso-para-margin-top:1.0gd;mso-para-margin-right:
0cm;mso-para-margin-bottom:1.0gd;mso-para-margin-left:0cm;text-align:center'><a
name="第7_2_2"><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:12.0pt;
mso-fareast-font-family:楷体_GB2312'>7.2.2</span></a><span lang=EN-US
style='font-size:16.0pt;mso-bidi-font-size:12.0pt;mso-fareast-font-family:楷体_GB2312'>
</span><span lang=ZH-CN style='font-size:16.0pt;mso-bidi-font-size:12.0pt;
font-family:楷体_GB2312;mso-ascii-font-family:"Times New Roman";color:red'>外部文件分类</span><b><span
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -