8.93 GET_KEYWORD_STRING

1つのESF (外部ソース形式)ステートメントが含まれる文字列から、キーワードとその値を取得します。

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

L

必須

キーワードどその値を取得するための文字列の「行」を含める作業リスト。このリストは全体で1000文字の制限があります。

1

256

 

 

2

N

必須

キーワードどその値を取得するための文字列の「行」を含める作業リストのエントリー長

1

3

0

0

3

A

必須

処理されるESFステートメントのタグ名 (コマンド名)

1

10

 

 

4

L

必須

検索用のキーワード作業リスト

呼び出し元のRDMLファンクションは、項目の長さの合計が正確に16バイトの作業リストを提供しなければなりません。

リストの各エントリーは、次のようなフォーマットにする必要があります。

開始 - 終了   説明

1 - 15   キーワード

16 - 16   値の数:

     S - 1つの値

     L - 値のリスト

16

16

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

L

必須

検索されたキーワードを含める作業リスト

呼び出し元のRDMLファンクションは、項目の長さの合計が正確に25バイトの作業リストを提供しなければなりません。

リストの各エントリーは、次のようなフォーマットにする必要があります。

開始 - 終了   説明

1 - 15   キーワード

16 - 20   キーワードの1番目の値のリスト・エントリー番号。Signed(5,0)

21 - 25   キーワードの最後の値のリスト・エントリー番号。Signed(5,0)

25

25

 

 

2

L

必須

検索された値を含める作業リスト

呼び出し元のRDMLファンクションは、項目の長さの合計が正確に131バイトの作業リストを提供しなければなりません。

リストの各エントリーは、次のようなフォーマットにする必要があります。

開始 - 終了   説明

1 - 1    値のタイプ:
   A - 英数字
   N - 数値

2 - 101   英数字値。注:英数字値は必ず引用符で囲まれます。

102 - 131   数値

注:数値リテラルの値は、Signed(30,9)です。

131

131

 

 

3

L

必須

検索された文字列から検索キーワードとその値を除いた残りの部分を含める作業リスト

リストの各エントリーは、次のようなフォーマットにする必要があります。

開始 - 終了   説明

1 - 2   エラー・コード。エラー・コード一覧は以下にあります。

3 - 22   認識されなかった文字列の最初の20文字

1

22

 

 

 

エラー・コード

01

タグの開始区切り文字がコロンではありませんでした

02

タグ名が英字で開始されていません

03

タグ名が長すぎます。10文字以下にする必要があります

04

キーワードが英字で開始されていません

05

キーワードが無効です。定義されたキーワード・リストに見つかりません

06

キーワードが完全ではありません。文字列の終わりが見つかりました

07

キーワードの指定が長すぎます。15文字以下にする必要があります

08

キーワードに値が指定されていません

09

指定された値が長すぎます

10

1つの値リストに複数の値が指定されています

11

引用された値が引用符で終わっていません

12

無効な数値リテラル値です

13

値に複数の10進数形式の文字が指定されています

14

数値リテラル値の整数部が21桁を超えています

15

数値リテラル値の小数部が9桁を超えています

16

コマンド文字列が上限の1000文字を超えています

17

タグの終了区切り文字が指定されていません

18

値が完全ではありません。文字列の終わりが見つかりました

19

予期したタグ名が見つかりません

20

引用された値の後はブランクにする必要があります

21

キーワードの終了を表す関係子が指定されていません

22

キーワードが複数回指定されています

技術上の注記

ESFスタイルのステートメントが入ったリストが作られました。これはRECORDステートメントであることがわかっています。FILENAMEの値、つまりキーワードの値が1つ必要です。

DEFINE     FIELD(#KWD) TYPE(*CHAR) LENGTH(10)
DEFINE     FIELD(#KWDTYPE) TYPE(*CHAR) LENGTH(1)
DEFINE     FIELD(#LINE) TYPE(*CHAR) LENGTH(70)
DEFINE     FIELD(#KWDSTR) TYPE(*DEC) LENGTH(3) DECIMALS(0)
DEFINE     FIELD(#KWDEND) TYPE(*DEC) LENGTH(5) DECIMALS(0)
DEFINE     FIELD(#VALTYPE) TYPE(*CHAR) LENGTH(1)
DEFINE     FIELD(#VALALPHA) TYPE(*CHAR) LENGTH(50)
DEFINE     FIELD(#VALNUM) TYPE(*DEC) LENGTH(30) DECIMALS(0)
DEFINE     FIELD(#FILENAME) TYPE(*CHAR) LENGTH(10)
DEFINE     FIELD(#LEFTCOUNT) TYPE(*DEC) LENGTH(5) DECIMALS(0)
DEF_LIST   NAME(#KWDSRCH) FIELDS((#KWD) (#KWDTYPE)) 
           TYPE(*WORKING)
DEF_LIST   NAME(#STRSRCH) FIELDS((#LINE)) TYPE(*WORKING)
DEF_LIST   NAME(#KWDFND) FIELDS((#KWD) (#KWDSTR) (#KWDEND) 
           TYPE(*WORKING)
DEF_LIST   NAME(#VALFND) FIELDS((#VALTYPE) (#VALALPHA) 
           (#VALNUM)) TYPE(*WORKING)
DEF_LIST   NAME(#STRLEFT) FIELDS((#LINE)) TYPE(*WORKING) 
           COUNTER(#LEFTCOUNT)
********** Construct list containing ESF:RECORD statement
.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .
********** Clear the keyword search list
CLR_LIST   NAMED(#KWDSRCH)
********** Put in search keywords
CHANGE     FIELD(#KWD) TO(FILENAME)
CHANGE     FIELD(#KWDTYPE) TO(S)
ADD_ENTRY  TO_LIST(#KWDSRCH)
********** Get the keywords from the string
USE        BUILTIN(GET_KEYWORD_STRING) WITH_ARGS(#STRSRCH #KWDSTR #KWD 
           #KWDSRCH) TO_GET(#KWDFND #VALFND #STRLEFT)
********** Handle error
IF         COND('#LEFTCOUNT > 0')
**********         error processing
.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .
ELSE
********** Get the value for the file name keyword
GET_ENTRY  NUMBER(1) FROM_LIST(#VALFND)
GET_ENTRY  NUMBER(#KWDSTR) FROM_LIST(#VALFND)
CHANGE     FIELD(#FILENAME) TO(#VALALPHA)
********** Use the file name
.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .
ENDIF