DCL CON MACHINE-CLOCK CHAR(2) INIT(X'0000'); DCL DD MACHINE-DATA CHAR(8) BDRY(8); DCL DD MAT-TIMESTAMP CHAR(8) DEF(MACHINE-DATA) POS(1); DCL DD MAT-TIME-HI BIN(4) UNSGND DEF(MAT-TIMESTAMP) POS(1); DCL DD MAT-TIME-LO BIN(4) UNSGND DEF(MAT-TIMESTAMP) POS(5); DCL DD CLOCK-VALUES(50) CHAR(22); DCL DD TIME-VALUES (50) PKD(21,0); DCL DD EDIT-MASK CHAR(28) INIT( X'B14040AE60AEB2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2AA'); DCL DD DIFF-MASK CHAR(20) INIT( X'B14040AE60AEB2B2B2B2B2AAB34BAEAAAAAAAAAA'); DCL DD I BIN(2); DCL DD CLOCK-PER-TIME PKD(10,5); DCL DD CLOCK-DIFF PKD(21,0); DCL DD TIME-DIFF PKD(21,0); DCL DD TIMESTAMP PKD(21,0); /* CAN HOLD 64-BIT UNSIGNED */ DCL DD TWO**32 PKD(11,0) INIT(P'4294967296'); /*******************************************************************/ ENTRY * EXT; CPYNV I, 0; AGAIN: MATMDATA MACHINE-DATA, MACHINE-CLOCK; MULT TIMESTAMP, MAT-TIME-HI, TWO**32; ADDN(S) TIMESTAMP, MAT-TIME-LO; DIV(SR) TIMESTAMP, 4096; /* NOW MICROSECONDS */ ADDN(S) I, 1; EDIT CLOCK-VALUES(I), TIMESTAMP, EDIT-MASK; CPYNV TIME-VALUES (I), TIMESTAMP; CPYBREP MAT-TIMESTAMP, X'17'; MULT TIMESTAMP, MAT-TIME-HI, TWO**32; ADDN(S) TIMESTAMP, MAT-TIME-LO; ADDN(S) I, 1; EDIT CLOCK-VALUES(I), TIMESTAMP, EDIT-MASK; CPYNV TIME-VALUES (I), TIMESTAMP; CMPNV(B) I, 50/LO(AGAIN); SUBN TIME-DIFF , TIME-VALUES(49), TIME-VALUES( 1); SUBN CLOCK-DIFF, TIME-VALUES(50), TIME-VALUES( 2); DIV CLOCK-PER-TIME, CLOCK-DIFF, TIME-DIFF; EDIT MSG-TEXT(1:12), CLOCK-PER-TIME, DIFF-MASK; CALLI SHOW-MESSAGE, *, .SHOW-MESSAGE; BRK "1"; RTX *; %INCLUDE SHOWMSG