标签: gnucobol

有没有办法让表演不结束(比如无限的 while 循环)?

有没有办法做到这一点?我希望执行仅在执行退出语句时退出。如果不是,我希望它继续循环。

cobol gnucobol

3
推荐指数
1
解决办法
3210
查看次数

未找到 GnuCOBOL 入口点

我已经在我的 Ubuntu 17.04 系统上安装了 GnuCOBOL 2.2。我已经编写了一个基本的 hello world 程序来测试编译器。

1       IDENTIFICATION DIVISION.
2       PROGRAM-ID. HELLO-WORLD.
3      *---------------------------
4       DATA DIVISION.
5      *---------------------------
6       PROCEDURE DIVISION.
7           DISPLAY 'Hello, world!'.
8           STOP RUN.
Run Code Online (Sandbox Code Playgroud)

该程序名为HelloWorld.cbl。当我用命令编译程序时

cobc HelloWorld.cbl
Run Code Online (Sandbox Code Playgroud)

HelloWorld.so 产生。当我尝试使用运行编译的程序时

cobcrun HelloWorld
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

libcob: entry point 'HelloWorld' not found
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释 GnuCOBOL 中的入口点是什么,并可能提出一种解决问题并成功执行此 COBOL 程序的方法?

syntax cobol runtime-error gnucobol

3
推荐指数
1
解决办法
1135
查看次数

如何验证作为字母数字文字传入的负值?

基本上,我得到了一个输入文件,该文件也传入了字母数字和数字字段的混合。我的目标是测试每个字段的有效数据。第一个字段是一个带有 Pic X(3) 描述的字母数字,它应该代表一个数字。但是,因为我正在测试数据有效性,所以在某些情况下,该值可能包含一个字母,例如 0R1 或负值 -001。

测试数据时,使用“是数字”测试非常适合查找非数字值。但是,当传入一个负号时,它无法通过测试。我认为这是因为它识别出破折号或负号 (-) 不是数字字符。我的总体目标是测试数字是否既是数字又是正数,但鉴于上述情况,我无法进行正确的测试。

关于如何解决这个问题的任何建议?

谢谢

cobol gnucobol

3
推荐指数
1
解决办法
290
查看次数

当列与 COBOL REPORT WRITER 模块中的 SUM 子句一起使用时,您能否引用 DECLARATIVES 部分中的列?

除了特定的平台和编译器之外,假设您使用报告编写器模块在 COBOL 程序中定义了这一点:

01 CF-MM TYPE CONTROL FOOTING WS-MM.
             02 LINE PLUS 1.
                03 COLUMN 1             VALUE "* CF MONTH: ".
                03 COLUMN PLUS 1        PIC 99 SOURCE WS-MM.
                03 S-MM COLUMN PLUS 5   PIC S9(4)V99 SUM WS-TUTION-PAY. 
                03 VAL-NN COLUMN PLUS 5 PIC S9(4)V99 SOURCE S-MM.
      <...>
       PROCEDURE DIVISION.
       DECLARATIVES.  
           
        SEC2 SECTION.
            USE BEFORE REPORTING 
            CF-MM.
            DISPLAY "SUM MM LEVEL:" S-MM   
           .
Run Code Online (Sandbox Code Playgroud)

此外,假设程序报告了 3 行,其中 SUM WS-TUTION-PAY 结果为 126。

SEC2 SECTION 中显示 S-MM 值的语句产生的值是多少?我猜应该是 126,但我显示的是 0。这可能是因为值 126 尚未移动到 S-MM,但我不确定。 …

cobol gnucobol netcobol

3
推荐指数
1
解决办法
78
查看次数

GnuCOBOL 调用 Rust:libcob:错误:找不到模块

我想从 GnuCOBOL 调用 Rust。我已经复制了Can GnuCOBOL interface with Rust?中第一个示例的代码。来自 Brian Tiffin 的 GNUCobol FAQ 作为测试,但在运行时出现错误。

预期的:

$ make -B
rustc --crate-type=dylib called.rs
LD_RUN_PATH=. cobc -xj caller.cob -L. -lcalled
:Hello, world:
Run Code Online (Sandbox Code Playgroud)

实际的:

$ make -B
rustc --crate-type=dylib called.rs
LD_RUN_PATH=. cobc -xj caller.cob -L. -lcalled
libcob: error: module 'hello_rust' not found
make: *** [makefile:5: caller] Error 1
Run Code Online (Sandbox Code Playgroud)

从命令行编译这两个文件然后使用$ ./caller.

根据手册页以及GnuCOBOL 手册Rust 参考cobc的链接部分,语法似乎是正确的。我已经按照 GnuCOBOL 手册中的描述进行了尝试,但没有什么区别。Rust 源代码按预期编译为库,但 COBOL 找不到它。$ ./caller COB_LIBRARY_PATH=.

使用$ cobcrun caller …

cobol gnucobol rust

3
推荐指数
1
解决办法
242
查看次数

OpenCOBOL示例无法编译

我正在运行Ubuntu,并尝试学习COBOL。我涉猎了一些在线教程,但是与某些程序的结果不一致。

我更喜欢在bash shell中使用vim。带我去OpenCOBOL(COBC)

有一个不错的教程可以教我一些基础知识吗?我一直在研究这一过程。

http://www2.southeastern.edu/Academics/Faculty/kyang/Cmps401/P2Cobol/Resources/Teach%20Yourself%20Cobol%20In%2021%20Days%20%282nd%20Ed%29.pdf

我的问题是,在运行某些示例源代码时,编译器在尝试使用“ *”时返回错误。它说它期望文件结束。

这是我的源代码:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
ENVIRONMENT DIVISION.
*comment here
DATA DIVISION.
PROCEDURE DIVISION.
        DISPLAY 'HELLO WORLD!'.
        STOP RUN.
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的命令:

 cobc -x -free -o helloworld helloworld.cbl
Run Code Online (Sandbox Code Playgroud)

这是返回的错误

helloworld.cbl:4: Error: syntax error, unexpected '*', expecting "end of file"
Run Code Online (Sandbox Code Playgroud)

cobol gnucobol

2
推荐指数
1
解决办法
1805
查看次数

打开文件以便在COBOL中读取

我在Windows 10上使用OpenCobolIDE 4.7.4(它基于GnuCOBOL)并尝试编译该程序打开一个文件进行阅读:

   IDENTIFICATION DIVISION.
   PROGRAM-ID. HELLO.

   ENVIRONMENT DIVISION.
      INPUT-OUTPUT SECTION.
         FILE-CONTROL.
         SELECT STUDENT ASSIGN TO 'input.txt'
         ORGANIZATION IS LINE SEQUENTIAL.            

   DATA DIVISION.
      FILE SECTION.
      FD STUDENT.
      01 STUDENT-FILE.
         05 STUDENT-ID PIC 9(5).
         05 NAME PIC A(25).

      WORKING-STORAGE SECTION.
      01 WS-STUDENT.
         05 WS-STUDENT-ID PIC 9(5).
         05 WS-NAME PIC A(25).
      01 WS-EOF PIC A(1). 

   PROCEDURE DIVISION.
      OPEN INPUT STUDENT.
         PERFORM UNTIL WS-EOF='Y'
         READ STUDENT INTO WS-STUDENT
            AT END MOVE 'Y' TO WS-EOF
            NOT AT END DISPLAY WS-STUDENT
         END-READ
         END-PERFORM.
      CLOSE …
Run Code Online (Sandbox Code Playgroud)

cobol gnucobol

2
推荐指数
1
解决办法
2506
查看次数

COBOL子串在两个有限点之间

我知道string_variable(start:length)可以用来获得给定起点和子串长度的字符串的子串,但是,我发现我经常需要在'start'和'end'点之间得到一个子串.

虽然我知道我总能做到这一点:

SUBTRACT start FROM end GIVING len
string(start:len)
Run Code Online (Sandbox Code Playgroud)

每次我编写经常使用此功能的程序时,必须这样做是很麻烦的.是否有更快/内置的方法来实现这一目标?

string cobol substring gnucobol

2
推荐指数
1
解决办法
75
查看次数

如何在 COBOL 程序的 SYSOUT 假脱机打印输出中纠正此逻辑错误?

这是cobol代码

     *-----------------------
       IDENTIFICATION DIVISION.
      *-----------------------
       PROGRAM-ID.    TOPACCTS
       AUTHOR.        Otto B. Boolean.
      *--------------------
       ENVIRONMENT DIVISION.
      *--------------------
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT PRINT-LINE ASSIGN TO PRTLINE.
           SELECT CUST-RECS   ASSIGN TO CUSTRECS.
      *-------------
       DATA DIVISION.
      *-------------
       FILE SECTION.
       FD  PRINT-LINE RECORDING MODE F.
       01  PRINT-REC.
           05  FILLER         PIC X(02) VALUE SPACES.
           05  LAST-NAME-O    PIC X(25).
           05  FILLER         PIC X(02) VALUE SPACES.
           05  ACCT-BALANCE-O PIC X(18).
           05  FILLER         PIC X(33) VALUE SPACES.
      *
       FD  CUST-RECS RECORDING MODE F.
       01  CUSTOMER-REC.
           05  LAST-NAME          PIC X(25).
           05 …
Run Code Online (Sandbox Code Playgroud)

cobol mainframe jcl cobol85 gnucobol

2
推荐指数
1
解决办法
178
查看次数

COBOL 程序中出现重叠错误

科博程序:

PROGRAM-ID. SCHPROG.            
ENVIRONMENT DIVISION.           
INPUT-OUTPUT SECTION.           
FILE-CONTROL.                   
    SELECT MYFILE ASSIGN TO INDD
    ORGANIZATION IS SEQUENTIAL  
    ACCESS MODE IS SEQUENTIAL.  
DATA DIVISION.                  
FILE SECTION.                   
FD MYFILE.                      
01 FILERECORDS.                 
    05 NAME    PIC A(10).       
    05 CLASS-IN PIC 9(1).       
    05 ROLL    PIC 9(5).        
WORKING-STORAGE SECTION.        
COPY SCHMAPA.                   
COPY SCHMAPB.                   
COPY SCHMAPC.                   
01 END-OF-FILE PIC A(3) VALUE 'NO'.
PROCEDURE DIVISION.                
000-MAIN-PARA.                     
    PERFORM 100-SEND-MAPA.         
    PERFORM 100-RECEIVE-MAPA.      
    IF CHOICEI = '1'               
    PERFORM 200-SEND-MAPB          
    PERFORM 200-RECEIVE-MAPB       
    PERFORM 200-SEND-MAPB          
    PERFORM 100-SEND-MAPA          
    END-IF.                        
    IF CHOICEI = '2'               
    PERFORM 300-SEND-MAPC …
Run Code Online (Sandbox Code Playgroud)

cobol mainframe cics zos gnucobol

2
推荐指数
1
解决办法
1614
查看次数

标签 统计

cobol ×10

gnucobol ×10

mainframe ×2

cics ×1

cobol85 ×1

jcl ×1

netcobol ×1

runtime-error ×1

rust ×1

string ×1

substring ×1

syntax ×1

zos ×1