Мейнфрейм Cobol — выполнение различных индексов — отображение

так что я только начинаю изучать COBOL на Z/OS. Я довольно много сделал, используя визуальный кобол; однако это все же совсем другое.

Мне нужно отобразить таблицу, начиная с индекса 1 и отображая до тех пор, пока индекс не станет 50

     PERFORM VARYING W03-SUBJ-INDX FROM 1 BY 1
 UNTIL W03-SUBJ-INDX = 50                 
 DISPLAY W03-SUBJ-TABLE                   
 END-PERFORM   

Это то, что у меня сейчас есть, я тоже пробовал

     PERFORM VARYING W03-SUBJ-INDX FROM 1 BY 1
 UNTIL W03-SUBJ-INDX = 50                 
 DISPLAY W03-SUBJ-TABLE(w03-subj-indx)                   
 END-PERFORM 

В верхнем примере отображается только первый проиндексированный элемент (что и следовало ожидать). Второй пример дает мне сообщение об ошибке, в котором говорится, что «)» было неожиданным.

Будем признательны за любую помощь. Мне сказали, что я должен использовать индекс


person Luke676    schedule 01.10.2017    source источник
comment
Что такое определение рабочего хранилища W03-SUBJ-TABLE ?   -  person cschneid    schedule 01.10.2017
comment
Часть (Чтобы ожидать) на самом деле не следует ожидать. С учетом этого фрагмента кода ожидается отображение всей группы таблиц 49 раз.   -  person Brian Tiffin    schedule 02.10.2017
comment
Без рабочей схемы хранения для этой таблицы мы не сможем вам помочь. Также включение фактической ошибки компиляции будет иметь большое значение.   -  person SaggingRufus    schedule 05.10.2017
comment
Кроме того, вы должны отображать индекс 50 или только от 1 до 49?   -  person SaggingRufus    schedule 05.10.2017


Ответы (2)


Итак, что касается вашего существующего кода... в некоторых версиях парсеров Enterprise Cobol были некоторые ошибки...

DISPLAY W03-SUBJ-TABLE(w03-subj-indx) 

может работать так:

DISPLAY W03-SUBJ-TABLE ( w03-subj-indx )

Некоторые версии компилятора Enterprise Cobol плохо обрабатываются без пробелов. Это было особенно важно при модификации ссылок, но применимо и к таблицам.

Попробуй, YMMV.

person Joe Zitzelberger    schedule 08.12.2017

Вы не указываете, на какой версии компилятора вы работаете, но когда-то была одна - и я не могу вспомнить версию - которая была ненадежной с нижними индексами и ссылкой на модификацию.

Попробуйте вставить некоторые пробелы:

DISPLAY W03-SUBJ-TABLE ( w03-subj-indx ) 

Кроме того, убедитесь, что W03-SUBJ-TABLE является массивом, а не элементом группы, содержащим массив.

person Joe Zitzelberger    schedule 02.11.2017