2010-05-06 3 views
0

qshell 명령의 출력을 로컬 데이터 영역에 기록하여 프로그램에서 전역 적으로 사용할 수 있도록하고 싶습니다. stdout 파일에서 다음과 같이 쓰십시오. 로컬 데이터 영역 .I 명령 그것을 통해 실행, 나는이 생각 ... 그것은 CL..its 통해 긴급 감사로컬 데이터 영역에 qshell (qsh) 명령의 출력을 작성하십시오.

+0

질문을 명확히해야합니다. 데이터 영역으로의 출력은 CL 또는 Qshell 유틸리티로 수행됩니다. Qshell 유틸리티의 출력을 데이터 영역으로 이동 시키려면 "CL을 통해 완료"하지 말고 Qshell을 사용하십시오. CL은 Qshell 유틸리티를 호출 할 수 있으며, Qshell은 CL 명령을 호출 할 수 있습니다. 그러나 그들은 매우 다른 두 개의 환경이고 별도의 작업에서 실행됩니다. 또한 데이터 영역이 "로컬 데이터 영역"인 경우 정의에 따라 "전역 적으로"액세스 할 수 없습니다. 명명 된 데이터 영역 (또는 데이터 대기열 또는 메시지 대기열 등)이어야합니다. QSH가 필요한 이유를 알면 쉽게 대답 할 수 있습니다. – user2338816

답변

1
QSH CMD('system chgdtaara dtaara\(qgpl/dataarea\) value\($(echo test)\)') 
+0

고마워요.하지만, 데이터 영역에 어떤 이름을 주어야할지 모르겠다. ..i는 내가 * lda를 쓸 때 로컬 데이터 영역이나 다른 어떤 beacause에 값을 저장하려고 할 때 이것을 써야한다. 오류 메시지가 나타납니다 명령을 찾을 수 없습니다. .. 좀 도와주세요 .. –

+0

출력을 * LDA에 저장하려면 dtaara \ (qgpl/dataarea \) 매개 변수를 dtaara \ (* LDA \)로 변경하십시오. 메시지를 찾을 수없는 이유를 모르겠습니다. 정확한 메시지를 게시 할 수 있습니까? – jamesallman

0

난 당신이 QSHELL에서 * LDA를 업데이트 할 수 있다고 생각하지 않습니다를 수행 할 별도의 직장에서.

qshell의 dataq 명령을 사용할 수 있습니다. 명명 된 데이터 대기열을 사용하는 것이 좋습니다.

키순 데이터 대기열을 사용하는 것이 가장 좋을지 모르지만 dataq 명령에서 키를 지정하는 방법이 확실하지 않습니다.

+0

명명 된 데이터 대기열은 특히 영구 라이브러리의 * KEYED 자료 대기열 인 경우 사용할 수 있습니다. CL 프로그램은 RTVJOBA를 사용하여 완전한 작업 이름을 검색하고이를 작업 레벨 환경 변수에 넣을 수 있습니다. * DTAQ 키는 최소 26 바이트가되어야하며 고유성을 위해 시간 소인이 필요한 경우 더 클 수 있습니다. 여러 작업이 동일한 * DTAQ를 사용할 수 있습니다. 영구 항목이 필요하면 * KEYED * USRIDX가 더 좋을 수 있습니다. * USRIDX에 항목을 추가하기위한 기본 QShell 유틸리티는 없습니다. (* KEYED * DTAQ뿐만 아니라 * CMD 래퍼를 만드는 것만으로도 충분합니다.) – user2338816

0

사용으로 iSeries dtarea 구조 : CLP 그것을 얻을 큰 파일을 분할 할 수 있도록 데이터 영역 qgpl/robtest 이전에, 내가 IFS 파일의 라인 (기록) 수를 필요로이 경우

을 만들어

wc -l /tmp/mlco02.txt | datarea -w /qsys.lib/qgpl.lib/robtest.dtaara  

하위.

-1
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 
+0

Stack Overflow에 오신 것을 환영합니다! 이 코드의 작동 방식과 현재 다루고있는 질문에 대한 해결 방법을 간단히 설명해주십시오. – josliber

관련 문제