Заявление: ранее файлы загружались с удаленного сервера на мейнфрейм. Затем содержимое этих файлов было получено и сохранено на мейнфрейме в последовательном файле. Но иногда имена некоторых файлов содержали пробелы. Из-за этого задание не удается получить его содержимое.
Теперь, чтобы решить эту проблему, мы получили все файлы с сервера и отделили хорошие файлы от плохих. Теперь мы получаем только хорошее содержимое файла.
Проблема: при переименовании файлов мы добавляем префикс Process_ и Odate (выбранный из Control M) к имени файла. Но раньше это делалось в jcl, как показано ниже, через unix-код.
Псевдокод: print "rename " $1 " " "Process_" %%DAT "_" $1
Мы получаем ODATE из программного управления-M.
Jcl-код:
//JOBNAME JOB (DEE),'Job Desc',CLASS=P,MSGCLASS=J,
// MSGLEVEL=(1,1),COND=(0,NE)
//* %%SET %%DAT = %%$ODATE
//STEP01 EXEC PROC1
Код PROC1:
//STEP02 EXEC PGM=SORT
//SORTIN DD DSN=DS.FILE1,
// DISP=SHR
//SORTOUT DD DSN=DS.FILE2,
// UNIT=SYSSF,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
// SPACE=(27920,(29,6),RLSE),
// DISP=(NEW,CATLG,DELETE)
//SYSIN DD DSN=DS.PARM(PARM03),DISP=SHR
PARM03 содержит: Здесь я создаю код unix для переименования файла:
SORT FIELDS=COPY
OUTFIL BUILD=(1:C'print "get " r_fi',18:SEQNUM, -
3,ZD,22:C'" //DD:upload"',/,1:C'print "rename " r_fi', -
21:SEQNUM,3,ZD,24:C' ', -
25:C' " " "Process_" %%DAT "_" r_fi',53:SEQNUM,3,ZD,80:X)
/*
Код unix, который я создаю динамически: Здесь в зависимости от количества файлов p_fi01, p_fi02, p_fi03..... генерируется. Я сохраняю код unix в наборе данных и передаю его как поток для запуска.
Проблема в том, что он не может получить значение переменной DAT. Есть ли способ передать значение D из jcl в proc и добавить к нему
«Process_», используя карту сортировки в proc.
Пример данных: содержимое файла File1.csv извлекается, а затем переименовывается в Process_20140101_File1.csv.