qshell 명령의 출력을 로컬 데이터 영역에 기록하여 프로그램에서 전역 적으로 사용할 수 있도록하고 싶습니다. stdout 파일에서 다음과 같이 쓰십시오. 로컬 데이터 영역 .I 명령 그것을 통해 실행, 나는이 생각 ... 그것은 CL..its 통해 긴급 감사로컬 데이터 영역에 qshell (qsh) 명령의 출력을 작성하십시오.
답변
QSH CMD('system chgdtaara dtaara\(qgpl/dataarea\) value\($(echo test)\)')
고마워요.하지만, 데이터 영역에 어떤 이름을 주어야할지 모르겠다. ..i는 내가 * lda를 쓸 때 로컬 데이터 영역이나 다른 어떤 beacause에 값을 저장하려고 할 때 이것을 써야한다. 오류 메시지가 나타납니다 명령을 찾을 수 없습니다. .. 좀 도와주세요 .. –
출력을 * LDA에 저장하려면 dtaara \ (qgpl/dataarea \) 매개 변수를 dtaara \ (* LDA \)로 변경하십시오. 메시지를 찾을 수없는 이유를 모르겠습니다. 정확한 메시지를 게시 할 수 있습니까? – jamesallman
난 당신이 QSHELL에서 * LDA를 업데이트 할 수 있다고 생각하지 않습니다를 수행 할 별도의 직장에서.
qshell의 dataq
명령을 사용할 수 있습니다. 명명 된 데이터 대기열을 사용하는 것이 좋습니다.
키순 데이터 대기열을 사용하는 것이 가장 좋을지 모르지만 dataq 명령에서 키를 지정하는 방법이 확실하지 않습니다.
명명 된 데이터 대기열은 특히 영구 라이브러리의 * KEYED 자료 대기열 인 경우 사용할 수 있습니다. CL 프로그램은 RTVJOBA를 사용하여 완전한 작업 이름을 검색하고이를 작업 레벨 환경 변수에 넣을 수 있습니다. * DTAQ 키는 최소 26 바이트가되어야하며 고유성을 위해 시간 소인이 필요한 경우 더 클 수 있습니다. 여러 작업이 동일한 * DTAQ를 사용할 수 있습니다. 영구 항목이 필요하면 * KEYED * USRIDX가 더 좋을 수 있습니다. * USRIDX에 항목을 추가하기위한 기본 QShell 유틸리티는 없습니다. (* KEYED * DTAQ뿐만 아니라 * CMD 래퍼를 만드는 것만으로도 충분합니다.) – user2338816
사용으로 iSeries dtarea
구조 : CLP 그것을 얻을 큰 파일을 분할 할 수 있도록 데이터 영역 qgpl/robtest
이전에, 내가 IFS
파일의 라인 (기록) 수를 필요로이 경우
wc -l /tmp/mlco02.txt | datarea -w /qsys.lib/qgpl.lib/robtest.dtaara
하위.
QSH CMD('A=`cat /tmp/mlco02.txt | wc -l`;exit $A')
RCVMSG MSGTYPE(*LAST) RMV(*NO) MSGDTA(&MSGDTA) +
MSGID(&MSGID)
IF (&MSGID *EQ 'QSH0005') DO
CHGVAR &EXITSTS %BIN(&MSGDTA 1 4)
ENDDO
Stack Overflow에 오신 것을 환영합니다! 이 코드의 작동 방식과 현재 다루고있는 질문에 대한 해결 방법을 간단히 설명해주십시오. – josliber
질문을 명확히해야합니다. 데이터 영역으로의 출력은 CL 또는 Qshell 유틸리티로 수행됩니다. Qshell 유틸리티의 출력을 데이터 영역으로 이동 시키려면 "CL을 통해 완료"하지 말고 Qshell을 사용하십시오. CL은 Qshell 유틸리티를 호출 할 수 있으며, Qshell은 CL 명령을 호출 할 수 있습니다. 그러나 그들은 매우 다른 두 개의 환경이고 별도의 작업에서 실행됩니다. 또한 데이터 영역이 "로컬 데이터 영역"인 경우 정의에 따라 "전역 적으로"액세스 할 수 없습니다. 명명 된 데이터 영역 (또는 데이터 대기열 또는 메시지 대기열 등)이어야합니다. QSH가 필요한 이유를 알면 쉽게 대답 할 수 있습니다. – user2338816