GnuCOBOL编译程序执行无输出,Display语句失效求助
GnuCOBOL 3.1.2.0程序执行无终端输出问题
我正在使用GnuCOBOL 3.1.2.0开发程序,操作流程如下:
- 取消注释代码第59行(
PERFORM GRABO-DATOS THRU F-GRABO-DATOS),编译执行后成功生成./clientes.dat索引文件; - 注释该行并取消注释第60行(
PERFORM LEO-DATOS THRU F-LEO-DATOS),使用命令cobc -m fuente02.cbl重新编译; - 用
cobcrun -r fuente02执行生成的.so文件时,Linux终端无任何输出(包括错误信息),但预期应读取文件并通过Display语句展示数据。
我附上了编译日志、运行时配置日志,以及启用-ftraceall编译和COB_SET_TRACE=1运行后的跟踪日志,日志显示程序执行到了Display语句,但终端无内容输出。我是GnuCOBOL新手,急需解决该问题。
程序代码
****************************************************************** * Author: * Date: * Purpose: * Tectonics: cobc ****************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. fuente02. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OPTIONAL CLIENTES ASSIGN TO "./clientes.dat" ORGANIZATION INDEXED ACCESS MODE DYNAMIC RECORD KEY IS ID_CLIENTE ALTERNATE KEY CLI_NOMBRE WITH DUPLICATES ALTERNATE KEY CLI_ALT_2 WITH DUPLICATES STATUS ST-FILE. DATA DIVISION. FILE SECTION. FD CLIENTES. 01 REG-CLIENTES. 03 ID_CLIENTE. 05 CLI_ID PIC 9(7). 03 CLI_SALDO PIC S9(7)V9(3). 03 CLI_NOMBRE PIC X(70). 03 CLI_DIRECCION PIC X(80). 03 CLI_CODPOST PIC X(10). 03 CLI_CATEGORIA PIC X. 03 CLI_ALT_2. 05 CLI_CATEGORIA_2 PIC X. 05 CLI_NOMBRE_2 PIC X(60). 03 CLI_RAZONSOCIAL PIC X(60). 03 FILLER PIC X(240). WORKING-STORAGE SECTION. 01 ST-FILE PIC XX. 01 X PIC X. 77 BANDERA PIC 9. 01 SALDO-Z PIC Z(6)9,99. 01 SALDO-ZZ PIC ------9,99. PROCEDURE DIVISION. PABLO. PERFORM ABRO-ARCHIVOS. * PERFORM GRABO-DATOS THRU F-GRABO-DATOS. PERFORM LEO-DATOS THRU F-LEO-DATOS. PERFORM CIERRO-ARCHIVOS. STOP RUN. ABRO-ARCHIVOS. OPEN I-O CLIENTES. IF ST-FILE > "07" DISPLAY "ERROR ABRIENDO EL ARCHIVO". CIERRO-ARCHIVOS. CLOSE CLIENTES. GRABO-DATOS. INITIALIZE REG-CLIENTES. MOVE 1 TO CLI_ID. MOVE 0 TO CLI_SALDO. MOVE "VAR-NOMBRE" TO CLI_NOMBRE. MOVE "W-DIRECCION" TO CLI_DIRECCION. GRABO-REGISTRO. WRITE REG-CLIENTES. IF ST-FILE = "99" GO TO GRABO-REGISTRO. IF ST-FILE > "07" DISPLAY "ERROR GRABANDO EL ARCHIVO" ACCEPT X. F-GRABO-DATOS. EXIT. LEO-DATOS. INITIALIZE REG-CLIENTES. START CLIENTES KEY IS NOT LESS THAN ID_CLIENTE. READ CLIENTES NEXT RECORD. IF ST-FILE = "99" GO TO LEO-DATOS. IF ST-FILE > "07" DISPLAY "ERROR LEYENDO EL ARCHIVO". MUESTRO-DATOS. MOVE -15,58 TO SALDO-ZZ. DISPLAY "Id Cliente" LINE 10 COL 5. DISPLAY "Saldo" LINE 11 COL 5. DISPLAY "Nombre" LINE 12 COL 5. DISPLAY "Direccion" LINE 13 COL 5. DISPLAY CLI_ID LINE 10 COL 30. DISPLAY SALDO-ZZ LINE 11 COL 30. DISPLAY CLI_NOMBRE LINE 12 COL 30. DISPLAY CLI_DIRECCION LINE 13 COL 30. ACCEPT X LINE 14 COL 70. F-LEO-DATOS. EXIT. END PROGRAM fuente02.
编译日志
reuy@hal:~/Documentos$ cobc -W -v fuente02.cbl cobc (GnuCOBOL) 3.1.2.0 编译于 Mar 15 2023 22:56:22 打包于 Dec 23 2020 12:04:58 UTC C版本 "10.2.1 20210110" 加载通用配置文件 «default.conf» 命令行: cobc -W -v fuente02.cbl 预处理: fuente02.cbl -> /tmp/cob2835_0.cob 返回状态: 0
运行时配置日志
reuy@hal:~/Documentos$ cobcrun -r fuente02 GnuCOBOL 3.1.2.0 运行时配置 via /usr/local/share/gnucobol/config/runtime.cfg 调用配置 : COB_LOAD_CASE : 未设置 : COB_PHYSICAL_CANCEL : 否 (默认) : COB_PRE_LOAD : 未设置 : COB_STACKTRACE : 是 (默认) : COB_LIBRARY_PATH : 未设置 I/O文件配置 : COB_FILE_PATH : 未设置 : COB_VARSEQ_FORMAT : 未设置 : COB_LS_FIXED : 否 (默认) : COB_LS_NULLS : 否 (默认) : COB_SORT_CHUNK : 256 KB (默认) : COB_SORT_MEMORY : 128 MB (默认) : COB_SYNC : 否 (默认) : DB_HOME : 未设置 屏幕I/O配置 : COB_BELL : 未设置 : COB_REDIRECT_DISPLAY : 否 (默认) : COB_SCREEN_ESC : 否 (默认) : COB_SCREEN_EXCEPTIONS : 否 (默认) : COB_TIMEOUT_SCALE : 未设置 (1000) : COB_INSERT_MODE : 否 (默认) : COB_MOUSE_FLAGS : 1 (默认) : COB_DISPLAY_PRINT_PIPE : 未设置 : COB_DISPLAY_PRINT_FILE : 未设置 : COB_DISPLAY_PUNCH_FILE : 未设置 : COB_LEGACY : 否 (默认) : COB_EXIT_WAIT : 是 (默认) : COB_EXIT_MSG : '程序结束,请按任意键退出 : ' (默认) 其他配置 : COB_DISABLE_WARNINGS : 否 (默认) : COB_ENV_MANGLE : 否 (默认) : COB_COL_JUST_LRC : 是 (默认) : COB_SET_DEBUG : 否 (默认) : COB_SET_TRACE : 否 (默认) : COB_TRACE_FILE : 未设置 : COB_TRACE_FORMAT : '%P %S Line: %L' (默认) : COB_DUMP_FILE : 未设置 : COB_DUMP_WIDTH : 100 (默认) : COB_CURRENT_DATE : 未设置 系统配置 env: USERNAME : 'reuy' (由LOGNAME设置) env: LANG : 'es_CO.UTF-8' : OSTYPE : 未设置 env: TERM : 'xterm-256color' : LOCALEDIR : /usr/local/share/locale : LC_CTYPE : C : LC_NUMERIC : C : LC_COLLATE : es_CO.UTF-8 : LC_MESSAGES : es_CO.UTF-8 : LC_MONETARY : es_CO.UTF-8 : LC_TIME : es_CO.UTF-8
跟踪日志
reuy@hal:~/Documentos$ cobcrun -runtime fuente02 GnuCOBOL 3.1.2.0 运行时配置 via /usr/local/share/gnucobol/config/runtime.cfg 调用配置 : COB_LOAD_CASE : 未设置 : COB_PHYSICAL_CANCEL : 否 (默认) : COB_PRE_LOAD : 未设置 : COB_STACKTRACE : 是 (默认) : COB_LIBRARY_PATH : 未设置 I/O文件配置 : COB_FILE_PATH : 未设置 : COB_VARSEQ_FORMAT : 未设置 : COB_LS_FIXED : 否 (默认) : COB_LS_NULLS : 否 (默认) : COB_SORT_CHUNK : 256 KB (默认) : COB_SORT_MEMORY : 128 MB (默认) : COB_SYNC : 否 (默认) : DB_HOME : 未设置 屏幕I/O配置 : COB_BELL : 未设置 : COB_REDIRECT_DISPLAY : 否 (默认) : COB_SCREEN_ESC : 否 (默认) : COB_SCREEN_EXCEPTIONS : 否 (默认) : COB_TIMEOUT_SCALE : 未设置 (1000) : COB_INSERT_MODE : 否 (默认) : COB_MOUSE_FLAGS : 1 (默认) : COB_DISPLAY_PRINT_PIPE : 未设置 : COB_DISPLAY_PRINT_FILE : 未设置 : COB_DISPLAY_PUNCH_FILE : 未设置 : COB_LEGACY : 否 (默认) : COB_EXIT_WAIT : 是 (默认) : COB_EXIT_MSG : '程序结束,请按任意键退出 : ' (默认) 其他配置 : COB_DISABLE_WARNINGS : 否 (默认) : COB_ENV_MANGLE : 否 (默认) : COB_COL_JUST_LRC : 是 (默认) : COB_SET_DEBUG : 否 (默认) env: COB_SET_TRACE : 是 : COB_TRACE_FILE : 未设置 : COB_TRACE_FORMAT : '%P %S Line: %L' (默认) : COB_DUMP_FILE : 未设置 : COB_DUMP_WIDTH : 100 (默认) : COB_CURRENT_DATE : 未设置 系统配置 env: USERNAME : 'reuy' (由LOGNAME设置) env: LANG : 'es_CO.UTF-8' : OSTYPE : 未设置 env: TERM : 'xterm-256color' : LOCALEDIR : /usr/local/share/locale : LC_CTYPE : C : LC_NUMERIC : C : LC_COLLATE : es_CO.UTF-8 : LC_MESSAGES : es_CO.UTF-8 : LC_MONETARY : es_CO.UTF-8 : LC_TIME : es_CO.UTF-8 Source: 'fuente02.cbl' Program-Id: fuente02 Program-Id: fuente02 Entry: fuente02 Line: 50 Program-Id: fuente02 Paragraph: PABLO Line: 51 Program-Id: fuente02 PERFORM Line: 52 Program-Id: fuente02 Paragraph: ABRO-ARCHIVOS Line: 58 Program-Id: fuente02 OPEN Line: 59 Program-Id: fuente02 IF Line: 60 Program-Id: fuente02 PERFORM Line: 54 Program-Id: fuente02 Paragraph: LEO-DATOS Line: 88 Program-Id: fuente02 INITIALIZE Line: 89 Program-Id: fuente02 START Line: 90 Program-Id: fuente02 READ Line: 91 Program-Id: fuente02 IF Line: 92 Program-Id: fuente02 IF Line: 95 Program-Id: fuente02 Paragraph: MUESTRO-DATOS Line: 99 Program-Id: fuente02 MOVE Line: 100 Program-Id: fuente02 DISPLAY Line: 101 Program-Id: fuente02 DISPLAY Line: 102 Program-Id: fuente02 DISPLAY Line: 103 Program-Id: fuente02 DISPLAY Line: 104 Program-Id: fuente02 DISPLAY Line: 105 Program-Id: fuente02 DISPLAY Line: 106 Program-Id: fuente02 DISPLAY Line: 107 Program-Id: fuente02 DISPLAY Line: 108 Program-Id: fuente02 ACCEPT Line: 109 Program-Id: fuente02 Paragraph: F-LEO-DATOS Line: 111 Program-Id: fuente02 EXIT Line: 112 Program-Id: fuente02 PERFORM Line: 55 Program-Id: fuente02 Paragraph: CIERRO-ARCHIVOS Line: 64 Program-Id: fuente02 CLOSE Line: 65 Program-Id: fuente02 STOP RUN Line: 56
内容的提问来源于stack exchange,提问作者reymagnus
相关产品推荐
相关产品推荐

