READ

LANSA Integrator

READ


READコマンドは、指定したメッセージ内容を作業リストに配置します。作業リスト定義は、予想される内容に適していなければなりません。例えば、テキスト内容を読み込む場合、作業リストには1つのフィールドが必要です。テキスト以外の内容(区切り文字の値を含む内容など)を読み込む場合、その内容の最大列数に対応できるように作業リストを定義する必要があります。

ENCODINGキーワードとCONTENTキーワードにより、内容処理要件が制御されます。

 

                                                           必須

 

 READ ---------- OBJECT ---------なし--------------------------->

                                  *TEXT

                                  *ATTACHMENT

 

                                                           任意

 

             >-- CONTENT -------- *TEXT -------------------------->

                                  *CSV

                                  *TSV

                                  *SV

 

             >-- SEPARATOR ------値-------------------------->

                                  *COMMA

                                  *SEMICOLON

                                  *TAB

                                  *TILDE

 

             >-- ENTRY ---------- 1 ------------------------------>

                                  値

 

             >-- SELECT ---------値-------------------------->

 

             >-- ENCODING ------ *DEFAULT ------------------------>

                                 値

 

             >-- SVROW ----------値-------------------------->

 

             >-- SVROWLIMIT -----値-------------------------->

                                  *NONE

                                  *LIST

                                  *AVAILABLE

 

             >-- SVMODE --------- *NONE -------------------------->

                                  *IGNORE

                                  *USE 

 

             >-- SVHEAD ---------値-------------------------->

 

             >-- NUMBERFORMAT --- *NONE --------------------------|

                                  *DEFAULT

                                  *CLIENT 

                                  *USERAGENT

                                  値

 

キーワード

OBJECT

このキーワードは、現在のメッセージのどの部分を読み込むかを指定します。

値が*TEXTの場合、メッセージの本文が作業リストに読み込まれます。メッセージの内容タイプがtext/またはmultipart/で始まらない場合、コマンドはステータス・フィールドにNOTEXTを返します。

作業リストに読み込む特定の添付ファイルを指定するには、値*ATTACHMENTを使用します。この値とENTRYキーワードまたはSELECTキーワードを組み合わせて使用して、保存する添付ファイルを特定します。ENTRYとSELECTのどちらも指定しない場合は、最初の添付ファイルが保存されます。現在のメッセージに添付ファイルが関連付けられていない場合、コマンド・ステータスはNOATTACHMENTが返されます。

コマンドに作業リストを定義する方法については、「RDML」「RDMLX予約キーワード」を参照してください。

CONTENT

省略値では、メール内容はテキストとして処理されます。

添付ファイルが平文の場合、CONTENT(*TEXT)を使用して作業リストにテキストを読み込みます。

あるいは、コンマ区切り変数(*CSV)やタブ区切り変数(*TSV)、または区切り文字キーワードに指定した区切り変数(*SV)で処理することができます。区切り文字変数を含む内容を処理する場合の追加処理オプションについては、「SEPARATOR」「SVHEAD」「SVMODE」「NUMBERFORMAT」「TRIM」「TRUNCATE」の各キーワードを参照してください。

本文や添付ファイルの内容の保管に使用される作業リストは、データの保管に適した列数で定義する必要があります。コマンドに作業リストを定義する方法については、「RDML」「RDMLX予約キーワード」を参照してください。

SEPARATOR

このキーワードは区切り値サービスで使用され、内容の区切り文字を特定します。

SEPARATORキーワードがあり、CONTENTキーワードを指定しない場合、CONTENT(*SV)が前提となります。

詳細については、「SEPARATOR」を参照してください。

ENTRY

保存する添付ファイルのファイル番号を指定します。省略値は1です。各添付ファイルに割り当てられる番号は、送信者がメールに添付ファイルを追加した順序で決まります。

SELECT

添付ファイル名に基づいて、保存する添付ファイルを選択します。

ENCODING

バイト内容のUnicode文字列変換に適用されるエンコーディングを指定します。ENCODINGキーワードの省略値は*DEFAULTです。

詳細については、「ENCODING」を参照してください。

SVROW

オプションのキーワードSVROWは、レコードを読み込む際の開始行を指定する場合に使用されます。

詳細については、「SVROW」を参照してください。

SVROWLIMIT

オプションのキーワードSVROWLIMITは、読み込まれる行数を指定する場合に使用されます。

詳細については、「SVROWLIMIT」を参照してください。

SVMODE

このキーワードは、区切り値データを処理するコンテンツ・ハンドラーとサービスで使用され、インバウンド区切り値データの処理方法を定義します。

詳細については、「SVMODE」を参照してください。

SVHEAD

このオプションのキーワードは、区切り値データのフィールド・レイアウトの記述に使用されます。

詳細については、「SVHEAD」を参照してください。

NUMBERFORMAT

このオプションのキーワードは、小数区切り文字が小数点文字「.」ではない数字文字列を処理します。

詳細については、「NUMBERFORMAT」を参照してください。

 

RDML

TRUNCATEキーワードを使用すると、行の長さが作業リストのフィールドの長さを超える場合でも本文の内容が作業リストに追加されます。

 

DEF_LIST NAME(#BODYLST) FIELDS(#STD_TEXT) TYPE(*WORKING)

 

CHANGE FIELD(#JSMCMD) TO('READ OBJECT(*TEXT) SERVICE_LIST(STD_TEXT) TRUNCATE(*BOTH)')

USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS #JSMMSG #BODYLST)

 

RDMLX

添付ファイルは、その内容や内容のユーザー情報に従って処理できます。例えば、あるメールに以下のような内容の添付ファイルmessage01.txtがあるとします。

 

     first, second, third, fourth

     1, 2, 3, 4

     uno, dos, tres , quatro

     un , deux , trios ,

 

この添付ファイルの内容をテキストとして読み込みます(内容の各行が作業リストの各フィールドに配置されます)。

 

def_list name(#attachlst) fields(#fielda) type(*working)

 

use builtin(jsmx_command) with_args(#jsmhdle 'read object(*attachment) content(*text) select(message01.txt)') to_get(#jsmsts #jsmmsg #attachlst)

 

または

 

添付ファイルをコンマ区切り変数ファイルとして読み込みます(作業リストには4列必要です)。

 

def_list name(#attachlst) fields(#fielda #fieldb #fieldc #fieldd) type(*working)

 

use builtin(jsmx_command) with_args(#jsmhdle 'read object(*attachment) content(*csv) select(message01.txt)') to_get(#jsmsts #jsmmsg #attachlst)

 

ILE RPG

 

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

                                                                    

d readlist        ds                  occurs(readocur)              

d  readtext                    255a                                 

                                                                    

d readocur        c                   const(9999)                   

d readsize        c                   const(%size(readlist))        

d readcount       s              9p 0 inz(0)                        

                                                                    

c                   eval      jsmcmd = 'READ OBJECT(*TEXT)'        

c                             + ' TRUNCATE(*BOTH)'                 

c                             + ' SERVICE_STRUCTURE(POP3.ReadList)'

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

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

                                                                   

c                   eval      %occur(readlist) = 1            

c                   eval      bytelength = readocur * readsize

                                                                   

c                   callp     p_jsmcmdx(jsmcmd:readlist:bytelength:

c                                       jsmsts:jsmmsg)             

                                                                   

c                   if        jsmsts = 'OK'                        

c                   callp     p_jsmbytelngth(bytelength)           

c                   if            (bytelength > 0)                 

c                             and (bytelength <= readocur * readsize)

c                   callp     p_jsmbyterecv(readlist)                 

c                   eval      readcount = bytelength / readsize      

c                   endif                                           

c                   endif