WRITE
WRITEコマンドは、作業リスト(SVTABLEキーワードを使用する場合はテーブル)から情報を選択し、FILEキーワードで指定された区切り変数ファイルにその情報を保存します。
ローカル・ファイル・システムにファイルを書き込むには、FILEキーワードのみが必要です。
FTPプロトコルを使用してリモート・ファイル・システムにファイルを書き込むには、HOSTキーワードと適切なUSER、PASSWORD、およびリモート・サーバーのアクセス詳細が必要です。
サービスでは、Unicode内容からバイト内容への変換に適用されるエンコーディングを決定し、Unicodeデータを保管する必要があるかどうかを判断します。
必須
WRITE --------- FILE -----------ファイル・パス---------------------->
条件付
>-- HOST -----------ホスト:ポート---------------------->
>-- USER -----------値-------------------------->
>-- PASSWORD -------値-------------------------->
>-- NAMEFMT --------なし--------------------------->
0
1
>-- DATALINK ------- *PASV -------------------------->
*PORT
>-- MODE ----------- *BINARY ------------------------>
*ASCII
任意
>-- CONTENT -------- *CSV --------------------------->
*TSV
*SV
>-- SEPARATOR ------値-------------------------->
*COMMA
*SEMICOLON
*TAB
*TILDE
>-- ENCODING ------- *DEFAULT ----------------------->
値
>-- SVQUOTE -------- *NONE -------------------------->
*TEXT
*ALL
>-- SVHEAD ---------値-------------------------->
>-- SVEXCLUDE ------値-------------------------->
>-- SVLABEL --------値-------------------------->
>-- SVTABLE --------テーブル名--------------------->
>-- SVCOLUMN -------値-------------------------->
>-- APPEND --------- *YES --------------------------->
*NO
>-- NUMBERFORMAT --- *NONE -------------------------->
*DEFAULT
*CLIENT
*USERAGENT
値
>-- ARCHIVE --------ファイル・パス----------------------|
キーワード
FILE |
パスとファイル名を指定します。 この値は相対パスまたは絶対パスになります。パスが相対パスの場合、現在の作業ディレクトリはJSMインスタンス・ディレクトリになります。 |
HOST |
HOSTキーワードは、リモート・ファイル・システムから読み込む場合にのみ必要です。 接続先のFTPサーバーを指定します。FTPサーバーは、IPアドレスnnn.nnn.nnn.nnn:ポート、またはドメイン名で指定できます。 IPアドレスにポート番号を指定しない場合、キーワードSECURE (*IMPLICIT)を使用しない限り省略値21が使用されます。キーワードSECURE (*IMPLICIT)が使用される場合の省略値のポート値は990です。 |
USER |
USERキーワードは、リモート・ファイル・システムから読み込む場合にのみ必要です。 |
PASSWORD |
PASSWORDキーワードは、リモート・ファイル・システムから読み込む場合にのみ必要です。 USERキーワードに対応するデータベース・サーバーのパスワード |
NAMEFMT |
NAMEFMTキーワードは、リモート・ファイル・システムから読み込む場合にのみ有効です。 値が0の場合、IBM i のパス名形式library/file.memberが使用されます。 値が1の場合、Windowsのパス名形式/directory/directory/fileが使用されます。 |
DATALINK |
DATALINKキーワードは、リモート・ファイル・システムから読み込む場合にのみ有効です。 可能な値は*PASV (パッシブ)または*PORT (ポート)です。*PASVが省略値です。 |
MODE |
MODEキーワードは、リモート・ファイル・システムから読み込む場合にのみ有効です。 省略値は*BINARYです。必要に応じて値*ASCIIを使用します。 |
CONTENT |
省略値では、指定したファイルは*CSVで処理されます。 あるいは、タブ区切り変数(*TSV)、または区切り文字キーワードに指定した変数区切り(*SV)で内容を処理することができます。区切り文字変数を含む内容を処理する場合の追加処理オプションについては、「SEPARATOR」、「SVHEAD」、「SVMODE」、「SVTABLE」、「SVCOLUMN」、「SVLABEL」、「NUMBERFORMAT」、「TRIM」、「TRUNCATE」の各キーワードを参照してください。 内容の保管に使用される作業リストは、データの保管に適した列数で定義する必要があります。 |
SEPARATOR |
キーワードSEPARATORでは、区切り文字として使用する文字を指定します。内容が*CSVまたは*TSVで表される場合、区切り文字を定義する必要はありません。 SEPARATORキーワードがあり、CONTENTキーワードを指定しない場合、CONTENT(*SV)が前提となります。 詳細については、「SEPARATOR」を参照してください。 |
ENCODING |
ENCODINGは、バイト内容からUnicode文字列への変換に適用されるエンコーディングを指定する場合に使用されます。ENCODINGキーワードの省略値は*DEFAULTです。 詳細については、「ENCODING」を参照してください。 |
APPEND |
APPENDは、内容を既存のローカル・ファイルに追加する場合に使用されます。APPENDキーワードの省略値は*NOです。 |
SVQUOTE |
任意のキーワードSVQUOTEは、値に二重引用符 (")を付けるために使用されます。SVQUOTEの省略値は*NONEです。*ALLの値は全ての値が二重引用符で囲まれます。*TEXTはテキスト値のみに二重引用符が付けられます。 |
SVHEAD |
オプションのキーワードSVHEADは、区切り値データのフィールド・レイアウトの記述に使用されます。 詳細については、「SVHEAD」を参照してください。 |
SVEXCLUDE |
オプションのキーワードSVEXCLUDEは、作業リスト・データからフィールドを除外する場合に使用されます。値は、1つ以上のコンマ区切り作業リストのフィールド名になります。 詳細については、「SVEXCLUDE」を参照してください。 |
SVTABLE |
SVTABLEキーワードがある場合、現在のデータベース接続を使用して指定のテーブルからデータが選択されます。SVTABLEに値を指定しない場合、ファイル・データは作業リスト引数から取り出されます。 詳細については、「SVTABLE」を参照してください。 |
SVCOLUMN |
SVCOLUMNが使用されるのは、SVTABLEキーワードと組み合わせる場合のみです。SVCOLUMNは、値サービスを区切り、リレーショナル・データベースの列を定義します。 sv.column.{値}を使用して、サービス・プロパティ・リソースの検索が行われます。 詳細については、「SVCOLUMN」を参照してください。 |
SVLABEL |
SVLABELが使用されるのは、SVTABLEキーワードと組み合わせる場合のみです。SVLABELは、データベース・テーブル挿入の場合は最初の列値として、データベース・テーブル選択の場合はwhere制約としてキーワード値を含める場合に使用されます。 詳細については、「SVLABEL」を参照してください。 |
NUMBERFORMAT |
オプションのキーワードNUMBERFORMATは、小数区切り文字が小数点文字「.」ではない数字文字列を処理する場合に使用されます。 詳細については、「NUMBERFORMAT」を参照してください。 |
ARCHIVE |
オプションのキーワードARCHIVEを使用して、内容の保管に使用されるパスとファイル名を指定します。 詳細については、「ARCHIVE」を参照してください。 |
例
RDML
DEF_LIST NAME(#WRKLIST) FIELDS(#LINENUM #PARTNUM #PARTDSC #PARTAMT #PARTQTY) TYPE(*WORKING)
USE BUILTIN(JSM_COMMAND) WITH_ARGS('WRITE FILE(order.csv) SERVICE_LIST(LINENUM,PARTNUM,PARTDSC,PARTAMT,PARTQTY)') TO_GET(#JSMSTS #JSMMSG #WRKLIST)
または
USE BUILTIN(JSM_COMMAND) WITH_ARGS('WRITE FILE(order.csv) SEPARATOR(*TILDE) SERVICE_LIST(LINENUM,PARTNUM,PARTDSC,PARTAMT,PARTQTY)') TO_GET(#JSMSTS #JSMMSG #WRKLIST)
または
USE BUILTIN(JSM_COMMAND) WITH_ARGS('WRITE FILE(order.csv) SVHEAD(*COLUMN) SVTABLE(ORD) SVCOLUMN(ORDER) SVLABEL(23)') TO_GET(#JSMSTS #JSMMSG)
RDMLX
def_list name(#valueslst) fields(#std_num #std_obj #std_desc #std_amnt #std_qty) counter(#listcount) type(*working)
#jsmcmd := 'write file(' + #jsmfile + ') content(*sv) separator(' + #separator + ')'
use builtin(jsmx_command) with_args(#jsmhdle #jsmcmd) to_get(#jsmsts #jsmmsg #valueslst)
ILE RPG
* NB: This MUST match the structure xml provided to the JSM Server!
d svlist ds occurs(svocur)
d linenum 7s 0
d partnum 7a
d partdsc 30a
d partamt 9s 2
d partqty 7s 0
d svocur c const(50)
d svsize c const(%size(svlist))
c eval jsmcmd = 'WRITE'
c + ' FILE(' + %trim(svfilepath) + ')'
c + ' SVHEAD(ORDER)'
c + ' SERVICE_STRUCTURE(SV.SVOrderLine)'
c + ' COUNT(' + %char(svocur) + ')'
c + ' OCCURS(' + %char(svocur) + ')'
c + ' SIZE(' + %char(svsize) + ')'
c eval bytelength = svocur * svsize
c callp p_jsmcmdx(jsmcmd:svlist:bytelength:
c jsmsts:jsmmsg)