Following on from the COPYRIGHT PRIMER blog from a while ago I added a little extra function for CL as well. The extra function means that defining the copyright text in a variable as well as the COPYRIGHT means you can store the copyright statement at OBJECT level and also show it in program DUMPS as a variable
So, lets do the exact same thing for RPGLE
When a bound ILE program is created with multiple modules I tend to add the COPYRIGHT statement to the primary module and then just add a “modified by” or “version number to the other modules”. This lets me see the copyright but also easily see exactly what versions I am running, or testing, simply by issuing a DSPPGM command:
In this example the first three lines are from the primary CL module.
The next is from the PGM(DSPFLDRPG) *RPGLE module which has the modification comment only
So, the RPGLE copybook for the header might look like this:
ctl-opt .. all your other header parms here ... copyright('| DSPFLDRPG This is a Module that does stuff written by me')
NOTE: I use the ‘|’ character to separate my copyright statements. I just think its pretty. 😉
YET ANOTHER PESKY NOTE: regular RPGLE &VARIABLES are not shown in DUMPS until they are used so we can easily *fool* IBM i into using that variable by simply basing something over it – how about something like a lovely little pointer?
dcl-s $COPYRIGHT char(256) inz('| DSPFLDRPG This is a Module that does stuff written by me'); dcl-s $COPYRIGHT_PTR pointer inz(%addr($COPYRIGHT));
Now if the code ever dumps we will see the value called $COPYRIGHT in the DUMP as well 🙂
File . . . . . : QPPGMDMP Page/Line 15/17 Control . . . . . Columns 1 - 130 Find . . . . . . COPY *...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2....+....3 1961 '40404040404040404040404040404040404040404040404040404040404040404040404040404040'X $COPYRIGHT CHAR(256) '| DSPFLDRPG This is a Module that does stuff written by me ' 81 ' ' 161 ' ' 241 ' ' VALUE IN HEX '4F40C4E2D7C6D3C4D9D7C740E38889A24089A2408140D49684A4938540A38881A340849685A240A2'X 41 'A3A4868640A69989A3A385954082A840948540404040404040404040404040404040404040404040'X 81 '40404040404040404040404040404040404040404040404040404040404040404040404040404040'X 121 '40404040404040404040404040404040404040404040404040404040404040404040404040404040'X 161 '40404040404040404040404040404040404040404040404040404040404040404040404040404040'X 201 '40404040404040404040404040404040404040404040404040404040404040404040404040404040'X 241 '40404040404040404040404040404040'X $COPYRIGHT_PTR POINTER SPP:C36801ED2F094340 $DAYSINSTALLED CHAR(5) ' ' '4040404040'X $DISPLAY CHAR(52) ' ' VALUE IN HEX '40404040404040404040404040404040404040404040404040404040404040404040404040404040'X 41 '404040404040404040404040'X $DONETHIS INDICATOR(1) '0' 'F0'X $END INDICATOR(1) '0' 'F0'X More... F3=Exit F12=Cancel F19=Left F20=Right F24=More keys String found in position 3.
IBM i Software Developer, Digital Dad, AS400 Anarchist, RPG Modernizer, Alpha Nerd and Passionate Eater of Cheese and Biscuits. Nick Litten Dot Com is a mixture of blog posts that can be sometimes serious, frequently playful and probably down-right pointless all in the space of a day. Enjoy your stay, feel free to comment and in the words of the most interesting man in the world: Stay thirsty my friend.
Copyright and RPGLE for the New Year
CL coding tip #73 – using [COPYRIGHT]
RPG coding tip #73 – using [H SPEC COPYRIGHT]
What is IBM i Email and SPF?
Updating Numeric DTAARA in RPGLE
How to capture IBM-i job info for submitted jobs
Register license key in SOFTLANDING SOFTMENU
Going the (Levenshtein) Distance in RPG Free
Don’t hardcode library names in your TURNOVER SQL source #youbigsilly