Joined: 01 Aug 2005 Posts: 12 Topics: 4 Location: India
Posted: Sun Jan 21, 2007 11:21 pm Post subject: Sleep Function for delay without CPU usage- z/OS 01.7 ver.
Hi,
Can anyone please advice on how is the usage of SLEEP function in a cobol-ims pgm. The OS version is z/OS 01.7 ver. This function provides a delay without CPU consumption. Please note, i am aware of other similar functions like "ILBOWAT0", but i am specifically looking for the SLEEP fn.
Joined: 01 Aug 2005 Posts: 12 Topics: 4 Location: India
Posted: Mon Jan 22, 2007 7:52 pm Post subject:
Hi Kolsu,
Thanks for the prompt response. I did had viewed the posts mentioned by you. But as i mentioned above i am aware of "ILBOWAT0" and SLEEP usage in JCL. Here i am asking for USAGE of SLEEP in the cobol program. Please advice.
Joined: 20 Oct 2006 Posts: 1411 Topics: 26 Location: germany
Posted: Tue Jan 23, 2007 5:10 am Post subject:
this is a CALL to an assembler program which will cause the task to 'sleep':
Code:
PRINT GEN
SNOOZER CSECT
***********************************************************************
*---------------------------------------------------------------------*
* *
* THIS SUB-PROGRAM IS CALLED, PASSING A 07-BYTE DISPLAY *
* NUMERIC VALUE, REPRESENTED AS C'SSSSSTH' (SECONDS, TENTHS *
* AND HUNDREDTHS). *
* *
* IT INVOKES THE MVS 'STIMER' MACRO, TO SUSPEND A JOB AND/OR *
* JOB-STEP, BASED UPON THE 07-BYTE PARAMETER VALUE. *
* *
* SYNTAX EXAMPLE FROM COBOL, PASSING A 60-SECOND INTERVAL: *
* *
* 03 WS-INTERVAL PIC 9(07). *
* 03 WS-SNOOZER PIC X(08) VALUE 'SNOOZER'. *
* *
* MOVE 6000 TO WS-INTERVAL. *
* *
* CALL WS-SNOOZER USING WS-INTERVAL. *
* *
* THE RETURN-CODE SPECIAL-REGISTER CAN BE CHECKED FOR SUCCESS *
* OR FAILURE, WITH 16=GETMAIN ERROR AND 08=INVALID INTERVAL. *
* *
* THERE IS CODE TO PREVENT THIS SUB-PROGRAM FROM BEING INVOKED *
* FROM CICS. IF THE RUN-ENVIRONMENT IS DETERMINED TO BE CICS, *
* THE RETURN-CODE SPECIAL-REGISTER WILL EQUAL 4095. *
* *
* OF COURSE, A RETURN-CODE VALUE OF ZERO INDICATES SUCCESS. *
* *
* NOTE THAT LABEL 'MAXINTVL' IS SET TO A SITE-SPECIFIC VALUE. *
* *
* CURRENTLY, IT IS SET TO 300 SECONDS (5 MINUTES) AND SHOULD *
* BE ADJUSTED ACCORDINGLY. *
* *
*---------------------------------------------------------------------*
***********************************************************************
USING *,R12 INFORM ASSEMBLER
SAVE (14,12) SAVE CALLERS REGISTERS
LA R12,0(,R15) R12 IS OUR BASE-REGISTER
B BEGNEXEC BEGIN EXECUTION
YREGS MVS REGISTER-MACRO
SNOOZER AMODE 31
SNOOZER RMODE ANY
MAXINTVL DC F'30000' MAX-INTERVAL FOR 'STIMER'
TWNTY4HR DC F'8640000' 24-HOUR MAX-INTERVAL
EYECTCHR DS 0CL48 PROGRAM EYECATCHER
DC PL2'407'
DC CL10'EYECATCHER'
DC PL1'7'
DC CL6' ===>'
PROGNAME DC CL8'SNOOZER'
DC CL2','
ASMBLYDT DC CL8'&SYSDATC' FMT=CCYYMMDD
DC CL2','
ASMBLYTM DC CL9'&SYSTIME..00 ' FMT=HHMM00 (BYTE-09 IS BLANK)
TRANSTBL DS 0CL256 INTERVAL VALIDATION-TABLE
DC CL256' ' INITIALIZE TO SPACES
ORG TRANSTBL+X'F0' POINT TO NUMERICS-OFFSET
DC XL10'00' ENSURE X'00'S FOR 0-9
ORG TRANSTBL+L'TRANSTBL RESET LOCATION COUNTER
CNOP 0,4 ENSURE ALIGNMENT
BEGNEXEC EQU *
DFHAFCD TYPE=LOCATE CHECK RUN-ENVIRONMENT
LTR R15,R15 BATCH ENVIRONMENT?
BZ ADDRPLST YES, ADDRESS PARM-LIST
CLC 0(3,R15),=C'AFC' BATCH ENVIRONMENT?
LA R15,4095 LOAD WITH F'4095'
BE GOBACK NO, RETURN WITH F'4095'
ADDRPLST EQU *
LR R9,R1 LOAD R1 CONTENTS
LA R9,0(,R9) ENSURE 'CLEAN' ADDRESS
LA R0,STGAREAL LOAD DYNAMIC-STG LGTH
GETMAIN RC LV=(0),LOC=ANY REQUEST FOR DYNAMIC-STG
LTR R15,R15 ACQUIRED SUCCESSFULLY?
BNZ GOBACK NO, RETURN WITH ERROR
LA R11,0(,R1) DYNAMIC-STG BASE-REGISTER
USING STGDSECT,R11 INFORM ASSEMBLER
XC STGAREA(STGAREAL),STGAREA
LA R15,REGSAVEA CHAIN SAVEAREAS
ST R13,4(,R15) STORE CALLER'S 'R13'
ST R15,8(,R13) STORE OUR 'RSA' ADDRESS
LR R13,R15 POINT TO OUR 'RSA'
MVI RETCODE+1,X'08' SET TO H'8'
TRT 0(7,R9),TRANSTBL VALID NUMERICS?
BNZ RTN2CLLR NO, RETURN TO THE CALLER
PACK DWORD,0(7,R9) PACK AS P'00000000SSSSSTH'
CVB R7,DWORD MAKE IT BINARY
LTR R7,R7 PARAMETER ZERO?
BZ RTN2CLLR YES, RETURN TO THE CALLER
C R7,TWNTY4HR PARAMETER EXCEEDS 24-HOURS?
BH RTN2CLLR YES, RETURN TO THE CALLER
C R7,MAXINTVL PARAMETER EXCEEDS MAX-INTERVAL?
BH RTN2CLLR YES, RETURN TO THE CALLER
XC DWORD,DWORD ENSURE X'00'S
ST R7,DWORD POPULATE 'STIMER' INTERVAL
STIMER WAIT,BINTVL=DWORD ISSUE 'STIMER'
MVI RETCODE+1,X'00' RESET TO H'0'
RTN2CLLR EQU *
LA R15,REGSAVEA POINT TO OUR 'RSA'
L R13,4(,R15) RESTORE CALLER'S R13
LH R9,RETCODE SAVE RETURN-CODE
LA R0,STGAREAL LOAD DYNAMIC STG-LGTH
FREEMAIN RU,LV=(0),A=(11) FREE DYNAMIC-STG
LR R15,R9 OVERRIDE 'FREEMAIN' R15
GOBACK EQU *
RETURN (14,12),RC=(15) RESTORE REGISTERS AND RETURN
LTORG , LITERAL-ORG
STGDSECT DSECT DYNAMIC-STG DSECT (R11)
STGAREA EQU * BEGIN DYNAMIC-STG
DWORD DS D ALIGNED DBLWORD-WORKAREA
RETCODE DS H RETURN-CODE ALIGNED-HWORD (R15)
REGSAVEA DS XL72 18-WORD REGISTER-SAVEAREA
STGAREAL EQU *-STGAREA DYNAMIC-STG TOTAL-LGTH
END , END 'SNOOZER'
don't know if you can implement it in an IMS environment. _________________ Dick Brenholtz
American living in Varel, Germany
Joined: 20 Oct 2006 Posts: 1411 Topics: 26 Location: germany
Posted: Tue Jan 23, 2007 5:45 am Post subject:
and here is another assembler module that can be called which will invoke the 'sleep' macro.
Code:
DFA002 TITLE 'FUER EINE VORGEGEBENE ZEIT(SEC) SCHLAFEN LEGEN' 00001004
SPACE 3 00002000
PRINT GEN 00002100
********************************************************* 00002206
* PROGRAM NAME: DFA002 00002306
* ERSTERSTELLER : G}NTER NAUHEIMER
* 00002506
* ZWECK : 00002606
* DEN COBOLPROGRAMMEN SOLL DIE M
_________________ Dick Brenholtz
American living in Varel, Germany
Joined: 01 Aug 2005 Posts: 12 Topics: 4 Location: India
Posted: Tue Jan 23, 2007 7:01 pm Post subject:
Thanks Dick and Kolusu...But i am know to options of assembler routines, "ILBOWAT0" and JCL driven delays. Here i am specifically looking if SLEEP can be used in a cobol-IMS program. I am aware of SLEEP calls on a UNIX platform. But just wondering if it can be called from a cobol-IMS program on Z/OS platform.
Appreciate your time on this. _________________ Cheers,
Vikas
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
Posted: Tue Jan 23, 2007 11:41 pm Post subject:
What SLEEP are you referring to? There is not a SLEEP verb in COBOL (I assume, or someone would have pointed it out). Do you mean calling the actual sleep (lower case) command in USS? That seems like a lot of overhead to call something that literally does nothing (especially to save system resources) and probably just calls STIMER anyway, but I suppose you could call BPXBATCH with a parameter the same way you'd do it from JCL.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum