Understand that your definition only works if you update the display file.
This just maps *IN03.
F03 ind pos(3);
And it will only work if the Display file has:
CF03(03)
If you just want to name F3 then you can use something like this:
Dcl-s Ptr_INKC Pointer Inz(%Addr(*INKC));
Dcl-S F03 IND BASED(Ptr_INKC);
From what I’ve found, the full indicator map in RPG IV is 161. Here are the positions I found as determined using a CRTBNDRPG RPGLE program:
DCL-S P_INDICATORS POINTER INZ(%ADDR(*IN));
DCL-DS INDICATORS LEN(161) based(P_INDICATORS);
ALLIND IND POS(1) DIM(161);
DCL-SUBF IN IND POS(1) DIM(99);
INL1 IND POS(100);
INL2 IND POS(101);
INL3 IND POS(102);
INL4 IND POS(103);
INL5 IND POS(104);
INL6 IND POS(105);
INL7 IND POS(106);
INL8 IND POS(107);
INL9 IND POS(108);
INLR IND POS(109);
INH1 IND POS(110);
INH2 IND POS(111);
INH3 IND POS(112);
INH4 IND POS(113);
INH5 IND POS(114);
INH6 IND POS(115);
INH7 IND POS(116);
INH8 IND POS(117);
INH9 IND POS(118);
INOA IND POS(119);
INOB IND POS(120);
INOC IND POS(121);
INOD IND POS(122);
INOE IND POS(123);
INOF IND POS(124);
INOG IND POS(125);
INOV IND POS(126);
IN1P IND POS(127);
INMR IND POS(128);
INRT IND POS(129);
INKA IND POS(130);
INKB IND POS(131);
INKC IND POS(132);
INKD IND POS(133);
INKE IND POS(134);
INKF IND POS(135);
INKG IND POS(136);
INKH IND POS(137);
INKI IND POS(138);
INKJ IND POS(139);
INKK IND POS(140);
INKL IND POS(141);
INKM IND POS(142);
INKN IND POS(143);
INKP IND POS(144);
INKQ IND POS(145);
INKR IND POS(146);
INKS IND POS(147);
INKT IND POS(148);
INKU IND POS(149);
INKV IND POS(150);
INKW IND POS(151);
INKX IND POS(152);
INKY IND POS(153);
INU1 IND POS(154);
INU2 IND POS(155);
INU3 IND POS(156);
INU4 IND POS(157);
INU5 IND POS(158);
INU6 IND POS(159);
INU7 IND POS(160);
INU8 IND POS(161);
End-ds;
This is for informational purposes only.
The way the way the RPG Reference manual discusses these indicators suggests that you may not get all the indicators defined in an application.
If you take the address of *IN, *IN01 - *IN99, or *IN(index), indicators *IN01 to *IN99 will be defined.
If you take the address of any other indicator, such as *INLR or *INL1, only that indicator will be defined.
https://www.ibm.com/docs/en/i/7.3?topic=data-additional-rules
If you just want to name the *Ink_ indicators then you can do something like this without needing INDDS:
Dcl-s Ptr_INKA Pointer Inz(%Addr(*INKA));
Dcl-s Ptr_INKB Pointer Inz(%Addr(*INKB));
Dcl-s Ptr_INKC Pointer Inz(%Addr(*INKC));
Dcl-s Ptr_INKD Pointer Inz(%Addr(*INKD));
Dcl-s Ptr_INKE Pointer Inz(%Addr(*INKE));
Dcl-s Ptr_INKF Pointer Inz(%Addr(*INKF));
Dcl-s Ptr_INKG Pointer Inz(%Addr(*INKG));
Dcl-s Ptr_INKH Pointer Inz(%Addr(*INKH));
Dcl-s Ptr_INKI Pointer Inz(%Addr(*INKI));
Dcl-s Ptr_INKJ Pointer Inz(%Addr(*INKJ));
Dcl-s Ptr_INKK Pointer Inz(%Addr(*INKK));
Dcl-s Ptr_INKL Pointer Inz(%Addr(*INKL));
Dcl-s Ptr_INKM Pointer Inz(%Addr(*INKM));
Dcl-s Ptr_INKN Pointer Inz(%Addr(*INKN));
Dcl-s Ptr_INKP Pointer Inz(%Addr(*INKP));
Dcl-s Ptr_INKQ Pointer Inz(%Addr(*INKQ));
Dcl-s Ptr_INKR Pointer Inz(%Addr(*INKR));
Dcl-s Ptr_INKS Pointer Inz(%Addr(*INKS));
Dcl-s Ptr_INKT Pointer Inz(%Addr(*INKT));
Dcl-s Ptr_INKU Pointer Inz(%Addr(*INKU));
Dcl-s Ptr_INKV Pointer Inz(%Addr(*INKV));
Dcl-s Ptr_INKW Pointer Inz(%Addr(*INKW));
Dcl-s Ptr_INKX Pointer Inz(%Addr(*INKX));
Dcl-s Ptr_INKY Pointer Inz(%Addr(*INKY));
Dcl-S F01 IND BASED(Ptr_INKA);
Dcl-S F02 IND BASED(Ptr_INKB);
Dcl-S F03 IND BASED(Ptr_INKC);
Dcl-S F04 IND BASED(Ptr_INKD);
Dcl-S F05 IND BASED(Ptr_INKE);
Dcl-S F06 IND BASED(Ptr_INKF);
Dcl-S F07 IND BASED(Ptr_INKG);
Dcl-S F08 IND BASED(Ptr_INKH);
Dcl-S F09 IND BASED(Ptr_INKI);
Dcl-S F10 IND BASED(Ptr_INKJ);
Dcl-S F11 IND BASED(Ptr_INKK);
Dcl-S F12 IND BASED(Ptr_INKL);
Dcl-S F13 IND BASED(Ptr_INKM);
Dcl-S F14 IND BASED(Ptr_INKN);
Dcl-S F15 IND BASED(Ptr_INKP);
Dcl-S F16 IND BASED(Ptr_INKQ);
Dcl-S F17 IND BASED(Ptr_INKR);
Dcl-S F18 IND BASED(Ptr_INKS);
Dcl-S F19 IND BASED(Ptr_INKT);
Dcl-S F20 IND BASED(Ptr_INKU);
Dcl-S F21 IND BASED(Ptr_INKV);
Dcl-S F22 IND BASED(Ptr_INKW);
Dcl-S F23 IND BASED(Ptr_INKX);
Dcl-S F24 IND BASED(Ptr_INKY);
--
Chris Hiebert
Senior Programmer/Analyst
Disclaimer: Any views or opinions presented are solely those of the author and do not necessarily represent those of the company.
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Greg Wilburn
Sent: Thursday, October 20, 2022 1:33 PM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: RE: Position Cursor and Reverse Image on Green Screen
Thanks for the suggestions, but that's not what I'm seeing...
The other indicators are all off according to debug, and I do see CSRLOC keyword.
I did find one issue.
I am using: INDDS(dsIndic) on the display file definition, using it to name the function keys that I'm using
dcl-f HH125FM workstn devid(swid) indds(dsIndic);
dcl-ds dsIndic;
F03 ind pos(3);
F05 ind pos(5);
F12 ind pos(12);
F23 ind pos(23);
F24 ind pos(24);
end-ds;
So that could have interfered with Indicators 01 through 24.
I have recoded the display file to use 41 instead of 01, 42 instead of 02, etc for the Reverse Image and Color keywords.
Back in debug, 42 is on both before and after EXFMT SCREEN01. Yet, neither keyword seems to be applied.
Greg
As an Amazon Associate we earn from qualifying purchases.