Here is a small subprogram I use to handle this requirement. I have it in an XL but could reside in any appropriate library:
$CONTROL DYNAMIC, NOLIST
IDENTIFICATION DIVISION.
PROGRAM-ID. CPAUSE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TIME-STRING PIC 9(6)V999.
01 STRING-LENGTH PIC S9(4) BINARY VALUE 9.
01 DECIMALS PIC S9(4) BINARY VALUE 3.
01 RETURN-REAL PIC S9(4) BINARY VALUE 1.
01 SCALE PIC S9(4) BINARY VALUE 0.
01 DELIMITERS PIC S9(4) BINARY VALUE 0.
01 REAL-SECONDS PIC S9(9) BINARY VALUE ZERO.
01 ERROR-CODE PIC S9(4) BINARY VALUE ZERO.
LINKAGE SECTION.
01 PAUSE-TIME PIC S9(6)V999 COMP.
*
*** CALLING SYNTAX:
*** CALL "CPAUSE" USING PAUSE-TIME
***
*** PARAMETER SHOULD BE PIC S9(6)V999 COMP AS IT IS HERE,
*** PERMITTING PAUSE ACCURACY DOWN TO 1000ths OF A SECOND.
*
PROCEDURE DIVISION USING PAUSE-TIME.
FIRST-PARA.
MOVE PAUSE-TIME TO TIME-STRING
*
*** HPEXTIN CONVERTS AN ASCII NUMERIC STRING TO
CALL INTRINSIC "HPEXTIN" USING TIME-STRING STRING-LENGTH
DECIMALS RETURN-REAL SCALE DELIMITERS
REAL-SECONDS ERROR-CODE
IF ERROR-CODE = 0
CALL INTRINSIC "PAUSE" USING REAL-SECONDS
END-IF
EXIT PROGRAM.