Crop variable in CLLE

How can you trim a variable in CLLE?

+3
source share
4 answers

CLLE does not have a standard TRIM function. Nonetheless,

  • If you want to stick two variables, look at * TCAT (or | <). This command removes the spaces between them (for example, "xyz" * TCAT "uvw" becomes "xyzuvw"
  • If you really want to crop, try `` * TCAT $ YOURVAR * TCAT '' (now I can not try it on my own. No like / 400 around the house ...)
  • , ILE CL. CALLPRC , ! RPC COBOL ILE.
+3

CL , .

, |< |>.

, , , % 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)

EDIT 2012-07-19 *

! |. CCSID * CAT , . . - IBM .

+1

, , % TRIM (& myVariable)

+1

% TRIM(),% TRIML() % TRIMR() , ILE CL "triml" C:

dcl   &lPath       *int            value( 0 )

callprc  'triml'  ( +
                    &Dir           +
                    ( ' ' *byval ) +
                  ) +
            rtnval( &lPath )

* SRVPGM QC2UTIL1.

OPM ILE CL :

dcl   &lmsgtxt1    *dec  (   5 0 ) value( 0 )

rtvmsg     msgid( cpf9897 ) msgf( QSYS/QCPFMSG ) +
             msgdta( &SQLStm )    +
             msglen( &lmsgtxt1 )

% SST() .

0

Source: https://habr.com/ru/post/1733857/


All Articles