Cobol 是否仅为工作存储部分中的字段添加工作。?

Cobol 是否仅为工作存储部分中的字段添加工作。?,cobol,gnucobol,Cobol,Gnucobol,像这样的程序似乎不起作用 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. 0

像这样的程序似乎不起作用

   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文件。添加适用于工作存储部分中的字段,但不适用于文件部分中的字段

那是真的吗?

问:那是真的吗?
A:不,不是

ADD
适用于任何数字字段,无论其存储在何处

请注意,
文件部分
中的数据仅保证在成功打开
后可用(正如您提到的GnuCOBOL:此部分始终提供存储)。它没有任何保证值,因此您可能需要初始化数据

示例COBOL示例显示了这两者,可以是:


注意:它是固定格式的参考格式,不一定是可移植的,缺少的
OPEN
可能意味着它会中止-这不是任何合理的好样式-但是可以演示这个问题。

谢谢。初始化修复了它。
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.