Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Justify text within AS/400 AFPDS printer file

Posted on 2004-03-29
19
Medium Priority
?
1,691 Views
Last Modified: 2007-12-19
Is it possible to justify (left and right) printed text on an AFPDS printer file?  I have been forced to use MS WORD/MERGE DOC because I cannot find any way to justify printed text on AS/400.
0
Comment
Question by:rbedard65
  • 8
  • 7
  • 3
19 Comments
 
LVL 14

Expert Comment

by:daveslater
ID: 10705422
Hi
the only way I can think of doing it is by decalring a field that is the full width of the and placing the text in the middle

here is an ILE example

h                                                                        
d text            S             60    inz('Put me in the middle')        
d text1           s                   like(text)                        
D lenOfTxt        S              3  0                                    
D SizeOfFls       S              3  0                                    
c                   eval      lenOfTxt  =%LEN(%trim(Text))              
c                   eval      SizeOfFls =%size(Text)                    
c                   clear                   text1                        
c                   eval      %subst(text1:%int(SizeOfFls/2)-            
c                                          %int(lenOfTxt/2))=            
c                             text                                      
C                   EVAL      *INLR=*ON                                  

Dave
0
 

Author Comment

by:rbedard65
ID: 10705543
Thanks Dave for the quick response but I do not want to use CENTER JUSTIFICATION, I want the left and right hand to start and end at the same location.  Example:

Space  me   out  all  the  way  to  right  hand
Even      if       only       a      few         words

I was hoping there was some sort of keyword on the PRTF DDS or on the CRTPRTF.  Or an RPGLE routine that caluclated the length based on the font and gave a result of how much space to place between each word.   Sounds tricky though.  

0
 
LVL 1

Expert Comment

by:Helixir
ID: 10706291
The Dave's way work if you use Courrier Font (Fixed width font). but it's really not cute.

For others font i've never been able to justify them, I heard that IBM has another Package that work with AFP which give you tool to calculte a String lenght so you can move you text with  the key word POSITION in you DDS.

If you have time you could make a program that calculate lenght of a string, and paste it in the Forum ;) !!

I'm really interrested to know, if someone found a way !!
0
What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

 

Author Comment

by:rbedard65
ID: 10706631
Thats the trick...how to calculate the length of a string when using a non-fixed font.  Also, whether or not a letter is upper case or lower case makes a big difference in the size.  My guess the answer lies in some Java procedures/code/utilities.  Maybe there are some JAR files/classes out there that convert as/400 data to true "word" document data.  
The other problem we have run into is how to underline and/or bold one word in a sentence.  
I can use OVERLAYS and PAGE SEGMENTS for data that doesnt change, but can't for variable data.
0
 
LVL 1

Expert Comment

by:Helixir
ID: 10706710
You could always made a ratio like how many "i" goes in a inch
and with

Select
  when @car = 'i'
     @len = @len + .1
endsl

but that really a weird methode to get what you want.
Java is a good Idea !! I know ni VB you can know the length of a string (not the number of caracter). So i guess that they have it in Java too.
0
 

Author Comment

by:rbedard65
ID: 10707738
That sounds like fun.  You would need a size (.1, .2, .3 etc..) for every lower case letter, every upper case letter, every number, every punctation and for each font you use.   I'll stick to using Word/Merge document.  It saved us a lot of programming time.  
0
 
LVL 14

Expert Comment

by:daveslater
ID: 10707760
Hi
This sounds like a good challenge,
 I am very busy at work at the moment (hence not my usual participation level) but if you can wait a few days.
Can you please do the following?
Print a sample document containing:

L then 50 spaces then L
l then 50 spaces then l
R then 50 spaces then R.
r then 50 spaces then r.


Once printed measure (fairly accurately, but to the nth degree, the distance between the start of the first character and the start of the last character).

Let be know the results.
I will try to write an algorithm to work it out.


Dave
0
 

Author Comment

by:rbedard65
ID: 10708139
OK..I can do that along with what font/size I used....just curious..why just those letters?  Are their groups of letters that pretty much have the same size?  What about an upper case 'W'...and dont you need to know the size of one space because not all spaces are the same size, depending on the font used.  
0
 
LVL 1

Expert Comment

by:Helixir
ID: 10708318
Well if you write algorithm return the Size in Centimeter plz, it's the futur ;)

Does anybody know if ISO(Or something like RFC...) exist for Standard Font like Courrier, Arial, MS Serif....

If yes we could have the lenght of each caracter !!
0
 

Author Comment

by:rbedard65
ID: 10708506
Here are my results in millimeters.

This is using a TIMES NEW ROMAN, point size 13 (font # 2308 on AS/400).

L to L w/50 spaces     7.1 mm
l to l w/50 spaces       6.9 mm
R to R w/50 spaces    7.1 mm
r to r w/50 spaces      6.95 mm
W to W w/50 spaces   7.2 mm
w to w w/50 spaces    7.05 mm

Not sure what all this means....
0
 
LVL 14

Expert Comment

by:daveslater
ID: 10725442
Hi
I have a basic solution that you may want to look at.
Send me an e-mail to my EE address (see my profile) it is written for V5.2
I will send the source and a file as a save file.
We can then develop a better solution we we have more time.

Dave

0
 
LVL 14

Expert Comment

by:daveslater
ID: 10727148
Hi again

A quick overview on what I have done.
There is a file that holds a font id, based on length and characters with and approximate length. I set it up in about 30 minutes.

I have quickly (alternate name for badly) written a few programs

1) Maintain fonts and character widths, print sample document for estimating character width, and print a justified print. The initial characters are added via DFU. It allows the copy of font ids

2) A service program that does the main business. It currently only deals with single lines but if we decide to go further we can make it sexy I have some good ideas and when I have more time I am going to work on this and a little pet project.

The only reason it needs V5.2 is some of the programming techniques I have used – it should be easy to convert to V5.1

The basic way it works is:

Using the file (I have based the font widths on per 50 but this is configurable) the service program calculates an approximate width of each character.

Some defaults are then set.
 
Text is passed – the program calculates the spacing required

Finally your programme requests each character, the service program returns the character along with the column where to print. Your application then prints the character in the position required.

It may be a bit CPU intensive for large documents but I have tested and it does work.

I am not that bothered if it is not the solution you require I have really enjoyed working out a solution / work round; it’s nice to get the old grey matter working.

Dave
0
 

Author Comment

by:rbedard65
ID: 10727490
This sounds like it has potential.    If I had a file that had the font id and each char. including a blank, and it's size, I could then calculate the total length of a string.  Subtract that from the total space on a line I have available.  Then divide that result by the number of words...that should give me approx. how much space between each word.  
0
 
LVL 14

Accepted Solution

by:
daveslater earned 560 total points
ID: 10731373
Hi
for all here is the basic code. Copied to PC using FTP

------ Physical file -----
     A          R RJUSTIFY
     A            FONTID        10          COLHDG('Font Id')
     A            PER            3  0       COLHDG('Width Per') EDTCDE(3)
     A            C001           1
     A            C002           1
     A            C003           1
     A            C004           1
     A            C005           1
     A            C006           1
     A            C007           1
     A            C008           1
     A            C009           1
     A            C010           1
     A            C011           1
     A            C012           1
     A            C013           1
     A            C014           1
     A            C015           1
     A            C016           1
     A            C017           1
     A            C018           1
     A            C019           1
     A            C020           1
     A            C021           1
     A            C022           1
     A            C023           1
     A            C024           1
     A            C025           1
     A            C026           1
     A            C027           1
     A            C028           1
     A            C029           1
     A            C030           1
     A            C031           1
     A            C032           1
     A            C033           1
     A            C034           1
     A            C035           1
     A            C036           1
     A            C037           1
     A            C038           1
     A            C039           1
     A            C040           1
     A            C041           1
     A            C042           1
     A            C043           1
     A            C044           1
     A            C045           1
     A            C046           1
     A            C047           1
     A            C048           1
     A            C049           1
     A            C050           1
     A            C051           1
     A            C052           1
     A            C053           1
     A            C054           1
     A            C055           1
     A            C056           1
     A            C057           1
     A            C058           1
     A            C059           1
     A            C060           1
     A            C061           1
     A            C062           1
     A            C063           1
     A            C064           1
     A            C065           1
     A            C066           1
     A            C067           1
     A            C068           1
     A            C069           1
     A            C070           1
     A            C071           1
     A            C072           1
     A            C073           1
     A            C074           1
     A            C075           1
     A            C076           1
     A            C077           1
     A            C078           1
     A            C079           1
     A            C080           1
     A            C081           1
     A            C082           1
     A            C083           1
     A            C084           1
     A            C085           1
     A            C086           1
     A            C087           1
     A            C088           1
     A            C089           1
     A            C090           1
     A            C091           1
     A            C092           1
     A            C093           1
     A            C094           1
     A            C095           1
     A            C096           1
     A            C097           1
     A            C098           1
     A            C099           1
     A            C100           1
     A            C101           1
     A            C102           1
     A            C103           1
     A            C104           1
     A            C105           1
     A            C106           1
     A            C107           1
     A            C108           1
     A            C109           1
     A            C110           1
     A            C111           1
     A            C112           1
     A            C113           1
     A            C114           1
     A            C115           1
     A            C116           1
     A            C117           1
     A            C118           1
     A            C119           1
     A            C120           1
     A            C121           1
     A            C122           1
     A            C123           1
     A            C124           1
     A            C125           1
     A            C126           1
     A            C127           1
     A            C128           1
     A            C129           1
     A            C130           1
     A            C131           1
     A            C132           1
     A            C133           1
     A            C134           1
     A            C135           1
     A            C136           1
     A            C137           1
     A            C138           1
     A            C139           1
     A            C140           1
     A            C141           1
     A            C142           1
     A            C143           1
     A            C144           1
     A            C145           1
     A            C146           1
     A            C147           1
     A            C148           1
     A            C149           1
     A            C150           1
     A            C151           1
     A            C152           1
     A            C153           1
     A            C154           1
     A            C155           1
     A            C156           1
     A            C157           1
     A            C158           1
     A            C159           1
     A            C160           1
     A            C161           1
     A            C162           1
     A            C163           1
     A            C164           1
     A            C165           1
     A            C166           1
     A            C167           1
     A            C168           1
     A            C169           1
     A            C170           1
     A            C171           1
     A            C172           1
     A            C173           1
     A            C174           1
     A            C175           1
     A            C176           1
     A            C177           1
     A            C178           1
     A            C179           1
     A            C180           1
     A            C181           1
     A            C182           1
     A            C183           1
     A            C184           1
     A            C185           1
     A            C186           1
     A            C187           1
     A            C188           1
     A            C189           1
     A            C190           1
     A            C191           1
     A            C192           1
     A            C193           1
     A            C194           1
     A            C195           1
     A            C196           1
     A            C197           1
     A            C198           1
     A            C199           1
     A            C200           1
     A            C201           1
     A            C202           1
     A            C203           1
     A            C204           1
     A            C205           1
     A            C206           1
     A            C207           1
     A            C208           1
     A            C209           1
     A            C210           1
     A            C211           1
     A            C212           1
     A            C213           1
     A            C214           1
     A            C215           1
     A            C216           1
     A            C217           1
     A            C218           1
     A            C219           1
     A            C220           1
     A            C221           1
     A            C222           1
     A            C223           1
     A            C224           1
     A            C225           1
     A            C226           1
     A            C227           1
     A            C228           1
     A            C229           1
     A            C230           1
     A            C231           1
     A            C232           1
     A            C233           1
     A            C234           1
     A            C235           1
     A            C236           1
     A            C237           1
     A            C238           1
     A            C239           1
     A            C240           1
     A            C241           1
     A            C242           1
     A            C243           1
     A            C244           1
     A            C245           1
     A            C246           1
     A            C247           1
     A            C248           1
     A            C249           1
     A            C250           1
     A            C251           1
     A            C252           1
     A            C253           1
     A            C254           1
     A            C255           1
     A            C256           1
      **
     A            L001           5  2       EDTCDE(3)
     A            L002      R               REFFLD(L001 *SRC)
     A            L003      R               REFFLD(L001 *SRC)
     A            L004      R               REFFLD(L001 *SRC)
     A            L005      R               REFFLD(L001 *SRC)
     A            L006      R               REFFLD(L001 *SRC)
     A            L007      R               REFFLD(L001 *SRC)
     A            L008      R               REFFLD(L001 *SRC)
     A            L009      R               REFFLD(L001 *SRC)
     A            L010      R               REFFLD(L001 *SRC)
     A            L011      R               REFFLD(L001 *SRC)
     A            L012      R               REFFLD(L001 *SRC)
     A            L013      R               REFFLD(L001 *SRC)
     A            L014      R               REFFLD(L001 *SRC)
     A            L015      R               REFFLD(L001 *SRC)
     A            L016      R               REFFLD(L001 *SRC)
     A            L017      R               REFFLD(L001 *SRC)
     A            L018      R               REFFLD(L001 *SRC)
     A            L019      R               REFFLD(L001 *SRC)
     A            L020      R               REFFLD(L001 *SRC)
     A            L021      R               REFFLD(L001 *SRC)
     A            L022      R               REFFLD(L001 *SRC)
     A            L023      R               REFFLD(L001 *SRC)
     A            L024      R               REFFLD(L001 *SRC)
     A            L025      R               REFFLD(L001 *SRC)
     A            L026      R               REFFLD(L001 *SRC)
     A            L027      R               REFFLD(L001 *SRC)
     A            L028      R               REFFLD(L001 *SRC)
     A            L029      R               REFFLD(L001 *SRC)
     A            L030      R               REFFLD(L001 *SRC)
     A            L031      R               REFFLD(L001 *SRC)
     A            L032      R               REFFLD(L001 *SRC)
     A            L033      R               REFFLD(L001 *SRC)
     A            L034      R               REFFLD(L001 *SRC)
     A            L035      R               REFFLD(L001 *SRC)
     A            L036      R               REFFLD(L001 *SRC)
     A            L037      R               REFFLD(L001 *SRC)
     A            L038      R               REFFLD(L001 *SRC)
     A            L039      R               REFFLD(L001 *SRC)
     A            L040      R               REFFLD(L001 *SRC)
     A            L041      R               REFFLD(L001 *SRC)
     A            L042      R               REFFLD(L001 *SRC)
     A            L043      R               REFFLD(L001 *SRC)
     A            L044      R               REFFLD(L001 *SRC)
     A            L045      R               REFFLD(L001 *SRC)
     A            L046      R               REFFLD(L001 *SRC)
     A            L047      R               REFFLD(L001 *SRC)
     A            L048      R               REFFLD(L001 *SRC)
     A            L049      R               REFFLD(L001 *SRC)
     A            L050      R               REFFLD(L001 *SRC)
     A            L051      R               REFFLD(L001 *SRC)
     A            L052      R               REFFLD(L001 *SRC)
     A            L053      R               REFFLD(L001 *SRC)
     A            L054      R               REFFLD(L001 *SRC)
     A            L055      R               REFFLD(L001 *SRC)
     A            L056      R               REFFLD(L001 *SRC)
     A            L057      R               REFFLD(L001 *SRC)
     A            L058      R               REFFLD(L001 *SRC)
     A            L059      R               REFFLD(L001 *SRC)
     A            L060      R               REFFLD(L001 *SRC)
     A            L061      R               REFFLD(L001 *SRC)
     A            L062      R               REFFLD(L001 *SRC)
     A            L063      R               REFFLD(L001 *SRC)
     A            L064      R               REFFLD(L001 *SRC)
     A            L065      R               REFFLD(L001 *SRC)
     A            L066      R               REFFLD(L001 *SRC)
     A            L067      R               REFFLD(L001 *SRC)
     A            L068      R               REFFLD(L001 *SRC)
     A            L069      R               REFFLD(L001 *SRC)
     A            L070      R               REFFLD(L001 *SRC)
     A            L071      R               REFFLD(L001 *SRC)
     A            L072      R               REFFLD(L001 *SRC)
     A            L073      R               REFFLD(L001 *SRC)
     A            L074      R               REFFLD(L001 *SRC)
     A            L075      R               REFFLD(L001 *SRC)
     A            L076      R               REFFLD(L001 *SRC)
     A            L077      R               REFFLD(L001 *SRC)
     A            L078      R               REFFLD(L001 *SRC)
     A            L079      R               REFFLD(L001 *SRC)
     A            L080      R               REFFLD(L001 *SRC)
     A            L081      R               REFFLD(L001 *SRC)
     A            L082      R               REFFLD(L001 *SRC)
     A            L083      R               REFFLD(L001 *SRC)
     A            L084      R               REFFLD(L001 *SRC)
     A            L085      R               REFFLD(L001 *SRC)
     A            L086      R               REFFLD(L001 *SRC)
     A            L087      R               REFFLD(L001 *SRC)
     A            L088      R               REFFLD(L001 *SRC)
     A            L089      R               REFFLD(L001 *SRC)
     A            L090      R               REFFLD(L001 *SRC)
     A            L091      R               REFFLD(L001 *SRC)
     A            L092      R               REFFLD(L001 *SRC)
     A            L093      R               REFFLD(L001 *SRC)
     A            L094      R               REFFLD(L001 *SRC)
     A            L095      R               REFFLD(L001 *SRC)
     A            L096      R               REFFLD(L001 *SRC)
     A            L097      R               REFFLD(L001 *SRC)
     A            L098      R               REFFLD(L001 *SRC)
     A            L099      R               REFFLD(L001 *SRC)
     A            L100      R               REFFLD(L001 *SRC)
     A            L101      R               REFFLD(L001 *SRC)
     A            L102      R               REFFLD(L001 *SRC)
     A            L103      R               REFFLD(L001 *SRC)
     A            L104      R               REFFLD(L001 *SRC)
     A            L105      R               REFFLD(L001 *SRC)
     A            L106      R               REFFLD(L001 *SRC)
     A            L107      R               REFFLD(L001 *SRC)
     A            L108      R               REFFLD(L001 *SRC)
     A            L109      R               REFFLD(L001 *SRC)
     A            L110      R               REFFLD(L001 *SRC)
     A            L111      R               REFFLD(L001 *SRC)
     A            L112      R               REFFLD(L001 *SRC)
     A            L113      R               REFFLD(L001 *SRC)
     A            L114      R               REFFLD(L001 *SRC)
     A            L115      R               REFFLD(L001 *SRC)
     A            L116      R               REFFLD(L001 *SRC)
     A            L117      R               REFFLD(L001 *SRC)
     A            L118      R               REFFLD(L001 *SRC)
     A            L119      R               REFFLD(L001 *SRC)
     A            L120      R               REFFLD(L001 *SRC)
     A            L121      R               REFFLD(L001 *SRC)
     A            L122      R               REFFLD(L001 *SRC)
     A            L123      R               REFFLD(L001 *SRC)
     A            L124      R               REFFLD(L001 *SRC)
     A            L125      R               REFFLD(L001 *SRC)
     A            L126      R               REFFLD(L001 *SRC)
     A            L127      R               REFFLD(L001 *SRC)
     A            L128      R               REFFLD(L001 *SRC)
     A            L129      R               REFFLD(L001 *SRC)
     A            L130      R               REFFLD(L001 *SRC)
     A            L131      R               REFFLD(L001 *SRC)
     A            L132      R               REFFLD(L001 *SRC)
     A            L133      R               REFFLD(L001 *SRC)
     A            L134      R               REFFLD(L001 *SRC)
     A            L135      R               REFFLD(L001 *SRC)
     A            L136      R               REFFLD(L001 *SRC)
     A            L137      R               REFFLD(L001 *SRC)
     A            L138      R               REFFLD(L001 *SRC)
     A            L139      R               REFFLD(L001 *SRC)
     A            L140      R               REFFLD(L001 *SRC)
     A            L141      R               REFFLD(L001 *SRC)
     A            L142      R               REFFLD(L001 *SRC)
     A            L143      R               REFFLD(L001 *SRC)
     A            L144      R               REFFLD(L001 *SRC)
     A            L145      R               REFFLD(L001 *SRC)
     A            L146      R               REFFLD(L001 *SRC)
     A            L147      R               REFFLD(L001 *SRC)
     A            L148      R               REFFLD(L001 *SRC)
     A            L149      R               REFFLD(L001 *SRC)
     A            L150      R               REFFLD(L001 *SRC)
     A            L151      R               REFFLD(L001 *SRC)
     A            L152      R               REFFLD(L001 *SRC)
     A            L153      R               REFFLD(L001 *SRC)
     A            L154      R               REFFLD(L001 *SRC)
     A            L155      R               REFFLD(L001 *SRC)
     A            L156      R               REFFLD(L001 *SRC)
     A            L157      R               REFFLD(L001 *SRC)
     A            L158      R               REFFLD(L001 *SRC)
     A            L159      R               REFFLD(L001 *SRC)
     A            L160      R               REFFLD(L001 *SRC)
     A            L161      R               REFFLD(L001 *SRC)
     A            L162      R               REFFLD(L001 *SRC)
     A            L163      R               REFFLD(L001 *SRC)
     A            L164      R               REFFLD(L001 *SRC)
     A            L165      R               REFFLD(L001 *SRC)
     A            L166      R               REFFLD(L001 *SRC)
     A            L167      R               REFFLD(L001 *SRC)
     A            L168      R               REFFLD(L001 *SRC)
     A            L169      R               REFFLD(L001 *SRC)
     A            L170      R               REFFLD(L001 *SRC)
     A            L171      R               REFFLD(L001 *SRC)
     A            L172      R               REFFLD(L001 *SRC)
     A            L173      R               REFFLD(L001 *SRC)
     A            L174      R               REFFLD(L001 *SRC)
     A            L175      R               REFFLD(L001 *SRC)
     A            L176      R               REFFLD(L001 *SRC)
     A            L177      R               REFFLD(L001 *SRC)
     A            L178      R               REFFLD(L001 *SRC)
     A            L179      R               REFFLD(L001 *SRC)
     A            L180      R               REFFLD(L001 *SRC)
     A            L181      R               REFFLD(L001 *SRC)
     A            L182      R               REFFLD(L001 *SRC)
     A            L183      R               REFFLD(L001 *SRC)
     A            L184      R               REFFLD(L001 *SRC)
     A            L185      R               REFFLD(L001 *SRC)
     A            L186      R               REFFLD(L001 *SRC)
     A            L187      R               REFFLD(L001 *SRC)
     A            L188      R               REFFLD(L001 *SRC)
     A            L189      R               REFFLD(L001 *SRC)
     A            L190      R               REFFLD(L001 *SRC)
     A            L191      R               REFFLD(L001 *SRC)
     A            L192      R               REFFLD(L001 *SRC)
     A            L193      R               REFFLD(L001 *SRC)
     A            L194      R               REFFLD(L001 *SRC)
     A            L195      R               REFFLD(L001 *SRC)
     A            L196      R               REFFLD(L001 *SRC)
     A            L197      R               REFFLD(L001 *SRC)
     A            L198      R               REFFLD(L001 *SRC)
     A            L199      R               REFFLD(L001 *SRC)
     A            L200      R               REFFLD(L001 *SRC)
     A            L201      R               REFFLD(L001 *SRC)
     A            L202      R               REFFLD(L001 *SRC)
     A            L203      R               REFFLD(L001 *SRC)
     A            L204      R               REFFLD(L001 *SRC)
     A            L205      R               REFFLD(L001 *SRC)
     A            L206      R               REFFLD(L001 *SRC)
     A            L207      R               REFFLD(L001 *SRC)
     A            L208      R               REFFLD(L001 *SRC)
     A            L209      R               REFFLD(L001 *SRC)
     A            L210      R               REFFLD(L001 *SRC)
     A            L211      R               REFFLD(L001 *SRC)
     A            L212      R               REFFLD(L001 *SRC)
     A            L213      R               REFFLD(L001 *SRC)
     A            L214      R               REFFLD(L001 *SRC)
     A            L215      R               REFFLD(L001 *SRC)
     A            L216      R               REFFLD(L001 *SRC)
     A            L217      R               REFFLD(L001 *SRC)
     A            L218      R               REFFLD(L001 *SRC)
     A            L219      R               REFFLD(L001 *SRC)
     A            L220      R               REFFLD(L001 *SRC)
     A            L221      R               REFFLD(L001 *SRC)
     A            L222      R               REFFLD(L001 *SRC)
     A            L223      R               REFFLD(L001 *SRC)
     A            L224      R               REFFLD(L001 *SRC)
     A            L225      R               REFFLD(L001 *SRC)
     A            L226      R               REFFLD(L001 *SRC)
     A            L227      R               REFFLD(L001 *SRC)
     A            L228      R               REFFLD(L001 *SRC)
     A            L229      R               REFFLD(L001 *SRC)
     A            L230      R               REFFLD(L001 *SRC)
     A            L231      R               REFFLD(L001 *SRC)
     A            L232      R               REFFLD(L001 *SRC)
     A            L233      R               REFFLD(L001 *SRC)
     A            L234      R               REFFLD(L001 *SRC)
     A            L235      R               REFFLD(L001 *SRC)
     A            L236      R               REFFLD(L001 *SRC)
     A            L237      R               REFFLD(L001 *SRC)
     A            L238      R               REFFLD(L001 *SRC)
     A            L239      R               REFFLD(L001 *SRC)
     A            L240      R               REFFLD(L001 *SRC)
     A            L241      R               REFFLD(L001 *SRC)
     A            L242      R               REFFLD(L001 *SRC)
     A            L243      R               REFFLD(L001 *SRC)
     A            L244      R               REFFLD(L001 *SRC)
     A            L245      R               REFFLD(L001 *SRC)
     A            L246      R               REFFLD(L001 *SRC)
     A            L247      R               REFFLD(L001 *SRC)
     A            L248      R               REFFLD(L001 *SRC)
     A            L249      R               REFFLD(L001 *SRC)
     A            L250      R               REFFLD(L001 *SRC)
     A            L251      R               REFFLD(L001 *SRC)
     A            L252      R               REFFLD(L001 *SRC)
     A            L253      R               REFFLD(L001 *SRC)
     A            L254      R               REFFLD(L001 *SRC)
     A            L255      R               REFFLD(L001 *SRC)
     A            L256      R               REFFLD(L001 *SRC)
     A          K FONTID

-- display file ----------

     A*%%TS  SD  20040331  170325  SLATERD     REL-V5R2M0  5722-WDS
     A*%%EC
     A                                      DSPSIZ(24 80 *DS3)
     A*****************************************************************
     A          R F01SFL                    SFL
     A            CF01      R        O  4  4REFFLD(C001 JUSTIFYPF)
     A            LF01      R        B  4  6REFFLD(L001 JUSTIFYPF)
     A                                      CHANGE(29)
     A*****************************************************************
     A          R F01CTL                    SFLCTL(F01SFL)
     A                                      CA03(03 'EXIT')
     A                                      CF05(05 'REFRESH')
     A                                      CF06(06 'Print')
     A                                      CF08(08 'UPDATE')
     A                                      CF10(10 'test')
     A                                      OVERLAY
     A  30                                  SFLDSP
     A N30                                  SFLCLR
     A                                      SFLDSPCTL
     A  30                                  SFLEND(*MORE)
     A                                      SFLSIZ(0127)
     A                                      SFLPAG(0126)
     A                                      SFLLIN(0003)
     A            RRN1           3S 0H      SFLRCDNBR
     A                                  2  2'Fontd Id'
     A            FONTID    R        B  2 11REFFLD(FONTID JUSTIFYPF)
     A                                      CHANGE(28)
     A*****************************************************************
     A                                  3  2'Chr   Len  Chr   Len  Chr   Len  C-
     A                                      hr   Len  Chr   Len  Chr   Len  Chr-
     A                                         Len'
     A                                      DSPATR(UL)
     A          R F01FTR
     A*%%TS  SD  20040331  170325  SLATERD     REL-V5R2M0  5722-WDS
     A                                 23  3'                                  -
     A                                                                         -
     A                                              '
     A                                      DSPATR(UL)
     A                                 24  3'F3=Exit   F5=Refresh   F6=Print   -
     A                                      F8=Update   F10=Justif test'

-------------- print file --------------------------
      **  COMPILE OPTIONS
      **  DEVTYPE(*AFPDS) UOM(*CM)
     A          R @@SKIP                    SKIPB(1)
     A                                     2SPACEA(1)  ' '
     A          R @@TEXT
     A            TXT1         132          POSITION(&ROW &COL)
     A                                      FONT(2305 (*POINTSIZE 10))
     A            ROW            5S 3P
     A            COL            5S 3P
     A          R @@BYTE
     A            BYTE           1          POSITION(&ROW &COL)
     A                                      FONT(2305 (*POINTSIZE 10))
     A            ROW            5S 3P
     A            COL            5S 3P


---- rpg program -----
     H  BNDDIR('EE')
     Fjustifypf Uf A E           k disk
     FjustifyPT O    E             PRINTER USROPN
     Fjustifyft cF   E             WORKSTN INFDS(INFODS)
     F                                     SFILE(F01SFL:RRN1)
      **------------------------------------------------------------------------
     dfnLoadFont       PR              N
     d FontId                        10    Const
      **------------------------------------------------------------------------
     dfnSetDefaults    PR              N
     d PageWidth                      5  2 Const Options(*omit)
     d NoJustifyPcnt                  5  2 Const Options(*omit)
     d SpacesOnly                      N   Const Options(*omit)
      **------------------------------------------------------------------------
     dfnJustifyText    PR              N
     d Text                         256    Const Options(*varSize)
      **------------------------------------------------------------------------
     dfnCharCol        PR             5  3
     d ChartoPrt                      1
     ‚********************************************************************
     D INFODS          DS
     D  @KEY                 369    369
     D  SFLPAG               378    379B 0
     ‚********************************************************************
     DCHARDS           DS
     DC001                                 OVERLAY(CHARDS:1)
     DC002                                 OVERLAY(CHARDS:*NEXT)
     DC003                                 OVERLAY(CHARDS:*NEXT)
     DC004                                 OVERLAY(CHARDS:*NEXT)
     DC005                                 OVERLAY(CHARDS:*NEXT)
     DC006                                 OVERLAY(CHARDS:*NEXT)
     DC007                                 OVERLAY(CHARDS:*NEXT)
     DC008                                 OVERLAY(CHARDS:*NEXT)
     DC009                                 OVERLAY(CHARDS:*NEXT)
     DC010                                 OVERLAY(CHARDS:*NEXT)
     DC011                                 OVERLAY(CHARDS:*NEXT)
     DC012                                 OVERLAY(CHARDS:*NEXT)
     DC013                                 OVERLAY(CHARDS:*NEXT)
     DC014                                 OVERLAY(CHARDS:*NEXT)
     DC015                                 OVERLAY(CHARDS:*NEXT)
     DC016                                 OVERLAY(CHARDS:*NEXT)
     DC017                                 OVERLAY(CHARDS:*NEXT)
     DC018                                 OVERLAY(CHARDS:*NEXT)
     DC019                                 OVERLAY(CHARDS:*NEXT)
     DC020                                 OVERLAY(CHARDS:*NEXT)
     DC021                                 OVERLAY(CHARDS:*NEXT)
     DC022                                 OVERLAY(CHARDS:*NEXT)
     DC023                                 OVERLAY(CHARDS:*NEXT)
     DC024                                 OVERLAY(CHARDS:*NEXT)
     DC025                                 OVERLAY(CHARDS:*NEXT)
     DC026                                 OVERLAY(CHARDS:*NEXT)
     DC027                                 OVERLAY(CHARDS:*NEXT)
     DC028                                 OVERLAY(CHARDS:*NEXT)
     DC029                                 OVERLAY(CHARDS:*NEXT)
     DC030                                 OVERLAY(CHARDS:*NEXT)
     DC031                                 OVERLAY(CHARDS:*NEXT)
     DC032                                 OVERLAY(CHARDS:*NEXT)
     DC033                                 OVERLAY(CHARDS:*NEXT)
     DC034                                 OVERLAY(CHARDS:*NEXT)
     DC035                                 OVERLAY(CHARDS:*NEXT)
     DC036                                 OVERLAY(CHARDS:*NEXT)
     DC037                                 OVERLAY(CHARDS:*NEXT)
     DC038                                 OVERLAY(CHARDS:*NEXT)
     DC039                                 OVERLAY(CHARDS:*NEXT)
     DC040                                 OVERLAY(CHARDS:*NEXT)
     DC041                                 OVERLAY(CHARDS:*NEXT)
     DC042                                 OVERLAY(CHARDS:*NEXT)
     DC043                                 OVERLAY(CHARDS:*NEXT)
     DC044                                 OVERLAY(CHARDS:*NEXT)
     DC045                                 OVERLAY(CHARDS:*NEXT)
     DC046                                 OVERLAY(CHARDS:*NEXT)
     DC047                                 OVERLAY(CHARDS:*NEXT)
     DC048                                 OVERLAY(CHARDS:*NEXT)
     DC049                                 OVERLAY(CHARDS:*NEXT)
     DC050                                 OVERLAY(CHARDS:*NEXT)
     DC051                                 OVERLAY(CHARDS:*NEXT)
     DC052                                 OVERLAY(CHARDS:*NEXT)
     DC053                                 OVERLAY(CHARDS:*NEXT)
     DC054                                 OVERLAY(CHARDS:*NEXT)
     DC055                                 OVERLAY(CHARDS:*NEXT)
     DC056                                 OVERLAY(CHARDS:*NEXT)
     DC057                                 OVERLAY(CHARDS:*NEXT)
     DC058                                 OVERLAY(CHARDS:*NEXT)
     DC059                                 OVERLAY(CHARDS:*NEXT)
     DC060                                 OVERLAY(CHARDS:*NEXT)
     DC061                                 OVERLAY(CHARDS:*NEXT)
     DC062                                 OVERLAY(CHARDS:*NEXT)
     DC063                                 OVERLAY(CHARDS:*NEXT)
     DC064                                 OVERLAY(CHARDS:*NEXT)
     DC065                                 OVERLAY(CHARDS:*NEXT)
     DC066                                 OVERLAY(CHARDS:*NEXT)
     DC067                                 OVERLAY(CHARDS:*NEXT)
     DC068                                 OVERLAY(CHARDS:*NEXT)
     DC069                                 OVERLAY(CHARDS:*NEXT)
     DC070                                 OVERLAY(CHARDS:*NEXT)
     DC071                                 OVERLAY(CHARDS:*NEXT)
     DC072                                 OVERLAY(CHARDS:*NEXT)
     DC073                                 OVERLAY(CHARDS:*NEXT)
     DC074                                 OVERLAY(CHARDS:*NEXT)
     DC075                                 OVERLAY(CHARDS:*NEXT)
     DC076                                 OVERLAY(CHARDS:*NEXT)
     DC077                                 OVERLAY(CHARDS:*NEXT)
     DC078                                 OVERLAY(CHARDS:*NEXT)
     DC079                                 OVERLAY(CHARDS:*NEXT)
     DC080                                 OVERLAY(CHARDS:*NEXT)
     DC081                                 OVERLAY(CHARDS:*NEXT)
     DC082                                 OVERLAY(CHARDS:*NEXT)
     DC083                                 OVERLAY(CHARDS:*NEXT)
     DC084                                 OVERLAY(CHARDS:*NEXT)
     DC085                                 OVERLAY(CHARDS:*NEXT)
     DC086                                 OVERLAY(CHARDS:*NEXT)
     DC087                                 OVERLAY(CHARDS:*NEXT)
     DC088                                 OVERLAY(CHARDS:*NEXT)
     DC089                                 OVERLAY(CHARDS:*NEXT)
     DC090                                 OVERLAY(CHARDS:*NEXT)
     DC091                                 OVERLAY(CHARDS:*NEXT)
     DC092                                 OVERLAY(CHARDS:*NEXT)
     DC093                                 OVERLAY(CHARDS:*NEXT)
     DC094                                 OVERLAY(CHARDS:*NEXT)
     DC095                                 OVERLAY(CHARDS:*NEXT)
     DC096                                 OVERLAY(CHARDS:*NEXT)
     DC097                                 OVERLAY(CHARDS:*NEXT)
     DC098                                 OVERLAY(CHARDS:*NEXT)
     DC099                                 OVERLAY(CHARDS:*NEXT)
     DC100                                 OVERLAY(CHARDS:*NEXT)
     DC101                                 OVERLAY(CHARDS:*NEXT)
     DC102                                 OVERLAY(CHARDS:*NEXT)
     DC103                                 OVERLAY(CHARDS:*NEXT)
     DC104                                 OVERLAY(CHARDS:*NEXT)
     DC105                                 OVERLAY(CHARDS:*NEXT)
     DC106                                 OVERLAY(CHARDS:*NEXT)
     DC107                                 OVERLAY(CHARDS:*NEXT)
     DC108                                 OVERLAY(CHARDS:*NEXT)
     DC109                                 OVERLAY(CHARDS:*NEXT)
     DC110                                 OVERLAY(CHARDS:*NEXT)
     DC111                                 OVERLAY(CHARDS:*NEXT)
     DC112                                 OVERLAY(CHARDS:*NEXT)
     DC113                                 OVERLAY(CHARDS:*NEXT)
     DC114                                 OVERLAY(CHARDS:*NEXT)
     DC115                                 OVERLAY(CHARDS:*NEXT)
     DC116                                 OVERLAY(CHARDS:*NEXT)
     DC117                                 OVERLAY(CHARDS:*NEXT)
     DC118                                 OVERLAY(CHARDS:*NEXT)
     DC119                                 OVERLAY(CHARDS:*NEXT)
     DC120                                 OVERLAY(CHARDS:*NEXT)
     DC121                                 OVERLAY(CHARDS:*NEXT)
     DC122                                 OVERLAY(CHARDS:*NEXT)
     DC123                                 OVERLAY(CHARDS:*NEXT)
     DC124                                 OVERLAY(CHARDS:*NEXT)
     DC125                                 OVERLAY(CHARDS:*NEXT)
     DC126                                 OVERLAY(CHARDS:*NEXT)
     DC127                                 OVERLAY(CHARDS:*NEXT)
     DC128                                 OVERLAY(CHARDS:*NEXT)
     DC129                                 OVERLAY(CHARDS:*NEXT)
     DC130                                 OVERLAY(CHARDS:*NEXT)
     DC131                                 OVERLAY(CHARDS:*NEXT)
     DC132                                 OVERLAY(CHARDS:*NEXT)
     DC133                                 OVERLAY(CHARDS:*NEXT)
     DC134                                 OVERLAY(CHARDS:*NEXT)
     DC135                                 OVERLAY(CHARDS:*NEXT)
     DC136                                 OVERLAY(CHARDS:*NEXT)
     DC137                                 OVERLAY(CHARDS:*NEXT)
     DC138                                 OVERLAY(CHARDS:*NEXT)
     DC139                                 OVERLAY(CHARDS:*NEXT)
     DC140                                 OVERLAY(CHARDS:*NEXT)
     DC141                                 OVERLAY(CHARDS:*NEXT)
     DC142                                 OVERLAY(CHARDS:*NEXT)
     DC143                                 OVERLAY(CHARDS:*NEXT)
     DC144                                 OVERLAY(CHARDS:*NEXT)
     DC145                                 OVERLAY(CHARDS:*NEXT)
     DC146                                 OVERLAY(CHARDS:*NEXT)
     DC147                                 OVERLAY(CHARDS:*NEXT)
     DC148                                 OVERLAY(CHARDS:*NEXT)
     DC149                                 OVERLAY(CHARDS:*NEXT)
     DC150                                 OVERLAY(CHARDS:*NEXT)
     DC151                                 OVERLAY(CHARDS:*NEXT)
     DC152                                 OVERLAY(CHARDS:*NEXT)
     DC153                                 OVERLAY(CHARDS:*NEXT)
     DC154                                 OVERLAY(CHARDS:*NEXT)
     DC155                                 OVERLAY(CHARDS:*NEXT)
     DC156                                 OVERLAY(CHARDS:*NEXT)
     DC157                                 OVERLAY(CHARDS:*NEXT)
     DC158                                 OVERLAY(CHARDS:*NEXT)
     DC159                                 OVERLAY(CHARDS:*NEXT)
     DC160                                 OVERLAY(CHARDS:*NEXT)
     DC161                                 OVERLAY(CHARDS:*NEXT)
     DC162                                 OVERLAY(CHARDS:*NEXT)
     DC163                                 OVERLAY(CHARDS:*NEXT)
     DC164                                 OVERLAY(CHARDS:*NEXT)
     DC165                                 OVERLAY(CHARDS:*NEXT)
     DC166                                 OVERLAY(CHARDS:*NEXT)
     DC167                                 OVERLAY(CHARDS:*NEXT)
     DC168                                 OVERLAY(CHARDS:*NEXT)
     DC169                                 OVERLAY(CHARDS:*NEXT)
     DC170                                 OVERLAY(CHARDS:*NEXT)
     DC171                                 OVERLAY(CHARDS:*NEXT)
     DC172                                 OVERLAY(CHARDS:*NEXT)
     DC173                                 OVERLAY(CHARDS:*NEXT)
     DC174                                 OVERLAY(CHARDS:*NEXT)
     DC175                                 OVERLAY(CHARDS:*NEXT)
     DC176                                 OVERLAY(CHARDS:*NEXT)
     DC177                                 OVERLAY(CHARDS:*NEXT)
     DC178                                 OVERLAY(CHARDS:*NEXT)
     DC179                                 OVERLAY(CHARDS:*NEXT)
     DC180                                 OVERLAY(CHARDS:*NEXT)
     DC181                                 OVERLAY(CHARDS:*NEXT)
     DC182                                 OVERLAY(CHARDS:*NEXT)
     DC183                                 OVERLAY(CHARDS:*NEXT)
     DC184                                 OVERLAY(CHARDS:*NEXT)
     DC185                                 OVERLAY(CHARDS:*NEXT)
     DC186                                 OVERLAY(CHARDS:*NEXT)
     DC187                                 OVERLAY(CHARDS:*NEXT)
     DC188                                 OVERLAY(CHARDS:*NEXT)
     DC189                                 OVERLAY(CHARDS:*NEXT)
     DC190                                 OVERLAY(CHARDS:*NEXT)
     DC191                                 OVERLAY(CHARDS:*NEXT)
     DC192                                 OVERLAY(CHARDS:*NEXT)
     DC193                                 OVERLAY(CHARDS:*NEXT)
     DC194                                 OVERLAY(CHARDS:*NEXT)
     DC195                                 OVERLAY(CHARDS:*NEXT)
     DC196                                 OVERLAY(CHARDS:*NEXT)
     DC197                                 OVERLAY(CHARDS:*NEXT)
     DC198                                 OVERLAY(CHARDS:*NEXT)
     DC199                                 OVERLAY(CHARDS:*NEXT)
     DC200                                 OVERLAY(CHARDS:*NEXT)
     DC201                                 OVERLAY(CHARDS:*NEXT)
     DC202                                 OVERLAY(CHARDS:*NEXT)
     DC203                                 OVERLAY(CHARDS:*NEXT)
     DC204                                 OVERLAY(CHARDS:*NEXT)
     DC205                                 OVERLAY(CHARDS:*NEXT)
     DC206                                 OVERLAY(CHARDS:*NEXT)
     DC207                                 OVERLAY(CHARDS:*NEXT)
     DC208                                 OVERLAY(CHARDS:*NEXT)
     DC209                                 OVERLAY(CHARDS:*NEXT)
     DC210                                 OVERLAY(CHARDS:*NEXT)
     DC211                                 OVERLAY(CHARDS:*NEXT)
     DC212                                 OVERLAY(CHARDS:*NEXT)
     DC213                                 OVERLAY(CHARDS:*NEXT)
     DC214                                 OVERLAY(CHARDS:*NEXT)
     DC215                                 OVERLAY(CHARDS:*NEXT)
     DC216                                 OVERLAY(CHARDS:*NEXT)
     DC217                                 OVERLAY(CHARDS:*NEXT)
     DC218                                 OVERLAY(CHARDS:*NEXT)
     DC219                                 OVERLAY(CHARDS:*NEXT)
     DC220                                 OVERLAY(CHARDS:*NEXT)
     DC221                                 OVERLAY(CHARDS:*NEXT)
     DC222                                 OVERLAY(CHARDS:*NEXT)
     DC223                                 OVERLAY(CHARDS:*NEXT)
     DC224                                 OVERLAY(CHARDS:*NEXT)
     DC225                                 OVERLAY(CHARDS:*NEXT)
     DC226                                 OVERLAY(CHARDS:*NEXT)
     DC227                                 OVERLAY(CHARDS:*NEXT)
     DC228                                 OVERLAY(CHARDS:*NEXT)
     DC229                                 OVERLAY(CHARDS:*NEXT)
     DC230                                 OVERLAY(CHARDS:*NEXT)
     DC231                                 OVERLAY(CHARDS:*NEXT)
     DC232                                 OVERLAY(CHARDS:*NEXT)
     DC233                                 OVERLAY(CHARDS:*NEXT)
     DC234                                 OVERLAY(CHARDS:*NEXT)
     DC235                                 OVERLAY(CHARDS:*NEXT)
     DC236                                 OVERLAY(CHARDS:*NEXT)
     DC237                                 OVERLAY(CHARDS:*NEXT)
     DC238                                 OVERLAY(CHARDS:*NEXT)
     DC239                                 OVERLAY(CHARDS:*NEXT)
     DC240                                 OVERLAY(CHARDS:*NEXT)
     DC241                                 OVERLAY(CHARDS:*NEXT)
     DC242                                 OVERLAY(CHARDS:*NEXT)
     DC243                                 OVERLAY(CHARDS:*NEXT)
     DC244                                 OVERLAY(CHARDS:*NEXT)
     DC245                                 OVERLAY(CHARDS:*NEXT)
     DC246                                 OVERLAY(CHARDS:*NEXT)
     DC247                                 OVERLAY(CHARDS:*NEXT)
     DC248                                 OVERLAY(CHARDS:*NEXT)
     DC249                                 OVERLAY(CHARDS:*NEXT)
     DC250                                 OVERLAY(CHARDS:*NEXT)
     DC251                                 OVERLAY(CHARDS:*NEXT)
     DC252                                 OVERLAY(CHARDS:*NEXT)
     DC253                                 OVERLAY(CHARDS:*NEXT)
     DC254                                 OVERLAY(CHARDS:*NEXT)
     DC255                                 OVERLAY(CHARDS:*NEXT)
     DC256                                 OVERLAY(CHARDS:*NEXT)
     DCHAR                                 DIM(256) LIKE(C001)
     D                                     OVERLAY(CHARDS:1)
     ‚**
     DLENDS            DS
     DL001                                 OVERLAY(LENDS :1)
     DL002                                 OVERLAY(LENDS :*NEXT)
     DL003                                 OVERLAY(LENDS :*NEXT)
     DL004                                 OVERLAY(LENDS :*NEXT)
     DL005                                 OVERLAY(LENDS :*NEXT)
     DL006                                 OVERLAY(LENDS :*NEXT)
     DL007                                 OVERLAY(LENDS :*NEXT)
     DL008                                 OVERLAY(LENDS :*NEXT)
     DL009                                 OVERLAY(LENDS :*NEXT)
     DL010                                 OVERLAY(LENDS :*NEXT)
     DL011                                 OVERLAY(LENDS :*NEXT)
     DL012                                 OVERLAY(LENDS :*NEXT)
     DL013                                 OVERLAY(LENDS :*NEXT)
     DL014                                 OVERLAY(LENDS :*NEXT)
     DL015                                 OVERLAY(LENDS :*NEXT)
     DL016                                 OVERLAY(LENDS :*NEXT)
     DL017                                 OVERLAY(LENDS :*NEXT)
     DL018                                 OVERLAY(LENDS :*NEXT)
     DL019                                 OVERLAY(LENDS :*NEXT)
     DL020                                 OVERLAY(LENDS :*NEXT)
     DL021                                 OVERLAY(LENDS :*NEXT)
     DL022                                 OVERLAY(LENDS :*NEXT)
     DL023                                 OVERLAY(LENDS :*NEXT)
     DL024                                 OVERLAY(LENDS :*NEXT)
     DL025                                 OVERLAY(LENDS :*NEXT)
     DL026                                 OVERLAY(LENDS :*NEXT)
     DL027                                 OVERLAY(LENDS :*NEXT)
     DL028                                 OVERLAY(LENDS :*NEXT)
     DL029                                 OVERLAY(LENDS :*NEXT)
     DL030                                 OVERLAY(LENDS :*NEXT)
     DL031                                 OVERLAY(LENDS :*NEXT)
     DL032                                 OVERLAY(LENDS :*NEXT)
     DL033                                 OVERLAY(LENDS :*NEXT)
     DL034                                 OVERLAY(LENDS :*NEXT)
     DL035                                 OVERLAY(LENDS :*NEXT)
     DL036                                 OVERLAY(LENDS :*NEXT)
     DL037                                 OVERLAY(LENDS :*NEXT)
     DL038                                 OVERLAY(LENDS :*NEXT)
     DL039                                 OVERLAY(LENDS :*NEXT)
     DL040                                 OVERLAY(LENDS :*NEXT)
     DL041                                 OVERLAY(LENDS :*NEXT)
     DL042                                 OVERLAY(LENDS :*NEXT)
     DL043                                 OVERLAY(LENDS :*NEXT)
     DL044                                 OVERLAY(LENDS :*NEXT)
     DL045                                 OVERLAY(LENDS :*NEXT)
     DL046                                 OVERLAY(LENDS :*NEXT)
     DL047                                 OVERLAY(LENDS :*NEXT)
     DL048                                 OVERLAY(LENDS :*NEXT)
     DL049                                 OVERLAY(LENDS :*NEXT)
     DL050                                 OVERLAY(LENDS :*NEXT)
     DL051                                 OVERLAY(LENDS :*NEXT)
     DL052                                 OVERLAY(LENDS :*NEXT)
     DL053                                 OVERLAY(LENDS :*NEXT)
     DL054                                 OVERLAY(LENDS :*NEXT)
     DL055                                 OVERLAY(LENDS :*NEXT)
     DL056                                 OVERLAY(LENDS :*NEXT)
     DL057                                 OVERLAY(LENDS :*NEXT)
     DL058                                 OVERLAY(LENDS :*NEXT)
     DL059                                 OVERLAY(LENDS :*NEXT)
     DL060                                 OVERLAY(LENDS :*NEXT)
     DL061                                 OVERLAY(LENDS :*NEXT)
     DL062                                 OVERLAY(LENDS :*NEXT)
     DL063                                 OVERLAY(LENDS :*NEXT)
     DL064                                 OVERLAY(LENDS :*NEXT)
     DL065                                 OVERLAY(LENDS :*NEXT)
     DL066                                 OVERLAY(LENDS :*NEXT)
     DL067                                 OVERLAY(LENDS :*NEXT)
     DL068                                 OVERLAY(LENDS :*NEXT)
     DL069                                 OVERLAY(LENDS :*NEXT)
     DL070                                 OVERLAY(LENDS :*NEXT)
     DL071                                 OVERLAY(LENDS :*NEXT)
     DL072                                 OVERLAY(LENDS :*NEXT)
     DL073                                 OVERLAY(LENDS :*NEXT)
     DL074                                 OVERLAY(LENDS :*NEXT)
     DL075                                 OVERLAY(LENDS :*NEXT)
     DL076                                 OVERLAY(LENDS :*NEXT)
     DL077                                 OVERLAY(LENDS :*NEXT)
     DL078                                 OVERLAY(LENDS :*NEXT)
     DL079                                 OVERLAY(LENDS :*NEXT)
     DL080                                 OVERLAY(LENDS :*NEXT)
     DL081                                 OVERLAY(LENDS :*NEXT)
     DL082                                 OVERLAY(LENDS :*NEXT)
     DL083                                 OVERLAY(LENDS :*NEXT)
     DL084                                 OVERLAY(LENDS :*NEXT)
     DL085                                 OVERLAY(LENDS :*NEXT)
     DL086                                 OVERLAY(LENDS :*NEXT)
     DL087                                 OVERLAY(LENDS :*NEXT)
     DL088                                 OVERLAY(LENDS :*NEXT)
     DL089                                 OVERLAY(LENDS :*NEXT)
     DL090                                 OVERLAY(LENDS :*NEXT)
     DL091                                 OVERLAY(LENDS :*NEXT)
     DL092                                 OVERLAY(LENDS :*NEXT)
     DL093                                 OVERLAY(LENDS :*NEXT)
     DL094                                 OVERLAY(LENDS :*NEXT)
     DL095                                 OVERLAY(LENDS :*NEXT)
     DL096                                 OVERLAY(LENDS :*NEXT)
     DL097                                 OVERLAY(LENDS :*NEXT)
     DL098                                 OVERLAY(LENDS :*NEXT)
     DL099                                 OVERLAY(LENDS :*NEXT)
     DL100                                 OVERLAY(LENDS :*NEXT)
     DL101                                 OVERLAY(LENDS :*NEXT)
     DL102                                 OVERLAY(LENDS :*NEXT)
     DL103                                 OVERLAY(LENDS :*NEXT)
     DL104                                 OVERLAY(LENDS :*NEXT)
     DL105                                 OVERLAY(LENDS :*NEXT)
     DL106                                 OVERLAY(LENDS :*NEXT)
     DL107                                 OVERLAY(LENDS :*NEXT)
     DL108                                 OVERLAY(LENDS :*NEXT)
     DL109                                 OVERLAY(LENDS :*NEXT)
     DL110                                 OVERLAY(LENDS :*NEXT)
     DL111                                 OVERLAY(LENDS :*NEXT)
     DL112                                 OVERLAY(LENDS :*NEXT)
     DL113                                 OVERLAY(LENDS :*NEXT)
     DL114                                 OVERLAY(LENDS :*NEXT)
     DL115                                 OVERLAY(LENDS :*NEXT)
     DL116                                 OVERLAY(LENDS :*NEXT)
     DL117                                 OVERLAY(LENDS :*NEXT)
     DL118                                 OVERLAY(LENDS :*NEXT)
     DL119                                 OVERLAY(LENDS :*NEXT)
     DL120                                 OVERLAY(LENDS :*NEXT)
     DL121                                 OVERLAY(LENDS :*NEXT)
     DL122                                 OVERLAY(LENDS :*NEXT)
     DL123                                 OVERLAY(LENDS :*NEXT)
     DL124                                 OVERLAY(LENDS :*NEXT)
     DL125                                 OVERLAY(LENDS :*NEXT)
     DL126                                 OVERLAY(LENDS :*NEXT)
     DL127                                 OVERLAY(LENDS :*NEXT)
     DL128                                 OVERLAY(LENDS :*NEXT)
     DL129                                 OVERLAY(LENDS :*NEXT)
     DL130                                 OVERLAY(LENDS :*NEXT)
     DL131                                 OVERLAY(LENDS :*NEXT)
     DL132                                 OVERLAY(LENDS :*NEXT)
     DL133                                 OVERLAY(LENDS :*NEXT)
     DL134                                 OVERLAY(LENDS :*NEXT)
     DL135                                 OVERLAY(LENDS :*NEXT)
     DL136                                 OVERLAY(LENDS :*NEXT)
     DL137                                 OVERLAY(LENDS :*NEXT)
     DL138                                 OVERLAY(LENDS :*NEXT)
     DL139                                 OVERLAY(LENDS :*NEXT)
     DL140                                 OVERLAY(LENDS :*NEXT)
     DL141                                 OVERLAY(LENDS :*NEXT)
     DL142                                 OVERLAY(LENDS :*NEXT)
     DL143                                 OVERLAY(LENDS :*NEXT)
     DL144                                 OVERLAY(LENDS :*NEXT)
     DL145                                 OVERLAY(LENDS :*NEXT)
     DL146                                 OVERLAY(LENDS :*NEXT)
     DL147                                 OVERLAY(LENDS :*NEXT)
     DL148                                 OVERLAY(LENDS :*NEXT)
     DL149                                 OVERLAY(LENDS :*NEXT)
     DL150                                 OVERLAY(LENDS :*NEXT)
     DL151                                 OVERLAY(LENDS :*NEXT)
     DL152                                 OVERLAY(LENDS :*NEXT)
     DL153                                 OVERLAY(LENDS :*NEXT)
     DL154                                 OVERLAY(LENDS :*NEXT)
     DL155                                 OVERLAY(LENDS :*NEXT)
     DL156                                 OVERLAY(LENDS :*NEXT)
     DL157                                 OVERLAY(LENDS :*NEXT)
     DL158                                 OVERLAY(LENDS :*NEXT)
     DL159                                 OVERLAY(LENDS :*NEXT)
     DL160                                 OVERLAY(LENDS :*NEXT)
     DL161                                 OVERLAY(LENDS :*NEXT)
     DL162                                 OVERLAY(LENDS :*NEXT)
     DL163                                 OVERLAY(LENDS :*NEXT)
     DL164                                 OVERLAY(LENDS :*NEXT)
     DL165                                 OVERLAY(LENDS :*NEXT)
     DL166                                 OVERLAY(LENDS :*NEXT)
     DL167                                 OVERLAY(LENDS :*NEXT)
     DL168                                 OVERLAY(LENDS :*NEXT)
     DL169                                 OVERLAY(LENDS :*NEXT)
     DL170                                 OVERLAY(LENDS :*NEXT)
     DL171                                 OVERLAY(LENDS :*NEXT)
     DL172                                 OVERLAY(LENDS :*NEXT)
     DL173                                 OVERLAY(LENDS :*NEXT)
     DL174                                 OVERLAY(LENDS :*NEXT)
     DL175                                 OVERLAY(LENDS :*NEXT)
     DL176                                 OVERLAY(LENDS :*NEXT)
     DL177                                 OVERLAY(LENDS :*NEXT)
     DL178                                 OVERLAY(LENDS :*NEXT)
     DL179                                 OVERLAY(LENDS :*NEXT)
     DL180                                 OVERLAY(LENDS :*NEXT)
     DL181                                 OVERLAY(LENDS :*NEXT)
     DL182                                 OVERLAY(LENDS :*NEXT)
     DL183                                 OVERLAY(LENDS :*NEXT)
     DL184                                 OVERLAY(LENDS :*NEXT)
     DL185                                 OVERLAY(LENDS :*NEXT)
     DL186                                 OVERLAY(LENDS :*NEXT)
     DL187                                 OVERLAY(LENDS :*NEXT)
     DL188                                 OVERLAY(LENDS :*NEXT)
     DL189                                 OVERLAY(LENDS :*NEXT)
     DL190                                 OVERLAY(LENDS :*NEXT)
     DL191                                 OVERLAY(LENDS :*NEXT)
     DL192                                 OVERLAY(LENDS :*NEXT)
     DL193                                 OVERLAY(LENDS :*NEXT)
     DL194                                 OVERLAY(LENDS :*NEXT)
     DL195                                 OVERLAY(LENDS :*NEXT)
     DL196                                 OVERLAY(LENDS :*NEXT)
     DL197                                 OVERLAY(LENDS :*NEXT)
     DL198                                 OVERLAY(LENDS :*NEXT)
     DL199                                 OVERLAY(LENDS :*NEXT)
     DL200                                 OVERLAY(LENDS :*NEXT)
     DL201                                 OVERLAY(LENDS :*NEXT)
     DL202                                 OVERLAY(LENDS :*NEXT)
     DL203                                 OVERLAY(LENDS :*NEXT)
     DL204                                 OVERLAY(LENDS :*NEXT)
     DL205                                 OVERLAY(LENDS :*NEXT)
     DL206                                 OVERLAY(LENDS :*NEXT)
     DL207                                 OVERLAY(LENDS :*NEXT)
     DL208                                 OVERLAY(LENDS :*NEXT)
     DL209                                 OVERLAY(LENDS :*NEXT)
     DL210                                 OVERLAY(LENDS :*NEXT)
     DL211                                 OVERLAY(LENDS :*NEXT)
     DL212                                 OVERLAY(LENDS :*NEXT)
     DL213                                 OVERLAY(LENDS :*NEXT)
     DL214                                 OVERLAY(LENDS :*NEXT)
     DL215                                 OVERLAY(LENDS :*NEXT)
     DL216                                 OVERLAY(LENDS :*NEXT)
     DL217                                 OVERLAY(LENDS :*NEXT)
     DL218                                 OVERLAY(LENDS :*NEXT)
     DL219                                 OVERLAY(LENDS :*NEXT)
     DL220                                 OVERLAY(LENDS :*NEXT)
     DL221                                 OVERLAY(LENDS :*NEXT)
     DL222                                 OVERLAY(LENDS :*NEXT)
     DL223                                 OVERLAY(LENDS :*NEXT)
     DL224                                 OVERLAY(LENDS :*NEXT)
     DL225                                 OVERLAY(LENDS :*NEXT)
     DL226                                 OVERLAY(LENDS :*NEXT)
     DL227                                 OVERLAY(LENDS :*NEXT)
     DL228                                 OVERLAY(LENDS :*NEXT)
     DL229                                 OVERLAY(LENDS :*NEXT)
     DL230                                 OVERLAY(LENDS :*NEXT)
     DL231                                 OVERLAY(LENDS :*NEXT)
     DL232                                 OVERLAY(LENDS :*NEXT)
     DL233                                 OVERLAY(LENDS :*NEXT)
     DL234                                 OVERLAY(LENDS :*NEXT)
     DL235                                 OVERLAY(LENDS :*NEXT)
     DL236                                 OVERLAY(LENDS :*NEXT)
     DL237                                 OVERLAY(LENDS :*NEXT)
     DL238                                 OVERLAY(LENDS :*NEXT)
     DL239                                 OVERLAY(LENDS :*NEXT)
     DL240                                 OVERLAY(LENDS :*NEXT)
     DL241                                 OVERLAY(LENDS :*NEXT)
     DL242                                 OVERLAY(LENDS :*NEXT)
     DL243                                 OVERLAY(LENDS :*NEXT)
     DL244                                 OVERLAY(LENDS :*NEXT)
     DL245                                 OVERLAY(LENDS :*NEXT)
     DL246                                 OVERLAY(LENDS :*NEXT)
     DL247                                 OVERLAY(LENDS :*NEXT)
     DL248                                 OVERLAY(LENDS :*NEXT)
     DL249                                 OVERLAY(LENDS :*NEXT)
     DL250                                 OVERLAY(LENDS :*NEXT)
     DL251                                 OVERLAY(LENDS :*NEXT)
     DL252                                 OVERLAY(LENDS :*NEXT)
     DL253                                 OVERLAY(LENDS :*NEXT)
     DL254                                 OVERLAY(LENDS :*NEXT)
     DL255                                 OVERLAY(LENDS :*NEXT)
     DL256                                 OVERLAY(LENDS :*NEXT)
     DLEN                                  DIM(256) LIKE(L001) OVERLAY(LENDS :1)
     ‚**
     DT50              DS
     DT50A                            1    DIM(50)
     DFONTSV           S                   LIKE(FONTID)
     DRRN1F            S                   LIKE(RRN1)
     Di                S                   LIKE(RRN1)
     DCHARDS1          S                   LIKE(CHARDS)
     DLENDS1           S                   LIKE(LENDS)
     DVarText          S            256    Varying
     C                   eval      fontid='DEFAULT'
     C                   EXSR      SRLOAD
     ‚**
B01  C                   DO        *HIVAL
     C                   EVAL      RRN1=RRN1F
     C                   WRITE     F01FTR
     C                   EXFMT     F01CTL
     C                   EVAL      RRN1=SFLPAG
     ‚** F3=EXIT
B02  C                   IF        *IN03
     C                   EVAL      *INLR=*ON
     C                   RETURN
     ‚** F5=RELOAD
X02  C                   ELSEIF    *IN05
     C     FONTID        CASNE     *BLANKS       SRLOAD
     C                   ENDCS
     ‚** F6=PRINT
X02  C                   ELSEIF    *IN06
     C                   EXSR      SRPRINT
     ‚** F8=UPDATE
X02  C                   ELSEIF    *IN08
     C     FONTID        CASNE     *BLANKS       SRUPDATE
     C                   ENDCS
     ‚** F10=test
X02  C                   ELSEIF    *IN10
     C                   EXSR      SRtest
E02  C                   ENDIF
E01  C                   ENDDO
     C                   eval      *inlr=*on
     ‚******************************************************************************************
     ‚** UPDATE - UPDATE THE FILE
     ‚******************************************************************************************
     C     srUPDATE      BEGSR
     C
B01  C                   FOR       rrn1 = 1 TO %ELEM(CHAR)
B02  C     RRN1          CHAIN     F01SFL
     C                   IF        NOT %FOUND
     C                   LEAVE
E02  c                   endif
     c                   move      CF01          CHAR(RRN1)
     c                   Z-ADD     LF01          LEN(RRN1)
E01  C                   endFOR
     C
     C                   EVAL      CHARDS1 = CHARDS
     C                   EVAL      LENDS1  = LENDS
     C     FONTID        CHAIN     RJUSTIFY
     C                   EVAL      CHARDS = CHARDS1
     C                   EVAL      LENDS  = LENDS1
     C                   IF        %FOUND
     C                   UPDATE    RJUSTIFY
     C                   ELSE
     C                   WRITE     RJUSTIFY
     C                   ENDIF
     C
     C                   ENDSR
     ‚******************************************************************************************
     ‚** Load  - load the subfile
     ‚******************************************************************************************
     C     srLoad        BEGSR
     C                   EVAL      FONTSV=FONTID
     C                   CLEAR                   F01SFL
     C                   CLEAR                   F01CTL
     C                   WRITE     F01CTL
     C                   EVAL      FONTID=FONTSV
     C                   CLEAR                   CHARDS
     C                   CLEAR                   LENDS
     c     Fontid        chain     justifypf
     ‚**
B01  C                   FOR       rrn1 = 1 TO %ELEM(CHAR)
B02  C                   if        char(RRN1) = *blanks and RRN1 > 1
     C                   leave
E02  c                   endif
     c                   move      CHAR(RRN1)    CF01
     c                   Z-ADD     LEN(RRN1)     LF01
     C                   WRITE     F01SFL
E01  C                   endFOR
     ‚**
     C                   EVAL      *IN30=*ON
     C                   EVAL      RRN1F=1
     C                   ENDSR
     ‚******************************************************************************************
     ‚** Print - print a test document
     ‚******************************************************************************************
     C     srPrint       BEGSR
     C                   OPEN      JUSTIFYPT
     C
     C                   eval      row=.5
     C                   eval      col=1
     C                   write     @@skip
B01  C                   FOR       i    = 1 TO %ELEM(CHAR)
B02  C                   if        char(i) = *blanks and I > 1
     C                   leave
E02  c                   endif
     C
     C                   eval      row +=.5
B02  C                   if        row>27
     C                   eval      row=1
     C                   write     @@skip
E02  C                   endif
     C                   MOVE      CHAR(I)       T50A
     C                   EVAL      TXT1='H' + T50 + 'H'
     C                   write     @@text
     c                   move      CHAR(I)       CF01
E01  C                   endfor
     C
     C                   CLOSE     JUSTIFYPT
     C                   ENDSR
     ‚******************************************************************************************
     ‚** srTest - test print
     ‚******************************************************************************************
     C     srTest        BEGSR
     C
     C                   If        not fnloadFont(Fontid)
     C                   Leavesr
     C                   endif
     C                   eval      *in01=fnsetDefaults(*omit:*omit:*On)
     C                   eval      varText='This is to justify some -
     C                             text for an afpds printer file -
     C                             will it work '
     C                   If        not  fnJustifyText(VarText)
     C                   Leavesr
     C                   endif
     c
     C                   OPEN      JUSTIFYPT
     c                   eval      row=1
     C                   write     @@skip
     c                   do        *hival
     c                   EVAL      COL=  FnCharCol(Byte)
     C                   IF        COL=-1
     C                   LEAVE
     C                   ENDIF
     C                   eval      col +=1
     c                   write     @@byte
     c                   enddo
      **
     c                   eval      row=2
      **
     C                   eval      varText='This is to justify some -
     C                             text for an afpds printer file'
     C                   If        not  fnJustifyText(VarText)
     C                   Leavesr
     C                   endif

     c                   do        *hival
     c                   EVAL      COL=  FnCharCol(Byte)
     C                   IF        COL=-1
     C                   LEAVE
     C                   ENDIF
     C                   eval      col +=1
     c                   write     @@byte
     c                   enddo
     C                   CLOSE     JUSTIFYPT
     C                   ENDSR


----- rpg service program ---------


     H NOMAIN
      **************************************************************************
      ** Author - Dave Slater
      ** Licence - CopyLeft
      ** any person is allowed to use this code or any part of this code
      ** it can be used to base new programs on etc...
      ** The only thing I ask if for you to mention me as the original author
      **************************************************************************
      ** Designed to compile on V5.2
      ** Calculations are based on Unit of measure CM
      **************************************************************************
     FJUSTIFYPF IF   E           K DISK    usropn
      **************************************************************************
      ** Procedure interfaces - Best to make these in to a /Copy member
      **------------------------------------------------------------------------
      ** Return *on if font loaded, *off if fon not loaded.
      ** Fontid is the font to load
     dfnLoadFont       PR              N
     d FontId                        10    Const
      **------------------------------------------------------------------------
      ** Always return on
      ** PageWidth - the printable area on the page
      ** NoJustifyPcnt - the %age at which justification will not take place
      ** SpacesOnly - Only justify spaces *off = justfiy all text
     DfnSetDefaults    PR              N
     D PageWidth                      5  2 Const Options(*omit)
     D NoJustifyPcnt                  5  2 Const Options(*omit)
     D SpacesOnly                      N   Const Options(*omit)
      **------------------------------------------------------------------------
      ** Returns *on if justification can take place
      ** Returns *off if justification can not take place
      ** Text - the text to be justified
     dfnJustifyText    PR              N
     d Text                         256    Const Options(*varSize)
      **------------------------------------------------------------------------
      ** Returns -1 when all the text has been processed
      ** Returns column offset - you will have to add the margin
      ** Char - The character to prirnt
     dfnCharCol        PR             5  3
     d char                           1
      **************************************************************************
      ** Map database fields to array
     DCHARDS           DS
     DC001                                 OVERLAY(CHARDS:1)
     DC002                                 OVERLAY(CHARDS:*NEXT)
     DC003                                 OVERLAY(CHARDS:*NEXT)
     DC004                                 OVERLAY(CHARDS:*NEXT)
     DC005                                 OVERLAY(CHARDS:*NEXT)
     DC006                                 OVERLAY(CHARDS:*NEXT)
     DC007                                 OVERLAY(CHARDS:*NEXT)
     DC008                                 OVERLAY(CHARDS:*NEXT)
     DC009                                 OVERLAY(CHARDS:*NEXT)
     DC010                                 OVERLAY(CHARDS:*NEXT)
     DC011                                 OVERLAY(CHARDS:*NEXT)
     DC012                                 OVERLAY(CHARDS:*NEXT)
     DC013                                 OVERLAY(CHARDS:*NEXT)
     DC014                                 OVERLAY(CHARDS:*NEXT)
     DC015                                 OVERLAY(CHARDS:*NEXT)
     DC016                                 OVERLAY(CHARDS:*NEXT)
     DC017                                 OVERLAY(CHARDS:*NEXT)
     DC018                                 OVERLAY(CHARDS:*NEXT)
     DC019                                 OVERLAY(CHARDS:*NEXT)
     DC020                                 OVERLAY(CHARDS:*NEXT)
     DC021                                 OVERLAY(CHARDS:*NEXT)
     DC022                                 OVERLAY(CHARDS:*NEXT)
     DC023                                 OVERLAY(CHARDS:*NEXT)
     DC024                                 OVERLAY(CHARDS:*NEXT)
     DC025                                 OVERLAY(CHARDS:*NEXT)
     DC026                                 OVERLAY(CHARDS:*NEXT)
     DC027                                 OVERLAY(CHARDS:*NEXT)
     DC028                                 OVERLAY(CHARDS:*NEXT)
     DC029                                 OVERLAY(CHARDS:*NEXT)
     DC030                                 OVERLAY(CHARDS:*NEXT)
     DC031                                 OVERLAY(CHARDS:*NEXT)
     DC032                                 OVERLAY(CHARDS:*NEXT)
     DC033                                 OVERLAY(CHARDS:*NEXT)
     DC034                                 OVERLAY(CHARDS:*NEXT)
     DC035                                 OVERLAY(CHARDS:*NEXT)
     DC036                                 OVERLAY(CHARDS:*NEXT)
     DC037                                 OVERLAY(CHARDS:*NEXT)
     DC038                                 OVERLAY(CHARDS:*NEXT)
     DC039                                 OVERLAY(CHARDS:*NEXT)
     DC040                                 OVERLAY(CHARDS:*NEXT)
     DC041                                 OVERLAY(CHARDS:*NEXT)
     DC042                                 OVERLAY(CHARDS:*NEXT)
     DC043                                 OVERLAY(CHARDS:*NEXT)
     DC044                                 OVERLAY(CHARDS:*NEXT)
     DC045                                 OVERLAY(CHARDS:*NEXT)
     DC046                                 OVERLAY(CHARDS:*NEXT)
     DC047                                 OVERLAY(CHARDS:*NEXT)
     DC048                                 OVERLAY(CHARDS:*NEXT)
     DC049                                 OVERLAY(CHARDS:*NEXT)
     DC050                                 OVERLAY(CHARDS:*NEXT)
     DC051                                 OVERLAY(CHARDS:*NEXT)
     DC052                                 OVERLAY(CHARDS:*NEXT)
     DC053                                 OVERLAY(CHARDS:*NEXT)
     DC054                                 OVERLAY(CHARDS:*NEXT)
     DC055                                 OVERLAY(CHARDS:*NEXT)
     DC056                                 OVERLAY(CHARDS:*NEXT)
     DC057                                 OVERLAY(CHARDS:*NEXT)
     DC058                                 OVERLAY(CHARDS:*NEXT)
     DC059                                 OVERLAY(CHARDS:*NEXT)
     DC060                                 OVERLAY(CHARDS:*NEXT)
     DC061                                 OVERLAY(CHARDS:*NEXT)
     DC062                                 OVERLAY(CHARDS:*NEXT)
     DC063                                 OVERLAY(CHARDS:*NEXT)
     DC064                                 OVERLAY(CHARDS:*NEXT)
     DC065                                 OVERLAY(CHARDS:*NEXT)
     DC066                                 OVERLAY(CHARDS:*NEXT)
     DC067                                 OVERLAY(CHARDS:*NEXT)
     DC068                                 OVERLAY(CHARDS:*NEXT)
     DC069                                 OVERLAY(CHARDS:*NEXT)
     DC070                                 OVERLAY(CHARDS:*NEXT)
     DC071                                 OVERLAY(CHARDS:*NEXT)
     DC072                                 OVERLAY(CHARDS:*NEXT)
     DC073                                 OVERLAY(CHARDS:*NEXT)
     DC074                                 OVERLAY(CHARDS:*NEXT)
     DC075                                 OVERLAY(CHARDS:*NEXT)
     DC076                                 OVERLAY(CHARDS:*NEXT)
     DC077                                 OVERLAY(CHARDS:*NEXT)
     DC078                                 OVERLAY(CHARDS:*NEXT)
     DC079                                 OVERLAY(CHARDS:*NEXT)
     DC080                                 OVERLAY(CHARDS:*NEXT)
     DC081                                 OVERLAY(CHARDS:*NEXT)
     DC082                                 OVERLAY(CHARDS:*NEXT)
     DC083                                 OVERLAY(CHARDS:*NEXT)
     DC084                                 OVERLAY(CHARDS:*NEXT)
     DC085                                 OVERLAY(CHARDS:*NEXT)
     DC086                                 OVERLAY(CHARDS:*NEXT)
     DC087                                 OVERLAY(CHARDS:*NEXT)
     DC088                                 OVERLAY(CHARDS:*NEXT)
     DC089                                 OVERLAY(CHARDS:*NEXT)
     DC090                                 OVERLAY(CHARDS:*NEXT)
     DC091                                 OVERLAY(CHARDS:*NEXT)
     DC092                                 OVERLAY(CHARDS:*NEXT)
     DC093                                 OVERLAY(CHARDS:*NEXT)
     DC094                                 OVERLAY(CHARDS:*NEXT)
     DC095                                 OVERLAY(CHARDS:*NEXT)
     DC096                                 OVERLAY(CHARDS:*NEXT)
     DC097                                 OVERLAY(CHARDS:*NEXT)
     DC098                                 OVERLAY(CHARDS:*NEXT)
     DC099                                 OVERLAY(CHARDS:*NEXT)
     DC100                                 OVERLAY(CHARDS:*NEXT)
     DC101                                 OVERLAY(CHARDS:*NEXT)
     DC102                                 OVERLAY(CHARDS:*NEXT)
     DC103                                 OVERLAY(CHARDS:*NEXT)
     DC104                                 OVERLAY(CHARDS:*NEXT)
     DC105                                 OVERLAY(CHARDS:*NEXT)
     DC106                                 OVERLAY(CHARDS:*NEXT)
     DC107                                 OVERLAY(CHARDS:*NEXT)
     DC108                                 OVERLAY(CHARDS:*NEXT)
     DC109                                 OVERLAY(CHARDS:*NEXT)
     DC110                                 OVERLAY(CHARDS:*NEXT)
     DC111                                 OVERLAY(CHARDS:*NEXT)
     DC112                                 OVERLAY(CHARDS:*NEXT)
     DC113                                 OVERLAY(CHARDS:*NEXT)
     DC114                                 OVERLAY(CHARDS:*NEXT)
     DC115                                 OVERLAY(CHARDS:*NEXT)
     DC116                                 OVERLAY(CHARDS:*NEXT)
     DC117                                 OVERLAY(CHARDS:*NEXT)
     DC118                                 OVERLAY(CHARDS:*NEXT)
     DC119                                 OVERLAY(CHARDS:*NEXT)
     DC120                                 OVERLAY(CHARDS:*NEXT)
     DC121                                 OVERLAY(CHARDS:*NEXT)
     DC122                                 OVERLAY(CHARDS:*NEXT)
     DC123                                 OVERLAY(CHARDS:*NEXT)
     DC124                                 OVERLAY(CHARDS:*NEXT)
     DC125                                 OVERLAY(CHARDS:*NEXT)
     DC126                                 OVERLAY(CHARDS:*NEXT)
     DC127                                 OVERLAY(CHARDS:*NEXT)
     DC128                                 OVERLAY(CHARDS:*NEXT)
     DC129                                 OVERLAY(CHARDS:*NEXT)
     DC130                                 OVERLAY(CHARDS:*NEXT)
     DC131                                 OVERLAY(CHARDS:*NEXT)
     DC132                                 OVERLAY(CHARDS:*NEXT)
     DC133                                 OVERLAY(CHARDS:*NEXT)
     DC134                                 OVERLAY(CHARDS:*NEXT)
     DC135                                 OVERLAY(CHARDS:*NEXT)
     DC136                                 OVERLAY(CHARDS:*NEXT)
     DC137                                 OVERLAY(CHARDS:*NEXT)
     DC138                                 OVERLAY(CHARDS:*NEXT)
     DC139                                 OVERLAY(CHARDS:*NEXT)
     DC140                                 OVERLAY(CHARDS:*NEXT)
     DC141                                 OVERLAY(CHARDS:*NEXT)
     DC142                                 OVERLAY(CHARDS:*NEXT)
     DC143                                 OVERLAY(CHARDS:*NEXT)
     DC144                                 OVERLAY(CHARDS:*NEXT)
     DC145                                 OVERLAY(CHARDS:*NEXT)
     DC146                                 OVERLAY(CHARDS:*NEXT)
     DC147                                 OVERLAY(CHARDS:*NEXT)
     DC148                                 OVERLAY(CHARDS:*NEXT)
     DC149                                 OVERLAY(CHARDS:*NEXT)
     DC150                                 OVERLAY(CHARDS:*NEXT)
     DC151                                 OVERLAY(CHARDS:*NEXT)
     DC152                                 OVERLAY(CHARDS:*NEXT)
     DC153                                 OVERLAY(CHARDS:*NEXT)
     DC154                                 OVERLAY(CHARDS:*NEXT)
     DC155                                 OVERLAY(CHARDS:*NEXT)
     DC156                                 OVERLAY(CHARDS:*NEXT)
     DC157                                 OVERLAY(CHARDS:*NEXT)
     DC158                                 OVERLAY(CHARDS:*NEXT)
     DC159                                 OVERLAY(CHARDS:*NEXT)
     DC160                                 OVERLAY(CHARDS:*NEXT)
     DC161                                 OVERLAY(CHARDS:*NEXT)
     DC162                                 OVERLAY(CHARDS:*NEXT)
     DC163                                 OVERLAY(CHARDS:*NEXT)
     DC164                                 OVERLAY(CHARDS:*NEXT)
     DC165                                 OVERLAY(CHARDS:*NEXT)
     DC166                                 OVERLAY(CHARDS:*NEXT)
     DC167                                 OVERLAY(CHARDS:*NEXT)
     DC168                                 OVERLAY(CHARDS:*NEXT)
     DC169                                 OVERLAY(CHARDS:*NEXT)
     DC170                                 OVERLAY(CHARDS:*NEXT)
     DC171                                 OVERLAY(CHARDS:*NEXT)
     DC172                                 OVERLAY(CHARDS:*NEXT)
     DC173                                 OVERLAY(CHARDS:*NEXT)
     DC174                                 OVERLAY(CHARDS:*NEXT)
     DC175                                 OVERLAY(CHARDS:*NEXT)
     DC176                                 OVERLAY(CHARDS:*NEXT)
     DC177                                 OVERLAY(CHARDS:*NEXT)
     DC178                                 OVERLAY(CHARDS:*NEXT)
     DC179                                 OVERLAY(CHARDS:*NEXT)
     DC180                                 OVERLAY(CHARDS:*NEXT)
     DC181                                 OVERLAY(CHARDS:*NEXT)
     DC182                                 OVERLAY(CHARDS:*NEXT)
     DC183                                 OVERLAY(CHARDS:*NEXT)
     DC184                                 OVERLAY(CHARDS:*NEXT)
     DC185                                 OVERLAY(CHARDS:*NEXT)
     DC186                                 OVERLAY(CHARDS:*NEXT)
     DC187                                 OVERLAY(CHARDS:*NEXT)
     DC188                                 OVERLAY(CHARDS:*NEXT)
     DC189                                 OVERLAY(CHARDS:*NEXT)
     DC190                                 OVERLAY(CHARDS:*NEXT)
     DC191                                 OVERLAY(CHARDS:*NEXT)
     DC192                                 OVERLAY(CHARDS:*NEXT)
     DC193                                 OVERLAY(CHARDS:*NEXT)
     DC194                                 OVERLAY(CHARDS:*NEXT)
     DC195                                 OVERLAY(CHARDS:*NEXT)
     DC196                                 OVERLAY(CHARDS:*NEXT)
     DC197                                 OVERLAY(CHARDS:*NEXT)
     DC198                                 OVERLAY(CHARDS:*NEXT)
     DC199                                 OVERLAY(CHARDS:*NEXT)
     DC200                                 OVERLAY(CHARDS:*NEXT)
     DC201                                 OVERLAY(CHARDS:*NEXT)
     DC202                                 OVERLAY(CHARDS:*NEXT)
     DC203                                 OVERLAY(CHARDS:*NEXT)
     DC204                                 OVERLAY(CHARDS:*NEXT)
     DC205                                 OVERLAY(CHARDS:*NEXT)
     DC206                                 OVERLAY(CHARDS:*NEXT)
     DC207                                 OVERLAY(CHARDS:*NEXT)
     DC208                                 OVERLAY(CHARDS:*NEXT)
     DC209                                 OVERLAY(CHARDS:*NEXT)
     DC210                                 OVERLAY(CHARDS:*NEXT)
     DC211                                 OVERLAY(CHARDS:*NEXT)
     DC212                                 OVERLAY(CHARDS:*NEXT)
     DC213                                 OVERLAY(CHARDS:*NEXT)
     DC214                                 OVERLAY(CHARDS:*NEXT)
     DC215                                 OVERLAY(CHARDS:*NEXT)
     DC216                                 OVERLAY(CHARDS:*NEXT)
     DC217                                 OVERLAY(CHARDS:*NEXT)
     DC218                                 OVERLAY(CHARDS:*NEXT)
     DC219                                 OVERLAY(CHARDS:*NEXT)
     DC220                                 OVERLAY(CHARDS:*NEXT)
     DC221                                 OVERLAY(CHARDS:*NEXT)
     DC222                                 OVERLAY(CHARDS:*NEXT)
     DC223                                 OVERLAY(CHARDS:*NEXT)
     DC224                                 OVERLAY(CHARDS:*NEXT)
     DC225                                 OVERLAY(CHARDS:*NEXT)
     DC226                                 OVERLAY(CHARDS:*NEXT)
     DC227                                 OVERLAY(CHARDS:*NEXT)
     DC228                                 OVERLAY(CHARDS:*NEXT)
     DC229                                 OVERLAY(CHARDS:*NEXT)
     DC230                                 OVERLAY(CHARDS:*NEXT)
     DC231                                 OVERLAY(CHARDS:*NEXT)
     DC232                                 OVERLAY(CHARDS:*NEXT)
     DC233                                 OVERLAY(CHARDS:*NEXT)
     DC234                                 OVERLAY(CHARDS:*NEXT)
     DC235                                 OVERLAY(CHARDS:*NEXT)
     DC236                                 OVERLAY(CHARDS:*NEXT)
     DC237                                 OVERLAY(CHARDS:*NEXT)
     DC238                                 OVERLAY(CHARDS:*NEXT)
     DC239                                 OVERLAY(CHARDS:*NEXT)
     DC240                                 OVERLAY(CHARDS:*NEXT)
     DC241                                 OVERLAY(CHARDS:*NEXT)
     DC242                                 OVERLAY(CHARDS:*NEXT)
     DC243                                 OVERLAY(CHARDS:*NEXT)
     DC244                                 OVERLAY(CHARDS:*NEXT)
     DC245                                 OVERLAY(CHARDS:*NEXT)
     DC246                                 OVERLAY(CHARDS:*NEXT)
     DC247                                 OVERLAY(CHARDS:*NEXT)
     DC248                                 OVERLAY(CHARDS:*NEXT)
     DC249                                 OVERLAY(CHARDS:*NEXT)
     DC250                                 OVERLAY(CHARDS:*NEXT)
     DC251                                 OVERLAY(CHARDS:*NEXT)
     DC252                                 OVERLAY(CHARDS:*NEXT)
     DC253                                 OVERLAY(CHARDS:*NEXT)
     DC254                                 OVERLAY(CHARDS:*NEXT)
     DC255                                 OVERLAY(CHARDS:*NEXT)
     DC256                                 OVERLAY(CHARDS:*NEXT)
     DCHAR                                 DIM(256) LIKE(C001)
     D                                     OVERLAY(CHARDS:1)
     ‚**  For some reason I use Len not width
     DLENDS            DS
     DL001                                 OVERLAY(LENDS :1)
     DL002                                 OVERLAY(LENDS :*NEXT)
     DL003                                 OVERLAY(LENDS :*NEXT)
     DL004                                 OVERLAY(LENDS :*NEXT)
     DL005                                 OVERLAY(LENDS :*NEXT)
     DL006                                 OVERLAY(LENDS :*NEXT)
     DL007                                 OVERLAY(LENDS :*NEXT)
     DL008                                 OVERLAY(LENDS :*NEXT)
     DL009                                 OVERLAY(LENDS :*NEXT)
     DL010                                 OVERLAY(LENDS :*NEXT)
     DL011                                 OVERLAY(LENDS :*NEXT)
     DL012                                 OVERLAY(LENDS :*NEXT)
     DL013                                 OVERLAY(LENDS :*NEXT)
     DL014                                 OVERLAY(LENDS :*NEXT)
     DL015                                 OVERLAY(LENDS :*NEXT)
     DL016                                 OVERLAY(LENDS :*NEXT)
     DL017                                 OVERLAY(LENDS :*NEXT)
     DL018                                 OVERLAY(LENDS :*NEXT)
     DL019                                 OVERLAY(LENDS :*NEXT)
     DL020                                 OVERLAY(LENDS :*NEXT)
     DL021                                 OVERLAY(LENDS :*NEXT)
     DL022                                 OVERLAY(LENDS :*NEXT)
     DL023                                 OVERLAY(LENDS :*NEXT)
     DL024                                 OVERLAY(LENDS :*NEXT)
     DL025                                 OVERLAY(LENDS :*NEXT)
     DL026                                 OVERLAY(LENDS :*NEXT)
     DL027                                 OVERLAY(LENDS :*NEXT)
     DL028                                 OVERLAY(LENDS :*NEXT)
     DL029                                 OVERLAY(LENDS :*NEXT)
     DL030                                 OVERLAY(LENDS :*NEXT)
     DL031                                 OVERLAY(LENDS :*NEXT)
     DL032                                 OVERLAY(LENDS :*NEXT)
     DL033                                 OVERLAY(LENDS :*NEXT)
     DL034                                 OVERLAY(LENDS :*NEXT)
     DL035                                 OVERLAY(LENDS :*NEXT)
     DL036                                 OVERLAY(LENDS :*NEXT)
     DL037                                 OVERLAY(LENDS :*NEXT)
     DL038                                 OVERLAY(LENDS :*NEXT)
     DL039                                 OVERLAY(LENDS :*NEXT)
     DL040                                 OVERLAY(LENDS :*NEXT)
     DL041                                 OVERLAY(LENDS :*NEXT)
     DL042                                 OVERLAY(LENDS :*NEXT)
     DL043                                 OVERLAY(LENDS :*NEXT)
     DL044                                 OVERLAY(LENDS :*NEXT)
     DL045                                 OVERLAY(LENDS :*NEXT)
     DL046                                 OVERLAY(LENDS :*NEXT)
     DL047                                 OVERLAY(LENDS :*NEXT)
     DL048                                 OVERLAY(LENDS :*NEXT)
     DL049                                 OVERLAY(LENDS :*NEXT)
     DL050                                 OVERLAY(LENDS :*NEXT)
     DL051                                 OVERLAY(LENDS :*NEXT)
     DL052                                 OVERLAY(LENDS :*NEXT)
     DL053                                 OVERLAY(LENDS :*NEXT)
     DL054                                 OVERLAY(LENDS :*NEXT)
     DL055                                 OVERLAY(LENDS :*NEXT)
     DL056                                 OVERLAY(LENDS :*NEXT)
     DL057                                 OVERLAY(LENDS :*NEXT)
     DL058                                 OVERLAY(LENDS :*NEXT)
     DL059                                 OVERLAY(LENDS :*NEXT)
     DL060                                 OVERLAY(LENDS :*NEXT)
     DL061                                 OVERLAY(LENDS :*NEXT)
     DL062                                 OVERLAY(LENDS :*NEXT)
     DL063                                 OVERLAY(LENDS :*NEXT)
     DL064                                 OVERLAY(LENDS :*NEXT)
     DL065                                 OVERLAY(LENDS :*NEXT)
     DL066                                 OVERLAY(LENDS :*NEXT)
     DL067                                 OVERLAY(LENDS :*NEXT)
     DL068                                 OVERLAY(LENDS :*NEXT)
     DL069                                 OVERLAY(LENDS :*NEXT)
     DL070                                 OVERLAY(LENDS :*NEXT)
     DL071                                 OVERLAY(LENDS :*NEXT)
     DL072                                 OVERLAY(LENDS :*NEXT)
     DL073                                 OVERLAY(LENDS :*NEXT)
     DL074                                 OVERLAY(LENDS :*NEXT)
     DL075                                 OVERLAY(LENDS :*NEXT)
     DL076                                 OVERLAY(LENDS :*NEXT)
     DL077                                 OVERLAY(LENDS :*NEXT)
     DL078                                 OVERLAY(LENDS :*NEXT)
     DL079                                 OVERLAY(LENDS :*NEXT)
     DL080                                 OVERLAY(LENDS :*NEXT)
     DL081                                 OVERLAY(LENDS :*NEXT)
     DL082                                 OVERLAY(LENDS :*NEXT)
     DL083                                 OVERLAY(LENDS :*NEXT)
     DL084                                 OVERLAY(LENDS :*NEXT)
     DL085                                 OVERLAY(LENDS :*NEXT)
     DL086                                 OVERLAY(LENDS :*NEXT)
     DL087                                 OVERLAY(LENDS :*NEXT)
     DL088                                 OVERLAY(LENDS :*NEXT)
     DL089                                 OVERLAY(LENDS :*NEXT)
     DL090                                 OVERLAY(LENDS :*NEXT)
     DL091                                 OVERLAY(LENDS :*NEXT)
     DL092                                 OVERLAY(LENDS :*NEXT)
     DL093                                 OVERLAY(LENDS :*NEXT)
     DL094                                 OVERLAY(LENDS :*NEXT)
     DL095                                 OVERLAY(LENDS :*NEXT)
     DL096                                 OVERLAY(LENDS :*NEXT)
     DL097                                 OVERLAY(LENDS :*NEXT)
     DL098                                 OVERLAY(LENDS :*NEXT)
     DL099                                 OVERLAY(LENDS :*NEXT)
     DL100                                 OVERLAY(LENDS :*NEXT)
     DL101                                 OVERLAY(LENDS :*NEXT)
     DL102                                 OVERLAY(LENDS :*NEXT)
     DL103                                 OVERLAY(LENDS :*NEXT)
     DL104                                 OVERLAY(LENDS :*NEXT)
     DL105                                 OVERLAY(LENDS :*NEXT)
     DL106                                 OVERLAY(LENDS :*NEXT)
     DL107                                 OVERLAY(LENDS :*NEXT)
     DL108                                 OVERLAY(LENDS :*NEXT)
     DL109                                 OVERLAY(LENDS :*NEXT)
     DL110                                 OVERLAY(LENDS :*NEXT)
     DL111                                 OVERLAY(LENDS :*NEXT)
     DL112                                 OVERLAY(LENDS :*NEXT)
     DL113                                 OVERLAY(LENDS :*NEXT)
     DL114                                 OVERLAY(LENDS :*NEXT)
     DL115                                 OVERLAY(LENDS :*NEXT)
     DL116                                 OVERLAY(LENDS :*NEXT)
     DL117                                 OVERLAY(LENDS :*NEXT)
     DL118                                 OVERLAY(LENDS :*NEXT)
     DL119                                 OVERLAY(LENDS :*NEXT)
     DL120                                 OVERLAY(LENDS :*NEXT)
     DL121                                 OVERLAY(LENDS :*NEXT)
     DL122                                 OVERLAY(LENDS :*NEXT)
     DL123                                 OVERLAY(LENDS :*NEXT)
     DL124                                 OVERLAY(LENDS :*NEXT)
     DL125                                 OVERLAY(LENDS :*NEXT)
     DL126                                 OVERLAY(LENDS :*NEXT)
     DL127                                 OVERLAY(LENDS :*NEXT)
     DL128                                 OVERLAY(LENDS :*NEXT)
     DL129                                 OVERLAY(LENDS :*NEXT)
     DL130                                 OVERLAY(LENDS :*NEXT)
     DL131                                 OVERLAY(LENDS :*NEXT)
     DL132                                 OVERLAY(LENDS :*NEXT)
     DL133                                 OVERLAY(LENDS :*NEXT)
     DL134                                 OVERLAY(LENDS :*NEXT)
     DL135                                 OVERLAY(LENDS :*NEXT)
     DL136                                 OVERLAY(LENDS :*NEXT)
     DL137                                 OVERLAY(LENDS :*NEXT)
     DL138                                 OVERLAY(LENDS :*NEXT)
     DL139                                 OVERLAY(LENDS :*NEXT)
     DL140                                 OVERLAY(LENDS :*NEXT)
     DL141                                 OVERLAY(LENDS :*NEXT)
     DL142                                 OVERLAY(LENDS :*NEXT)
     DL143                                 OVERLAY(LENDS :*NEXT)
     DL144                                 OVERLAY(LENDS :*NEXT)
     DL145                                 OVERLAY(LENDS :*NEXT)
     DL146                                 OVERLAY(LENDS :*NEXT)
     DL147                                 OVERLAY(LENDS :*NEXT)
     DL148                                 OVERLAY(LENDS :*NEXT)
     DL149                                 OVERLAY(LENDS :*NEXT)
     DL150                                 OVERLAY(LENDS :*NEXT)
     DL151                                 OVERLAY(LENDS :*NEXT)
     DL152                                 OVERLAY(LENDS :*NEXT)
     DL153                                 OVERLAY(LENDS :*NEXT)
     DL154                                 OVERLAY(LENDS :*NEXT)
     DL155                                 OVERLAY(LENDS :*NEXT)
     DL156                                 OVERLAY(LENDS :*NEXT)
     DL157                                 OVERLAY(LENDS :*NEXT)
     DL158                                 OVERLAY(LENDS :*NEXT)
     DL159                                 OVERLAY(LENDS :*NEXT)
     DL160                                 OVERLAY(LENDS :*NEXT)
     DL161                                 OVERLAY(LENDS :*NEXT)
     DL162                                 OVERLAY(LENDS :*NEXT)
     DL163                                 OVERLAY(LENDS :*NEXT)
     DL164                                 OVERLAY(LENDS :*NEXT)
     DL165                                 OVERLAY(LENDS :*NEXT)
     DL166                                 OVERLAY(LENDS :*NEXT)
     DL167                                 OVERLAY(LENDS :*NEXT)
     DL168                                 OVERLAY(LENDS :*NEXT)
     DL169                                 OVERLAY(LENDS :*NEXT)
     DL170                                 OVERLAY(LENDS :*NEXT)
     DL171                                 OVERLAY(LENDS :*NEXT)
     DL172                                 OVERLAY(LENDS :*NEXT)
     DL173                                 OVERLAY(LENDS :*NEXT)
     DL174                                 OVERLAY(LENDS :*NEXT)
     DL175                                 OVERLAY(LENDS :*NEXT)
     DL176                                 OVERLAY(LENDS :*NEXT)
     DL177                                 OVERLAY(LENDS :*NEXT)
     DL178                                 OVERLAY(LENDS :*NEXT)
     DL179                                 OVERLAY(LENDS :*NEXT)
     DL180                                 OVERLAY(LENDS :*NEXT)
     DL181                                 OVERLAY(LENDS :*NEXT)
     DL182                                 OVERLAY(LENDS :*NEXT)
     DL183                                 OVERLAY(LENDS :*NEXT)
     DL184                                 OVERLAY(LENDS :*NEXT)
     DL185                                 OVERLAY(LENDS :*NEXT)
     DL186                                 OVERLAY(LENDS :*NEXT)
     DL187                                 OVERLAY(LENDS :*NEXT)
     DL188                                 OVERLAY(LENDS :*NEXT)
     DL189                                 OVERLAY(LENDS :*NEXT)
     DL190                                 OVERLAY(LENDS :*NEXT)
     DL191                                 OVERLAY(LENDS :*NEXT)
     DL192                                 OVERLAY(LENDS :*NEXT)
     DL193                                 OVERLAY(LENDS :*NEXT)
     DL194                                 OVERLAY(LENDS :*NEXT)
     DL195                                 OVERLAY(LENDS :*NEXT)
     DL196                                 OVERLAY(LENDS :*NEXT)
     DL197                                 OVERLAY(LENDS :*NEXT)
     DL198                                 OVERLAY(LENDS :*NEXT)
     DL199                                 OVERLAY(LENDS :*NEXT)
     DL200                                 OVERLAY(LENDS :*NEXT)
     DL201                                 OVERLAY(LENDS :*NEXT)
     DL202                                 OVERLAY(LENDS :*NEXT)
     DL203                                 OVERLAY(LENDS :*NEXT)
     DL204                                 OVERLAY(LENDS :*NEXT)
     DL205                                 OVERLAY(LENDS :*NEXT)
     DL206                                 OVERLAY(LENDS :*NEXT)
     DL207                                 OVERLAY(LENDS :*NEXT)
     DL208                                 OVERLAY(LENDS :*NEXT)
     DL209                                 OVERLAY(LENDS :*NEXT)
     DL210                                 OVERLAY(LENDS :*NEXT)
     DL211                                 OVERLAY(LENDS :*NEXT)
     DL212                                 OVERLAY(LENDS :*NEXT)
     DL213                                 OVERLAY(LENDS :*NEXT)
     DL214                                 OVERLAY(LENDS :*NEXT)
     DL215                                 OVERLAY(LENDS :*NEXT)
     DL216                                 OVERLAY(LENDS :*NEXT)
     DL217                                 OVERLAY(LENDS :*NEXT)
     DL218                                 OVERLAY(LENDS :*NEXT)
     DL219                                 OVERLAY(LENDS :*NEXT)
     DL220                                 OVERLAY(LENDS :*NEXT)
     DL221                                 OVERLAY(LENDS :*NEXT)
     DL222                                 OVERLAY(LENDS :*NEXT)
     DL223                                 OVERLAY(LENDS :*NEXT)
     DL224                                 OVERLAY(LENDS :*NEXT)
     DL225                                 OVERLAY(LENDS :*NEXT)
     DL226                                 OVERLAY(LENDS :*NEXT)
     DL227                                 OVERLAY(LENDS :*NEXT)
     DL228                                 OVERLAY(LENDS :*NEXT)
     DL229                                 OVERLAY(LENDS :*NEXT)
     DL230                                 OVERLAY(LENDS :*NEXT)
     DL231                                 OVERLAY(LENDS :*NEXT)
     DL232                                 OVERLAY(LENDS :*NEXT)
     DL233                                 OVERLAY(LENDS :*NEXT)
     DL234                                 OVERLAY(LENDS :*NEXT)
     DL235                                 OVERLAY(LENDS :*NEXT)
     DL236                                 OVERLAY(LENDS :*NEXT)
     DL237                                 OVERLAY(LENDS :*NEXT)
     DL238                                 OVERLAY(LENDS :*NEXT)
     DL239                                 OVERLAY(LENDS :*NEXT)
     DL240                                 OVERLAY(LENDS :*NEXT)
     DL241                                 OVERLAY(LENDS :*NEXT)
     DL242                                 OVERLAY(LENDS :*NEXT)
     DL243                                 OVERLAY(LENDS :*NEXT)
     DL244                                 OVERLAY(LENDS :*NEXT)
     DL245                                 OVERLAY(LENDS :*NEXT)
     DL246                                 OVERLAY(LENDS :*NEXT)
     DL247                                 OVERLAY(LENDS :*NEXT)
     DL248                                 OVERLAY(LENDS :*NEXT)
     DL249                                 OVERLAY(LENDS :*NEXT)
     DL250                                 OVERLAY(LENDS :*NEXT)
     DL251                                 OVERLAY(LENDS :*NEXT)
     DL252                                 OVERLAY(LENDS :*NEXT)
     DL253                                 OVERLAY(LENDS :*NEXT)
     DL254                                 OVERLAY(LENDS :*NEXT)
     DL255                                 OVERLAY(LENDS :*NEXT)
     DL256                                 OVERLAY(LENDS :*NEXT)
     DLEN                                  DIM(256) LIKE(L001) OVERLAY(LENDS :1)
      ***************************************************************************
      ** Character width in MM
     DWidth53          s              5  3 DIM(256)
      ** Page width in CM
     d PageWidth       S              5  2
      ** Global definition for default parms
     d NoJustifyPcnt   S              5  2
     D SpacesOnly      s               N
      ** Global definition text
     d Text            S            256    Varying
      ** Col calculation
     d Col             S              5  3
      ** Average char width - used if char not found
     d Average         S              5  3
      ** Max char width - Not used yet but it migh come in useful
     d Max             S              5  3
      ** Current character to process
     d CurChar         S              5  0
      ** Total characters to process
     d TotChar         S              5  0
      ** Spacing required
     d Spacing         S              5  3
      **************************************************************************
      ** fnLoadFont - Load the font definition
      **************************************************************************
     PfnLoadFont       B                   Export
     dfnLoadFont       PI              N
     d FontId                        10    Const
     d Return          s               n
     d I               s              3  0
     d c               s              3  0
     d t               s             15  3
     d m               s             15  3
     c                   open(e)   justifypf
     c     Fontid        chain(e)  justifypf
     c                   Eval      Return = %found and not %error
     c                   close(e)  justifypf
      ** Font not loaded or Chacters per is zero
B01  c                   If        Not return or Per=0
     c                   return    *off
E01  c                   endif
      ** convert to mm for each
     c                   eval(h)   Width53 = (len / Per) / 10
      ** cal culate average width
B01  c                   for       i=1 to %elem(Width53)
B02  c                   if        Width53(i)<>0
     c                   eval      t +=Width53(i)
     c                   eval      c +=1
      ** max width
B03  c                   if        Width53(i)>M
     c                   eval      m=Width53(i)
E03  c                   endif
E02  c                   endif
E01  c                   endfor
      ** Set global average and Max
     c                   Clear                   Average
     c                   Clear                   Max
B01  c                   if        c>1
     c                   eval      Average = t/c
     c                   eval      Max = M
E01  c                   endif

     c                   return    *on

      ** Font loaded calculate average
     PfnLoadFont       E
      **************************************************************************
      ** fnSetDefaults - Set some defaults
      **************************************************************************
     pfnSetDefaults    b                   Export
     dfnSetDefaults    Pi              N
     dzPageWidth                      5  2 Const Options(*omit)
     dzNoJustifyPcnt                  5  2 Const Options(*omit)
     dzSpacesOnly                      N   Const Options(*omit)
      ** Set default - page width (in MM)
B01  c                   if        %addr(zPageWidth) <> *Null
     c                   eval      PageWidth=zPageWidth
X01  c                   elseif    Pagewidth = 0
     c                   eval      PageWidth = 19.00
E01  c                   endif
      ** Set default - %age to ignore
B01  c                   if        %addr(zNoJustifyPcnt) <> *Null
     c                   eval      NoJustifyPcnt = zNoJustifyPcnt
X01  c                   elseif    NoJustifyPcnt = 0
     c                   eval      NoJustifyPcnt = 60.00
E01  c                   endif
     c
      ** Set default - spaces Only
B01  c                   if        %addr(zSpacesOnly) <> *Null
     c                   eval      SpacesOnly = zSpacesOnly
X01  c                   else
     c                   eval      SpacesOnly = *on
E01  c                   endif
     c
     c                   Return    *on
     pfnSetDefaults    e
      **************************************************************************
      ** fnJustifyText - Get text to justify and set the spacing
      **************************************************************************
     PfnJustifyText    b                   Export
     dfnJustifyText    Pi              N
     dzText                         256    Const Options(*varSize)
     d i               s              3  0
     d size            s              7  3
     d i1              s              3  0
     d NbrSpaces       s              3  0
     d Byte            s              1
      **
     c                   clear                   col
     c                   clear                   size
     c                   eval      text=%trim(ztext)
     c                   eval      totchar=%len(text)
      ** calculate total size of field
      ** we do not need to take into account the first character
      ** as this is not justified
B01  c                   for       i=2 to totchar
     c                   eval      Byte= %subst(text:i:1)
      ** Check if a space
B02  c                   if        byte=' ' and SpacesOnly
     c                   eval      nbrSpaces +=1
E02  c                   endif
      **  I am nmot sure if lookup / or scan is fastest (I think scan is)
     c**                 eval      i1=%lookup(Byte:char)
     c                   eval      i1=%scan(Byte:chards)
      ** use average when character not found
B02  c                   if        i1=0
     c                   eval      size+=average
      ** use average when character width is zero
X02  c                   elseif    Width53(i1)=0
     c                   eval      size+=average
      ** use calculated width
X02  c                   else
     c                   eval      size+=Width53(i1)
E02  c                   endif
      **
E01  c                   endfor
      ** Check if justification can be achieved
B01  C                   if        PageWidth<Size or size=0 or totchar=0
     c                             or (SpacesOnly and NbrSpaces = 0)
     c                   return    *off
      ** Spacing < requested %age justification
X01  c                   elseif    PageWidth/size * 100 <=
     c                             NoJustifyPcnt
     c                   return    *off
E01  c                   endif
      **  calcuate the spacing required
B01  c                   if        SpacesOnly
     C                   EVAL      Spacing = (PAGEWIDTH - size) / NbrSpaces
X01  c                   else
     C                   EVAL      Spacing = (PAGEWIDTH - size) / i
E01  c                   endif
      **
     c                   clear                   curchar

     c                   return    *on
     PfnJustifyText    e
      **------------------------------------------------------------------------
     pfnCharCol        b                   Export
     dfnCharCol        Pi             5  3
     D Byte                           1
     d i1              s              3  0
     d Size            s              5  3
     Dcol1             s              5  3
      ** set what character to print
     c                   eval      curchar +=1
B01  c                   if        curchar>totchar
     c                   return    -1
E01  c                   endif
      **  Set the byte to be returned
     c                   eval      Byte=%subst(text:curchar:1)
      **  Calculate character width as per above
      **  I am nmot sure if lookup / or scan is fastest (I think scan is)
     c**                 eval      i1=%lookup(Byte:char)
     c                   eval      i1=%scan(byte:chards)
      ** use average when character not found
B01  c                   if        i1=0
     c                   eval      size =average
      ** use average when character width is zero
X01  c                   elseif    Width53(i1)=0
     c                   eval      size =average
      ** use calculated width
X01  c                   else
     c                   eval      size =Width53(i1)
E01  c                   endif
      **  Always Return previously calculated column (ie start at offset 0)
     c                   eval      col1=Col
      **  Increment what col to use next time
B01  c                   if        SpacesOnly
      ** move character the required space
     c                   eval      col=col+size
      ** pad space the required distance
B02  c                   if        Byte=' '
     c                   eval      col=col+spacing
E02  c                   endif
      ** pad character the required distance
X01  c                   else
     c                   eval      col=col+spacing+size
E01  c                   endif
      ** rturn the position and the character
     c                   return    col1
     c
     pfnCharCol        e



Have fun All

Dave
0
 

Author Comment

by:rbedard65
ID: 10731768
Thanks Dave...Good stuff!
0
 
LVL 14

Expert Comment

by:daveslater
ID: 10735842
Hi
Just a quick note on the above.
In the file the first element (C001) should be a space ie blank. Then next bank indicates that there are not more values to process.

The sample print prints
H then 50 characters then H.
I measure from the end of the first H to the start of the last H. I think the distance of 50 characters should give a good indication of the font size ie if you are 1mm out in the measurement then when the program comes to calculate the font width it will be 1/50th of a millimeter out that is a small value.

When using a different point for a spacific font you can copy the font id, change the print file for the new font, do a few measurements on some characters if the %age is consistant then simply write a pgmto increase the value.


Dave

PS I did enjoy this.
0
 
LVL 14

Expert Comment

by:daveslater
ID: 10812409
Hi all
here is a new procedure to put intom the service program
Once you have loaded the font and set the defaults you cal call it with a large string and optionally a start position.
It will return how many bytes can be fitted onto a line.

This will enable you to build up a large string in your pgm and then get the justification program to format it.


  **------------------------------------------------------------------------  
  ** Returns the nuber of characters that will fit onto 1 line                
  ** Returns -1 if an error occurred                                          
  ** text - Text to format                                                    
  ** Start Position (1 to Len of text) Optional                                
 dfnTextToPrint    PR             5  0                                        
 d Text                       32726    Const Options(*varSize)                
 d StartPos                       5  0 Const Options(*NoPass)                  



 **------------------------------------------------------------------------                
 ** Returns Text that will fit onto 1 line                                                
 ** Returns -1 if an error occurred                                                        
 ** text - Text to format                                                                  
 ** Start Position (1 to Len of text)                                                      
pfnTextToPrint    b                   Export                                              
dfnTextToPrint    PI             5  0                                                      
d Text                       32726    Const Options(*varSize)                              
dzStartPos                       5  0 Const Options(*NoPass)                              
 ** work fields                                                                            
d StartPos        S              5  0                                                      
d i               S              5  0                                                      
d i1              S              5  0                                                      
d NbrChars        S              5  0                                                      
D LastSpace       S              5  0                                                      
D Len             S              5  0                                                      
d size            S              7  3                                                      
D Byte            S              1                                                        
 ** Set Start Position                                                                    
c                   If        %parms=2                                          
c                   eval      StartPos = ZstartPos                              
c                   else                                                        
c                   eval      StartPos = 1                                      
c                   Endif                                                      
 ** Start > length ? - then return an error                                    
c                   eval      Len=%len(%trim(Text))                            
c                   if        StartPos > Len                                    
c                   Return    -1                                                
c                   endif                                                      
 ** Calculate the number of characters that will fit onto 1 line                
c                   clear                   size                                
 ** calculate total size of field                                              
 ** we do not need to take into account the first character                    
 ** as this is not justified                                                    
c                   for       i=StartPos to Len                                
c                   eval      Byte= %subst(text:i:1)                            
 **  I am nmot sure if lookup / or scan is fastest (I think scan is)            
c**                 eval      i1=%lookup(Byte:char)                            
c                   eval      i1=%scan(Byte:chards)                            
 ** use average when character not found                      
c                   if        i1=0                            
c                   eval      size = size + average          
 ** use average when character width is zero                  
c                   elseif    Width53(i1)=0                  
c                   eval      size = size + average          
 ** use calculated width                                      
c                   else                                      
c                   eval      size = size + Width53(i1)      
c                   endif                                    
 ** If size >= page width then exit                          
C                   if        Size >= PageWidth              
c                   leave                                    
c                   endif                                    
 ** Accumulate Character Count                                
c                   eval      nbrChars = NbrChars + 1        
 ** store the last space                                      
c                   if        Byte=' '                        
c                   eval      lastspace=i                    
c                   endif                                    
 **                                                    
c                   endfor                            
c                   if        lastspace<>0            
c                   Return    LastSpace                
c                   else                              
c                   Return    nbrChars                
c                   endif                              
c                                                      
pfnTextToPrint    e                                    
0
 
LVL 14

Expert Comment

by:daveslater
ID: 11871762
No comment has been added lately, so it's time to clean up this TA.
I will leave a recommendation in the Cleanup topic area that this question is:

Accept daveslater comment as answer
 

Please leave any comments here within the next four days.

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
daveslater
Page Editor
0

Featured Post

NFR key for Veeam Agent for Linux

Veeam is happy to provide a free NFR license for one year.  It allows for the non‑production use and valid for five workstations and two servers. Veeam Agent for Linux is a simple backup tool for your Linux installations, both on‑premises and in the public cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Simulator games are perfect for generating sample realistic data streams, especially for learning data analysis. It is even useful for demoing offerings such as Azure stream analytics, PowerBI etc.
In this post, I will showcase the steps for how to create groups in Office 365. Office 365 groups allow for ease of flexibility and collaboration between staff members.
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…
Loops Section Overview
Suggested Courses

885 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question