%TRIM

Return the length of a variable without trailing blanks

WTSupported in traditional Synergy on Windows
WNSupported in Synergy .NET on Windows
USupported on UNIX
VSupported on OpenVMS
length = %TRIM(variable)

or

xcall TRIM(variable, length)

Return value

length

The length of variable minus the number of trailing blanks. If the variable is blank, %TRIM returns a value of one. If the variable is null, %TRIM returns a value of zero. In other words, the statement

%trim(" ")

returns a value of one, while the statement

%trim("")

returns a value of zero. (i)

Arguments

variable

A variable whose length will be returned. (a)

Discussion

%TRIM returns the length of a variable minus the number of trailing blanks.

The difference between %TRIM and %TRIMZ is that with blank strings, %TRIM returns a value of one, and %TRIMZ returns a value of zero.

Examples

The following subroutine displays a prompt, gets the input, and returns the length of the actual data that was input. If no data is input, the return length is one.

subroutine input 
    a_data      ,a 
    a_prompt    ,a 
    a_len       ,d 

proc 
    display(TTCHN, a_prompt, ": ") 
    reads(TTCHN, a_data, done) 
    a_len = %trim(a_data)
done,
    xreturn 
endsubroutine

The example below checks for valid input.

subroutine chk_inp
    a_valid             ,a
    a_status            ,d
.define TTCHN           ,1 
record
    input               ,a60
    len                 ,d2
proc
    reads(TTCHN, input)
    xcall trim(input, len)
    reads(TTCHN, input)
    xcall trim(input, len)
    if ((len.eq.1) .and. (input.ne.' ') .and. 
  &     (input(1:len) .eq. a_valid)) then
      a_status = %true
    else
      a_status = %false
    xreturn
endsubroutine