添加是否只对WORKING-STORAGE SECTION中的字段有效?

问题描述 投票:-1回答:1

这样的程序好像不能用。

   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中的字段无效。

是这样吗?

cobol gnucobol
1个回答
4
投票

问:这是真的吗?答:不,不是。

ADD 适用于任何 数字 字段,无论它存储在哪里。

请注意,在 FILE SECTION 才能保证在成功的 OPEN 正如你提到的GnuCOBOL:这个总是提供存储)。它没有任何保证值,所以你很可能想要 INITIALIZE 的数据。

COBOL示例,显示了这两种情况,并可以在 调整执行:

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 可以意味着它的流产--而且它不是任何合理的好风格--但要证明这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.