LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (December 1999, week 5)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Fri, 31 Dec 1999 17:08:58 -0000
Reply-To:     David Johnson <david_johnson@TOTALISE.CO.UK>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         David Johnson <david_johnson@TOTALISE.CO.UK>
Subject:      Re: (MVS): Re[2]: (MVS) Warning: Possible Date Problem
Comments: To: RAITHEM <RAITHEM@WESTAT.COM>
Content-Type: text/plain; charset="iso-8859-1"

Well Michael, I can only count myself lucky.

The Year 2000 team at my current 'shop' defined a windowing technique, and value for all applications that was implemented on the MVS machine before the code freeze three months ago. They independently decided on 1920 and only after I started there was the SAS definition checked and found to be the default 6.12 setting. That was quickly changed in line with the site standard.

We had more latitude on the Unix, where data was sourced from MVS in SAS transport files, so generally speaking, all imported data used SAS numbers. We discovered problems with one transport file, but that was resolved with an appropriate YEARCUTOFF on the global config.

In this case though, we analysed the data and found the particular table reported dates for business alliances, all of which fell on or after 1984. That particular program tested the YEARCUTOFF setting, with an ISOPTION macro, stored the value to a macro then reset it to 1980. At the end of the program, the YEARCUTOFF is reset back to the system setting. Now that program is safe for another 80 years. Longer than I shall care about, and longer than this new MI will last I should expect!

What this scenario allowed me to highlight, was that blind use of windowing dates is not necessarily always best. My experience of data sources goes back to records of insured persons born before 1/1/1900, which was the default missing value on a system I knew ten years ago. The insurance dates, or vehicle purchase dates, or drivers license dates did not predate 1/1/1900 which reflected a characteristic of that type of data. Dealing with missing or incorrect values needed one to use the 'little grey cells' as Msr Poirot would say.

At that time, the data needed to represent two different centuries, just as data will for now on. And I think we still need to consider the purpose of the data before we blindly apply some cleanup rule. At the risk of reviving an oft discussed topic on this list, 'missing' doesn't mean 'No' if it does mean 'Question not answered' or 'Sample lost prior to analysis'.

In any case, I appreciated your humour.

Best for the season

David

----- Original Message ----- From: RAITHEM <RAITHEM@WESTAT.COM> To: <SAS-L@AKH-WIEN.AC.AT> Sent: 30 December 1999 18:20 Subject: (MVS): Re[2]: (MVS) Warning: Possible Date Problem

> Replying to my New Years Eve-Eve posting on the "Y2K Bug," Diana Noble posted, > in part, the following: > > <<Diana's entire posting can be found beneath the Sig line, below>> > > > >2. To further complicate the problem, our MVS installation determines all the > >default cutoff values, which may well continue to be yearcutoff=1900. The best > >solution I can give you to thwart installation imposed Y2K problems (lacking > the > >power to change the systems yourself), is to add code to the options statement > >at the top of all your JCL to the effect of: Options yearcutoff=1920 (or > >whatever year you deem sufficient). This is addressed by SI at their web site. > > > > Diana, I was actually making an attempt at humor in my posting. However, you > have turned it into something very informational. Thank you! Your points are > well taken, and you have redeemed my flagrant misuse of bandwidth! > > All humor aside, I believe that a lot of persons can identify with your > scenario: The default SAS options in the SAS System Configuration file are > controlled by another group; often the Systems group. The Systems group members > may or may not be aware of the most beneficial default settings for some > important SAS options. Alternately, they may be aware, but have strong opinions > on options settings that conflict with your own. Or, a "SAS Expert" in another > group may have gotten to the Systems group first and enabled options settings > that don't quite agree with your own. So, what is a conscientious SAS > programmer to do? > > Diana, you have already given us one solution--one that I would definitely would > employ. Here are my own two personal favorites, listed in my order of > preference: > > 1. Create a User Configuration File and invoke it in all applications. The User > Configuration file is a file with SAS systems options that you specify. It is > automatically concatenated after the system configuration file and processed at > SAS initialization time. Any options set in the User Configuration file > override options set in the System Configuration file. The User Configuration > file is especially useful for specifying SAS system options that can only be > specified at system initialization time. You can specify the User configuration > file in batch like this: > > file://STEP01 EXEC SAS,CONFIG='user.config.file.name' > > Invoking SAS under TSO: > > SAS CONFIG('''user.config.file.name''') > > Note, that in the TSO invocation, three single quotes _MUST_ precede and follow > the configuration file name. > > 2. Create and use an Autoexec File. As we all know, the autoexec file is a file > of SAS statements that are executed immediately after the SAS System is > initialized, and before the source program statements are executed. Many SAS > system options can be set there via the OPTIONS statement. You can specify the > Autoexec file in batch like this: > > file://STEP01 EXEC SAS > file://SASEXEC DD DSN=autoexec.file.name,DISP=SHR > > Invoking SAS under TSO: > > SAS AUTOEXEC('''autoexec.file.name''') > > Again; the three single quotes bracketing each end of the Autoexec file name are > needed (if you want to successfully invoke the SAS System with an Autoexec > file). > > Diana, like you, I absolutely refuse to be a (SAS system options) victim! I > think that it is worthwhile for MVS SAS programmers to be proactive and either > create a group Config file and/or Autoexec file, or create personal ones. They > should actively use them in their on-line and in their batch SAS applications. > In that way, they will more closely control the destiny, the health, and the > success of their SAS applications! > > > I hope that this explanation proves helpful now, and in the future! > > Of course, all of these opinions and insights are my own, and do not > reflect those of my organization or my associates. > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > Michael A. Raithel, Westat > E-mail: raithem@westat.com > Author: Tuning SAS Applications in the MVS Environment > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > Good is not good, where better is expected. -- Thomas Fuller > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > I have discovered 2 problems in which non-compliant Y2K data can be imposed on a > SAS programmer which are beyond his/her control. > > 1. One is where the installation uses 'windowing' techniques for all production > programs (as Michael has so aptly described), whereby the production version of > all processing programs append a 2 digit century to the 2 digit year 'DURING > PROCESSING ONLY'. Since this form of 'windowing' only occurs for processing > production activities, the data files continue to store the 2 digit year, > leaving those of us who only use the data files for information processing in a > quandary. This is solved as Michael suggested, by converting all programs to > create 4-digit versions of the year. > > 2. To further complicate the problem, our MVS installation determines all the > default cutoff values, which may well continue to be yearcutoff=1900. The best > solution I can give you to thwart installation imposed Y2K problems (lacking the > power to change the systems yourself), is to add code to the options statement > at the top of all your JCL to the effect of: Options yearcutoff=1920 (or > whatever year you deem sufficient). This is addressed by SI at their web site. > > I join the chorus in urging everyone to check their options, configuration > setups, and system defaults. > > Beyond that, I wish everyone a safe and prosperous New Year! > > Diana Noble > Prudential > ************* > email diana.noble@prudential.com > > The opinions expressed here are mine alone and do not reflect those of my > associates or that of my organization. > > ************** > ------------------------------ > > Date: Thu, 30 Dec 1999 08:21:24 -0500 > From: RAITHEM <RAITHEM@WESTAT.COM> > Subject: (MVS) Warning: Possible Date Problem With Change of Century! > > Dear SAS-L-ers, > > I just chanced upon an article in a computer magazine that has stunning > implications! It seems that a lot of computer programmers have been using 2 > digits to store year values. For instance, 1964 would be stored as 64, 1973 > would be stored as 73, 1999 would be stored as 99, etc. This method saves two > bytes per year value and makes it easy to determine the number of years between > dates: 99 - 73 = 26. But a problem will arise when the new century arrives and > the two-digit years become 00! Then, a calculation such as 00 - 73 will return > a negative number (-73)! So, a person born in 1973 could mistakenly be > considered to be -73 years old! This problem has been dubbed the "Y2K Bug." > (Y2K stands for "Year 2000"). > > Since there are only a few days left before the change, I would urge you and > your colleagues to check through your own SAS programs and ensure that you are > not using two-digit years! If you are, then you should modify them to > four-digit years to avoid the "Y2K Bug". Doing this is has been dubbed "making > an applications Y2K compliant." I know that I will be busy in the next two days > checking my own SAS programs and changing two-digit years to four-digit years! > I want all of my applications to be "Y2K compliant!" > > Boy, am I glad that I happened upon that article! I just hope that I will be > able to make the necessary changes and spread the word before it is too late! > > I hope that this explanation proves helpful now, and in the future! > > Of course, all of these opinions and insights are my own, and do not > reflect those of my organization or my associates. > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > Michael A. Raithel, Westat > E-mail: raithem@westat.com > Author: Tuning SAS Applications in the MVS Environment > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > Life is like the core of the apple; it never gets into the pie. -- Michael A. > Raithel > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Back to: Top of message | Previous page | Main SAS-L page