OpenCOBOL新手求助:创建含FILLER子句的显示行结构
解决OpenCOBOL中带FILLER的整齐显示行问题
你当前代码的问题是所有DISPLAY语句都指定了相同的行和列位置,导致内容互相覆盖,无法实现有序排列。下面提供两种实现整齐布局的方法,其中第一种会用到你需要的FILLER子句。
方法一:用FILLER定义结构化显示行
在DATA DIVISION中预先定义包含城市名、填充符、温度的行结构,通过给数据项赋值后整行显示,实现自动对齐:
IDENTIFICATION DIVISION. PROGRAM-ID. CITY-TEMP-DISPLAY. DATA DIVISION. WORKING-STORAGE SECTION. 01 CITY-TEMP-LINE. 05 CITY-NAME PIC X(10). *> 预留10位存储城市名 05 FILLER PIC X(5) VALUE SPACES. *> 城市与温度之间的空格填充 05 TEMP-VALUE PIC 99. *> 存储温度数值 05 FILLER PIC X(2) VALUE "C". *> 固定显示温度单位 01 WS-DUMMY PIC X. PROCEDURE DIVISION. * 显示标题 DISPLAY "Here are the average temperatures for cities in the area" LINE 2 COLUMN 5. * 逐行赋值并显示 MOVE "Montreal" TO CITY-NAME. MOVE 22 TO TEMP-VALUE. DISPLAY CITY-TEMP-LINE LINE 3 COLUMN 10. MOVE "Ottawa" TO CITY-NAME. MOVE 20 TO TEMP-VALUE. DISPLAY CITY-TEMP-LINE LINE 4 COLUMN 10. MOVE "Toronto" TO CITY-NAME. MOVE 24 TO TEMP-VALUE. DISPLAY CITY-TEMP-LINE LINE 5 COLUMN 10. MOVE "Kingston" TO CITY-NAME. MOVE 21 TO TEMP-VALUE. DISPLAY CITY-TEMP-LINE LINE 6 COLUMN 10. MOVE "Cornwall" TO CITY-NAME. MOVE 23 TO TEMP-VALUE. DISPLAY CITY-TEMP-LINE LINE 7 COLUMN 10. DISPLAY "Press any key to continue . . ." LINE 9 COLUMN 10. ACCEPT WS-DUMMY. STOP RUN.
方法二:直接控制每个内容的列位置
如果不想预先定义数据结构,也可以给每个城市和对应温度指定不同的列位置,手动实现对齐:
IDENTIFICATION DIVISION. PROGRAM-ID. CITY-TEMP-DISPLAY. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-DUMMY PIC X. PROCEDURE DIVISION. DISPLAY "Here are the average temperatures for cities in the area" LINE 2 COLUMN 5. DISPLAY "Montreal" LINE 3 COLUMN 10. DISPLAY "22C" LINE 3 COLUMN 25. DISPLAY "Ottawa" LINE 4 COLUMN 10. DISPLAY "20C" LINE 4 COLUMN 25. DISPLAY "Toronto" LINE 5 COLUMN 10. DISPLAY "24C" LINE 5 COLUMN 25. DISPLAY "Kingston" LINE 6 COLUMN 10. DISPLAY "21C" LINE 6 COLUMN 25. DISPLAY "Cornwall" LINE 7 COLUMN 10. DISPLAY "23C" LINE 7 COLUMN 25. DISPLAY "Press any key to continue . . ." LINE 9 COLUMN 10. ACCEPT WS-DUMMY. STOP RUN.
关键说明
FILLER的作用是在数据项之间填充固定内容(这里是空格和温度单位),让整个行的结构固定,无需每次手动计算列偏移,保证所有行的对齐一致性。- 你原来的代码中,所有
DISPLAY都用了相同的行和列位置,后续内容会覆盖前面的,这是导致布局混乱的核心原因。
内容的提问来源于stack exchange,提问作者nai
相关产品推荐
相关产品推荐

