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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:37:06