You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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没有标准清屏语句,清屏依赖终端控制序列,可通过以下两种方式实现:

  1. 发送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.
  1. 逐行覆盖清除
    若终端不支持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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:50:59