程式呼叫巢狀元素
您可以使用下列五個巢狀元素的其中一個來啟動程式:fte:presrc、fte:predst、fte:postdst、fte:postsrc 及 fte:command。 這些巢狀元素會指示代理程式在其處理過序中呼叫外部程式。 您必須先確定指令位於執行指令之代理程式的 agent.properties 檔案中 commandPath 內容所指定的位置,然後才能啟動程式。
雖然每一個程式呼叫元素的名稱都不同,但它們共用相同的屬性集及相同的巢狀元素集。 您可以使用 fte:filecopy、fte:filemove 及 fte:command Ant 作業來啟動程式。
您無法從 Connect:Direct® 橋接器代理程式呼叫程式。
可呼叫程式的 Ant 作業:
- fte: filecopy 作業會使用
fte:predst、fte:postdst、fte:presrc及fte:postsrc巢狀元素來建立程式呼叫參數。 - fte: filemove 作業會使用
fte:predst、fte:postdst、fte:presrc及fte:postsrc巢狀元素來巢狀化程式呼叫參數。 - fte: call 作業會使用
fte:command巢狀元素來建立巢狀程式呼叫參數。
屬性
- 指令
- 必要項目。 指定要呼叫的程式。 若要讓代理程式能夠執行指令,指令必須位於代理程式 agent.properties 檔案中 commandPath 內容所指定的位置。 如需相關資訊,請參閱 commandPath MFT 內容。
command屬性中指定的任何路徑資訊,都會被視為相對於 commandPath 內容所指定的位置。 若type是executable,則預期為可執行程式,否則預期為適用於呼叫類型的 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 來置換此預設值。
jcl- 值
jcl僅在 z/OS® 上受支援,並執行指定的 z/OS JCL Script。 JCL 會以工作形式提交,且必須有工作卡存在。 順利提交工作時, JCL 指令輸出會寫入 Managed File Transfer 日誌,其中包含下列文字 :JOB job_name(job_id) ,其中:- job_name 是 JCL 中的工作卡所識別的工作名稱。
- job_id 是 z/OS 系統產生的工作 ID。
presrc或predst巢狀元素指定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元素的name及value屬性,以將名稱/值配對傳遞至 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.xml的 Ant 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>