Выполнение DFSORT с использованием REXX

Я хотел бы знать, можно ли вызвать DFSORT через REXX? Я использовал приведенный ниже код, но результат не такой, как ожидалось.

/*REXX*/
QUEUE "//ISDNNNN JOB XXX,XX"
QUEUE"//STEP003 EXEC PGM=SORT"
"FREE FI(SYSOUT SORTIN SORTOUT)"
"ALLOC FI(SYSOUT) DA(*)"
"ALLOC FI(SORTIN) DA('XXX.XXX.XXX') REUSE'
"ALLOC FI(SORTOUT) DA('XXX.XXX.XXX.OUT') REUSE'
QUEUE"//SYSIN DD*"
" SORT FIELDS = COPY"
" INCLUDE COND = (1,2,CH,EQ,C'AR')"
QUEUE"/*"
QUEUE"//SYSPRINT DD SYSOUT=*"
QUEUE"$$"
"SUBMIT * END($$)"

person MCN    schedule 09.07.2018    source источник
comment
Ваше утверждение sysin неверно — вам нужен пробел между DD и *. могут быть и другие проблемы, но, поскольку вы не показали нам свои сообщения об ошибках, я не могу сказать.   -  person NicC    schedule 09.07.2018
comment
Пожалуйста, дайте некоторые пояснения. Каков был результат? Были ли сообщения об ошибках?   -  person meat    schedule 09.07.2018
comment
Вам нужно поставить JCL в очередь для SYSOUT, SORTIN, SORTOUT, поскольку вы, похоже, пытаетесь запустить пакетное задание. Без этого ваша работа будет состоять из: оператора задания, оператора exec, искаженного оператора sysin и оператора sysprint. Вам не нужны SYSPRINT и SYSOUT. обратитесь к руководству DFSort для правильного использования JCL.   -  person NicC    schedule 11.07.2018
comment
Простой ответ на ваш вопрос - да. Однако при работе с REXX вам необходимо имитировать то, что делает JCL. В среде TSO вам необходимо выполнить операторы ALLOCATE для каждого набора данных, аналогично тому, что появилось бы на шаге JCL.   -  person zarchasmpgmr    schedule 13.07.2018


Ответы (2)


Да это возможно.
Как правило, вы можете:

Я бы предложил изучить услуги ISPF, т.е.

Рекс:

ADDRESS TSO "ALLOC DD(OUTSKEL) DS('"OUTSKPDS"') SHR"
'FTOPEN'
'FTINCL SAMPSKEL'
'FTCLOSE LIBRARY(OUTSKEL) NAME('WORKMEM')'

Образец ISPF Скелтона:

//ASM    EXEC  PGM=IFOX00,REGION=128K
//             PARM=(&ASMPARMS)
//SYSIN    DD  DSN=&ASMIN(&MEMBER),DISP=SHR
//SYSLIB   DD  DSN=SYS1.MACLIB,DISP=SHR
)SEL  &ASMMAC1 ¬= &Z
//         DD  DSN=&ASMMAC1,DISP=SHR
)SEL  &ASMMAC2 ¬= &Z
//         DD  DSN=&ASMMAC2,DISP=SHR
)ENDSEL
)ENDSEL
//SYSUT1   DD  UNIT=SYSDA,SPACE=(CYL,(5,2))
//SYSUT2   DD  UNIT=SYSDA,SPACE=(CYL,(2,1))
//SYSUT3   DD  UNIT=SYSDA,SPACE=(CYL,(2,1))
//SYSPRINT DD  SYSOUT=(&ASMPRT)
)CM   IF USER SPECIFIED "GO," WRITE OUTPUT IN TEMP DATA SET
)CM   THEN IMBED "LINK AND GO" SKELETON
)IF  &GOSTEP = YES THEN )DO
//SYSGO    DD  DSN=&&&&OBJSET,UNIT=SYSDA,SPACE=(CYL,(2,1)),
//             DISP=(MOD,PASS)
)IM   LINKGO
)ENDDO
)CM   ELSE (NOGO), WRITE OUTPUT TO USER DATA SET
)ELSE )DO
//SYSGO    DD  DSN=&ASMOUT(&MEMBER),DISP=OLD
)ENDDO
person Bruce Martin    schedule 09.07.2018

Вы можете разместить необходимые файлы по адресу tso, например, alloc f(sortin) da(....) shr вызов sort по адресу ispling: address ispling sort Будьте внимательны, чтобы поместить управляющие файлы cfard в файл sysin

person Gad Barth    schedule 06.07.2020