📄 sec6-1.htm
字号:
<table cellpadding=0 cellspacing=0>
<tr>
<td width=75 height=0></td>
</tr>
<tr>
<td></td>
<td><img width=400 height=315 src="Sec6-1.files/image003.gif" v:shapes="_x0000_s1028 _x0000_s1029 _x0000_s1030 _x0000_s1031 _x0000_s1032 _x0000_s1033 _x0000_s1034 _x0000_s1035 _x0000_s1036 _x0000_s1037"></td>
</tr>
</table>
</span><![endif]><!--[if gte vml 1]></o:wrapblock><![endif]--><br
style='mso-ignore:vglayout' clear=ALL>
<a name="第6_1_3"><span lang=EN-US style='font-size:16.0pt'>6.1.3</span></a><span
lang=EN-US style='font-size:16.0pt'> </span><span lang=ZH-CN style='font-size:
16.0pt;font-family:楷体_GB2312;color:red'>过程</span><span lang=EN-US
style='font-size:16.0pt'><o:p></o:p></span></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo4;
tab-stops:list 18.0pt'><a name="第6_1_3a"></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>(</span><span
lang=ZH-CN>通常是汇编语言</span><span lang=EN-US>)</span><span lang=ZH-CN>来定义。外部过程的形式有两种:</span></p>
<p class=MsoBodyTextIndent2 style='line-height:15.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN style='color:fuchsia'>外部函数</span><span lang=EN-US
style='color:fuchsia'><span style='mso-spacerun:yes'> </span></span><span
lang=ZH-CN>:</span><span lang=EN-US>FUNCTION</span><span lang=ZH-CN>语句</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[</span><span lang=ZH-CN>说明部分</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[</span><span lang=ZH-CN>可执行部分</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:95.4pt;mso-char-indent-count:
7.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[CONTAINS<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=ZH-CN>内部过程</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:95.4pt;mso-char-indent-count:
7.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>END [FUNTION</span><span lang=ZH-CN>函数名</span><span lang=EN-US>]</span></p>
<p class=MsoBodyTextIndent2 style='line-height:15.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN style='color:fuchsia'>外部子程序</span><span lang=ZH-CN>:</span><span
lang=EN-US>SUBROUTINE</span><span lang=ZH-CN>语句</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[</span><span lang=ZH-CN>说明部分</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[</span><span lang=ZH-CN>可执行部分</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:95.4pt;mso-char-indent-count:
7.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[CONTAINS<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=ZH-CN>内部过程</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:95.4pt;mso-char-indent-count:
7.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>END [SUBROUTINE</span><span lang=ZH-CN>子程序名</span><span lang=EN-US>]</span></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo4;
tab-stops:list 18.0pt'><a name="第6_1_3b"></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>CONTAINS</span><span lang=ZH-CN>语句把内部过程与其他部分分开。内部过程也具有两种形式:</span></p>
<p class=MsoBodyTextIndent2 style='line-height:15.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN style='color:fuchsia'>内部函数</span><span lang=EN-US
style='color:fuchsia'><span style='mso-spacerun:yes'> </span></span><span
lang=ZH-CN>:</span><span lang=EN-US>FUNCTION</span><span lang=ZH-CN>语句</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[</span><span lang=ZH-CN>说明部分</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[</span><span lang=ZH-CN>可执行部分</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:95.4pt;mso-char-indent-count:
7.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>END [FUNTION</span><span lang=ZH-CN>函数名</span><span lang=EN-US>]</span></p>
<p class=MsoBodyTextIndent2 style='line-height:15.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN style='color:fuchsia'>内部子程序</span><span lang=ZH-CN>:</span><span
lang=EN-US>SUBROUTINE</span><span lang=ZH-CN>语句</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[</span><span lang=ZH-CN>说明部分</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:122.4pt;mso-char-indent-count:
10.2;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>[</span><span lang=ZH-CN>可执行部分</span><span lang=EN-US>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:95.4pt;mso-char-indent-count:
7.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>END [SUBROUTINE</span><span lang=ZH-CN>子程序名</span><span lang=EN-US>]</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>注意内部过程中不能再包含内部过程,即</span><span lang=EN-US>F90</span><span
lang=ZH-CN>不是过程嵌套式语言。</span></p>
<p style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo4;
tab-stops:list 18.0pt'><a name="第6_1_3c"></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>Fortran</span><span
lang=ZH-CN>含于编译器程序库中的过程,它不需任何其它声明或说明即可使用。</span><span lang=EN-US>F90</span><span
lang=ZH-CN>中定义了</span><span lang=EN-US>113</span><span lang=ZH-CN>个内在过程,它们为科学计算提供了极大方便,内在过程除了第一章中介绍的部分内在函数和第五章中介绍的部分数组函数外,还有其他一些内在函数及内在子程序,其具体使用方法请查看</span><span
lang=EN-US>Visual Fortran</span><span lang=ZH-CN>的联机帮助。内在过程共分为四类:</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:42.0pt;text-indent:-18.0pt;
mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-list:l0 level1 lfo6;tab-stops:list 42.0pt left 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
lang=EN-US style='mso-bidi-font-family:宋体'><span style='mso-list:Ignore'>1、</span></span><![endif]><span
lang=ZH-CN>查询函数:它们的返回值是根据变元的性质而非变元的取值。</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:99.25pt;text-indent:-75.25pt;
mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-list:l0 level1 lfo6;tab-stops:42.55pt list 127.6pt left 137.4pt 5.0cm 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
lang=EN-US style='mso-bidi-font-family:宋体'><span style='mso-list:Ignore'>2、<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
lang=ZH-CN>基本过程:由标量变元指明的基本过程,但可以用标量或数组实元进行调用。有许多函数是这种基本函数,并有一种基本内在子程序</span><span
lang=EN-US>(MVBITS)</span><span lang=ZH-CN>。如果变元是标量,<span class=GramE>则结果</span>也是标量。如果变元是数组,则对数组的每个元素施加过程,其结果是与变元形状相同的数组。例如,</span><span
lang=EN-US>a</span><span lang=ZH-CN>是数组的话,则</span><span lang=EN-US>b=sin(a)</span><span
lang=ZH-CN>也是数组。</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:3.0cm;text-indent:-61.05pt;
mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-list:l0 level1 lfo6;tab-stops:42.55pt list 127.6pt left 137.4pt 5.0cm 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
lang=EN-US style='mso-bidi-font-family:宋体'><span style='mso-list:Ignore'>3、<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
lang=ZH-CN>变换函数:其变元是数组,但过程不施加于每个元素,而是把变元变换成另一数组。</span></p>
<p class=MsoBodyTextIndent2 style='margin-left:3.0cm;text-indent:-61.05pt;
mso-char-indent-count:0;line-height:17.0pt;mso-line-height-rule:exactly;
mso-list:l0 level1 lfo6;tab-stops:42.55pt list 127.6pt left 137.4pt 5.0cm 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><![if !supportLists]><span
lang=EN-US style='mso-bidi-font-family:宋体'><span style='mso-list:Ignore'>4、<span
style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]><span
lang=ZH-CN>非基本过程:只能以标量实元进行调用,除了</span><span lang=EN-US>MVBITS</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>INTRINSIC</span><span
lang=ZH-CN>语句加以声明。</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="第6_1_4"><span lang=EN-US style='font-size:16.0pt;mso-bidi-font-size:12.0pt;
mso-fareast-font-family:楷体_GB2312'>6.1.4</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 class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span lang=ZH-CN>块数据单元是一种为有名公用块中的变量定义初始值的一种程序单元,它只包含数据声明和初始值,不包含可执行语句。其一般形式为:</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:95.4pt;mso-char-indent-count:
7.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US style='color:#FF9900'>BLOCK DATA[</span><span lang=ZH-CN
style='color:#FF9900'>块数据名</span><span lang=EN-US style='color:#FF9900'>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:121.45pt;mso-char-indent-count:
10.12;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:
12pt'><span lang=EN-US style='color:#FF9900'>[</span><span lang=ZH-CN
style='color:#FF9900'>说明部分</span><span lang=EN-US style='color:#FF9900'>]<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:95.4pt;mso-char-indent-count:
7.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US style='color:#FF9900'>END [BLOCK DATA[</span><span lang=ZH-CN
style='color:#FF9900'>块数据名</span><span lang=EN-US style='color:#FF9900'>]]</span><span
lang=EN-US style='color:#FF6600'><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>DATA</span><span
lang=ZH-CN>语句来初始化。公共块中命名的变量<span class=GramE>只能在块数据</span>单元或某个过程中初始化一次,或只能由所有的过程完全一致地初始化。更好的编程法是用模块而不是块数据单元<span
class=GramE>来声明</span>和初始化变量。</span></p>
<p class=MsoBodyTextIndent2 style='line-height:17.0pt;mso-line-height-rule:
exactly'><span class=GramE><span lang=ZH-CN>在块数据</span></span><span lang=ZH-CN>单元的说明部分,不能包含</span><span
lang=EN-US>ALLOCATABLE</span><span lang=ZH-CN>,</span><span lang=EN-US>AUTOMATIC</span><span
lang=ZH-CN>,</span><span lang=EN-US>EXTERNAL</span><span lang=ZH-CN>,</span><span
lang=EN-US>INTENT</span><span lang=ZH-CN>,</span><span lang=EN-US>OPTIONAL</span><span
lang=ZH-CN>,</span><span lang=EN-US>PRIVATE</span><span lang=ZH-CN>或</span><span
lang=EN-US>PUBLIC</span><span lang=ZH-CN>等属性说明符。</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:47.4pt;mso-char-indent-count:
3.95;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=ZH-CN>例:</span><span lang=EN-US>BLOCK DATA BLKDAT<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:94.45pt;mso-char-indent-count:
7.87;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>INTEGER S<span class=GramE>,X</span><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:94.45pt;mso-char-indent-count:
7.87;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>LOGICAL T<span class=GramE>,W</span><o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:94.45pt;mso-char-indent-count:
7.87;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>DOUBLE PRECISION U<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:94.45pt;mso-char-indent-count:
7.87;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>DIMENSION <span class=GramE>R(</span>3)<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:94.45pt;mso-char-indent-count:
7.87;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>COMMON/AREA1/R<span class=GramE>,S,U,T</span>/AREA2/W,X,Y<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:94.45pt;mso-char-indent-count:
7.87;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>DATA R/1.0,2*2.0/,T/.FALSE./,U/0.214537D-7/,W/.TRUE./,Y/3.5/<o:p></o:p></span></p>
<p class=MsoBodyTextIndent2 style='text-indent:72.0pt;mso-char-indent-count:
6.0;line-height:15.0pt;mso-line-height-rule:exactly;mso-char-indent-size:12pt'><span
lang=EN-US>END BLOCK DATA BLKDAT</span></p>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -