このコード
disp entry(5,"1 2 3 4"," ").
エントリ 5 が範囲外であるため、エラーが返されます。
存在しないエントリにアクセスしないように、文字列内の区切り記号の数をカウントするにはどうすればよいですか?
このコード
disp entry(5,"1 2 3 4"," ").
エントリ 5 が範囲外であるため、エラーが返されます。
存在しないエントリにアクセスしないように、文字列内の区切り記号の数をカウントするにはどうすればよいですか?
NUM-ENTRIES(文字列、区切り文字)
または、文字列の n 番目のエントリを取得する場合、またはそのエントリが存在しない場合は (エラーなしで) 何も取得しない場合は、チェックする前に文字列に "n" 区切り記号を追加できます。これにより、ステートメントが適切に完了することが保証されます。空白のエントリが返されたときにどうするかを決定する必要があります。
DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
DEFINE VARIABLE iEntry AS INTEGER NO-UNDO.
cString = 'jim bob tom ed frank william'.
iEntry = 23.
DISPLAY ENTRY(iEntry,cString + FILL(' ',iEntry),' ').
もちろん、空白のエントリを返すのではなく、次の代替コードに示すように、既知のエラー値を返すこともできます (元のリストに含まれないすべてのエントリに対して "INVALID" が返されます)。既知のエラー値の先頭の区切り文字 (この場合はスペース) に注意してください。これは、既知の各エラー値が個別のリスト項目として文字列に追加されるようにするために重要です。
DISPLAY ENTRY(iEntry,cString + FILL(' INVALID',iEntry),' ').
ユーザーが入力したデータ、または正しくフォーマットされている必要がある外部ソースからのデータを処理するときに、このアプローチを使用するのが好きですが、そうでない場合もあります。