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 

This was first published in November 2001

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

-ADS BY GOOGLE

SearchEnterpriseLinux

SearchDataCenter

Close