Передача многострочного значения из экземпляра JCL в переменную Cobol 88 - PullRequest
0 голосов
/ 30 августа 2018

Пример:

01  VAR1             PIC 9(05).      
    88 WS-VAR1  VALUE 1000 1001 1002 1003      
       1004 1009 2000 2002 3000 4000 4009           
       5000 5001 6000 7000 8000 2332 8484.

Как мы можем передать значение из JCL как instream в программную переменную Cobol 88. Так что будет проще изменить значение без изменения программы.

Два решения, которые я нашел:
1. Использование внутренней индексированной таблицы. Так что бинарный поиск выполнит задачу быстро.
2. Использование файла VSAM вместо передачи данных в поток. (Менее вероятно)

Я думаю, что бинарный поиск определенно медленнее, чем проверка состояния 88. Я пытаюсь найти что-то эквивалентное эффективности с проверкой состояния 88.

1 Ответ

0 голосов
/ 30 августа 2018

Звучит так, как будто вы хотите передать значение из JCL PARM = или из SYSIN, чтобы сделать программу COBOL независимой от жестко закодированного значения.

В этой статье в статье есть хорошее объяснение того, как этого можно добиться.

JCL выглядит так:

//* ******************************************************************* 
//* Step 2 of 4, Execute the COBOL program with a parameter. //*
//PARJ1S02 EXEC PGM=CBLPARC1, 
//             PARM='This is a Parameter from the EXEC and PARM= ...'

и в разделе связывания программ COBOL:

  *****************************************************************
   LINKAGE SECTION.
   01  PARM-BUFFER.
       05  PARM-LENGTH         pic S9(4)   comp.
       05  PARM-DATA           pic X(256).

В вашем случае вы можете проверить данные, переданные в разделе связей, на основе ваших критериев. Таким образом, после проверки вы можете переместить значение из раздела связей после преобразования его в числовое значение для теста.

...