Ibm midrange 将qshell(qsh)命令的输出写入本地数据区

Ibm midrange 将qshell(qsh)命令的输出写入本地数据区,ibm-midrange,Ibm Midrange,我想将qshell命令的输出写入本地数据区,这样程序就可以全局使用它。是否有某种方法可以将标准输出文件写入本地数据区。我想通过CL完成。非常感谢。我认为您无法从qshell更新*LDA。。。我认为,通过它运行的命令是单独的任务 QSH CMD('system chgdtaara dtaara\(qgpl/dataarea\) value\($(echo test)\)') 你可能想考虑使用一个命名的数据队列…您可以使用qshell中的命令 最好使用密钥数据队列。。。但我不确定如何在dataq命

我想将qshell命令的输出写入本地数据区,这样程序就可以全局使用它。是否有某种方法可以将标准输出文件写入本地数据区。我想通过CL完成。非常感谢。

我认为您无法从qshell更新*LDA。。。我认为,通过它运行的命令是单独的任务

QSH CMD('system chgdtaara dtaara\(qgpl/dataarea\) value\($(echo test)\)')
<>你可能想考虑使用一个命名的数据队列…您可以使用qshell中的命令

最好使用密钥数据队列。。。但我不确定如何在dataq命令上指定键。

使用iSeries dtarea构造为:

wc -l /tmp/mlco02.txt | datarea -w /qsys.lib/qgpl.lib/robtest.dtaara      
数据区qgpl/robtest是先前创建的


在这种情况下,我需要IFS文件的行记录计数,因此,CLp可以获取该值并将大文件拆分。

非常感谢,但我不知道该数据区域的名称。我的意思是,当我试图将值存储在本地数据区域时,是否必须写入*lda或其他原因,因为当我运行此操作时,会出现错误消息,显示未找到命令。请帮助我。将输出存储在中*LDA只需将dtaaraqgpl/dataarea参数更改为dtaara*LDA。我不确定您为什么会收到“未找到命令”消息。你能发布准确的消息吗?这个问题需要澄清。数据区域的输出将由CL或Qshell实用程序完成。如果希望Qshell实用程序的输出转到数据区域,它将由Qshell完成,而不是通过CL完成。CL可以调用Qshell实用程序,Qshell可以调用CL命令;但它们是两个完全不同的环境,在不同的作业中运行。此外,如果数据区域是本地数据区域,则根据定义,它不能全局访问。它必须是一个命名的数据区域或数据队列或消息队列等。如果我们知道为什么需要QSH,答案会更容易。可以使用命名的数据队列,特别是如果它是永久库中的*键控数据队列。CL程序可以使用RTVJOBA检索完全限定的作业名称,并将其放入作业级别环境变量中。*DTAQ密钥至少需要26个字节,如果需要时间戳来实现唯一性,则可能会更大。任何数量的作业都可以使用相同的*DTAQ。如果需要永久性条目,则使用*键控*USRIDX可能更好;但是没有用于向*USRIDX添加条目的本地QShell实用程序。为它以及为*KEYED*DTAQs创建*CMD包装非常简单。欢迎使用堆栈溢出!你能简要解释一下这段代码是如何工作的,以及它是如何解决眼前的问题的吗?
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