Путать с объявлением 2D-массивов в COBOL - PullRequest
0 голосов
/ 15 января 2019

Итак, давайте предположим, что у меня есть файл, который состоит из 10 студентов с 3 полями: Имя, Пол, Возраст. Итак, теоретически я хотел бы создать массив 10 на 3.
Но когда дело доходит до COBOL, в этом примере создаются двумерные таблицы:

01 WS-TABLE.
   05 WS-A OCCURS 10 TIMES.
      10 WS-B PIC A(10).
      10 WS-C OCCURS 5 TIMES.
         15 WS-D PIC X(6).

В этом примере я не могу понять, что такое WS-B и WS-D. Если я хочу создать массив, подобный тому, который я упомянул (10 на 3), как я могу это сделать?

Спасибо

1 Ответ

0 голосов
/ 15 января 2019

Прежде всего, у COBOL нет массивов как таковых, у него есть таблицы.Нет возможности сделать двухмерную таблицу.Пример, который вы привели, на самом деле самый близкий к вам (вложенная таблица).Если бы я столкнулся с проблемой, которую вы делаете (поле из 10 учеников с именем, полом и возрастом), я бы структурировал свои данные следующим образом:

01 WS-TABLE.
   05 WS-STUDENT OCCURS 10 TIMES.
      10 WS-NAME   PIC X(10).
      10 WS-GENDER PIC X.
      10 WS-AGE    PIC 9(3).

В этом примере я использовал бы индекс для доступа кполя, которые я создал для студента.Вот как будет выглядеть цикл их отображения:

PERFORM VARYING WS-X 
           FROM 1 BY 1
          UNTIL WS-X > 10
   DISPLAY "NAME: " WS-NAME(WS-X) " GENDER: " WS-GENDER(WS-X) " AGE: " WS-AGE(WS-X)
END-PERFORM
...