システム関数 StrLib.getNextToken は、あるトークンをサブストリングの中で検索し、そのトークンをターゲット項目にコピーします。
トークンとは、区切り文字で区切られたストリングのことです。例えば、スペース (「 」) とコンマ (「,」) の文字が区切り文字として定義されている場合、ストリング 「CALL PROGRAM ARG1,ARG2,ARG3」 は、「CALL」、「PROGRAM」、「ARG1」、「ARG2」、および 「ARG3」 という 5 つのトークンに分解できます。
StrLib.getNextToken(
target VagText inOut,
source VagText in,
sourceSubstringIndex INT inOut,
sourceSubstringLength INT inOut,
characterDelimiter VagText in)
returns (result INT)
後述の例に示されているとおり、sourceSubstringIndex および sourceSubstringLength の値をリセットすることなく、 サブストリング内の各トークンを検索する一連の呼び出しが可能です。
Function myFunction()
myVar myStructurePart;
myRecord ExampleRecordPart;
i = 1;
myVar.mySourceSubstringIndex = 1;
myVar.mySourceSubstringLength = 29;
while (myVar.mySourceSubstringLength > 0)
myVar.myResult = StrLib.getNextToken( myVar.myTarget[i],
"CALL PROGRAM arg1, arg2, arg3",
myVar.mySourceSubstringIndex,
myVar.mySourceSubstringLength, " ," );
if (myVar.myResult > 0)
myRecord.outToken = myVar.myTarget[i];
add myRecord;
set myRecord empty;
i = i + 1;
end
end
end
Record myStructurePart
01 myTarget CHAR(80)[5];
01 mySource CHAR(80);
01 myResult myBinPart;
01 mySourceSubstringIndex INT;
01 mySourceSubstringLength BIN(9,0);
01 i myBinPart;
end
Record ExampleRecordPart
serialRecord:
fileName="Output"
end
01 outToken CHAR(80);
end
関連概念
EGL 関数の構文図
関連リファレンス
EGL ライブラリー StrLib