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;