COBOL 85技术求助:0101位置空格放置及DISPLAY AT清屏失败问题
COBOL问题解决方案
问题1:在0101位置放置空格的正确方法
在COBOL 85中,要在第1行第1列(0101位置)放置空格,直接使用带AT子句的DISPLAY语句即可:
DISPLAY SPACE AT 0101.
如果需要覆盖整行内容,可加上FOR子句指定长度(以终端常见的80列为例):
DISPLAY SPACE AT 0101 FOR 80.
注:部分COBOL编译器支持DISPLAY SPACE LINE 1 COLUMN 1这类直观写法,但AT 0101是COBOL 85标准语法,兼容性更强。
问题2:清屏实现与输入逻辑优化
清屏的解决方法
COBOL 85没有标准清屏语句,清屏依赖终端控制序列,可通过以下两种方式实现:
- 发送ANSI终端清屏序列
定义包含ANSI清屏转义字符的常量,直接DISPLAY该常量即可触发清屏(适用于支持ANSI序列的终端):
01 CLEAR-SCREEN-CONSTANT PIC X(4) VALUE X'1B5B324A'. * X'1B'是ESC字符,X'5B324A'对应"[2J",组合为ANSI清屏指令
使用时执行:
DISPLAY CLEAR-SCREEN-CONSTANT.
- 逐行覆盖清除
若终端不支持ANSI序列,可循环清除每一行内容(以24行终端为例):
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 24 DISPLAY SPACE AT I(01) FOR 80 END-PERFORM.
输入逻辑优化(满足10位数字输入+END终止需求)
原程序中DT-IN定义为PIC X(3),无法接收10位数字,需调整变量定义并优化输入判断逻辑:
- 将输入接收变量改为字符型,兼容"END"和数字输入
- 可选增加数字验证逻辑,确保输入为10位有效数字
修改后的完整程序示例:
IDENTIFICATION DIVISION. PROGRAM-ID. INPUT-ASSIGMENT. ****************************************************************** DATA DIVISION. WORKING-STORAGE SECTION. ****************************************************************** 01 A. 03 A1 OCCURS 10 TIMES PIC X(10). 01 I PIC 9(3). 01 J PIC 9(3). 01 KETA PIC 9(4). 01 DT-IN PIC X(10). 01 CLEAR-SCREEN-CONSTANT PIC X(4) VALUE X'1B5B324A'. ****************************************************************** PROCEDURE DIVISION. PERFORM MAIN-SYORI. STOP RUN. ****************************************************************** MAIN-SYORI SECTION. PERFORM INITIALIZE-RTN. PERFORM TAMEKOMI-SYORI. PERFORM TORIDASHI-SYORI. ****************************************************************** INITIALIZE-RTN SECTION. DISPLAY CLEAR-SCREEN-CONSTANT. MOVE 1 TO I. MOVE 1 TO J. ****************************************************************** TAMEKOMI-SYORI SECTION. PERFORM UNTIL I > 10 OR DT-IN = "END" DISPLAY "10桁の数字を入力してください(終了する場合はENDを入力):" ACCEPT DT-IN IF DT-IN NOT = "END" * 可选:验证输入是否为10位数字 IF DT-IN IS NUMERIC AND LENGTH(DT-IN) = 10 MOVE DT-IN TO A1(I) ADD 1 TO I ELSE DISPLAY "無効な入力です。10桁の数字を入力してください。" END-IF END-IF END-PERFORM. ****************************************************************** TORIDASHI-SYORI SECTION. DISPLAY CLEAR-SCREEN-CONSTANT. PERFORM VARYING J FROM 1 BY 1 UNTIL J > I - 1 DISPLAY A1(J) END-PERFORM. DISPLAY "プログラムは終了しました.". ****************************************************************** END PROGRAM INPUT-ASSIGMENT.
内容的提问来源于stack exchange,提问作者Gerelmaa Sergelen
相关产品推荐
相关产品推荐

