Problem solve
Get help with specific problems with your technologies, process and projects.
Centering text in a file field
Learn how to center text in a file field for printing or displaying purposes. end.
Many times I have had the occasion to center text in file field for printing or displaying purposes. I now use the following RPG IV code to achieve this end.
* * Declares D Centered S Like(Field) Inz D X S 3P 0 Inz * * * Center field C Eval X = (%Len(Field)-%Len(%Trim(Field)))/2+1 C Eval %Subst(Centered:X) = Field C Eval Field = Centered *
In an ILE environment this can be made into a prototype in the following. This works for any size text up to a max of 1000 bytes. In the below example text is centered in a 50 byte field.
*********************************************************************** ** The following prototype describes a procedure that centers text within a character field ** with a size of 1000 bytes or less. *********************************************************************** * * Centering procedure D Center PR 1000A D AnyText 1000A Const D AnyTextLen 5U 0 Value * * Sample text to center D Text S 50A Inz('Center this text') * * Use of prototype to center text C Eval Text = Center(Text:%Len(Text)) * * Return program C Return *********************************************************************** ** Centering prototype *********************************************************************** P Center B Export D Center PI Like(Centered) D Field 1000A Const D FldLength 5U 0 Value * * Procedure variables D Centered S Like(Field) D ReturnCent S Like(Field) D X S 5U 0 Inz * * Calculate start position for centered text C Eval X = (FldLength- C %Len(%Trim(%Subst(Field:1:FldLength))))/2+1 * * Place the text into position C Eval %Subst(Centered:X) = C %Trim(%Subst(Field:1:FldLength)) * * Populate and return variable C Eval ReturnCent = Centered C Return ReturnCent * P Center E