c - 这个 C 结构如何被翻译成 Cobol

标签 c cobol

我是 Cobol 的新手,我很难弄清楚如何使用这些结构。下面的 C 结构在转换为 Cobol 时会是什么样子?

这些是我拥有的结构:

struct dataT
{
    int m;
};

struct stack
{
    int top;
    struct dataT items[STACKSIZE];
} st;

这个语句在 Cobol 中如何表示?

st.items[st.top].m

最佳答案

这完全是在摸黑,因为我在今天之前从未写过一行 COBOL1。然而,经过一点googling 2 并在 ideone 中玩耍,我想我至少已经捕捉到了代码的样子,如果不是实际的解决方案的话:

IDENTIFICATION DIVISION.
PROGRAM-ID. IDEONE.

ENVIRONMENT DIVISION.

DATA DIVISION.
  WORKING-STORAGE SECTION.
  01 WS-STACK.
    05 WS-TOP PIC 9 VALUE 0.
    05 WS-ITEMS OCCURS 10 TIMES INDEXED BY I.
      10 WS-M PIC 9 VALUE 0.

PROCEDURE DIVISION.
    ADD 1 TO WS-TOP.
    MOVE 9 TO WS-M(WS-TOP).
    ADD 1 TO WS-TOP.
    MOVE 8 to WS-M(WS-TOP).
    DISPLAY "WS-STACK :" WS-STACK.
    DISPLAY "WS-TOP :" WS-TOP.
    DISPLAY "WS-ITEMS[WS-STACK.WS-TOP].M :" WS-M(WS-TOP).
    SUBTRACT 1 FROM WS-TOP.
    DISPLAY "WS-TOP :" WS-TOP.
    DISPLAY "WS-ITEMS[WS-STACK.WS-TOP].M :" WS-M(WS-TOP).
    STOP RUN.

是的,size 硬编码为 10(不知道如何在 COBOL 中做符号常量),WS-TOPWS-M 只能存储值从 0 到 9。

不用说,COBOL 和 C 中的数据类型非常不同。我实际上并没有创建新的堆栈类型;我已经声明了一个包含几个子项的数据项,其中一个是一个表,它可以存储 10 个名为 WS-M 的实例。这实际上与编写相同

int main( void )
{
  int top = 10;
  int m[10];

  m[--top] = 9;
  m[--top] = 8;

  printf("top = %d\n", top );
  printf("m[%d] = %d", top, m[top] );
  top++;

  printf("top = %d\n", top );
  printf("m[%d] = %d", top, m[top] );
  return 0;
}

在 C 中,主要区别在于我编写的 C 代码使堆栈“向下”增长(这更自然)。据我在学习该 COBOL 教程的十分钟内所知,COBOL 并没有真正等同于 struct 类型;即使数据项可以按分层方式分组,您也不是在创建新的 struct 或记录类型本身。如果我想要多个堆栈,我必须声明多个独立的后备存储和索引变量。

我觉得。

我将不得不多做一些阅读。


<补充>1。在这一天的这个时候,我宁愿处理任何任何,而不是现在摆在我面前的问题,而且我一直很好奇另一半是如何生活的。另外,我在网上银行平台上工作,我知道我们一半的后端是用 COBOL 编写的,所以花一些时间来学习它不会有什么坏处。

2. 我不能保证本教程的质量;这是我发现的第一个似乎相当完整且易于阅读的文章。

关于c - 这个 C 结构如何被翻译成 Cobol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29395215/

相关文章:

string - 两个有限点之间的 COBOL 子串

oauth - 从 COBOL CICS WEB CONVERSE 生成 OAuth 访问 token - 'error_description : grant_type is required'

c - 在 ARM Cortex M0 uart 控制台使用 printf() 打印 float

c - 使用C程序的随机数数组

c - 什么是具有副作用的表达式?为什么不应将它们传递给宏?

c++ - 一个简单的cobol程序需要重新编码为C++程序来读取包装安全软件传递的环境变量

ssh - IBM S/390 大型机 COBOL 源代码

stored-procedures - 如何从 DB2 上的 COBOL 存储过程调用 COBOL 批处理程序

c - 如果你在 C 中没有 %f,如何编写一个 C 程序来打印没有 %f 的小数点后 2 位小数?

c - BUILD_BUG_ON_ZERO 在简单的用户空间应用程序中不起作用