3

CLLEで変数をどのようにトリムできますか??

4

4 に答える 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 に答える