46 lines
1.8 KiB
Plaintext
46 lines
1.8 KiB
Plaintext
//==============================================================
|
|
//=== SRV_STR service program contains procedures working
|
|
//=== with strings
|
|
//==============================================================
|
|
// CRTRPGMOD MODULE(SRV_STR)
|
|
// CRTSRVPGM SRVPGM(SRV_STR) EXPORT(*ALL)
|
|
// ADDBNDDIRE BNDDIR(UTIL_BND) OBJ((SRV_STR *SRVPGM *DEFER))
|
|
|
|
//=== CenterStr ================================================
|
|
// Return the centered string. The input string is normally
|
|
// fixed length and RPG will promote it to varying on the
|
|
// call. A varying string is returned which RPG will reset
|
|
// to fixed if needed.
|
|
// It will also execute with a varying string input but the
|
|
// result may not be what you expect.
|
|
//
|
|
// Conceptual call:
|
|
//=================
|
|
// H BndDir('UTIL_BND')
|
|
// /include copy_mbrs,Srv_Str_P
|
|
// d Head S 20A inz('Inquiry')
|
|
// Head = CenterStr(Head);
|
|
// Notes:
|
|
// CenterStr is small, but it is convenient.
|
|
// Could add left and right justify, but...
|
|
// Left justify is simple in RPG:
|
|
// str = %trim(str);
|
|
// Right justify is also simple:
|
|
// evalr str = %trim(str);
|
|
|
|
h nomain option(*NoDebugIo: *srcstmt)
|
|
/include copy_mbrs,SRV_STR_P
|
|
p CenterStr b export
|
|
d CenterStr pi 256a varying
|
|
d InStr 256a varying const
|
|
d
|
|
d blanks s 256a varying inz
|
|
d trimInStr s 256a varying
|
|
/free
|
|
trimInStr = %trim(InStr);
|
|
// Set length to materialize required leading blanks.
|
|
%len(blanks) = %int((%len(inStr) - %len(trimInStr))/2);
|
|
return blanks + trimInStr;
|
|
/end-free
|
|
p CenterStr e
|