我在一些教程中看到,记录只在文件描述(FD)中声明,在一些教程中,他们已经在工作存储部分声明了记录并使用它。两者之间有什么区别。 在某些程序中它就像这样
FD STUDENT
01 FS-EMP-REC.
02 FS-EMP-ID PIC X(07).
02 FS-EMP-NAME PIC X(20).
02 FS-EMP-ACCT PIC X(06).
01 WS-EMP-REC.
02 WS-EMP-ID PIC X(07).
02 WS-EMP-NAME PIC X(20).
02 WS-EMP-ACCT PIC X(06).
在某些教程中,它是(仅FD)
01 FS-EMP-REC.
02 FS-EMP-ID PIC X(07).
02 FS-EMP-NAME PIC X(20).
02 FS-EMP-ACCT PIC X(06).
有什么区别?
答案 0 :(得分:1)
这可能是编码风格的问题。有些人总是使用READ ... INTO ...
或者01
下的FD
移动到01
中的WORKING-STORAGE
。 01
中的FILE SECTION
通常只使用基本FILLER来定义输入记录的长度。
有时需要执行此操作,如果使用的特定COBOL限制了FD中数据的使用(在Enterprise COBOL中,您无法为FILE SECTION
中的某些内容设置地址,DB2需要一个已知的地址,因此不能在FILE SECTION
中。
人们倾向于认为它更安全"使用WORKING-STORAGE
,但事实并非如此。人们还认为,当程序失败时,在WORKING-STORAGE
中查找信息会更容易。
READ ... INTO ...
需要额外传输数据,因此速度会更慢"但这只是极端情况下的问题。
你会在程序中看到这两个,就像你已经做过的那样,对于一个程序使用的原因和另一个程序使用的原因,并没有一个快速的答案。大多数情况下,它根本没有任何区别。
使用READ ... INTO ...
,FILE SECTION
。
除非必要,否则我不会自己使用READ ... INTO ...
,但很多人认为如果你不使用它,程序将无法正常使用: - )
请注意两种不同的方法,并使用您使用的编码方式。