mirror of
https://github.com/moshix/mvs.git
synced 2026-03-06 18:51:11 +00:00
assembler time handling
This commit is contained in:
329
time.asm
Normal file
329
time.asm
Normal file
@@ -0,0 +1,329 @@
|
||||
//MOSHIXT JOB CLASS=A,NOTIFY=&SYSUID,MSGCLASS=H,MSGLEVEL=(1,0)
|
||||
// SET STU=&SYSUID /* DATA SET HLQ = USERID */
|
||||
//S0010 EXEC PROC=ASMACLG
|
||||
//C.SYSLIB DD DISP=SHR,DSN=SYS1.MACLIB
|
||||
// DD DISP=SHR,DSN=P53.COPY.BOOKS
|
||||
//G.OUTDD DD SYSOUT=*,RECFM=FBA,LRECL=133
|
||||
//G.SYSPRINT DD SYSOUT=*,RECFM=FBA,LRECL=133
|
||||
//C.SYSIN DD *
|
||||
*
|
||||
PRINT NOGEN
|
||||
YREGS ,
|
||||
CVT DSECT=YES,LIST=NO
|
||||
PRINT GEN
|
||||
*---------------------------------------------------------------
|
||||
** Convert assembly date from format "YYYYMMDD" to "YYYY-MM-DD"
|
||||
*---------------------------------------------------------------
|
||||
LCLC &ASMDATE
|
||||
&ASMDATE SETC '&SYSDATC'(1,4).'-'.'&SYSDATC'(5,2).'-'.'&SYSDATC'(7,2)
|
||||
EJECT ,
|
||||
*
|
||||
** Standard ESA entry housekeeping
|
||||
*
|
||||
TIMEASM CSECT ,
|
||||
BAKR R14,0 Save regs
|
||||
LAE R12,0(R15,0) Get base register
|
||||
USING TIMEASM,R12 Get addressibility
|
||||
*
|
||||
** Obtain the time via the TIME SVC And format it
|
||||
*
|
||||
TIME DEC
|
||||
STCM R0,B'1111',DOUBLE Save time from TIME macro
|
||||
*
|
||||
UNPK MSG3H(9),DOUBLE(5) >
|
||||
MVZ MSG3H(8),=8X'00' >> Hex convert
|
||||
TR MSG3H(8),=C'0123456789ABCDEF' >
|
||||
MVI MSG3H+8,C' ' Fix
|
||||
*- 01234567 01234567
|
||||
*-"HHMMSSTH" to "HH:MM:SS"
|
||||
MVC MSG3C(2),MSG3H
|
||||
MVI MSG3C+2,C':'
|
||||
MVC MSG3C+3(2),MSG3H+2
|
||||
MVI MSG3C+5,C':'
|
||||
MVC MSG3C+6(2),MSG3H+4
|
||||
*
|
||||
** Obtain the time via the STCK instruction and format it
|
||||
*
|
||||
STCK STCKCONI Get it
|
||||
*-This system doesn't have the STCKE support in HLASM yet
|
||||
*=====> STCKE STCKCONIE Get it
|
||||
*
|
||||
** Format the time from the STCK instruction
|
||||
*
|
||||
STCKCONV STCKVAL=STCKCONI, Convert this TOD Stamp @
|
||||
CONVVAL=STCKCONO, ..Into these date/time areas @
|
||||
TIMETYPE=DEC, ..Output time format @
|
||||
DATETYPE=YYYYMMDD, ..Output Date format @
|
||||
MF=(E,PARMLIST)
|
||||
LTR R15,R15 STCKCONV worked?
|
||||
BNZ E$STCKC Failed, ABEND me
|
||||
*
|
||||
UNPK MSG5H(9),STCKCONO(5)
|
||||
MVZ MSG5H(8),=8X'00'
|
||||
TR MSG5H(8),=C'0123456789ABCDEF'
|
||||
UNPK MSG5H+8(9),STCKCONO+4(5)
|
||||
MVZ MSG5H+8(8),=8X'00'
|
||||
TR MSG5H+8(8),=C'0123456789ABCDEF'
|
||||
MVI MSG5H+16,C' '
|
||||
*
|
||||
MVC MSG5C(2),MSG5H
|
||||
MVI MSG5C+2,C':'
|
||||
MVC MSG5C+3(2),MSG5H+2
|
||||
MVI MSG5C+5,C':'
|
||||
MVC MSG5C+6(2),MSG5H+4
|
||||
*
|
||||
LA R0,2
|
||||
LA R1,STCKCONI
|
||||
LA R15,MSG5BV
|
||||
F$M5 DS 0H
|
||||
UNPK 0(9,R15),0(5,R1)
|
||||
MVZ 0(8,R15),=8X'00'
|
||||
TR 0(8,R15),=C'0123456789ABCDEF'
|
||||
MVI 8(R15),C' '
|
||||
LA R1,4(R1)
|
||||
LA R15,9(R15)
|
||||
BCT R0,F$M5
|
||||
*
|
||||
** Format the time from the STCKE instruction
|
||||
*
|
||||
*-This system doesn't have the STCKE support in HLASM yet
|
||||
AGO .STCKEX
|
||||
STCKCONV STCKEVAL=STCKCONIE, Convert this TOD Stamp @
|
||||
CONVVAL=STCKCONO, ..Into these date/time areas @
|
||||
TIMETYPE=DEC, ..Output time format @
|
||||
DATETYPE=YYYYMMDD, ..Output Date format @
|
||||
MF=(E,PARMLIST)
|
||||
LTR R15,R15 STCKCONV worked?
|
||||
BNZ E$STCKC Failed, ABEND me
|
||||
*
|
||||
UNPK MSG6H(9),STCKCONO(5)
|
||||
MVZ MSG6H(8),=8X'00'
|
||||
TR MSG6H(8),=C'0123456789ABCDEF'
|
||||
UNPK MSG6H+8(9),STCKCONO+4(5)
|
||||
MVZ MSG6H+8(8),=8X'00'
|
||||
TR MSG6H+8(8),=C'0123456789ABCDEF'
|
||||
MVI MSG6H+16,C' '
|
||||
*
|
||||
MVC MSG6C(2),MSG6H
|
||||
MVI MSG6C+2,C':'
|
||||
MVC MSG6C+3(2),MSG6H+2
|
||||
MVI MSG6C+5,C':'
|
||||
MVC MSG6C+6(2),MSG6H+4
|
||||
*
|
||||
LA R0,4
|
||||
LA R1,STCKCONIE
|
||||
LA R15,MSG6BV
|
||||
F$M6 DS 0H
|
||||
UNPK 0(9,R15),0(5,R1)
|
||||
MVZ 0(8,R15),=8X'00'
|
||||
TR 0(8,R15),=C'0123456789ABCDEF'
|
||||
MVI 8(R15),C' '
|
||||
LA R1,4(R1)
|
||||
LA R15,9(R15)
|
||||
BCT R0,F$M6
|
||||
.STCKEX ANOP , @#$@#$@#$@#$@#$@#$@#$@#$@#&@#(*$&#@*($&#@$_#$*__
|
||||
B DAVE
|
||||
BC 12,DAVE
|
||||
BC 12,DAVE
|
||||
*
|
||||
BC 3,DAVE
|
||||
BC 3,DAVE
|
||||
DAVE DS 0H
|
||||
*
|
||||
** Let's adjust the STCK output for GMT
|
||||
*
|
||||
LM R2,R3,STCKCONI Get STCK output (local time)
|
||||
*-Adapted from SYS1.V2R5M0.SHASSRC(HASCSRIC):
|
||||
L R5,CVTPTR -> CVT
|
||||
L R5,CVTEXT2-CVTMAP(,R5) -> CVT Exxtension
|
||||
LM R14,R15,CVTLDTO-CVTXTNT2(R5) Time zone diff
|
||||
LM R6,R7,CVTLSO-CVTXTNT2(R5) Get leap seconds
|
||||
ALR R3,R15 Add low order time offset
|
||||
BC 12,CG$NOVER Branch if no overflow
|
||||
AL R2,=F'1' Carry the 1
|
||||
CG$NOVER DS 0H
|
||||
ALR R2,R14 Add high order words
|
||||
SLR R3,R7 Minus low-order leap seconds
|
||||
BC 3,CG$BORRW Branch if no borrow
|
||||
BCTR R2,0 Subtract one for borrow
|
||||
CG$BORRW DS 0H
|
||||
SLR R2,R6 Minus high-order leap seconds
|
||||
STM R2,R3,STCKCONI Save TOD adjusted for GMT
|
||||
*
|
||||
STCKCONV STCKVAL=STCKCONI, Convert this TOD Stamp @
|
||||
CONVVAL=STCKCONO, ..Into these date/time areas @
|
||||
TIMETYPE=DEC, ..Output time format @
|
||||
DATETYPE=YYYYMMDD, ..Output Date format @
|
||||
MF=(E,PARMLIST)
|
||||
LTR R15,R15 STCKCONV worked?
|
||||
BNZ E$STCKC Failed, ABEND me
|
||||
*
|
||||
UNPK MSG10H(9),STCKCONO(5)
|
||||
MVZ MSG10H(8),=8X'00'
|
||||
TR MSG10H(8),=C'0123456789ABCDEF'
|
||||
UNPK MSG10H+8(9),STCKCONO+4(5)
|
||||
MVZ MSG10H+8(8),=8X'00'
|
||||
TR MSG10H+8(8),=C'0123456789ABCDEF'
|
||||
MVI MSG10H+16,C' '
|
||||
*
|
||||
MVC MSG10C(2),MSG10H
|
||||
MVI MSG10C+2,C':'
|
||||
MVC MSG10C+3(2),MSG10H+2
|
||||
MVI MSG10C+5,C':'
|
||||
MVC MSG10C+6(2),MSG10H+4
|
||||
*
|
||||
LA R0,2
|
||||
LA R1,STCKCONI
|
||||
LA R15,MSG10BV
|
||||
F$M10 DS 0H
|
||||
UNPK 0(9,R15),0(5,R1)
|
||||
MVZ 0(8,R15),=8X'00'
|
||||
TR 0(8,R15),=C'0123456789ABCDEF'
|
||||
MVI 8(R15),C' '
|
||||
LA R1,4(R1)
|
||||
LA R15,9(R15)
|
||||
BCT R0,F$M10
|
||||
*
|
||||
** Print messages on console
|
||||
*
|
||||
MVC WTOMSG1+4+28(L'MSG3C),MSG3C
|
||||
WTO ,MF=(E,WTOMSG1)
|
||||
MVC WTOMSG2+4+28(L'MSG5C),MSG5C
|
||||
WTO ,MF=(E,WTOMSG2)
|
||||
MVC WTOMSG3+4+28(L'MSG10C),MSG10C
|
||||
WTO ,MF=(E,WTOMSG3)
|
||||
*
|
||||
** Print messages on SYSPRINT file
|
||||
*
|
||||
OPEN (SYSPRINT,(OUTPUT))
|
||||
PUT SYSPRINT,MSG1
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG3
|
||||
*
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG5B
|
||||
PUT SYSPRINT,MSG5 STCK
|
||||
*
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG10B GMT
|
||||
PUT SYSPRINT,MSG10 GMT
|
||||
*
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG6B
|
||||
PUT SYSPRINT,MSG6 STCKE
|
||||
*
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG7
|
||||
PUT SYSPRINT,MSG8
|
||||
PUT SYSPRINT,MSG9
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
CLOSE (SYSPRINT)
|
||||
*
|
||||
** Standard ESA exit housekeeping code
|
||||
*
|
||||
SPACE 2
|
||||
EXIT DS 0H
|
||||
SLR R15,R15 Set return code
|
||||
PR , Return to caller
|
||||
SPACE 1
|
||||
*
|
||||
** Error: a macro failed. ABEND so we can look in dump for clues
|
||||
*
|
||||
E$CONVT ABEND 1,DUMP
|
||||
E$STCKC ABEND 2,DUMP
|
||||
*
|
||||
** Variables
|
||||
*
|
||||
DOUBLE DS D
|
||||
DOUBLE2 DS D
|
||||
PARMLIST DS 20F
|
||||
DS 0D
|
||||
STCKCONI DS D
|
||||
STCKCONIE DS 2D
|
||||
STCKCONO DS CL16
|
||||
*
|
||||
CONVTODW DS 0F
|
||||
CT_TIME DS XL4
|
||||
DS XL4
|
||||
CT_DATE DS XL4
|
||||
DS XL4
|
||||
*
|
||||
MSG1 DC CL80' '
|
||||
ORG MSG1 Redefine CL80 area
|
||||
DC C'Assembler (Non-LE) --------------------------------'
|
||||
ORG ,
|
||||
MSG2 DC CL80' '
|
||||
MSG3 DC CL80' '
|
||||
ORG MSG3 Redefine CL80 area
|
||||
DC C'TIME macro returns: '
|
||||
MSG3H DC C'xxxxxxxx'
|
||||
DC C' - Formatted: '
|
||||
MSG3C DC C'hh:mm:ss'
|
||||
DC C' (local)'
|
||||
ORG ,
|
||||
MSG5 DC CL80' '
|
||||
ORG MSG5 Redefine CL80 area
|
||||
DC C'STCK - STCKCON macro returns: '
|
||||
MSG5H DC C'xxxxxxxxyyyyyyyy'
|
||||
DC C' - Formatted: '
|
||||
MSG5C DC C'hh:mm:ss'
|
||||
DC C' (local)'
|
||||
ORG ,
|
||||
MSG5B DC CL80' '
|
||||
ORG MSG5B Redefine CL80 area
|
||||
DC C'STCK returned: '
|
||||
MSG5BV DC C'xxxxxxxx xxxxxxxx'
|
||||
DC C' for local time'
|
||||
ORG ,
|
||||
MSG6 DC CL80' '
|
||||
ORG MSG6 Redefine CL80 area
|
||||
DC C'STCKE - STCKCON macro returns: '
|
||||
MSG6H DC C'xxxxxxxxyyyyyyyy'
|
||||
DC C' - Formatted: '
|
||||
MSG6C DC C'hh:mm:ss'
|
||||
DC C' (local)'
|
||||
ORG ,
|
||||
MSG6B DC CL80' '
|
||||
ORG MSG6B Redefine CL80 area
|
||||
DC C'STCKE returned: '
|
||||
MSG6BV DC C'xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx'
|
||||
DC C' for local time'
|
||||
ORG ,
|
||||
MSG10 DC CL80' '
|
||||
ORG MSG10 Redefine CL80 area
|
||||
DC C'STCK - STCKCON macro returns: '
|
||||
MSG10H DC C'xxxxxxxxyyyyyyyy'
|
||||
DC C' - Formatted: '
|
||||
MSG10C DC C'hh:mm:ss'
|
||||
DC C' (GMT)'
|
||||
ORG ,
|
||||
MSG10B DC CL80' '
|
||||
ORG MSG10B Redefine CL80 area
|
||||
DC C'STCK converted to: '
|
||||
MSG10BV DC C'xxxxxxxx xxxxxxxx'
|
||||
DC C' for GMT time'
|
||||
ORG ,
|
||||
*
|
||||
MSG7 DC CL80'Environment information:'
|
||||
MSG8 DC CL80'- Date Assembled...........&ASMDATE.'
|
||||
MSG9 DC CL80'- Assembler version........&SYSVER.'
|
||||
*
|
||||
* 0....+....1....+....2....+....
|
||||
WTOMSG1 WTO 'Assembler (non-LE) returns: hh:mm:ss (via TIME SVC opti@
|
||||
on - DEC option)',MF=L
|
||||
WTOMSG2 WTO 'Assembler (non-LE) returns: hh:mm:ss (via STCK)', @
|
||||
MF=L
|
||||
WTOMSG3 WTO 'Assembler (non-LE) returns: hh:mm:ss (after STCK is con@
|
||||
verted via CVT TimeZone)',MF=L
|
||||
*
|
||||
SYSPRINT DCB DDNAME=SYSPRINT, @
|
||||
DSORG=PS,MACRF=PM,RECFM=F,LRECL=80
|
||||
*
|
||||
LTORG ,
|
||||
DS 0D
|
||||
TIMEASML EQU *-TIMEASM Trivia about module length
|
||||
END ,
|
||||
/*
|
||||
//SYSUDUMP DD SYSOUT=*,RECFM=FBA,LRECL=133
|
||||
//G.SYSUDUMP DD SYSOUT=*,RECFM=FBA,LRECL=133
|
||||
|
||||
332
time_nonLE.asm
Normal file
332
time_nonLE.asm
Normal file
@@ -0,0 +1,332 @@
|
||||
|
||||
*
|
||||
* Name: TIMEASMN
|
||||
*
|
||||
* Author: David Alcock
|
||||
*
|
||||
* Written: 2000-02-16
|
||||
*
|
||||
* Purpose: Shows local and GMT time in Assembler
|
||||
*
|
||||
* Attributes: Non-reentrant, Non-Authorized
|
||||
*
|
||||
* Requirements: HLASM or higher
|
||||
*
|
||||
PRINT NOGEN
|
||||
YREGS ,
|
||||
CVT DSECT=YES,LIST=NO
|
||||
PRINT GEN
|
||||
*
|
||||
** Convert assembly date from format "YYYYMMDD" to "YYYY-MM-DD"
|
||||
*
|
||||
LCLC &ASMDATE
|
||||
&ASMDATE SETC '&SYSDATC'(1,4).'-'.'&SYSDATC'(5,2).'-'.'&SYSDATC'(7,2)
|
||||
EJECT ,
|
||||
*
|
||||
** Standard ESA entry housekeeping
|
||||
*
|
||||
TIMEASM CSECT ,
|
||||
BAKR R14,0 Save regs
|
||||
LAE R12,0(R15,0) Get base register
|
||||
USING TIMEASM,R12 Get addressibility
|
||||
*
|
||||
** Obtain the time via the TIME SVC And format it
|
||||
*
|
||||
TIME DEC
|
||||
STCM R0,B'1111',DOUBLE Save time from TIME macro
|
||||
*
|
||||
UNPK MSG3H(9),DOUBLE(5) >
|
||||
MVZ MSG3H(8),=8X'00' >> Hex convert
|
||||
TR MSG3H(8),=C'0123456789ABCDEF' >
|
||||
MVI MSG3H+8,C' ' Fix
|
||||
*- 01234567 01234567
|
||||
*-"HHMMSSTH" to "HH:MM:SS"
|
||||
MVC MSG3C(2),MSG3H
|
||||
MVI MSG3C+2,C':'
|
||||
MVC MSG3C+3(2),MSG3H+2
|
||||
MVI MSG3C+5,C':'
|
||||
MVC MSG3C+6(2),MSG3H+4
|
||||
*
|
||||
** Obtain the time via the STCK instruction and format it
|
||||
*
|
||||
STCK STCKCONI Get it
|
||||
*-This system doesn't have the STCKE support in HLASM yet
|
||||
*=====> STCKE STCKCONIE Get it
|
||||
*
|
||||
** Format the time from the STCK instruction
|
||||
*
|
||||
STCKCONV STCKVAL=STCKCONI, Convert this TOD Stamp @
|
||||
CONVVAL=STCKCONO, ..Into these date/time areas @
|
||||
TIMETYPE=DEC, ..Output time format @
|
||||
DATETYPE=YYYYMMDD, ..Output Date format @
|
||||
MF=(E,PARMLIST)
|
||||
LTR R15,R15 STCKCONV worked?
|
||||
BNZ E$STCKC Failed, ABEND me
|
||||
*
|
||||
UNPK MSG5H(9),STCKCONO(5)
|
||||
MVZ MSG5H(8),=8X'00'
|
||||
TR MSG5H(8),=C'0123456789ABCDEF'
|
||||
UNPK MSG5H+8(9),STCKCONO+4(5)
|
||||
MVZ MSG5H+8(8),=8X'00'
|
||||
TR MSG5H+8(8),=C'0123456789ABCDEF'
|
||||
MVI MSG5H+16,C' '
|
||||
*
|
||||
MVC MSG5C(2),MSG5H
|
||||
MVI MSG5C+2,C':'
|
||||
MVC MSG5C+3(2),MSG5H+2
|
||||
MVI MSG5C+5,C':'
|
||||
MVC MSG5C+6(2),MSG5H+4
|
||||
*
|
||||
LA R0,2
|
||||
LA R1,STCKCONI
|
||||
LA R15,MSG5BV
|
||||
F$M5 DS 0H
|
||||
UNPK 0(9,R15),0(5,R1)
|
||||
MVZ 0(8,R15),=8X'00'
|
||||
TR 0(8,R15),=C'0123456789ABCDEF'
|
||||
MVI 8(R15),C' '
|
||||
LA R1,4(R1)
|
||||
LA R15,9(R15)
|
||||
BCT R0,F$M5
|
||||
*
|
||||
** Format the time from the STCKE instruction
|
||||
*
|
||||
*-This system doesn't have the STCKE support in HLASM yet
|
||||
AGO .STCKEX
|
||||
STCKCONV STCKEVAL=STCKCONIE, Convert this TOD Stamp @
|
||||
CONVVAL=STCKCONO, ..Into these date/time areas @
|
||||
TIMETYPE=DEC, ..Output time format @
|
||||
DATETYPE=YYYYMMDD, ..Output Date format @
|
||||
MF=(E,PARMLIST)
|
||||
LTR R15,R15 STCKCONV worked?
|
||||
BNZ E$STCKC Failed, ABEND me
|
||||
*
|
||||
UNPK MSG6H(9),STCKCONO(5)
|
||||
MVZ MSG6H(8),=8X'00'
|
||||
TR MSG6H(8),=C'0123456789ABCDEF'
|
||||
UNPK MSG6H+8(9),STCKCONO+4(5)
|
||||
MVZ MSG6H+8(8),=8X'00'
|
||||
TR MSG6H+8(8),=C'0123456789ABCDEF'
|
||||
MVI MSG6H+16,C' '
|
||||
*
|
||||
MVC MSG6C(2),MSG6H
|
||||
MVI MSG6C+2,C':'
|
||||
MVC MSG6C+3(2),MSG6H+2
|
||||
MVI MSG6C+5,C':'
|
||||
MVC MSG6C+6(2),MSG6H+4
|
||||
*
|
||||
LA R0,4
|
||||
LA R1,STCKCONIE
|
||||
LA R15,MSG6BV
|
||||
F$M6 DS 0H
|
||||
UNPK 0(9,R15),0(5,R1)
|
||||
MVZ 0(8,R15),=8X'00'
|
||||
TR 0(8,R15),=C'0123456789ABCDEF'
|
||||
MVI 8(R15),C' '
|
||||
LA R1,4(R1)
|
||||
LA R15,9(R15)
|
||||
BCT R0,F$M6
|
||||
.STCKEX ANOP , @#$@#$@#$@#$@#$@#$@#$@#$@#&@#(*$&#@*($&#@$_#$*__
|
||||
B DAVE
|
||||
BC 12,DAVE
|
||||
BC 12,DAVE
|
||||
*
|
||||
BC 3,DAVE
|
||||
BC 3,DAVE
|
||||
DAVE DS 0H
|
||||
*
|
||||
** Let's adjust the STCK output for GMT
|
||||
*
|
||||
LM R2,R3,STCKCONI Get STCK output (local time)
|
||||
*-Adapted from SYS1.V2R5M0.SHASSRC(HASCSRIC):
|
||||
L R5,CVTPTR -> CVT
|
||||
L R5,CVTEXT2-CVTMAP(,R5) -> CVT Exxtension
|
||||
LM R14,R15,CVTLDTO-CVTXTNT2(R5) Time zone diff
|
||||
LM R6,R7,CVTLSO-CVTXTNT2(R5) Get leap seconds
|
||||
ALR R3,R15 Add low order time offset
|
||||
BC 12,CG$NOVER Branch if no overflow
|
||||
AL R2,=F'1' Carry the 1
|
||||
CG$NOVER DS 0H
|
||||
ALR R2,R14 Add high order words
|
||||
SLR R3,R7 Minus low-order leap seconds
|
||||
BC 3,CG$BORRW Branch if no borrow
|
||||
BCTR R2,0 Subtract one for borrow
|
||||
CG$BORRW DS 0H
|
||||
SLR R2,R6 Minus high-order leap seconds
|
||||
STM R2,R3,STCKCONI Save TOD adjusted for GMT
|
||||
*
|
||||
STCKCONV STCKVAL=STCKCONI, Convert this TOD Stamp @
|
||||
CONVVAL=STCKCONO, ..Into these date/time areas @
|
||||
TIMETYPE=DEC, ..Output time format @
|
||||
DATETYPE=YYYYMMDD, ..Output Date format @
|
||||
MF=(E,PARMLIST)
|
||||
LTR R15,R15 STCKCONV worked?
|
||||
BNZ E$STCKC Failed, ABEND me
|
||||
*
|
||||
UNPK MSG10H(9),STCKCONO(5)
|
||||
MVZ MSG10H(8),=8X'00'
|
||||
TR MSG10H(8),=C'0123456789ABCDEF'
|
||||
UNPK MSG10H+8(9),STCKCONO+4(5)
|
||||
MVZ MSG10H+8(8),=8X'00'
|
||||
TR MSG10H+8(8),=C'0123456789ABCDEF'
|
||||
MVI MSG10H+16,C' '
|
||||
*
|
||||
MVC MSG10C(2),MSG10H
|
||||
MVI MSG10C+2,C':'
|
||||
MVC MSG10C+3(2),MSG10H+2
|
||||
MVI MSG10C+5,C':'
|
||||
MVC MSG10C+6(2),MSG10H+4
|
||||
*
|
||||
LA R0,2
|
||||
LA R1,STCKCONI
|
||||
LA R15,MSG10BV
|
||||
F$M10 DS 0H
|
||||
UNPK 0(9,R15),0(5,R1)
|
||||
MVZ 0(8,R15),=8X'00'
|
||||
TR 0(8,R15),=C'0123456789ABCDEF'
|
||||
MVI 8(R15),C' '
|
||||
LA R1,4(R1)
|
||||
LA R15,9(R15)
|
||||
BCT R0,F$M10
|
||||
*
|
||||
** Print messages on console
|
||||
*
|
||||
MVC WTOMSG1+4+28(L'MSG3C),MSG3C
|
||||
WTO ,MF=(E,WTOMSG1)
|
||||
MVC WTOMSG2+4+28(L'MSG5C),MSG5C
|
||||
WTO ,MF=(E,WTOMSG2)
|
||||
MVC WTOMSG3+4+28(L'MSG10C),MSG10C
|
||||
WTO ,MF=(E,WTOMSG3)
|
||||
*
|
||||
** Print messages on SYSPRINT file
|
||||
*
|
||||
OPEN (SYSPRINT,(OUTPUT))
|
||||
PUT SYSPRINT,MSG1
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG3
|
||||
*
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG5B
|
||||
PUT SYSPRINT,MSG5 STCK
|
||||
*
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG10B GMT
|
||||
PUT SYSPRINT,MSG10 GMT
|
||||
*
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG6B
|
||||
PUT SYSPRINT,MSG6 STCKE
|
||||
*
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
PUT SYSPRINT,MSG7
|
||||
PUT SYSPRINT,MSG8
|
||||
PUT SYSPRINT,MSG9
|
||||
PUT SYSPRINT,MSG2 Blank line
|
||||
CLOSE (SYSPRINT)
|
||||
*
|
||||
** Standard ESA exit housekeeping code
|
||||
*
|
||||
SPACE 2
|
||||
EXIT DS 0H
|
||||
SLR R15,R15 Set return code
|
||||
PR , Return to caller
|
||||
SPACE 1
|
||||
*
|
||||
** Error: a macro failed. ABEND so we can look in dump for clues
|
||||
*
|
||||
E$CONVT ABEND 1,DUMP
|
||||
E$STCKC ABEND 2,DUMP
|
||||
*
|
||||
** Variables
|
||||
*
|
||||
DOUBLE DS D
|
||||
DOUBLE2 DS D
|
||||
PARMLIST DS 20F
|
||||
DS 0D
|
||||
STCKCONI DS D
|
||||
STCKCONIE DS 2D
|
||||
STCKCONO DS CL16
|
||||
*
|
||||
CONVTODW DS 0F
|
||||
CT_TIME DS XL4
|
||||
DS XL4
|
||||
CT_DATE DS XL4
|
||||
DS XL4
|
||||
*
|
||||
MSG1 DC CL80' '
|
||||
ORG MSG1 Redefine CL80 area
|
||||
DC C'Assembler (Non-LE) --------------------------------'
|
||||
ORG ,
|
||||
MSG2 DC CL80' '
|
||||
MSG3 DC CL80' '
|
||||
ORG MSG3 Redefine CL80 area
|
||||
DC C'TIME macro returns: '
|
||||
MSG3H DC C'xxxxxxxx'
|
||||
DC C' - Formatted: '
|
||||
MSG3C DC C'hh:mm:ss'
|
||||
DC C' (local)'
|
||||
ORG ,
|
||||
MSG5 DC CL80' '
|
||||
ORG MSG5 Redefine CL80 area
|
||||
DC C'STCK - STCKCON macro returns: '
|
||||
MSG5H DC C'xxxxxxxxyyyyyyyy'
|
||||
DC C' - Formatted: '
|
||||
MSG5C DC C'hh:mm:ss'
|
||||
DC C' (local)'
|
||||
ORG ,
|
||||
MSG5B DC CL80' '
|
||||
ORG MSG5B Redefine CL80 area
|
||||
DC C'STCK returned: '
|
||||
MSG5BV DC C'xxxxxxxx xxxxxxxx'
|
||||
DC C' for local time'
|
||||
ORG ,
|
||||
MSG6 DC CL80' '
|
||||
ORG MSG6 Redefine CL80 area
|
||||
DC C'STCKE - STCKCON macro returns: '
|
||||
MSG6H DC C'xxxxxxxxyyyyyyyy'
|
||||
DC C' - Formatted: '
|
||||
MSG6C DC C'hh:mm:ss'
|
||||
DC C' (local)'
|
||||
ORG ,
|
||||
MSG6B DC CL80' '
|
||||
ORG MSG6B Redefine CL80 area
|
||||
DC C'STCKE returned: '
|
||||
MSG6BV DC C'xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx'
|
||||
DC C' for local time'
|
||||
ORG ,
|
||||
MSG10 DC CL80' '
|
||||
ORG MSG10 Redefine CL80 area
|
||||
DC C'STCK - STCKCON macro returns: '
|
||||
MSG10H DC C'xxxxxxxxyyyyyyyy'
|
||||
DC C' - Formatted: '
|
||||
MSG10C DC C'hh:mm:ss'
|
||||
DC C' (GMT)'
|
||||
ORG ,
|
||||
MSG10B DC CL80' '
|
||||
ORG MSG10B Redefine CL80 area
|
||||
DC C'STCK converted to: '
|
||||
MSG10BV DC C'xxxxxxxx xxxxxxxx'
|
||||
DC C' for GMT time'
|
||||
ORG ,
|
||||
*
|
||||
MSG7 DC CL80'Environment information:'
|
||||
MSG8 DC CL80'- Date Assembled...........&ASMDATE.'
|
||||
MSG9 DC CL80'- Assembler version........&SYSVER.'
|
||||
*
|
||||
* 0....+....1....+....2....+....
|
||||
WTOMSG1 WTO 'Assembler (non-LE) returns: hh:mm:ss (via TIME SVC opti@
|
||||
on - DEC option)',MF=L
|
||||
WTOMSG2 WTO 'Assembler (non-LE) returns: hh:mm:ss (via STCK)', @
|
||||
MF=L
|
||||
WTOMSG3 WTO 'Assembler (non-LE) returns: hh:mm:ss (after STCK is con@
|
||||
verted via CVT TimeZone)',MF=L
|
||||
*
|
||||
SYSPRINT DCB DDNAME=SYSPRINT, @
|
||||
DSORG=PS,MACRF=PM,RECFM=F,LRECL=80
|
||||
*
|
||||
LTORG ,
|
||||
DS 0D
|
||||
TIMEASML EQU *-TIMEASM Trivia about module length
|
||||
END ,
|
||||
//L.SYSPRINT DD SYSOUT=Z <- non-output
|
||||
//G.SYSPRINT DD SYSOUT=*
|
||||
Reference in New Issue
Block a user