
Ved Renden 31 2870 Dyssegaard Tel. +45 23 34 54 43
| 
MainframeSupports tip uge 1/2008:
I det forrige danske tip skrev jeg, at du er nødt til at sætte ISPF variablen ZISPFRC,
hvis du vil have ISPSTART programmet til at hoste op med en returkode, der er forskellig
fra nul. Efterfølgende kom jeg i tanke om, at det faktisk ikke er helt lige til at få
sat ZISPFRC fra COBOL eller PL/I. Følgende PL/I procedure kan du benytte til
at sætte ZISPFRC:
setIspfRC: proc(ispfRc);
dcl ispfRC fixed bin(15);
dcl ispfReturnCode pic'(8)9';
dcl isplink ext entry options(asm inter retcode);
ispfReturnCode = ispfRC;
call isplink('VREPLACE', 'ZISPFRC ', bin(8,31), ispfReturnCode);
call isplink('VPUT ', 'ZISPFRC ', 'SHARED ');
end setIspfRC;
De af jer, der hellere vil benytte COBOL, kan finde lidt hjælp i
tip 39/2002. Jeg starter med at undre mig over, at ZISPFRC skal
defineres som en PIC'8(9)' (COBOL: PIC 9(8)), hvorfor ikke som en FIXED BIN(15). Næste
undren opstår, når man har udført en CALL setIspfRC(20), for så returnerer ISPSTART i stedet
returkode 12. Jeg kan i hvert fald ikke få ISPSTART til at returnere andet end 12, når jeg
sætter ZISPFRC > 12. Det begrænser anvendeligheden en del.
For at ISPSTART returnerer værdien af ZISPFRC, så skal ZISPFRC ligge i den såkaldte
shared pool, hvor værdien bliver placeret med en VPUT. For at overføre værdien af ZISPFRC
fra dit program til ISPF er du nødt til at fortælle ISPF, hvilken variabel i dit program
som indeholder ZISPFRC. Dette gøres traditionelt med VDEFINE, men da du kun skal skrive
variablen til ISPF kan du bruge VREPLACE i stedet.
Forrige danske tip
Last tip in english
Tip oversigten
|