CLLEで変数をどのようにトリムできますか??
user278576
質問する
6960 次
4 に答える
3
CLLE では、標準機能の TRIM は使用できません。でも、
- 2 つの変数を結合したい場合は、*TCAT (または |<) を見てください。このコマンドは、間にある空白を削除します (例: 'xyz ' *TCAT 'uvw' は 'xyzuvw' になります)。
- 本当にトリミングしたい場合は、'' *TCAT $YOURVAR *TCAT '' を試してください (今は自分でこれを試すことはできません。自宅では as/400 はありません...)
- または、 ILE CLを使用しているという事実を利用してください。コマンド CALLPRC を使用して、このトリックを実行できるモジュールを呼び出すことができます。そのモジュールは、ILE RPG または COBOL を使用して自分で作成してください。
于 2010-02-24T18:38:07.117 に答える
2
これが古いことはわかっていますが、 %TRIM(&myVariable) を使用できます
于 2015-09-30T17:13:54.463 に答える
1
CLのすべての変数は固定長であるため、それ自体をトリミングする論理的な要件はありません。
スペースを挟まずに2つの値を結合するには、|<
演算子を使用し、単一のスペースを含めるには、を使用します|>
。
末尾のスペースを除く文字の長さを見つけるには、%SST(&VAL&POS 1)を使用して値を逆方向にウォークし、スペースの各文字の位置をテストする必要があります。何かのようなもの:
DCL &LEN *DEC (15 0)
DCL &VAL *CHAR 50 VALUE('Some test data')
DCL &CHR15 *CHAR 15
CHGVAR &LEN 50
LOOP: IF (&LEN > 1 & %SST(&VAL &LEN 1)==' ') (DO)
CHGVAR &LEN VALUE(&LEN - 1)
GOTO LOOP
ENDDO
CHGVAR &CHR15 &LEN
SNDPGMMSG ('The length is' |> &CHR15) /* Can't concat decimal values */
たとえば、値をnullで終了して、C関数を呼び出すには、次のようにします。
DCL &VAL *CHAR 50 VALUE('Some test text')
DCL &VALNUL *CHAR 51 /* +1 for the null */
DCL &NULL *CHAR 1 VALUE(X'00')
CHGVAR &VALNUL VALUE(&VAL |< &NULL)
編集2012-07-19*
一部の文字セット!
では、の代わりに使用され|
ます。代わりに使用できるCCSIDに依存しない*CAT操作もあります。こことここでIBMのWebサイトを参照してください。
于 2010-03-10T07:20:21.103 に答える