添加仅适用于 WORKING-STORAGE SECTION 中的字段吗?
Does add only work for fields in WORKING-STORAGE SECTION.?
这样的程序好像不行。
PROGRAM-ID. Test.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CountFile ASSIGN TO "count.dat"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CountFile.
01 CountDetails.
02 FCountA PIC 99 VALUE 0.
02 FCountB PIC 99 VALUE 0.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
Begin.
OPEN OUTPUT CountFile
ADD 1 TO FCountA
ADD 1 TO FCountB
WRITE CountDetails
CLOSE CountFile
STOP RUN.
这会将 9999 写入 count.dat 文件。 ADD 适用于 WORKING-STORAGE SECTION 中的字段,但不适用于 FILE SECTION 中的字段。
这是真的吗?
问:是这样吗?
A: 不,不是。
ADD
适用于任何 numeric 字段,无论它存储在何处。
请注意,FILE SECTION
中的数据只有在 OPEN
成功后才能保证可用(正如您提到的 GnuCOBOL:此数据始终提供存储)。它没有任何保证值,因此您可能想要 INITIALIZE
数据。
显示两者的 COBOL 样本示例 adjusted and executed:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
ENVIRONMENT DIVISION.
input-output section.
file-control.
select test-file
assign to 'test-file'
organization is line sequential.
data division.
file section.
fd test-file.
01 num-var pic 9 value 0.
working-storage section.
01 num2-var pic 9 value 0.
PROCEDURE DIVISION.
ADD 1 TO num-var num2-var
DISPLAY 'Hello, num ' num2-var ' and file ' num-var.
INITIALIZE num-var num2-var
ADD 1 TO num-var num2-var
DISPLAY 'Hello, num ' num2-var ' and file ' num-var.
ADD num2-var to num-var
ADD num2-var to num-var
DISPLAY 'Hello, num ' num2-var ' and file ' num-var.
ADD num-var to num-var
DISPLAY 'Hello, num ' num2-var ' and file ' num-var.
STOP RUN.
注意:它是固定形式的参考格式,不一定是可移植的,缺少 OPEN
可能意味着它中止 - 并且它不是任何合理的好风格 - 但要证明这个问题。
这样的程序好像不行。
PROGRAM-ID. Test.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CountFile ASSIGN TO "count.dat"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CountFile.
01 CountDetails.
02 FCountA PIC 99 VALUE 0.
02 FCountB PIC 99 VALUE 0.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
Begin.
OPEN OUTPUT CountFile
ADD 1 TO FCountA
ADD 1 TO FCountB
WRITE CountDetails
CLOSE CountFile
STOP RUN.
这会将 9999 写入 count.dat 文件。 ADD 适用于 WORKING-STORAGE SECTION 中的字段,但不适用于 FILE SECTION 中的字段。
这是真的吗?
问:是这样吗?
A: 不,不是。
ADD
适用于任何 numeric 字段,无论它存储在何处。
请注意,FILE SECTION
中的数据只有在 OPEN
成功后才能保证可用(正如您提到的 GnuCOBOL:此数据始终提供存储)。它没有任何保证值,因此您可能想要 INITIALIZE
数据。
显示两者的 COBOL 样本示例 adjusted and executed:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
ENVIRONMENT DIVISION.
input-output section.
file-control.
select test-file
assign to 'test-file'
organization is line sequential.
data division.
file section.
fd test-file.
01 num-var pic 9 value 0.
working-storage section.
01 num2-var pic 9 value 0.
PROCEDURE DIVISION.
ADD 1 TO num-var num2-var
DISPLAY 'Hello, num ' num2-var ' and file ' num-var.
INITIALIZE num-var num2-var
ADD 1 TO num-var num2-var
DISPLAY 'Hello, num ' num2-var ' and file ' num-var.
ADD num2-var to num-var
ADD num2-var to num-var
DISPLAY 'Hello, num ' num2-var ' and file ' num-var.
ADD num-var to num-var
DISPLAY 'Hello, num ' num2-var ' and file ' num-var.
STOP RUN.
注意:它是固定形式的参考格式,不一定是可移植的,缺少 OPEN
可能意味着它中止 - 并且它不是任何合理的好风格 - 但要证明这个问题。