Posts

02

**FREE dcl-s gv_p pointer inz(%addr(ds.text1)); dcl-s gv_Field char(4) based(gv_p); dcl-Ds Ds qualified;        text1 char(4) inz('1234');        text2 char(4) inz('5678'); end-Ds; gv_p = %addr(ds.text2); *inlr = *on; return;     

06 Pointer Math

**FREE ctl-opt dftactgrp(*no); dcl-pr changePointer;        *n pointer; end-pr; dcl-s Var1 char(12); dcl-s Ptr pointer inz(%addr(Var1)); dcl-s Var2 char(12) based(Ptr); Var1 = 'Hello World!'; changePointer(Ptr); *inlr = *on; return; dcl-proc changePointer; dcl-pi changePointer;        pi_Pointer Pointer; end-pi changePointer; dcl-s lv_Pointer Pointer; dcl-s lv_Var char(6) based(lv_Pointer); lv_Pointer = pi_Pointer; lv_Pointer += 6; if lv_var = 'World!';    lv_var = 'Darlin'; endIf; return; end-Proc changePointer;

05

**FREE ctl-opt nomain; //dcl-pr OffsetPtr pointer; //       pePointer pointer Value; //       peOffset integer Value; //end-pr; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Return a pointer at a specified offset value from another ptr // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ dcl-proc OffsetPtr EXPORT; dcl-pi OffsetPtr pointer;        pePointer pointer Value;        peOffset integer Value; dcl-s p_NewPtr pointer; dcl-s wkMove   char(1) DIM(4097) BASED(p_NewPtr); p_NewPtr = pePointer; if peOffset > 0;    dow peOffset > 4096;        p_NewPtr = %addr(wkMove(4097));        peOffset = peOffset - 4096;    enddo;    p_NewPtr = %addr(wkMove(peOffset+1)); endif; return p_NewPtr; end-Proc OffsetPtr;

04

**FREE ctl-opt dftactgrp(*no); dcl-pr changePointer;        *n pointer; end-pr; dcl-s Var1 char(12); dcl-s Ptr pointer inz(%addr(Var1)); dcl-s Var2 char(12) based(Ptr); Var1 = 'Hello World'; changePointer(Ptr); *inlr = *on; return; dcl-proc changePointer; dcl-pi changePointer;        pi_Pointer Pointer; end-pi changePointer; dcl-s lv_Pointer Pointer; dcl-s lv_Var char(12) based(lv_Pointer); lv_Pointer = pi_Pointer; if lv_var = 'Hello World';    lv_var = 'World Hello'; endIf; return; end-Proc changePointer;   

03

**FREE dcl-s Var1 char(12); dcl-s Ptr pointer inz(%addr(Var1)); dcl-s Var2 char(12) based(Ptr); Var1 = 'Hello World!'; dsply Var2; Var2 = 'World Hello!'; dsply Var1; *inlr = *on; return; 

01

**FREE dcl-s gv_p pointer inz(%addr(text1)); dcl-s gv_Field char(4) based(gv_p); dcl-Ds testDs;        text1 char(4) inz('1234');        text2 char(4) inz('5678'); end-Ds; gv_p = %addr(text2); *inlr = *on; return;