Difference between revisions of "Left String"
From MidrangeWiki
DaveLClarkI (talk | contribs) (→Service Procedure) |
DaveLClarkI (talk | contribs) (→Service Procedure) |
||
Line 24: | Line 24: | ||
**free | **free | ||
ctl-opt NoMain AlwNull(*UsrCtl) Debug Option(*SrcStmt:*NoDebugIo) | ctl-opt NoMain AlwNull(*UsrCtl) Debug Option(*SrcStmt:*NoDebugIo) | ||
− | DatFmt(*ISO) TimFmt(*ISO | + | DatFmt(*ISO) TimFmt(*ISO); |
//============================================================================== | //============================================================================== |
Revision as of 16:53, 14 December 2018
Summary
The following are the RPG/LE fully free-form definitions and instructions needed for using the Left String service procedure. This service procedure simply allows the caller to extract the left-most n characters from a supplied string.
Service Prototype
Place the following in a separate copybook for inclusion in both the caller and the service program source members.
**free //============================================================================== // Return leftmost number of bytes -- optional padding on right. //============================================================================== dcl-pr GenUtl_LeftString varchar(256) rtnparm; OrigString varchar(65535) const; ByteCount packed(3:0) const; PadChar char(1) const options(*nopass); end-pr;
Service Procedure
Place the following in a service program source member.
**free ctl-opt NoMain AlwNull(*UsrCtl) Debug Option(*SrcStmt:*NoDebugIo) DatFmt(*ISO) TimFmt(*ISO); //============================================================================== // Return leftmost number of bytes -- optional padding on right. //============================================================================== dcl-proc GenUtl_LeftString 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); // prevent errors StrLeng = ByteCount; // start with bytes requested if %parms < %parmnum(PadChar) // if no padding and and StrLeng > %len(OrigString); // request greater than string supplied StrLeng = %len(OrigString); // 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(OrigString: 1: StrLeng); else; // else, with left padding NewString = %subst( OrigString + %xlate(' ': PadChar: PadString) : 1: StrLeng ); endif; endif; return NewString; // return the prefix string end-proc;