Suffix String
From MidrangeWiki
Revision as of 18:57, 11 December 2018 by DaveLClarkI (talk | contribs) (Created page with "Category:Service Procedures == Summary == The following are the RPG/LE fully free-form definitions and instructions needed for using the {{AN}} service procedure. This se...")
Summary
The following are the RPG/LE fully free-form definitions and instructions needed for using the Suffix String service procedure. This service procedure simply allows the caller to extract the right-most non-blank n characters from a supplied string.
Service Procedure
**free //============================================================================== // After removing blanks on the right, return requested number of bytes of // suffix characters -- optional padding on the left. //============================================================================== dcl-pr GenUtl_SuffixString varchar(256) rtnparm; OrigString varchar(65535) const; ByteCount packed(3:0) const; PadChar char(1) const options(*nopass); end-pr; //============================================================================== // After removing blanks on the right, return requested number of bytes of // suffix characters -- optional padding on the left. //============================================================================== dcl-proc GenUtl_SuffixString export; dcl-pi *n varchar(256) rtnparm; OrigString varchar(65535) const; ByteCount packed(3:0) const; PadChar char(1) const options(*nopass); end-pi; dcl-s StrLeng like(ByteCount); dcl-s NewString varchar(256) inz(''); dcl-s PadString char(256) inz(*blanks); NewString = GenUtl_RightString( %trimr(OrigString) // trim blanks to : %len(NewString:*max) ); // determine suffix StrLeng = ByteCount; // start with bytes requested if %parms < %parmnum(PadChar) // if no padding and or StrLeng > %len(NewString); // request greater than string supplied StrLeng = %len(NewString); // take supplied string length endif; if StrLeng > *zero; // if something to return if StrLeng > %len(PadString); // if more than what can return StrLeng = %len(PadString); // set to max return length endif; if %parms < %parmnum(PadChar); // if no padding NewString = %subst(NewString: %len(NewString) - StrLeng + 1); else; // else, with right padding NewString = %subst( %xlate(' ': PadChar: PadString) + NewString : %len(PadString) + %len(NewString) - StrLeng + 1); endif; else; // else return ''; // nothing to return endif; return NewString; // return the suffix string end-proc;