程式呼叫巢狀元素

您可以使用下列五個巢狀元素的其中一個來啟動程式:fte:presrcfte:predstfte:postdstfte:postsrcfte:command。 這些巢狀元素會指示代理程式在其處理過序中呼叫外部程式。 您必須先確定指令位於執行指令之代理程式的 agent.properties 檔案中 commandPath 內容所指定的位置,然後才能啟動程式。

雖然每一個程式呼叫元素的名稱都不同,但它們共用相同的屬性集及相同的巢狀元素集。 您可以使用 fte:filecopyfte:filemovefte:command Ant 作業來啟動程式。

您無法從 Connect:Direct® 橋接器代理程式呼叫程式。

可呼叫程式的 Ant 作業:

  • fte: filecopy 作業會使用 fte:predstfte:postdstfte:presrcfte:postsrc 巢狀元素來建立程式呼叫參數。
  • fte: filemove 作業會使用 fte:predstfte:postdstfte:presrcfte:postsrc 巢狀元素來巢狀化程式呼叫參數。
  • fte: call 作業會使用 fte:command 巢狀元素來建立巢狀程式呼叫參數。

屬性

指令
必要項目。 指定要呼叫的程式。 若要讓代理程式能夠執行指令,指令必須位於代理程式 agent.properties 檔案中 commandPath 內容所指定的位置。 如需相關資訊,請參閱 commandPath MFT 內容command 屬性中指定的任何路徑資訊,都會被視為相對於 commandPath 內容所指定的位置。 若 typeexecutable,則預期為可執行程式,否則預期為適用於呼叫類型的 Script。
retrycount
選用項目。 在程式未傳回成功回覆碼的情況下,重試呼叫程式的次數。 command 屬性所指定的程式最多只會被呼叫這個次數。 指派給此屬性的值必須是非負數。 如果未指定 retrycount 屬性,則會使用預設值零。
retrywait
選用項目。 重新嘗試呼叫程式之前等待的時間(以秒為單位)。 如果 command 屬性所指定的程式未傳回成功回覆碼,而 retrycount 屬性指定了非零值,此參數即會決定重試之間的等待時間。 指派給此屬性的值必須是非負數。 如果未指定 retrywait 屬性,則會使用預設值零。
successrc
選用項目。 此屬性值用來判定程式呼叫順利執行的時機。 指令的程序回覆碼會使用此表示式進行評估。 The value can be composed of one or more expressions combined with a vertical bar character (|) to signify Boolean , or an ampersand (&) character to signify Boolean AND. 每一個表示式可以是下列其中一種表示式類型:
  • 一個數字,表示程序回覆碼與此數之間的「相等」測試。
  • 一個以 > 字元為開頭的數字,表示此數字與程序回覆碼之間的「大於」測試。
  • < 字元為字首的數字,表示數字與處理程序回覆碼之間的小於測試。
  • ! 為字首的數字 字元,以指出數字與處理程序回覆碼之間的不等於測試。
例如: >2&<7&!5|0|14 會將下列數字解譯為成功回覆碼:0、3、4、6、14。 其餘全都會解譯為不成功回覆碼。 如果未指定 successrc 屬性,則會使用預設值零。 這表示只有在回覆碼為零時,才會判定指令已順利執行。
type
選用項目。 此屬性的值會指定所呼叫的程式類型。 請指定下列其中一個選項:
executable
作業會呼叫可執行程式。 可以使用 arg 巢狀元素指定其他引數。 預期可從 commandPath 上存取程式,並於適當時設定執行權限。 只要指定 Shell 程式,就可以呼叫 UNIX Script (例如, Shell Script 檔的第一行是: #!/bin/sh)。 寫入 stderr 或 stdout 的指令輸出會傳送至呼叫的 Managed File Transfer 日誌。 不過,資料輸出量會受到代理程式配置的限制。 預設資料量是 10K 位元組,但您可以使用代理程式內容 maxCommandOutput 來置換此預設值。
antscript
作業會使用 fteAnt 指令來執行指定的 Ant Script。 內容可使用 property 巢狀元素來指定。 可以使用 target 巢狀元素來指定 Ant 目標。 Ant Script 預期可在 commandPath上存取。 寫入 stderr 或 stdout 的 Ant 輸出會傳送至呼叫的 Managed File Transfer 日誌。 不過,資料輸出量會受到代理程式配置的限制。 預設資料量是 10K 位元組,但您可以使用代理程式內容 maxCommandOutput 來置換此預設值。
[z/OS]jcl
jcl 僅在 z/OS® 上受支援,並執行指定的 z/OS JCL Script。 JCL 會以工作形式提交,且必須有工作卡存在。 順利提交工作時, JCL 指令輸出會寫入 Managed File Transfer 日誌,其中包含下列文字 :JOB job_name(job_id) ,其中:
  • job_name 是 JCL 中的工作卡所識別的工作名稱。
  • job_idz/OS 系統產生的工作 ID。
如果工作無法順利提交,JCL Script 指令即會失敗,並將一則訊息寫入日誌中以指出作業失敗的原因(例如,沒有工作卡存在)。 若想要瞭解工作是否已執行或順利完成,請使用 SDSF 之類的系統服務。 Managed File Transfer 不會提供資訊,因為它只會提交工作; 然後系統會決定何時執行工作以及如何呈現工作輸出。 因為 JCL Script 是以批次工作形式提交,所以不建議您為 presrcpredst 巢狀元素指定 jcl,因為您只知道工作已順利提交,但不知道它是否在傳送開始之前是否已順利完成執行。 沒有 jcl 類型的有效巢狀元素。
下列範例說明 JCL 工作:

//MYJOB JOB
//*
//MYJOB EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=H
//SYSUT1 DD DSN=FRED.DEMO.TXT,DISP=SHR
//SYSUT2 DD DSN=BOB.DEMO.TXT,DISP=(NEW,CATLG),
// RECFM=VB,LRECL=133,BLKSIZE=2048,
// SPACE=(TRK,(30,5),RLSE)
//SYSIN DD DUMMY 

指定為巢狀元素的參數

fte:arg
只有在 type 屬性的值是 executable 時,才有效用。 請使用巢狀 fte:arg 元素,為在程式呼叫過程中所呼叫的程式指定引數。 程式引數是使用 fte:arg 元素所指定的值,依據 fte:arg 元素出現的順序而建置的。 您可以選擇將零個以上 fte:arg 元素指定為程式呼叫的巢狀元素。
fte:property
只有在 type 屬性的值是 antscript 時,才有效用。 使用巢狀 fte:property 元素的 namevalue 屬性,以將名稱/值配對傳遞至 Ant Script。 您可以選擇將零個以上 fte:property 元素指定為程式呼叫的巢狀元素。
fte:target
只有在 type 屬性的值是 antscript 時,才有效用。 在 Ant Script 中指定要呼叫的目標。 您可以選擇將零個以上 fte:target 元素指定為程式呼叫的巢狀元素。

引數屬性

value
必要項目。 傳遞給所呼叫程式的引數值。

內容屬性

名稱
必要項目。 要傳遞至 Ant Script 的內容名稱。
value
必要項目。 要與傳遞至 Ant Script 的內容名稱相關聯的值。

範例

此範例顯示指定為 fte: filecopy 作業一部分的 fte:postsrc 程式呼叫。 程式呼叫適用於稱為 post.sh 的程式,並提供單一引數 /home/fteuser2/file.bin.

<fte:filecopy cmdqm="qm0@localhost@1414@SYSTEM.DEF.SVRCONN" 
              src=agent1@qm1 dst="agent2@qm2"
              rcproperty="copy.result">                    
		<fte:filespec srcfilespec="/home/fteuser1/file.bin" dstfile="/home/fteuser2/file.bin"/>

		<fte:postsrc command="post.sh" successrc=1 >         
				<fte:arg value="/home/fteuser2/file.bin"/>
		</fte:postsrc>

</fte:filecopy>
此範例顯示在 fte: call 作業中指定的 fte:command 程式呼叫。 這是執行檔 command.sh 的程式呼叫,其中未傳入任何指令行引數。 如果 command.sh 未傳回成功回覆碼 1,將在 30 秒後重新嘗試指令。

<fte:call cmdqm="qm0@localhost@1414@SYSTEM.DEF.SVRCONN"
            agent="agent1@qm1" 
            rcproperty="call.rc" 
            origuser="bob" 
            jobname="${job.id}">                
		<fte:command command="command.sh" successrc=1 retrycount="5" retrywait="30"/>		
</fte:call>
此範例顯示在 fte: call 作業中指定的 fte:command 程式呼叫。 程式呼叫適用於稱為 script.xmlAnt Script 中的複製和壓縮目標,該 Script 會傳遞兩個內容。

<fte:call cmdqm="qm0@localhost@1414@SYSTEM.DEF.SVRCONN"
            agent="agent1@qm1" 
            rcproperty="call.rc" 
            origuser="bob" 
            jobname="${job.id}">                
		<fte:command command="script.xml" type="antscript">
          <property name="src" value="AGENT5@QM5"/>
          <property name="dst" value="AGENT3@QM3"/>
          <target name="copy"/>	
          <target name="compress"/>
    </fte:command>	
</fte:call>