Field Padding in CL

CL
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

From: Michael Moschitta To: All

How can I determine the number of characters in a CL variable? I'm sending files to a mainframe and the job name can't exceed eight characters. This does not present a problem-I just use the Change Variable (CHGVAR) command as follows.

 CHGVAR VAR(%SST(&RPTNAME 1,8)) + VALUE(&SPFILE) 

Because &SPFILE is *CHAR, length 10, I truncate &RPTNAME to a length of 8. The problem is the AS/400 spool files that I send are sometimes less than eight characters. This causes the mainframe Job Control Language (JCL) to default to a different class. To prevent this, I need to determine the number of characters in the field and then pad it on the right with a constant such as XXX.

From: Ted Holt To: Michael Moschitta

You can use the *TCAT operator to drop the trailing blanks and concatenate eight Xs, like this:

 CHGVAR VAR(%SST(&RPTNAME 1 8)) + VALUE(&SPFILE *TCAT 'XXXXXXXX') 

This will add Xs on to the end of &SPFILE, so that a &SPFILE value such as MYJOB will become MYJOBXXX. This eliminates the intervening blanks that are messing up your mainframe JCL.

BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$0.00 Raised:
$