This is purely a little memory jogger for me. Nothing to read here move along move along…..
I just upgraded an old program that had a piece of code doing this:
C DS#POS Div 256 POSLIN
C Mvr POSCOL
This old RPG400 code is reading the cursor position from the display file information data structure and doing some divisions then MOVING REMAINDER into a field to find the column. Quite smelly code I know, but also code that doesnt translate into modern RPG very well.
I had to scratch my head to remember how to do DIVISION and REMAINDERS in modern ILE RPG. so decided to quickly blog it so that I dont forget again.
I changed the file information data structure into a qualified data structure and then rewrote it in modern RPG like this:
poslin = infds_dspf.RowColumn / 256;
poscol = %rem(infds_dspf.RowColumn:256);
Some of the archaic whiff has been polished off. It’s nice because you dont need the actual divison statement anymore you can use a much simpler, cleaner %REM big to get your remainder:
C A Div 256 B
C Mvr C
C = %rem(A:256);
Here is a little example from the IBM Manual:
dcl-s A int(10) inz(123);
dcl-s B int(10) inz(27);
dcl-s DIV int(10);
dcl-s REM int(10);
dcl-s E int(10);
DIV = %DIV(A:B); // DIV is now 4
REM = %REM(A:B); // REM is now 15
E = DIV*B + REM; // E is now 123
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.
IFS File system error occurred. Error number 3021?
IBM i Data Obfuscation – Making Data Foggy Murky and Squinty
How to rename IFS Files
How to copy IBM i IFS folder
How to rename Fresche (BCD) Presto Library – XL_PRESTO
Using TURNOVER in an IBM i iASP Environment
Preparing to implement IBM i iASP (Independent Auxiliary Storage Pool)
How to move IFS from *SYSBAS into iASP (Independent ASP)
How to refresh the Pitney Bowes CODE1 Address Database on IBM I without using FTP