问题标签 [gnucobol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1068 浏览

cobol - Is it possible to display multiple screens in a loop in cobol?

So I'm trying to make a program in OpenCobolIDE that uses the SCREEN SECTION feature in COBOL to create a menu where the user chooses whether he wants to input data or display it. This data is being recorded in a sequential .txt file. The writing process works fine so I don't add the code of this part here. The problem is in the reading process. I wanted the program to display multiple times the DISPLAY-SCREEN in a PERFORM loop showing all the records in my file but this is not working. I thought that by removing the BLANK SCREEN from my DISPLAY-SCREEN it would work the way I wanted but all that happens is that the program shows the DISPLAY-SCREEN a single time and it doesn't even display any records. What could be the problem? Here is the code:

0 投票
1 回答
1421 浏览

cobol - 如何使用屏幕部分接受 cobol 中的数值

所以我正在尝试使用屏幕部分在 cobol 中制作一个简单的程序,它只会计算 2 个数字的总和。我使用的编译器是 OpenCobolIDE。问题是我收到一条错误消息,说我的 WS-N1 变量不是数值。这是代码:

0 投票
2 回答
481 浏览

cobol - COBOL - 对于相同的 COMPUTE,从大型机到 PC 的不同答案

我有一个非常简单的虚拟 COBOL 程序,它执行虚拟计算并显示结果。

当我在大型机上编译这段代码(使用编译器 MVS Enterprise COBOL V4.2)并执行它时,我得到“NUM-C IS 100”,可能是因为 (399 / 100) 在计算(同样适用于 211 / 100)。

但是当我在 PC 上编译相同的代码(使用 GnuCobol 编译器)并执行它时,我得到“NUM-C IS 188”。PC 的答案是正确的,但我想让它像大型机一样运行(因此,在计算语句中失去精度以给出 100 而不是 188)......我该怎么做?

上面的原因是这段代码的一般表达:

这是一个有 50 年历史的火车模拟程序的一部分,我需要将其迁移到 GnuCOBOL。COMPUTE 中使用的所有字段都是整数。我需要能够从 GnuCOBOL 得到相同的答案。

已确认 OpenCOBOL/GnuCOBOL 最高 2.0。

0 投票
1 回答
64 浏览

cobol - 输入的数据未正确存储

我对编程语言 COBOL 的编译器有疑问。我使用程序“OpenCobolIDE”(GnuCOBOL 1.1 Mingw)。

首先这里是一个示例程序的代码。

输入我的名字“Albert”后,控制台不会发回消息“Your Name: Albert”。控制台在“Albert”之后为空。但是如果我将字符串名称的长度设置为 6,因为我的名字是 6 个字符长,那么程序可以正常工作并且控制台显示“您的姓名:阿尔伯特”。

除此之外,该子句with no advancing无法正常工作。当我使用此命令时,控制台不会打印“你的名字是什么?”,它会跳过该行,我必须先输入我的名字,输入我的名字后,控制台会显示:“你的名字是什么?:阿尔伯特”。但是在编译程序的 .exe 中,命令行with no advancing可以正常工作。

为什么会这样,我该如何修复它?

0 投票
3 回答
488 浏览

c - 从 C 库返回到 GNU COBOL 的不可打印整数指针

我学习 COBOL 只是为了好玩,现在想从我的 COBOL 源代码中调用 C 函数(使用 GnuCOBOL)。

我可以很好地调用 C 函数,但是我的一个函数有一个小问题,如下所示:(它只是用相同的参数包装另一个函数,现在)

我的问题是 id 变量中返回的值稍后在 COBOL 中不可打印(下面的 TSI-ID)。例如,返回的值可以是 67,如果我在 COBOL 中打印变量,我会得到 ascii 字符“C”而不是预期值 0067。

COBOL 记录如下所示:

我的电话看起来像这样:

我是 COBOL 的新手,我的 C 技能相当生疏,因为我通常使用 Java 工作。我的代码中是否有明显的新手错误?

0 投票
1 回答
764 浏览

postgresql - 带有 Visual Studio 的 Windows 上的 OpenCobol 和 PostgreSQL

我目前正面临这个 4 人团队的问题。

使用我在kiska网站上下载的二进制文件。我能够将 cobol 编译为 C 并运行它cobcrun或将其编译为可执行文件。但是我无法让 opencobol 找到 postgres 命令。

这是我的 cobol 脚本的策略:

...

通话PQconnectdb失败module ont found : PQconnectdb

我注意到,如果我将 libpq.dll 重命名,错误消息会更改为can't find entry point. 所以至少我确定它可以得到我的dll。

在深入研究了libcob库的调用方法的代码之后。我发现可以使用环境变量COB_PRE_LOAD预加载一些 dll,但没有结果。

这是编译 cobol 的脚本:

我没有看到任何缺失,我使用的是 kiska 网站的 64 位二进制文​​件,并使用 Visual Studio 的 64 位 cl.exe,Postgres 也是 64 位版本(使用dependencyChecker 检查)。

我什至尝试从 Visual Studio 编译生成的 C,结果相同,但我可能会遗漏一些东西,我在 C 语言中很烂,从来没有真正需要管理 DLL 或使用 Visual Studio。

我错过了什么?

0 投票
1 回答
105 浏览

cobol - How to Select and display latest date (openCobol)

Im new to Cobol.

A column of Date need to identify the latest date to be display.

8/9/2004

2/7/2016

24/04/1995

27/09/2016

And it able to identify 27/09/2016 as the latest date

0 投票
2 回答
1165 浏览

cobol - 从压缩十进制字段中拆分数字

我的文件中有一个 7 位压缩十进制字段。如何定义可以提取/分离这 7 位数字的数据项?

例如,我想在一个数据项中包含前两位数字,而在另一个数据项中包含其他数字,以便以后可以操作它们。

0 投票
4 回答
603 浏览

antlr4 - Cobol - 在 cobol 程序中解析组项目

我需要从 COBOL 程序中提取信息。我正在为 COBOL 使用 ANTLR 语法。我需要将组变量作为一个整体提取。我无法使用 ANTLR 提取它,因为解析器将每个变量细分/组项提取为单个元素。我需要以某种方式将组项目作为一堆。我是 COBOL 的新手,所以我想了解编译器如何理解组中包含哪些元素,以及在哪里停止。

前任:

上述定义有效吗?编译器是否会将第一项 (01 EMPREC) 之后的所有元素(=>2 和 <=49)包含在组 EMPREC 中,直到遇到另一个 01 或 77 ?这是安全的假设吗?级别信息是否足以得出属于某个组的哪些元素?任何指针表示赞赏。

0 投票
1 回答
399 浏览

cobol - COBOL 程序不会结束

我目前正在编写一个带有屏幕的 COBOL 程序,用于检查和显示文件中的记录。但是,当我尝试输入“F”或“Q”以外的命令时,程序会一直卡住。虽然假设显示一个带有错误消息的新屏幕。我试图调用的错误消息是“<>”