Page History
[ |../../index.htm#lansa/get_keyword_string.htm]
現在地:
...
9.92 GET_KEYWORD_STRING
| Note |
|---|
注意 |
...
: 9.1 |
...
1つのESF (外部ソース形式)ステートメントが含まれる文字列から、キーワードとその値を取得します。
ステートメントが含まれる文字列から、キーワードとその値を取得します。
引数
番号 | タイプ | 必須/任意 | 記述 | 最小長 | 最大長 | 最小小数桁数 | 最大小数桁数 |
|---|---|---|---|---|---|---|---|
1 | L | 必須 |
キーワードどその値を取得するための文字列の「行」を含める作業リスト このリストは全体で1000文字の制限があります。 | 1 | 256 |
2 | N | 必須 | キーワードどその値を取得するための文字列の「行」を含める作業リストのエントリー長 | 1 | 3 | 0 | 0 |
3 | A | 必須 | 処理されるESFステートメントのタグ名 (コマンド名) | 1 | 10 |
4 | L | 必須 | 検索用のキーワード作業リスト |
呼び出し元のRDMLファンクションは、項目の長さの合計が正確に16バイトの作業リストを提供しなければなりません。 |
リストの各エントリーは、次のようなフォーマットにする必要があります。 開始 - 終了 説明 | 16 | 16 |
戻り値
番号 | タイプ | 必須/任意 | 記述 | 最小長 | 最大長 | 最小小数桁数 | 最大小数桁数 |
|---|---|---|---|---|---|---|---|
1 | L | 必須 | 検索されたキーワードを含める作業リスト |
呼び出し元のRDMLファンクションは、項目の長さの合計が正確に25バイトの作業リストを提供しなければなりません。 |
リストの各エントリーは、次のようなフォーマットにする必要があります。 開始 - 終了 説明 | 25 | 25 |
2 | L | 必須 | 検索された値を含める作業リスト |
呼び出し元のRDMLファンクションは、項目の長さの合計が正確に131バイトの作業リストを提供しなければなりません。 |
リストの各エントリーは、次のようなフォーマットにする必要があります。 開始 - 終了 説明 |
|
|
101 英数字値
102 - 131 数値 |
| 131 | 131 |
3 | L | 必須 | 検索された文字列から検索キーワードとその値を除いた残りの部分を含める作業リスト |
リストの各エントリーは、次のようなフォーマットにする必要があります。 開始 - 終了 説明 | 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 | キーワードが複数回指定されています |
技術上の注記
- 戻されたキーワード・リストには、検索された各キーワードに1つのエントリーが入っています。キーワードの順序はキーワード検索用のリストに指定された順です。キーワードが見つからない場合は、そのキーワードの1番目の値のリスト・エントリー番号は0になります。
- キーワード検索用の作業リストに指定されたキーワードやESFステートメント内で指定されたキーワードはすべて大文字であることを確認してください。
- 戻り値リストの英数字値は、値が英字でも数字でも必ずこの場所に設定されます。数値は、その値が数値の場合だけ、ゼロ以外の数値になります。
- 小文字を含む英数字値が引用符で囲まれてない場合、大文字に変換されます。
- 英数字値では引用符の中に引用符を組み込んではいけません。
- 英数字値の長さの上限は98です。英数字はすべて引用符で囲まれて戻されます。
- 戻された残りのリストの文字列には、エラーが発生した検索文字列が入ります。
例
...
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