为什么我不能在COBOL中执行这个嵌套的执行循环?
如果我把END-PERFORM.在任何一行中,比我在EXIT PROGRAM之前的最后一行更快 - 它有效.但我需要程序每次都显示INPUT C值.在外部执行循环中.它让我疯狂.
PROCEDURE DIVISION USING INPUTC CIPHER.
COMPUTE CIPHERMAX = CIPHER.
MULTIPLY -1 BY CIPHER
---> PERFORM VARYING CIPHER FROM 0 BY 1
UNTIL CIPHERMAX = CIPHER
DISPLAY 'This is loop number: ' CIPHER
INSPECT INPUTC CONVERTING
"avcdefghijklmnopqrstuvwxyz" to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
COMPUTE CONVERTNUM = FUNCTION MOD (CIPHER, 26)
INSPECT FUNCTION REVERSE(INPUTC) TALLYING LENGTHNUM FOR LEADING SPACES
COMPUTE LENGTHNUM = LENGTH OF CIPHER - LENGTHNUM
---> PERFORM UNTIL SENTRY = LENGTHNUM
IF ((FUNCTION ORD(INPUTC(SENTRY:1)) + CONVERTNUM) > (FUNCTION …Run Code Online (Sandbox Code Playgroud) 我有一个非常基本的 COBOL 程序,它读取文件input.dat并简单地在控制台中输出它。该input.dat文件如下所示:
John Johnson
Peter Peterson
Juliette Julietteson
Natasha Natashason
Justin Justinson
Run Code Online (Sandbox Code Playgroud)
它没有正确显示在这里,但我肯定有20 chars名字和20 chars姓氏。
这是我的 COBOL 程序:
IDENTIFICATION DIVISION.
PROGRAM-ID. ATEST4.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUTFILE ASSIGN TO "files/input.dat".
DATA DIVISION.
FILE SECTION.
FD INPUTFILE LABEL RECORDS ARE OMITTED.
01 INPUTRECORD PIC X(40).
WORKING-STORAGE SECTION.
01 FILE-STATUS PIC 9 VALUE 0.
PROCEDURE DIVISION.
001-MAIN.
OPEN INPUT INPUTFILE.
PERFORM 002-READ UNTIL FILE-STATUS = 1.
CLOSE INPUTFILE.
STOP RUN.
002-READ. …Run Code Online (Sandbox Code Playgroud) 我写了下面的程序,我很困惑,为什么当我编译程序时,我得到一个错误,说A-COL(1,1)不是数值,而显示A-COL(1,1)给我1.
IDENTIFICATION DIVISION.
PROGRAM-ID. TEST1.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DIFF PIC 9(3).
01 ARRAY.
05 A-ROW OCCURS 99 TIMES.
10 A-COL OCCURS 2 TIMES.
15 TABLE-CONTENT PIC 9(3).
PROCEDURE DIVISION.
MOVE 1 TO A-COL(1,1).
MOVE 2 TO A-COL(2,1).
DISPLAY A-COL(1,1).
COMPUTE DIFF = A-COL(1,1) - A-COL(2,1).
DISPLAY DIFF.
STOP RUN.
Run Code Online (Sandbox Code Playgroud) 我在文件中有定点数字,每行一个,这种格式S9(6)V9(2)但是当它们实际被读取时,我non numeric在尝试将它们放入数学运算时遇到错误.更重要的是,当我尝试在程序中显示它们时,在文件中写为567123.45的数字将保存在变量中作为+567123.04.例如,文件123.45中的数字在变量中保存为+123.45.00,并且'WS-VALUE' not numeric: '123.45 0'在数学运算期间会引发以下错误.这是为什么?我正在使用OpenCobolIDE 4.7.4 for Windows.
编辑:文件具有由新行分隔的以下格式的记录(READ记录后的操作记录读取):
01 WS-OPERATION.
05 WS-ID PIC A(2).
05 WS-CLIENT PIC 9(5).
05 WS-COUNTRY PIC A(4).
05 WS-VALUE PIC S9(6)V9(2).
Run Code Online (Sandbox Code Playgroud) 我的文件上有一个7位数的压缩十进制字段.如何定义将提取/分离这7个数字的数据项?
例如,我希望一个数据项中的前两位数字和另一个数据项中的其他数字,所以我可以稍后操作它们.
我需要将我在 .cobc 文件中编写的程序编译为 Windows 可执行文件。该文件名为 main.cobc
使用以下命令进行编译: cobc -x -free *.cobc -o main
使其成为 Linux 可执行文件,这是可以的,但不能直接在 Windows 上运行。
我在我的 linux ubuntu 虚拟机上安装了 gnucobol (OpenCOBOL)。
请帮忙。有没有办法以与 Windows 兼容的方式编译它?
提前致谢!
COBOL 中是否有一种“等待”功能?我写了一个计算器,为了让它更 50 多岁,我打印了“计算”。“计算..” ecc 例如:
DISPLAY "SECONDO NUMERO"
ACCEPT B
COMPUTE C= A * B
DISPLAY "Computing"
DISPLAY "Computing."
DISPLAY "Computing.."
DISPLAY "Computing..."
DISPLAY "Computing...."
DISPLAY "Computing....."
DISPLAY "Computing......"
DISPLAY A "x" B " FA..."
DISPLAY C
Run Code Online (Sandbox Code Playgroud)
现在,有没有办法在我放置“计算”部分的 COBOL 上稍微延迟(半秒)?我为这个项目创建了一个 github repo ( https://github.com/aIDserse/Super-utility-Submachine-COBOL-CALCULATOR ),查看它(参考 1.3 版)以获得完整的代码(可能会传播它哈哈) . 谢谢!!!
我对COBOL完全不熟悉,我想知道:
似乎没有区别
DISPLAY "foo"
Run Code Online (Sandbox Code Playgroud)
和
DISPLAY "foo".
Run Code Online (Sandbox Code Playgroud)
一条线末端的点实际上做了什么?
我应该何时使用/避免它?
如何在GnuCOBOL中启动子进程?
在Node.js的,我们可以使用spawn或exec启动子进程:
var proc = require("child_process").spawn("ls", ["-l"]);
proc.stdout.on("data", function (chunk) {
console.log(chunk);
});
// or
var proc = require("child_process").exec("ls -l"], function (err, stdout, stderr) {
...
});
Run Code Online (Sandbox Code Playgroud)
上面的两个例子都运行ls -l(列出文件和目录).如何在COBOL中实现同样的目标?
我正在使用屏幕部分在Cobol中开发一个系统,但是当我在另一个程序中创建的菜单中选择一个选项时,无法调用客户注册程序。我正在使用带有GnuCOBOL编译器的opencobol。
CALL "ANOTHER-PROGRAM"
USING BY CONTENT SUBMENU-IN-WS
CANCEL "ANOTHER-PROGRAM"
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
libcob:找不到模块“ ANOTHER-PROGRAM”。
如何使用opencobol在Cobol中调用另一个程序?我是否需要在ANOTHER-PROGRAM甚至不使用链接部分中使用链接部分?