Mike Walter
Mike has been developing VM tools to make his job easier and him more productive since 1978. Perhaps some of his tools can make your job easier and you more productive, too. Or, perhaps some might serve as kernels which you can grow into your own tools -- which, of course, you would share with the VM Community, too!
Navigation to Mike's utilities
SFDATTIM: Display timestamps for a spool fileTIMEDIFF: Calculate the difference between two dates and/or times
FINDFILE: Search for files on minidisks or SFS directories
LOSTDISK: Locate files on lost minidisk(s)
QOWNER: Display linked minidisks
ONELINE: Compress EXECs into one line
REXXBACK: Provide names of all calling REXX programs
HUNGUSER: Documention on how to debug a virtual machine stuck in LOGOFF/FORCE Pending
DYNIODF: Dynamic I/O Cheatsheet
WAKEUP: Tailorable Wakeup sample EXEC
TZDATES: Creates a file of "SYSTEM CONFIG" timezone statements between two given years up to 2042.
Downloads: Downloads for the described utilities
SFDATTIM (v1.4.1)
SFDATTIMe is used to display the full mm/dd/yy and hh:mm:ss Open, Close,
(or both) date and time of a specified SPOOL file. Local timezone
offset,and UTC and TOD support is included.
+----*-----+
>--SFDATTIM--SpoolFileID--+--userid--+--+---------------------+-----><
+-(-+-----------------+
+- |Options |-+---+
+-)-+
or as a REXX function call:'
+----*----+
>--crdate=sfdattim(SpoolFileID-+-userid--+-+------------+-)---------><
+- |Options|-+
Where:
SpoolFileID
is the 1-4 digit SPOOL file number of which the full mm/dd/yy
and hh:mm:ss creation date/time is to be returned.
userid
is the userid which "owns" the SPOOL file. If you have
CP privclass "C" or "E" it may be an ID other than your own.
DEFAULT=* (your own userid).
Options:
OPEN
requests return of the "mm/dd/yy hh:mm:ss" when the SPOOL file was
opened.
Default=OPEN
CLOSe
requests return of the "mm/dd/yy hh:mm:ss" when the SPOOL file was
closed. If the SPOOL file is still open, "00/00/00 00:00:00" is
returned.
This option is available only to those with system privclass of
"C" or "E".'
BOTH
requests return of both Open and Close date and time.
Synonymous with entry of "OPEN" -and- "CLOSE" options.
TIMEzone +n/-n
Where "n" is the number of hours the system is running east or west
of UTC (Coordinated Universal Time in Greenwich, England).
"n" must be in the range 0-23.
The open AND close date/time of SPOOL files are stored as UTC. This
option permits displaying the date and time of the file would be
shown in response to a "CP Query Reader ALL" command.
CP automatically offsets the SPOOL file date/time by the number of
hours the system is east or west of UTC.
In the United States, one would want to subtract a number of hours
from the UTC on SPOOL to derive the local time, as the time in
in Greenwich, England is some number of hours ahead of U.S. times.
The specified number of hours is added to or subtracted from the
SPOOL file dates/times before display.
Default=the active offset as displayed in response to a
"CP Query TIMEZONE" command.
When TIMEZONE is specified, the response is returned as:
date1 time1 date2 time2
Where: date1 = OpenDate (or CloseDate if only CLOSe was specified)
time1 = OpenTime (or CloseTime if only CLOSe was specified)
date2 = ClosDate (only when CLOSe was specified)
time2 = ClosTime (only when CLOSe was specified)
This option is available only to those with system privclass of
"C" or "E".
UTC
synonym for: TIMEzone +0.
This option is available only to those with system privclass of
"C" or "E".
TOD
Return the 8-byte hexidecimal TOD clock values as requested for the
OPEN and/or CLOSe times. If the SPOOL file is still open, the
right 4 bytes of the TOD will be returned as '00000000'x.
This option is available only to those with system privclass of
"C" or "E".
Usage notes.
If OPEN and CLOSe are both requested, OPEN date/time will always be
returned as the first tokens, followed by CLOSe date/time.
TIMEDIFF EXEC (v2.2.1)
TIMEDIFF provides the number of hours, minutes and seconds (and
optionally, days) between two pairs of dates and times.
The command format is:
>>-TIMEDIFF-+-date1------+-+-time1----+----+-date2------+-+-time2----+->
+-yyyy-mm-dd-+ +-hh:mm:ss-+ +-yyyy-mm-dd-+ +-hh:mm:ss-+
+-yyyy/mm/dd-+ +-hhmmss---+ +-yyyy/mm/dd-+ +-hhmmss---+
+-yyyymmdd---+ +-*--------+ +-yyyymmdd---+ +-*--------+
+-yyyyddd----+ +-TOD_ABS--+(1) +-yyyyddd----+ +-=--------+
+-yyddd------+ +-POSIX----+(1) +-yyddd------+
+-mm/dd/yy---+ +-mm/dd/yy---+
+-*----------+ +-*----------+
+-xxxxxxxxxxxxxxxx-+(1) +-=----------+
>-----------+-------------------------------+-------------------------><
+--(----| Options |---+-----+---+
+--)--+
(1) TOD_ABS and POSIX are entered as 'time1' to indicate that 'date1' is
a string of 16 hexadecimal characters representing the specified
date/time.
Options:
+-TERM--+
|--+------+--+-------+-------------------------------------------------|
+-DAYS-+ +-FIFO--+
+-MET--+ +-STACK-+
+-LIFO--+
Dates are supported between 01 Jan 0001 AD and 31 Dec 9999 AD.
The dates may be entered as any of the following date formats:
Format Format type
---------- ------------------------------------------------------
* - Current date
yyyy-mm-dd - ISOdate
yyyy/mm/dd - DateTimeSubtract CSL
yyyymmdd - Standard date; rexx date(S)
yyyyddd - Julian date; (long)
yyddd - Julian date; rexx date(J)
mm/dd/yy - Gregorian Date; rexx date(U)
xxxxxxxxxxxxxxxx - When "time1" is entered as "TOD_ABS", an
unsigned doubleword indicating # of TOD clock units
that have elapsed since January 1, 1900, 00:00:00 UTC
E.g. CBDAE6439DA00000
xxxxxxxxxxxxxxxx - When "time1" is entered as "POSIX", an
unsigned doubleword indicating # of seconds since
January 1, 1900, 00:00:00 UTC,
E.g. DC0106C052564574
= - For 'date2' only; equal to 'date1'
The times may be entered as any of the following time formats:
Format Format type
---------- ----------------------------------
* - Current time
hh:mm:ss - Specific time
hhmmss - Specific time
TOD_ABS - A 16 hex character string is entered as "date1",
representing a z/VM Time of Day clock value.
POSIX - A 16 hex character string is entered as "date1", as the
number of seconds since Jan 1, 1900, 00:00:00 UTC
= - For 'time2' only, equal to 'time1'
Options:
DAYS - Display the number of days between the dates
For a 'TERM' display as:
Time difference is: n days, n hours, n minutes, n seconds.
For a function call as:
days hh:mm:ss
For LIFO, FIFO, or STACK:
* n n n n
MET - Display the days in "Mission Elapsed Time" format.
For a 'TERM' display as:
Time difference is: n days/ n hours, n minutes, n seconds.
For a function call as:
days/hh:mm:ss
For LIFO, FIFO, or STACK:
* days/hh:mm:ss
TERM - Display results at console (DEFAULT)
FIFO - Queue results in Program Stack
STACK - Queue results in Program Stack
LIFO - Push results in Program Stack
Usage notes:
1) Options for a rexx function call are entered after a comma, as in:
diff=timediff(date1 time1 date2 time2,options)
2) Any date entered as a 2-digit year (Gregorian or Julian) will be
converted to a 4-digit year using a 50 year sliding window from the
the current date.
The sliding window range of years is computed as:
current year -50, through current year +49.
The century is taken from the matching year in that range.
Examples:
2-digit Resulting
Current year; Window begin; Window end; year 4-digit year
------------- ------------ ---------- ------- ------------
2000 2000-50=1950 2000+49=2049 00 2000
49 2049
50 1950
99 1999
2005 2005-50=1955 2005+49=2054 00 2000
49 1949
50 2050
99 1999
Examples from within a REXX program:
runtime=timediff('20001231 01:00:00 20001231 02:00:00')
diff=timediff('20001231 01:00:00 20001231 02:00:00','MET')
say timediff('01/11/00 01:00:00 2000-01-11 02:00:00')
say timediff('05/11/50 14:00:00 2000/05/11 14:00:00','DAYS')
'EXEC TIMEDIFF 12/05/84 08:30:00 1999/12/05 = (DAYS'
FINDFILE EXEC (v1.2.1)
FINDFILE is used to search the issuing userid, for files on all
virtual DASD (even those not accessed), and accessed SFS directories.
Each virtual DASD address is ACCESSed using a free filemode, LISTFILE
issued, and matching files and their virtual address reported. If the
'ACCESSM0 MODULE' is available, ACCESSM0 is SET ON so that filemode 0
(zero) files on R/O disks are searched as well.
LISTFILE is issued against accessed SFS Directories, with matching
files and their directory name reported.
Syntax:
+-*-------------+
>--FINDFILE--+-fname_pattern-+--+-ftype_pattern-+---------------------->
>------------+------------------+--------------------| options |------><
+-pipe PICK stage -+
pipe PICK stage
CMS Pipelines arguments as entered for the Pipe PICK stage.
E.g. FINDFILE * * PICK ANYcase W1 == /DIRECTORY/
or FINDFILE * * PICK PAD BLANK ANYcase 1.5 == /USER/
Note: PICK PAD BLANK ANY 1.5 == /USER/
is not equal to:
PICK PAD BLANK ANY W1 == /USER/
For details, enter: HELP PIPE PICK
Depending on the number of LINKed minidisks, and file on
each, this 'pipe PICK stage' operand can run quite long,
and produce a lot of output.
Options:
Options are passed directly to LISTFILE. Some will not make sense to
use from this command.
TOCYL
a non-LISTFILE option (removed before calling LISTFILE) which
displays the "TO cylinder" instead of the mdisk cylinder size.
E.g. without TOCYL, an mdisk might be displayed as from/size
cylinders: 01810 00011
while with TOCYL, the same mdisk would be displayed as from/to
cylinders: 01810 01820
VERBOSE
a non-LISTFILE option (removed before calling LISTFILE) which
displays each mdisk and directory just before searching,
providing confidence-building PUF (Positive User Feedback).
LOSTDISK EXEC (v1.1.1)
LOSTDISK is used from a userid with the PrivClass for 'CP DEFINE MDISK'
to locate minidisks, and optionally files, on a full-pack volume.
It is handy if you no longer have a DIRECTORY mapping that volume.
Syntax:
>--LOSTDISK--+-volser-+--+---------------------------------+-|options|-><
+--fnamepattern--+----------------+
+--ftypepattern--+
|-Options-|
FILEList
FL
Enter FILELIST on the files with patching filename (and
optionally filetype) patterns from the found mdisk(s).
LFoptions
Mutually exclusive with "FILELIST" or "FL".
Issues LISTFILE for the specified "fnamepattern ftypepattern"
with the "LFoptions" arguments as LISTFILE's options.
For example:
lostdisk vmres1
lostdisk vmpk01 *some* file*
lostdisk vmpk02 *some* cata* (filel
lostdisk vmu087 *some* *x* (fl
lostdisk 520res user direct (fl
QOWNER EXEC (v1.1.2)
QOWNER is used to display each LINKed disk, showing commonly needed
information for all accessed and un-accessed disks. A period is
displayed as a place-holder for missing values (un-accessed minidisks).
Any accessed SFS directories will also be displayed.
If the 'DEVTYPE MODULE' from the CMS Utilties Feature is available,
added detail is displayed: unaccessed mindisk labels, and the minidisk
label type (CMS1, VOL1, None).
The format of the output would appear as:
Label Vdev M Stat Cylinders Used Files Ownerid Addr Rdev Volser LblType
labelx vdev x/x r/w nnnnn CYL nnn% nnnnnnnn = owneridx nnnn rdev volser CMS1
- DIR x r/o nnnnn CYL nnn% . = filepool:filespaceid.
labely vdev . r/o nnnnn CYL nnn% . = owneridx nnnn rdev volser VOL1
. vdev . r/o nnnnn CYL nnn% . = owneridx nnnn rdev volser None
Note: the 'Cylinder' value for SFS directories is a calculated value,
provided for consistency and comparison to minidisks.
Syntax:
+-----------+
V |
>--QOWNER---+---------++-------------------+-------------------+----><
+-accmode-+ +-(-| Options |-+---+
+-vdev----+ +-)-+
+-DIR-----+
Options:
|--+------------------+--+------+--+----------+--|
+-OWNedby-+-userid-+ +-vdev-+ +-ACCESsed-+
+-OWNerid-+
Where:
accmode
is the access mode or extension of an accessed minidisk.
userid
is the userid's disks to be displayed. "userid" may also be entered
as "*" to indicate the userid from which the command is issued. The
following forms of the "NOT" symbol may prefixed to the "userid" to
indicate mdisks of a given userid which should NOT be displayed:
"\", "<>", "^", as in "\userid" or "<>*".
vdev
minidisk address (will be left-padded with zeros before comparison).
DIR
Specifies accessed SFS directories. This is used as a pattern match.
Options:
OWNedby userid
or
OWNerid userid
display of only minidisks owned by the specified userid.
vdev
display of only the specified minidisk owned by the specified
ownerid.
ACCESsed
display of only ACCESSED minidisks or directories.
is the access mode or extension of an accessed minidisk.
Examples: (with the same disks/directories accessed, just showing different options)
QOWNER
Label Vdev M Stat Cylinders Used Files Ownerid Addr Rdev Volser LblType
M2W191 0191 A R/W 150 CYL 76% 2552 = M2WALTER 0191 0F19 VMPP09 CMS1
ADM199 0199 B/A R/O 600 CYL 53% 2931 = HEWADMN 0199 0E15 VMPP05 CMS1
ADM399 0399 C/B R/O 15 CYL 75% 328 = HEWADMN 0399 0F12 VMPP02 CMS1
- DIR Q R/O 12222 CYL 63% 19 = PPS01:SYSPROG.PIPELINES.FIELDTEST.
12000A
MNT190 0190 S R/O 107 CYL 85% 703 = MAINT 0190 0E10 VMR54I CMS1
- DIR T/T R/O 998 CYL 37% 538 = AUD01:MAINT.TDISK
- DIR X R/W 12222 CYL 63% 77 = PPS01:SYSPROG.TOOLS.CA
- DIR Y/S R/O 998 CYL 37% 3847 = AUD01:MAINT.YDISK
- DIR Z R/W 12222 CYL 63% 3648 = PPS01:SYSPROG.TOOLS
RSTCKD 0050 . R/W 50 CYL . . = M2WALTER 0050 0F6E VMU334 CMS1
M2W107 0107 . R/W 20 CYL . . = M2WALTER 0107 0F7C VMU357 CMS1
HATOOL 019C . R/O 20 CYL . . = MAINT 019C 0E11 VMR54H CMS1
54Z19D 019D . R/O 200 CYL . . = MAINT 019D 0E11 VMR54H CMS1
54Z19E 019E . R/O 500 CYL . . = MAINT 019E 0E11 VMR54H CMS1
M2W1B0 01B0 . R/W 10 CYL . . = M2WALTER 01B0 0F79 VMU348 CMS1
TRKV54 0540 . R/W 25 CYL . . = M2WALTER 0540 0F13 VMPP03 CMS1
BADDSK 0BAD . R/W 1 CYL . . = M2WALTER 0BAD 0F11 VMPP01 CMS1
M2W101 1993 . R/W 100 CYL . . = M2WALTER 1993 0F79 VMU348 CMS1
NEWSTE 6191 . R/W 100 CYL . . = M2WALTER 6191 0F7C VMU357 CMS1
M2DEAD DEAD . R/W 800 CYL . . = M2WALTER DEAD 0F6E VMU334 CMS1
qowner (accessed
Label Vdev M Stat Cylinders Used Files Ownerid Addr Rdev Volser LblType
M2W191 0191 A R/W 150 CYL 76% 2552 = M2WALTER 0191 0F19 VMPP09 CMS1
ADM199 0199 B/A R/O 600 CYL 53% 2931 = HEWADMN 0199 0E15 VMPP05 CMS1
ADM399 0399 C/B R/O 15 CYL 75% 328 = HEWADMN 0399 0F12 VMPP02 CMS1
- DIR Q R/O 12222 CYL 63% 19 = PPS01:SYSPROG.PIPELINES.FIELDTEST.
12000A
MNT190 0190 S R/O 107 CYL 85% 703 = MAINT 0190 0E10 VMR54I CMS1
- DIR T/T R/O 998 CYL 37% 538 = AUD01:MAINT.TDISK
- DIR X R/W 12222 CYL 63% 77 = PPS01:SYSPROG.TOOLS.CA
- DIR Y/S R/O 998 CYL 37% 3847 = AUD01:MAINT.YDISK
- DIR Z R/W 12222 CYL 63% 3648 = PPS01:SYSPROG.TOOLS
qowner (ownedby m2walter
Label Vdev M Stat Cylinders Used Files Ownerid Addr Rdev Volser LblType
M2W191 0191 A R/W 150 CYL 76% 2552 = M2WALTER 0191 0F19 VMPP09 CMS1
RSTCKD 0050 . R/W 50 CYL . . = M2WALTER 0050 0F6E VMU334 CMS1
M2W107 0107 . R/W 20 CYL . . = M2WALTER 0107 0F7C VMU357 CMS1
M2W1B0 01B0 . R/W 10 CYL . . = M2WALTER 01B0 0F79 VMU348 CMS1
TRKV54 0540 . R/W 25 CYL . . = M2WALTER 0540 0F13 VMPP03 CMS1
BADDSK 0BAD . R/W 1 CYL . . = M2WALTER 0BAD 0F11 VMPP01 CMS1
M2W101 1993 . R/W 100 CYL . . = M2WALTER 1993 0F79 VMU348 CMS1
NEWSTE 6191 . R/W 100 CYL . . = M2WALTER 6191 0F7C VMU357 CMS1
M2DEAD DEAD . R/W 800 CYL . . = M2WALTER DEAD 0F6E VMU334 CMS1
Label Vdev M Stat Cylinders Used Files Ownerid Addr Rdev Volser LblType
ADM199 0199 B/A R/O 600 CYL 53% 2931 = HEWADMN 0199 0E15 VMPP05 CMS1
ADM399 0399 C/B R/O 15 CYL 75% 328 = HEWADMN 0399 0F12 VMPP02 CMS1
- DIR Q R/O 12222 CYL 63% 19 = PPS01:SYSPROG.PIPELINES.FIELDTEST.
12000A
MNT190 0190 S R/O 107 CYL 85% 703 = MAINT 0190 0E10 VMR54I CMS1
- DIR T/T R/O 998 CYL 37% 538 = AUD01:MAINT.TDISK
- DIR X R/W 12222 CYL 63% 77 = PPS01:SYSPROG.TOOLS.CA
- DIR Y/S R/O 998 CYL 37% 3847 = AUD01:MAINT.YDISK
- DIR Z R/W 12222 CYL 63% 3648 = PPS01:SYSPROG.TOOLS
HATOOL 019C . R/O 20 CYL . . = MAINT 019C 0E11 VMR54H CMS1
54Z19D 019D . R/O 200 CYL . . = MAINT 019D 0E11 VMR54H CMS1
54Z19E 019E . R/O 500 CYL . . = MAINT 019E 0E11 VMR54H CMS1
ONELINE EXEC
The ONELINE EXEC is used to compress other EXECs into one long line.
This is done by using PIPEs FPLCMPRX if, available, or by using EXECUPDT
logic to delete all comments (except those in EXECUPDT-type format where
comments begin in column 1 with: /*! ), all blank lines and all leading
and trailing blanks on each record.
The resultant records are packed together on one line with REXX's
instruction separator ";" between them.
Lines continued with a "," are handled properly.
If the resultant line exceeds 65,535 bytes, it is broken at suitable
points into additional long records.
Syntax:
+-1$EXEC--+
+-1$XEDIT-+
+-EXEC-+ +-*---+ +-ONELINE-+ +-A---+
ONELINE--+-ifn-+--+-ift--+--+-ifm-+--+-ofn-+--+-oft-----+--+-ofm-+----->
+- = -+
>--+--------------------------------+--------------------------<>
+-(-+---------+--+---------+-+---+
+-REPlace-+ +-NEWDate-+ +-)-+
Usage notes:
IBM's "FPLCMPRX REXX" does a far better job of compressing the input
rexx file than the 'hard way' compression routine within this exec:
Filename Filetype Fm Format Lrecl Records Blocks
ISPDTLC 1$EXEC A1 F 345723 1 85 <- FPLCMPRX
ISPDTLC 1$EXEC A1 V 65527 6 91 <- internal
REXXBACK EXEC
REXXBACK provides the names (and optionally minidisk owner and address)
of all the calling rexx programs, back to the beginning of the calling
chain of REXX EXECs.
The command format is:
+-*-----+
>>-REXXBACK-+-------+---------------+-------------------------------+-->
+-n-----+ +--(----| Options |---+-----+---+
+-Init--+ +--(----| Options |---+-----+---+
+--)--+
Options:
|--+-------+-----------------------------------------------------------|
+-OWNER-+
Where:
Init
Displays only the first calling EXEC in the chain.
n
limits the number of calling execs to search back. For example
'0' would display only the current exec running REXXBACK, '1'
would display the current exec and go back only 1 level.
Default: '*' - meaning to go back to the beginning of the chain.
OWNER
includes the userid and minidisk address within parenthesis the
first time each filemode is encountered in the chain.
Usage note:
The displayed rexx exec chain is for REXX execs only. And imbedded
EXEC or EXEC2 execs will not be displayed.
say rexxback()
*= E EXEC A1, D EXEC A1, C EXEC A1, B EXEC A1, A EXEC A1
say rexxback(0,OWNER)
0= E EXEC A1(JQPUBLIC 0191)
say rexxback(1,OWNER)
1= E EXEC A1(JMDOE 0191), D EXEC A1
say rexxback(4,OWNER)
4= E EXEC A1(DWJONES 0191), D EXEC A1, C EXEC A1, B EXEC A1, A EXEC A1
EXEC REXXBACK 4 (OWNER
REXXback 4="E EXEC A1(ABSMITH 0191), D EXEC A1, C EXEC A1, B EXEC D1(ONMOORE 02
00), A EXEC A1".
EXEC REXXBACK (OWNER
REXXback *="E EXEC A1(LSONE 0191), D EXEC A1, C EXEC C1(YKNOT 0192), B EXEC A1, A EXEC A1".
EXEC REXXBACK
REXXback *="E EXEC A1, D EXEC A1, C EXEC A1, B EXEC A1, A EXEC A1".
HUNGUSER
Abstract:
The contents of the HUNGUSER HELPME file can be placed on a disk or in an
SFS file directory accessible to z/VM Systems Programmers, and when accessed,
easily displayed by entering: HELP ME HUNGUSER. Similar subject HELPME files
can be easily created by you to help you with other seldom needed commands.
:HELPME HUNGUSER
When a userid becomes hung in a LOGOFF/FORCE PENDING state, the following
alternatives may be tried -- some require more than class "G" privs:
- If you have the time, simply waiting 15 minutes for CP to perform
housecleaning chores might free the userid, completing the LOGOFF
or FORCE.
- Use the public domain utility "TRACK" to determine if the userid is
awaiting completion of an I/O to a particular unresponsive device.
Use the commands:
TRACK hungid DEV CLASS * IO PENDing
TRACK hungid DEV CLASS * IO ACTIVE
Nota bene: As of 23 Feb 2006 TRACK can be obtained from:
http://vm.marist.edu/track/code.html
- Before attempting anything that actually changes the hung userid,
if you can (consider communication time-outs which may occur that
could affect other users) before muddying the waters, get a current
system dump for IBM to diagnose later. From a privclass "A' user:
CP QUERY DUMP (then ensure that it is going to disk)
Then: CP WNG ALL This system may be non-responsive for a few minutes
while diagnostic information is obtained.
Then: CP SNAPDUMP
- Sometimes a simple message frees up the "hungid" without further ado.
From a privclass A, B, or C userid, issue:
CP WNG hungid Hello
- If the ID was awaiting I/O to a terminal, simply connecting from a
working terminal may free the ID. From a free terminal, issue:
CP LOGON hungid HERE
- For users logged on via TELNET terminals, issue:
NETSTAT TELNET
Find the matching tn3270 connection, and issue:
NETSTAT DROP conn_num
- "CPHX" is reported to cancel pending CP commands: ATTACH, LOCATE,
LOCATEVM, and VARY ONLINE|OFFLINE (see HELP for more detail).
From a privclass "A" userid, issue:
CP CPHX hungid
- If TRACK (above) showed an active I/O which cannot be remedied
(e.g. by making a tape drive "Ready"), the I/O may be able to be
cancelled. From a privclass "A" userid, issue:
CP HALT rdev
Due to queued I/Os or recalcitrant devices, HALT may need to be issued
repeatedly until the following message is received:
Halt was not initiated to tape nnnn because the device as not active
- If nothing freed the hung user, open a Problem Management Report (PMR)
with IBM, and provide the SNAPDUMP for analysis.
.cm Last updated 2007/01/04 mrw
Dynamic I/O Cheatsheet
A step-by-step guide to implementing z/VM's "Dynamic IO", importing IODF files built by z/OS, and placing them into production without a POR or IPL. The link to the document is in the Downloads section.
Tailorable Wakeup sample EXEC
A sample EXEC to implement the CMS WAKEUP function. The file is CMS packed, make sure to upload to the mainframe in binary F 1024 format. Then copy the file to itself with the unpack option.
TZDATES
Creates a file of "SYSTEM CONFIG" timezone statements between two given years up to 2042.
Attachments:
CPSYNTAX.VMARC
SFDATTIM.VMARC
TIMEDIFF.VMARC
FINDFILE.VMARC
LOSTDISK.VMARC
QOWNER.VMARC
ONELINE.VMARC
REXXBACK.VMARC
TZDATES.VMARC
DYNIODF.SHTML
WAKEUP.EXECSAMP