Cobol 使用“转到”循环

Cobol 使用“转到”循环,cobol,Cobol,我需要在COBOL中编写一个“for循环”,而不使用“PERFORM…”。。。通过……结构。我的想法是添加一个段落,一旦满足某些条件,我就可以跳回到该段落。以下是我的想法: PROGRAM-BEGIN. PAR-A. IF I <= 10 THEN SET J TO 1 PAR-B. IF J <= 10 THEN DISPLAY

我需要在COBOL中编写一个“for循环”,而不使用“PERFORM…”。。。通过……结构。我的想法是添加一个段落,一旦满足某些条件,我就可以跳回到该段落。以下是我的想法:

       PROGRAM-BEGIN.
       PAR-A.
       IF I <= 10 THEN
           SET J TO 1
           PAR-B.
               IF J <= 10 THEN
                   DISPLAY ARRAY(I,J)
                   SET J UP BY 1
                   GO TO PAR-B
               END-IF.
           SET I UP BY 1
           GO TO PAR-A
       END-IF.
       PROGRAM-DONE.
PROGRAM-BEGIN。
标准杆。

如果我这就是你对现有结构的需求。您尚未显示
I
的初始化,但需要一个。您试图避免明确的终止条件/转到

   PROGRAM-BEGIN.
       SET I TO 1
   PAR-A.
       IF I <= 10 THEN
           SET J TO 1
       ELSE
           GO TO PROGRAM-DONE
       END-IF
       .
   PAR-B.
       IF J <= 10 THEN
           DISPLAY ARRAY(I,J)
           SET J UP BY 1
           GO TO PAR-B
       END-IF
       SET I UP BY 1
       GO TO PAR-A
       .
   PROGRAM-DONE.
好了,不是更好吗

从一开始,写下你的名字。使用描述性名称。我和J简直是哑巴,在一些奇妙的情况下,你甚至会把它们和数字1混淆

       SET first-level-index 
           second-level-index       TO 1
       .
   output-results.
       IF second-level-index 
           NOT GREATER THAN 10
            DISPLAY 
                    ">"
                    the-data
                     ( first-level-index 
                       second-level-index )
                    "<"
            SET second-level-index  UP BY 1
            GO                      TO output-results
       END-IF
       IF first-level-index 
           NOT GREATER THAN 10
            SET second-level-index  TO 1
            SET first-level-index   UP BY 1
            GO                      TO output-results
       END-IF
       .
设置一级索引
二级索引为1
.
输出结果。
IF二级索引
不大于10
展示
">"
数据
(一级指标)
二级索引)
""
数据
(一级指标)
二级索引)

“修复由于将段落名称放入 在if语句中,可以使用GOTO将PARB段落移出第一个if语句:

   PROGRAM-BEGIN.
   PAR-A.
   IF I <= 10 THEN
       SET J TO 1
       GOTO PAR-B
   END-IF

   PAR-B.
   IF J <= 10 THEN
      DISPLAY ARRAY(I,J)
      SET J UP BY 1
      GO TO PAR-B
   END-IF.
   SET I UP BY 1
   GO TO PAR-A

   PROGRAM-DONE.
PROGRAM-BEGIN。
标准杆。

如果我在ItBig.Fig.Load中间去PAR-B。两个缺失的完全停止/句号。为什么当PAR-B紧跟<代码> > 时,为什么<代码> Goto PAR-B/<代码>(应该是“代码> >……/代码>”?对于<代码> i <代码>没有初始值,所以不要期望它甚至能工作。
   set-up-for-loop.
       SET first-level-index        TO 1
       .
   outer-loop.
       SET second-level-index       TO 1
       .
   inner-loop.
       IF second-level-index 
           NOT GREATER THAN 10
            DISPLAY 
                    ">"
                    the-data
                     ( first-level-index 
                       second-level-index )
                    "<"
            SET second-level-index  UP BY 1
            GO                      TO inner-loop
       END-IF
       IF first-level-index 
           NOT GREATER THAN 10
            SET first-level-index   UP BY 1
            GO                      TO outer-loop
       END-IF
       .
   PROGRAM-BEGIN.
   PAR-A.
   IF I <= 10 THEN
       SET J TO 1
       GOTO PAR-B
   END-IF

   PAR-B.
   IF J <= 10 THEN
      DISPLAY ARRAY(I,J)
      SET J UP BY 1
      GO TO PAR-B
   END-IF.
   SET I UP BY 1
   GO TO PAR-A

   PROGRAM-DONE.