Es gibt hierzu einen MI-Befehl, der einen Wait als kleinste Einheit von 1ms erlaubt.
Hier noch meine Quelle (mit meinem MI-Compiler oder dem API zu erstellen):
Code:
DCL SPCPTR PWAITDECTIME PARM;
DCL OL *ENTRY (PWAITDECTIME) PARM EXT;
DCL DD WAITDECTIME PKD(15,0) BAS(PWAITDECTIME);
DCL DD WAITSTRUCT CHAR(16);
DCL DD WAIT1 BIN(4) DEF(WAITSTRUCT) POS(1);
DCL DD WAIT2 BIN(2) UNSGND DEF(WAITSTRUCT) POS(5);
DCL DD * BIN(2) DEF(WAITSTRUCT) POS(7) INIT(0);
DCL DD WAITOPT CHAR(2) DEF(WAITSTRUCT) POS(9)
INIT(X"2000");
DCL DD * CHAR(6) DEF(WAITSTRUCT) POS(11)
INIT((6)X"00");
DCL DD GESAMTZEIT PKD(31,0);
#DEBUG
ENTRY * (*ENTRY) EXT;
CMPNV(B) WAITDECTIME,0/HI(ZEIT_POSITIV);
NEG(S) WAITDECTIME;
ZEIT_POSITIV:
MULT(R) GESAMTZEIT,WAITDECTIME,P"0.625142";
DIVREM WAIT1,GESAMTZEIT,P"65536",WAIT2;
#NODEBUG
BRK ".WAITTIME";
WAITTIME WAITSTRUCT;
#DEBUG
RTX *;
DCL EXCM MCH1202 EXCID(H'0C02',H'0C0A') BP(FEHLER) IMD
CV(X"00000000");
FEHLER:
CPYNV WAITDECTIME,P"100000";
B ZEIT_POSITIV;
PEND;
Bookmarks