制作屏幕(COBOL)

制作屏幕(COBOL),cobol,Cobol,嘿,大家好,我还有一个任务要在COBOL完成,我出去了。问题是我在ACCEPT SCREEN-IMAGE命令中遇到语法错误,这个程序需要用户输入。我看不出我做错了什么,所以我被卡住了。我相信其他的一切都是正确的,所以一旦解决了这个问题,我就完成了。代码如下: SCREEN SECTION. 01 SCREEN-IMAGE. 05 BLANK SCREEN BACKGROUND-COLOR 0 FOREGROUND-COLOR 1

嘿,大家好,我还有一个任务要在COBOL完成,我出去了。问题是我在ACCEPT SCREEN-IMAGE命令中遇到语法错误,这个程序需要用户输入。我看不出我做错了什么,所以我被卡住了。我相信其他的一切都是正确的,所以一旦解决了这个问题,我就完成了。代码如下:

SCREEN SECTION.
   01  SCREEN-IMAGE.
       05  BLANK SCREEN
           BACKGROUND-COLOR 0
           FOREGROUND-COLOR 15.
       05  LINE 02  COLUMN 02  PIC X(8)
               FROM CURRENT-TIME.
       05  LINE 02  COLUMN 26  PIC X(28)
               FROM TITLE-LINE
               FOREGROUND-COLOR 09.
       05  LINE 02  COLUMN 40  PIC X(8)
               FROM DATE-TODAY.
       05  LINE 05  COLUMN 02
               VALUE 'FUNCTION CODE:'
               FOREGROUND-COLOR 09.
       05  LINE 05  COLUMN 12  PIC X(3)
               FROM CODE-SCREEN AUTO.
       05  LINE 05  COLUMN 17
               VALUE '<ADD, CHG, DEL, INQ, END>'.
       05  LINE 09  COLUMN 17
               VALUE 'REP CODE:'
               FOREGROUND-COLOR 09.
       05  LINE 09  COLUMN 29  PIC X(3)
               FROM REP-SCREEN AUTO.
       05  LINE 11  COLUMN 17
               VALUE 'NAME:'
               FOREGROUND-COLOR 09.
       05  LINE 11  COLUMN 29  PIC X(3)
               FROM NAME-SCREEN AUTO.
       05  LINE 13  COLUMN 17
               VALUE 'DISTRICT:'
               FOREGROUND-COLOR 09.
       05  LINE 13  COLUMN 29  PIC X(3)
               FROM DIST-SCREEN AUTO.
       05  LINE 15  COLUMN 17
               VALUE 'COMMISSION RATE:'
               FOREGROUND-COLOR 09.
       05  LINE 15  COLUMN 29  PIC X(3)
               FROM COM-SCREEN AUTO.
       05  LINE 17  COLUMN 17
               VALUE 'DATE ADDED:'
               FOREGROUND-COLOR 09.
       05  LINE 17  COLUMN 29  PIC X(10)
               FROM ADD-DATE.
       05  LINE 19  COLUMN 17
               VALUE 'DATE CHANGED:'
               FOREGROUND-COLOR 09.
       05  LINE 19  COLUMN 29  PIC X(3)
               FROM CHANGE-DATE.
       05  LINE 24  COLUMN 17  PIC X(29)
               FROM ERROR-DISPLAY.

   PROCEDURE DIVISION.
   100-MAIN.
       OPEN I-O   REP-MASTER-FILE
       CALL 'DATETIME' USING DATE-TIME-PASS-AREA
       MOVE DATE-MMDDYY-SLASHES TO DATE-TODAY
       MOVE TIME-HHMMSSXX-COLONS TO CURRENT-TIME
       PERFORM UNTIL CODE-SCREEN = 'END' OR 'end'
           DISPLAY SCREEN-IMAGE
           ACCEPT SCREEN-IMAGE
           MOVE 0 TO ERROR-COUNT
           PERFORM 150-CHECK-COM
           PERFORM 140-CHECK-DIST
           PERFORM 130-CHECK-NAME
           PERFORM 120-CHECK-REP
           PERFORM 110-CHECK-CODE
           IF ERROR-COUNT = 0
               PERFORM 200-PROCESS-ONE-RECORD
           END-IF
       END-PERFORM

       CLOSE REP-MASTER-FILE
       STOP RUN.
屏幕部分。
01屏幕图像。
05空白屏幕
背景色0
前景色15。
05第02行第02列图X(8)
从现在开始。
05第02行第26列图X(28)
从标题行开始
前景色09。
05第02行第40列图X(8)
从今天开始。
05第05行第02列
值“函数代码:”
前景色09。
05第05行第12列图X(3)
从代码屏幕自动。
05第05行第17列
值“”。
05第09行第17列
值“代表代码:”
前景色09。
05第09行第29列图X(3)
从REP-SCREEN AUTO。
05第11行第17列
值“名称:”
前景色09。
05第11行第29列图X(3)
从名称屏幕自动。
05第13行第17列
价值'地区:'
前景色09。
05第13行第29列图X(3)
从DIST-SCREEN自动。
05第15行第17列
价值‘佣金率:’
前景色09。
05第15行第29列图X(3)
从COM屏幕自动。
05第17行第17列
价值“添加日期:”
前景色09。
05第17行第29列图X(10)
从添加日期开始。
05第19行第17列
值“更改日期:”
前景色09。
05第19行第29列图X(3)
从更改日期开始。
05第24行第17列图X(29)
从错误显示。
程序司。
100-MAIN。
打开I-O REP-MASTER-FILE
使用DATE-TIME-PASS-AREA调用“DATETIME”
将DATE-MMDDYY-SLASHES移动到DATE-TODAY
将TIME-hhmssxx-COLONS移动到当前时间
执行直到代码屏幕='END'或'END'
显示屏幕图像
接受屏幕图像
将0移动到错误计数
执行150-CHECK-COM
执行140-CHECK-DIST
执行130-CHECK-NAME
执行120-CHECK-REP
执行110检查代码
如果错误计数=0
执行200个过程一个记录
端到端IF
末端执行
关闭REP-MASTER-FILE
停,跑。

与许多人认为的相反,句号(句号)并不是结束COBOL语句的唯一方法

Move A To B
Move C To D
逻辑上等同于

Move A To B.
Move C To D.
它变得松松垮垮的地方是

If A = B
    Move C To D
    Add 1 To E.
如果我在D之后加上句点,1将无条件地加到E。COBOL85标准在许多语句中添加了显式作用域终止符,因此我们得到了更容易直观解析的构造

If A = B
    Move C To D
    Add 1 To E
End-If

现在如果我在D后面加上句点,我会得到一个编译错误。我认识的大多数COBOL程序员现在都使用显式范围终止符,并且只在段落名称和段落末尾加上句点,否则将它们从过程部分中排除。

也许您需要在屏幕上输入和/或更新一些字段,以便
接受它?我认为输入字段在其描述中有一个
TO
短语,更新字段有一个
USING
短语。我在您的屏幕描述中看到的唯一内容是文字和来自
短语的
。基本上,没有什么可以接受的

为什么在
显示
接受
命令后没有一个句号?@Gabe您需要这些吗?在给我的示例中,它没有句点。你能发布错误消息吗?这可能有助于确定错误。您确定您正在使用的数据字段以前在程序(FD,WORKING-STORAGE)中定义正确吗?在Cobol 85中,终止语句不再需要句点。End If是句点的替换。我一直在检查hold代码,并在If语句结束后输入End If where句点。我认为这是因为一些较新的编译器不喜欢句号,而whth End if更便于用户观看。