2010-05-06 83 views
0

我想將qshell命令的輸出寫入本地數據區,以便它可以由程序全局使用。有一些方法可以從stdout文件寫入本地數據區。我希望它通過CL..its進行緊急感謝將qshell(qsh)命令的輸出寫入本地數據區

+0

這個問題需要澄清。輸出到數據區域將由CL或Qshell實用程序完成。如果您希望Qshell實用程序的輸出轉到數據區域,它將通過Qshell完成,而不是「通過CL完成」。 CL可以調用Qshell實用程序,Qshell可以調用CL命令;但他們是兩個非常不同的環境,並在不同的工作中運行。另外,如果數據區域是「本地數據區域」,則根據定義,它不能被「全局」訪問。它必須是一個命名的數據區域(或數據隊列或消息隊列等)。如果我們知道爲什麼需要QSH,它會更容易回答。 – user2338816 2014-03-23 12:51:04

回答

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

非常感謝,但我不知道應該給數據區域什麼名稱..我的意思是我必須寫* lda,因爲我試圖將值存儲在本地數據區域或別的東西,因爲當我運行這個錯誤信息顯示命令未找到..請幫助我.. – 2010-05-12 08:52:59

+0

要將輸出存儲在* LDA中,只需將dtaara \(qgpl/dataarea \)參數更改爲dtaara \(* LDA \)。 我不知道你爲什麼會收到命令找不到消息。你能發佈確切的消息嗎? – jamesallman 2010-05-12 14:29:54

0

我不認爲你可以更新*從QSHELL LDA ......爲命令穿過它,我想,是在一個單獨的工作。

您可能想要考慮使用指定的數據隊列......您可以使用qshell中的dataq命令。

這可能是最好的使用鍵控數據隊列......但我不確定如何指定dataq命令上的鍵。

+0

可以使用命名的數據隊列,特別是如果它是永久庫中的* KEYED數據隊列。 CL程序可以使用RTVJOBA檢索完全限定的作業名稱並將其放入作業級別的環境變量中。 * DTAQ密鑰至少需要26個字節,如果需要唯一性時間戳,則密鑰可能會更大。任何數量的工作都可以使用相同的* DTAQ。如果需要永久條目,* KEYED * USRIDX可能會更好;但是沒有用於將條目添加到* USRIDX的本機QShell實用程序。 (很容易爲* KEYED * DTAQ創建* CMD包裝。) – user2338816 2014-03-30 04:18:15

0

使用iSeries dtarea結構爲:

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

數據區qgpl/robtest先前創建

在這種情況下,我需要IFS文件的行(記錄)數,所以中電可以得到它,分裂大文件下。

-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

歡迎使用堆棧溢出!你能否簡單地解釋一下這段代碼是如何工作的以及它如何解決手頭的問題? – josliber 2015-09-26 03:57:37

相關問題