2024-04-10 16:16:48 -04:00

91 lines
1.7 KiB
Plaintext

**FREE
//====================================================================
// Interactive program to demonstrate/exercise BASE36ADD.
// Enter a value up to 20 characters. Press enter and the value + 1
// is displayed. Each enter increments by 1 and the values roll
// up the screen.
// Not a lot of error checking. You can see what happens if you
// enter a character that is not A-Z or 0-9.
//====================================================================
ctl-opt debug option(*nodebugio: *srcstmt) dftactgrp(*no)
actgrp(*caller) bnddir('SRV_BASE36')
main(Main);
/include ../base36/base36_p.rpgle
dcl-f BTID WORKSTN INFDS(dfInfDS) Usropn;
dcl-ds dfInfDS;
Key char(1) pos(369);
end-ds;
dcl-c F03 x'33';
dcl-c F05 x'35';
dcl-s valVar varchar(20);
dcl-s j int(10);
dcl-ds *N; // Rolling screen fields
Val1;
Val2;
Val3;
Val4;
val5;
val6;
val7;
val8;
val9;
val10;
val11;
val12;
val13;
val14;
val15;
val16;
val17;
val18;
Values char(20) dim(18) pos(1);
end-ds;
dcl-proc Main ;
if not %open(BTID);
open BTID;
endif;
exsr GetVal;
dow Key <> F03;
*in40 = *on;
if Key = F05;
exsr GetVal;
iter;
endif;
// Roll values up the screen
for j = 1 to %elem(Values)-1;
Values(j) = Values(j+1);
endfor;
Val18 = Val;
// Increment by 1
valVar = %trim(val);
valVar = BASE36ADD(valVar);
Val = valVar;
exfmt SCREEN;
enddo;
close BTID;
*inlr=*on;
// Get the starting value
begsr GetVal;
*in40 = *off;
Values = *blanks;
dou Val <> *blanks;
exfmt SCREEN;
if Key = F03;
return;
endif;
enddo;
endsr;
end-proc;