LIST

LANSA Integrator

LIST


LISTコマンドは、リモートFTPサーバーからファイル名のリストを取得します。

 LIST ---- PATH ----------ディレクトリ・パス-------------------->

       >-- FORMAT -------- *AUTO ----------------------------->

                           *NAME

                           *UNIX

                           *UNIX8

                           *UNIX9

                           *ISERIES

                           *WINDOWS

       >-- DATEFORMAT ---- *NONE ----------------------------->

                           *DMY

                           *MDY

                           *YMD

                           *YDM

       >-- DATALINK ------ *PASV -----------------------------|

                           *PORT

キーワード

PATH

PATHキーワードがない場合、現在のディレクトリが使用されます。パスには、オペレーティング・システムのワイルド文字を使用できます。

FORMAT

省略値*AUTOは自動検出リスト形式を使用します。

·         *AUTO - 自動検出リスト形式

·         *NAME - NLSTサブコマンドを使用します。1列

·         *UNIX - リストはUNIX形式になります。9列

·         *UNIX8 - リストはUNIX形式になります。8列

·         *UNIX9 - リストはUNIX形式になります。9列

·         *ISERIES - リストはIBM i 形式になります。

·         *WINDOWS - リストはWindows形式になります。

IBM i サーバー間でFTPを使用する場合、FTP属性のLISTFMT値を書き留めておく必要があります(CHGFTPAを使用します)。例えば、FTP属性にLISTFMT(*UNIX)が指定されている場合、LIST PATH(/TMP/*.*) FORMAT(*ISERIES)を使用すると、データは返されません。FORMAT(*UNIX)に変更する場合や、SITE COMMAND(LISTFMT 0)を使用する場合は、データが返されます。

DATEFORMAT

省略値*NONEの場合、データ・フィールドに適用される形式はありません。日付形式はISO8601形式になります。

·         *NONE - 日付形式なし

·         *DMY - 日、月、年の順になる日付を除外します。

·         *MDY - 月、日、年の順になる日付を除外します。

·         *YMD - 年、月、日の順になる日付を除外します。

·         *YDM - 年、日、月の順になる日付を除外します。

DATALINK

DATALINKキーワードにより、「コントロール」セッションの開始方法が決まります。省略値は*PASVです。

パッシブ・モード*PASVでは、FTPクライアントはサーバーに対する両方の接続を開始します。パッシブ・モードにより、FTPServiceはリモートFTPサーバーにPASVサブコマンドを送信します。FTPサーバーは開始したソケット・サーバーのポート番号を返し、このポート番号を使用してローカル・サーバーからのデータ転送チャネルが確立されます。これはパッシブFTPと呼ばれ、ファイアウォールの問題を回避する場合によく使用されます。パッシブFTPを使用すると、ローカル・サーバーは2番目の接続を確立します。これはリモートFTPサーバーに対する接続ではありません。ほとんどのファイアウォールでは、この2番目の接続によるリモートFTPサーバーへのファイル転送が許可されます(最初の接続の確立が許可される場合と同じです)。

ポート・モード*PORTにより、FTPServiceはソケット・サーバーを開始して、このソケット・サーバーがリスニングするポート番号をPORTサブコマンド経由でリモートFTPサーバーに知らせます。その後、リモートFTPサーバーはこのソケット・サーバーに接続し、データ転送チャネルが確立されます。

詳細については、「技術仕様」を参照してください。

コメント/警告

RDMLクライアントの場合、SERVICE_LISTキーワードを使用してリスト定義を渡す必要があります。リスト・オブジェクト引数には、1つ、2つ、または5つのフィールドが必要です。

1つのフィールドのリストを使用する場合、未処理の行がリストに追加されます。

2つのフィールドのリストを使用する場合、最初のフィールドはファイル・タイプ、2番目のフィールドはファイル名を受け取ります。

5つのフィールドのリストを使用する場合、最初のフィールドはファイル・タイプ、2番目のフィールドは日付、3番目のフィールドは時間、4番目のフィールドはサイズ、5番目のフィールドはファイル名を受け取ります。

タイプ・フィールドには以下の値を指定できます。

·         F - ファイル

·         D - ディレクトリ

·         L - リンク

RDML

DEFINE FIELD(#TYPE) TYPE(*CHAR) LENGTH(1)

DEFINE FIELD(#FILE) TYPE(*CHAR) LENGTH(80)

DEF_LIST NAME(#WRKLST) FIELDS((#TYPE) (#FILE)) TYPE(*WORKING) ENTRYS(100)

USE BUILTIN(JSM_COMMAND) WITH_ARGS('LIST SERVICE_LIST(TYPE,FILE)') TO_GET(#JSMSTS #JSMMSG #WRKLST)

RDMLX

use builtin(jsmx_command) with_args(#jsmxhdle1 'list path(/tmp/*.*) format(*unix)') to_get(#jsmxsts #jsmxmsg #worklist)

ILE RPG

 * NB: This MUST match the structure xml provided to the JSM Server!

                                                                    

d ftplist         ds                  occurs(ftpocur)               

d  ftpfiltyp                     1a                                 

d  ftpfilnam                   255a                                 

                                                                    

d ftpocur         c                   const(9999)                   

d ftpsize         c                   const(%size(ftplist))         

d ftpcount        s              9p 0 inz(0)                        

                                                                    

c                   eval      jsmcmd = 'LIST'                      

c                             + ' SERVICE_STRUCTURE(FTP.FTPList)'  

c                             + ' OCCURS(' + %char(ftpocur) + ')'  

c                             + ' SIZE('   + %char(ftpsize) + ')'  

                                                                   

c                   eval      %occur(ftplist) = 1                  

c                   eval      bytelength = ftpocur * ftpsize       

                                                                   

c                   callp     p_jsmcmdx(jsmcmd:ftplist:bytelength: 

c                                       jsmsts:jsmmsg)             

                                                                   

c                   if        jsmsts = 'OK'                        

c                   callp     p_jsmbytelngth(bytelength)           

c                   if            (bytelength > 0)                 

c                             and (bytelength <= ftpocur * ftpsize)

c                   callp     p_jsmbyterecv(ftplist)                 

c                   eval      ftpcount = bytelength / ftpsize      

c                   endif                                           

c                   endif