GET
GETコマンドにより、現在のアーカイブ(CREATEコマンドまたはOPENコマンドで最後に正常に開いたアーカイブ)の内容にアクセスできます。
ENTRYキーワードの値に基づいてGETコマンドを使用すると、以下の操作が可能です。
· 現在のアーカイブにエントリーの作業リストを入力します。
· エントリーを指定した場所に解凍します。
PATHキーワードまたはFILEキーワードのいずれかを指定する必要があります。両方のキーワードを指定した場合、処理されるのはPATHキーワードのみです。
必須
GET ------- ENTRY --------- *READ ----------------------------->
*LIST
任意
>-- PATH ---------- *ALL ------------------------------>
ファイル・パス
>-- FILE ----------ファイル・パス------------------------->
>-- BASE ---------- *NONE ----------------------------->
*CURRENT
パス
>-- OCCURRENCE------ *ALL ------------------------------>
*FIRST
>-- TO ------------パス------------------------------|
キーワード
ENTRY |
GETコマンドで実行される操作のタイプを指定します。以下の値から選択できます。 省略値*READは、PATHキーワードまたはFILEキーワードの値に一致するZipファイル・エントリーを解凍します。あるいは、PATHとFILEのどちらも指定していない場合はすべてのエントリーを解凍します。ファイルは、TOキーワードで指定されたフォルダーに解凍されます。BASEキーワードは、ファイルの解凍時にZipファイル・エントリーのパス情報が使用されるかどうかを制御します。 値*LISTは、提供された作業リストにZipファイル・エントリーの一覧を入れます。リストには、Zipファイル・エントリーのフル・パス(Zipファイルに保管されている)を含めるフィールドが1つ必要です。 |
PATH |
PATHキーワードが適用されるのは、ENTRY(*READ)を指定した場合、つまり、現在のZipアーカイブのファイルを解凍する際にGETコマンドを使用する場合のみです。 PATH値をZipファイル・エントリーのフル・パスと比較して、解凍するファイルを選択します。 PATHキーワードかFILEキーワードのいずれかを指定します。両方のキーワードを指定した場合、処理されるのはPATHキーワードのみです。 |
FILE |
FILEキーワードが適用されるのは、ENTRY(*READ)を指定した場合、つまり、現在のZipアーカイブのファイルを解凍する際にGETコマンドを使用する場合のみです。 FILEキーワードは、解凍するZipアーカイブの1つのエントリーのフル・パスを指定します。 PATHキーワードかFILEキーワードのいずれかを指定します。両方のキーワードを指定した場合、処理されるのはPATHキーワードのみです。 |
BASE |
BASEキーワードが適用されるのは、ENTRY(*READ)を指定した場合、つまり、現在のZipアーカイブのファイルを解凍する際にGETコマンドを使用する場合のみです。 BASEキーワードは、TOキーワードで指定されたディレクトリにファイルを解凍する際にZipファイル・エントリーのパス情報が使用されるかどうかを指定します。 BASEキーワードに可能な値は以下のとおりです。 省略値*NONEの場合、TOキーワードで指定されたディレクトリにファイルを解凍する際にZipファイル・エントリーに保管されるフル・パスが使用されます。Zipファイル・エントリーに保管されるフル・パスにあるディレクトリは、TOキーワードで指定されたディレクトリの子孫ディレクトリになります。 アーカイブ内のパス情報をTOキーワードのパスと組み合わせて有効な複合パスを形成できない場合、値BASE(*NONE)は失敗します。 *CURRENTの場合、Zipファイル・エントリーに保管されているパスは無視され、TOキーワードで指定されたディレクトリにすべてのファイルが解凍されます。 特定のパス値の場合、TOキーワードで指定されたディレクトリにファイルを解凍する際にZipファイル・エントリーに保管されるパスが部分的に使用されます。使用されるディレクトリは、このキーワード値で指定されたパスに相対的なZipファイル・エントリー・パスの該当部分のディレクトリになります。したがって、ここで指定したパスは、1つまたは複数のZipファイル・エントリーに共通のパスになります。 |
OCCURRENCE |
OCCURRENCEキーワードが適用されるのは、ENTRY(*READ)キーワードとFILEキーワードを指定した場合のみです。省略値では、ファイルのすべてのオカレンスが書き出されます。ファイルの最初のオカレンスのみまたは唯一のオカレンスを書き出す必要がある場合、キーワード値*FIRSTを使用します。オカレンス値*FIRSTを使用すると、アーカイブから1つのファイルを読み込むアクセス時間が短くなります。 |
TO |
TOキーワードが適用されるのは、ENTRY(*READ)を指定した場合、つまり、現在のZipアーカイブのファイルを解凍する際にGETコマンドを使用する場合のみです。 TOキーワードは、解凍されたファイルを受け入れるディレクトリのパスを指定します。BASEキーワードは、TOキーワードで指定されたディレクトリにファイルを解凍する際にZipファイル・エントリーのパス情報が使用されるかどうかを制御します。 |
例
RDML
この例では、現在のアーカイブの内容全体をフォルダー/EXTRACTに解凍します。
CHANGE FIELD(#JSMCMD) TO('GET ENTRY(*READ) TO(/EXTRACT)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS #JSMMSG)
RDMLX
この例では、現在のアーカイブの内容全体を、#edtExtractFolder.Valueで指定したフォルダーに解凍します。
#jsmcmd := 'get entry(*read) to(' + #edtExtractFolder.Value + ') base(' + #cboExtBas.Value + ')'
use builtin(jsmx_command) with_args(#jsmxhdle1 #jsmcmd) to_get(#jsmsts #jsmmsg)
ILE RPG
この例では、現在のアーカイブから最大999のZipファイル・エントリーのリストを取り出します。各エントリーのパス、ファイル名、拡張子を受け入れる1つのフィールドで構成される複数のオカレンス・データ構造にエントリーを受け入れます。データ構造定義に一致する構造XMLを指定する必要があります。構造XMLは、GETコマンドのSERVICE_STRUCTUREキーワードで指定したように識別子ZIP.ZipEntryListのstructure.propertiesファイルに適切に登録する必要があります。
* NB: This MUST match the structure xml provided to the JSM Server!
d ziplist ds occurs(zipocur)
d zipentry 256a
d zipocur c const(999)
d zipsize c const(%size(ziplist))
d zipcount s 9p 0 inz(0)
c eval jsmcmd = 'get entry(*list)'
c + ' service_structure(zip.zipentrylist)'
c + ' occurs(' + %char(zipocur) + ')'
c + ' size(' + %char(zipsize) + ')'
c eval %occur(ziplist) = 1
c eval bytelength = zipocur * zipsize
c callp p_jsmcmdx(jsmcmd:ziplist:bytelength:
c jsmsts:jsmmsg)
c if jsmsts = 'OK'
c callp p_jsmbytelngth(bytelength)
c if (bytelength > 0)
c and (bytelength <= zipocur * zipsize)
c callp p_jsmbyterecv(ziplist)
c eval zipcount = bytelength / zipsize
c endif
c endif