REXX/CLIST 일괄 프로그램(ISPF 없음)을 사용하여 구성원을 어떻게 복사합니까?
문제
z/OS에서는 REXX 또는 CLIST 스크립트를 작성하여 하나의 순차 데이터 세트를 다른 순차 데이터 세트에 복사한 다음 다른 스크립트(REXX)를 실행하려고 합니다.다른 스크립트는 특정 SDS가 존재할 것으로 예상하며 두 번째 스크립트를 실행하기 전에 많은 옵션 중 하나를 해당 멤버에 복사할 수 있기를 원합니다.이것은 TSO에서 온 것이므로 멋진 ISPF 자료에 접근할 수 없습니다.
그래서 기본적으로:
Copy 'level1.level2.name.type1' to 'level1.level2.name'
runother p1 p2 p3
그만큼 runother
Rexx 스크립트는 'level1.level2.name'을 사용하여 자체 마법을 수행합니다. 저는 각 가능성에 대해 서로 다른 이름을 제공할 뿐입니다.
따라서 'level1.level2.name.42'를 복사하는 'xx42'라는 스크립트가 필요하며 42 이외의 값에 대해 이를 수정할 수 있습니다.더 나은 방법은 해당 스크립트를 매개변수화하여 사용할 수 있도록 하는 것입니다.
xx 42 p1 p2 p3
또는
xx 27 p1 p2 p3
각 값에 대한 스크립트를 사용하는 대신.이는 지정된 SDS를 복사한 다음 매개변수를 전달합니다. p1
, p2
그리고 p3
에 이르기까지 runother
.
해결책 2
약간의 충격을받은 후에는 필요한 데이터 세트를 수동으로 할당하고 실행할 수 있다고 생각합니다. IEBGENER
사본을 수행하려면 :
/* REXX */
"ALLOC FI(SYSPRINT) DUMMY REUSE"
"ALLOC FI(SYSIN) DUMMY REUSE"
"ALLOC FI(SYSUT1) DA('LEVEL1.LEVEL2.NAME.42') SHR REUSE"
"ALLOC FI(SYSUT2) DA('LEVEL1.LEVEL2.NAME') SHR REUSE"
"IEBGENER"
RC2 = RC
"FREE FI(SYSUT1)"
"FREE FI(SYSUT2)"
"FREE FI(SYSPRINT)"
"FREE FI(SYSIN)"
IF RC2 ^= 0 THEN DO
SAY "IEBGENER FAILED."
END
ELSE DO
RUNOTHER P1 P2 P3
END
다른 팁
다른 내용을 검색하다가 이런 글을 발견했습니다.(즉.이 답변을 공식화하는 데 2년이 걸리지 않았으며 미래의 메인프레임 사용자(우리가 아직 존재합니까?)가 이것이 유용할 것이라고 생각했습니다.
SMCOPY를 수행할 수도 있습니다.
address TSO "SMCOPY FDS('LEVEL1.LEVEL2.NAME.42') TDS('LEVEL2.LEVEL2.NAME')"
FDS - 데이터세트에서, TDS - 데이터세트로.TDS가 없으면 반환 코드 4가 표시되지만 복사본은 실행됩니다.SMCOPY를 사용하여 라이브러리 구성원을 복사할 수도 있습니다.
정렬을 사용하여 Sortin에서 Sortout으로 사본을 수행 할 수도 있습니다. 매개 변수가있는 Proc에 JCL을 랩핑하거나 설정 명세서 등을 사용 할 수 있습니다.