Простая опечатка - вы забыли объявить СЕКЦИЮ РАБОЧЕГО ХРАНИЛИЩА
IDENTIFICATION DIVISION.
PROGRAM-ID. TDCBLALC.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT KOVETZ-SPOOL
ASSIGN TO OTFILE
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS SW-END.
DATA DIVISION.
FILE SECTION.
FD KOVETZ-SPOOL
LABEL RECORD IS STANDARD
RECORD IS VARYING IN SIZE FROM 1 TO 32600
DEPENDING ON ORECH-S
RECORDING MODE IS V.
01 RESHUMAT-SPOOL PIC X(32600).
WORKING-STORAGE SECTION.
01 ORECH-S PIC 9(8) COMP.
01 I PIC S9(4) VALUE 0.
01 SW-END PIC X(02).
01 FN PIC X(44).
01 WS-ALLOC-STRING PIC X(100).
01 PGM PIC X(08) VALUE 'BPXWDYN'.
PROCEDURE DIVISION.
MOVE 'LYTO.SPOOL.PISD0735.T1401803.M001.D1191030' TO FN.
STRING 'ALLOC DD(OTFILE) DSN(' FN ') SHR REUSE '
' UNIT(TAPE) '
DELIMITED BY SIZE
INTO WS-ALLOC-STRING
END-STRING.
DISPLAY ' WS-ALLOC-STRING *' WS-ALLOC-STRING '*'
CALL PGM USING WS-ALLOC-STRING.
DISPLAY RETURN-CODE.
OPEN INPUT KOVETZ-SPOOL
READ KOVETZ-SPOOL
AT END MOVE 1 TO SW-END
END-READ
PERFORM UNTIL SW-END = 1 OR I > 100
ADD 1 TO I
DISPLAY 'ORECH-S=' ORECH-S
DISPLAY 'RESHUMAT-SPOOL=' RESHUMAT-SPOOL(1:100)
READ KOVETZ-SPOOL
AT END MOVE 1 TO SW-END
END-READ
END-PERFORM
CLOSE KOVETZ-SPOOL
GOBACK.
Я скомпилировал и запустил это с помощью GnuCobol, чтобы программа была синтаксически и логически правильной. Я заменил локальный файл и закомментировал вызов BPXDYN, поскольку я запускаю его на Linux, а файл имеет соглашение об именах Z / OS.
Не удалось выделить файл, поэтому открыть файл тоже не удалось, но он никогда не проверял статус файла. Чтение возвращает '47', поскольку файл никогда не открывался успешно
Программа выдала следующее: ALLO C DD (OTFILE) DSN (LYTO.SPOOL.PISD0735.T1401803.M001.D1191030) SHR REUSE UNIT (TAPE)
Имя набора данных необходимо заключить в кавычки, иначе система попытается поставить перед ним ваш идентификатор TSO.