The REXXDATE MEMO is easy (see below).
Tools to manage SPOOL files is more difficult. Can you define the problem a little better?
- How many files will the application manage, and how often will it run?
- What the date of the oldest SPOOL file?
- How long should the SPOOL files be retained?
- Once exceeding the retention period, what should be done with the old file (purge, archive/purge, etc.)
Have you looked at the SFPURGER EXEC? It used to be part of the "CMS Utilities Features" (also known as CUF). I'm not sure when it was incorporated into CMS/
Mike Walter
Hewitt Associates
The opinions expressed herein are mine alone, not my employer's.
---<snip>---
The REXXDATE utility
One of the most common problems encountered in writing REXX
programs which perform system functions is the conversion of
dates to numbers suitable for doing calculations. For example,
it's often important to know how many days there were between
December 12, 1986 and January 9, 1987. Or the Julian date value
of February 11, 1986. Or you might want to know what day of the
week March 23, 1986 was?
While one could write REXX code to do these calculations, it
is slow and a pain in the butt. Plus the resulting code is rarely
pretty to look at. It was this need that resulting in the writing
of REXXDATE. REXXDATE is a module, which when called, loads
itself as a nucleus extension, and then defines entry points
RXDATE2D, RXD2DATE, RXTIME2D, RXD2TIME and RXDATE2W. These can
then be called by the REXX functions DATE2D, d2Date, TIME2D,
D2TIME and DATE2w respectively. The functions can then be dropped
and the memory they use cleared, by simply using 'NUCXDROP
REXXDATE'. To install the REXXDATE functions one simply needs to
put the REXXDATE MODULE on an ACCESSed minidisk. To make it
accessible to everyone it should probably be put on the 19E ('Y')
disk.
REXXDATE was written by Alex Kodat at the Johns Hopkins Uni-
versity School of Hygiene and Public Health.
The REXXDATE DATE2D, d2Date and DATE2w functions use formats
compatible with the DATE function in REXX. The REXXDATE functions
use the following formats for dates.
* A (rexx defAult) dd Mmm yyyy. This is the format returned
when the REXX date function is called without parameters
(i.e. DATE() ). The case of the month is ignored, as its
length. Leading, intervening and trailing blanks are ignored.
Examples of valid 'A' format dates :
'11 Jan 1985'
' 22 February 1977 '
' 02 Marc 1609'
'25 dECEM 1954'
* C (Century) ddddd. Day number in the 20th century. The centu-
ry is assumed to be the 20th. Examples of Valid 'C' format
dates :
'1'
'35600'
* E (European) dd/mm/yy.
page 2
-----------------------------------------------------------------
* J (Julian-OS) yyddd. OS format dates.
* M (Month) Mmmmmmmm. The name of a month, i.e. 'August', 'Sep-
tember', etc.. This format is only used as a result from the
function D2DATE.
* O (Ordered) yy/mm/dd.
* S (Sorted) yyyymmdd. Examples of valid 'S' format dates :
'17760704'
'19800101'
* U (USA) mm/dd/yy.
* V (Vernacular) Mmmmmmmmmmm dd{,} yyyy. Month name, followed
by day and year. Leading, trailing and intervening spaces are
ignored. A comma is allowed between the day and the year num-
bers. Only the first three characters of the month name are
required. Examples of valid 'V' format dates :
'Jan 1 1980'
' JULY 4,1986'
' september 24 , 1970 '
* W (Weekday) Wwwwwwww. The name of a day of the week, i.e.
'Tuesday', 'Saturday',etc.. This format is only used as a
result from the function D2DATE.
Descriptions of the REXXDATE functions are given below.
DATE2D(date{,option1{,option2{,...}})
Returns the number of days since the start of the Gregorian
calendar (January 1 ,1601) that the given date falls on. If
the date is not a valid date the function returns a -1 val-
ue. The options specify the format of the date. The format
can be any one of the above described date formats, except M
or W. If no option is specified the format is assumed to be
'A'. When multiple options are specified, the options are
tried in order, until the date matches an option's format.
If it does not match any of the options a -1 is returned.
This allows one to easily write a program which accepts
dates in any one of several formats. For example :
DATE2D('12/22/86','A','U','V') --> 140974
DATE2D(' January 11,1986 ','A','U','V') --> 140974
DATE2D('11 Jan 1986','A','U',V') --> 140974
page 3
-----------------------------------------------------------------
Be careful, however, certain dates can represent different
things in the 'E', 'O' and 'U' formats.
DATE2W(date{,option1{,option2{,...}})
Returns the day of the week that the given date falls on. If
the date is not a valid date the function returns a -1 val-
ue. The options specify the format of the date. The format
can be any one of the above described date formats, except
'M' or 'W'. If no option is specified the format is assumed
to be 'A'. When multiple options are specified, the options
are tried in order, until the date matches an option's for-
mat. If it does not match any of the options a -1 is
returned. This allows one to easily write a program which
accepts dates in any one of several formats. For example :
DATE2W('12/22/86','A','U','V') --> 'Monday'
DATE2W(' January 11,1986 ','A','U','V') --> 'Saturday'
DATE2W('11 Jan 1986','A','U',V') --> 'Saturday'
Be careful, however, certain dates can represent different
things in the 'E', 'O' and 'U' formats.
D2DATE(number,{option})
Returns a date in one of the above defined formats corre-
sponding to a decimal number (number) which indicates the a
number of days since the start of the Gregorian calendar
(january 1 1601). If no option is specifieded the 'A' for-
mat is used. For example :
D2DATE(1) --> '1 Jan 1601'
DATE2D(100000,'V') --> 'October 16,1874'
DATE2D(140000,'U') --> '04/22/84'
Note that requesting a date which assumes a century (such as
the 'U' format) with a number corresponding to a date out-
side that century will produce a REXX error.
TIME2D(time)
Returns a number of seconds since midnight for a time in the
format hh{:mm{:ss}}. If minutes or seconds are not specified
they are assumed to be 00. For example :
TIME2D(11) --> 39600
TIME2D('11:10') --> 40200
DATE2D('11:10:50') --> 40250
page 4
-----------------------------------------------------------------
D2TIME(number)
Returns a time based on a number of seconds since midnight
(number). For example :
TIME2D(1000) --> '00:16:40'
TIME2D(10000) --> '02:46:40'
DATE2D(50000) --> '13:53:20'
Usage Notes
* The DATE2D and D2DATE funtions are effectively inverses and
can be used to convert the format of a date. For example, to
find the Julian equivalent of a date x, where x is a date in
U format one simply needs to enter D2DATE(DATE2D(x,'U'),'J').
* To get todays number one simply needs to enter
DATE2D(DATE());
* If one wants a day of the week number, rather than getting
day of the week in character form one can simply use the
result of the DATE2D function and use the remainder when
divided by 7. For example the day of the week number of today
(SUnday=0, Monday=1, etc..) is DATE2D(DATE())//7.
---<snip>---
| "J-Marc Gibey"
<[EMAIL PROTECTED]>
Sent by: "VM/ESA and z/VM Discussions" <[email protected]> 10/27/2005 03:02 AM
|
|
Hello,
I had a very old VM* (ESA 2.2.0) running on a R/390, but after a hardware
failure i'm running now on my backup machine (PC/390) with VM/ESA 2.1.0.
Some exec's don't run, because there is new functions between ESA 210 an ESA
220 especially with the format date ISO (very useful...).
I need some tools for cleaning daily spool files and also a memo for the
REXXDATE program (I have the program but not the doc!)
*This VM run daily from 1985 some FORTRAN programs to manage dams for
prevent flood from Loire.
Thank you for your help
J-Marc Gibey
Direction régionale de l'environnement
Service de prévisions des crues
Orléans - France
The information contained in this e-mail and any accompanying documents may contain information that is confidential or otherwise protected from disclosure. If you are not the intended recipient of this message, or if this message has been addressed to you in error, please immediately alert the sender by reply e-mail and then delete this message, including any attachments. Any dissemination, distribution or other use of the contents of this message by anyone other than the intended recipient is strictly prohibited.
