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