close

Вход

Забыли?

вход по аккаунту

?

How to Deal withthe Year2000 - Support On Line - Bull

код для вставки
Operating System: General
REFERENCE
47 A2 23UG 03
DPS7000/XTA
NOVASCALE 7000
How to Deal with
the Year2000
DPS7000/XTA
NOVASCALE 7000
How to Deal with the
Year2000
Operating System: General
April 1999
BULL CEDOC
357 AVENUE PATTON
B.P.20845
49008 ANGERS CEDEX 01
FRANCE
REFERENCE
47 A2 23UG 03
The following copyright notice protects this book under Copyright laws which prohibit such actions as, but not
limited to, copying, distributing, modifying, and making derivative works.
Copyright
Bull SAS 1996, 1999
Printed in France
Suggestions and criticisms concerning the form, content, and presentation of this
book are invited. A form is provided at the end of this book for this purpose.
To order additional copies of this book or other Bull Technical Publications, you
are invited to use the Ordering Form also provided at the end of this book.
Trademarks and Acknowledgements
We acknowledge the right of proprietors of trademarks mentioned in this book.
IntelВ® and ItaniumВ® are registered trademarks of Intel Corporation.
WindowsВ® and MicrosoftВ® software are registered trademarks of Microsoft Corporation.
UNIXВ® is a registered trademark in the United States of America and other countries licensed exclusively through
the Open Group.
LinuxВ® is a registered trademark of Linus Torvalds.
The information in this document is subject to change without notice. Bull will not be liable for errors contained
herein, or for incidental or consequential damages in connection with the use of this material.
Preface
Intended
Readers
This manual is intended for all users of GCOS 7, including administrators,
operators, and programmers.
Structure
Chapter 1
explains how and why the year 2000 has an impact on
the GCOS 7 operating system and user applications.
Chapter 2
discusses the impact on the GCOS 7 computing
environment.
Chapter 3
details the effects on user applications.
Chapter 4
discusses date conversion methodology.
Chapter 5
gives preliminary advice on the use of conversion
tools.
Appendix A
tells you about planned extensions to GCOS 7 to
resolve specific areas of difficulty related to the Year
2000.
Appendix B
tells you about the IQS Extension for Year 2000.
Appendix C
tells you about more about the Private Timer.
Bibliography
AUPI User's Guide ..................................................................................47 A2 76UC
C Language User's Guide........................................................................ 47 A2 60UL
C System Primitives ................................................................................. 47 A2 64UL
COBOL 85 Reference Manual................................................................. 47 A2 05UL
COBOL 85 User's Guide ......................................................................... 47 A2 06UL
FORMS User's Guide .............................................................................. 47 A2 15UJ
FORTRAN 77 Reference Manual ............................................................ 47 A2 15UL
GCL Programmer's Manual .................................................................... 47 A2 36UJ
GCOS 7-V7 Evolution Guide.................................................................. 47 A2 20UG
GCOS 7 System Administrators's Manual............................................... 47 A2 54US
GCOS 7 System Operator's Guide........................................................... 47 A2 53US
GCOS 7-V8 Customer Service Bulletin - TS 8560...................................... 97-019EN
GCOS 7-V9 Customer Service Bulletin - TS 9662...................................... 99-004EN
47 A2 23UG Rev03
iii
How to Deal with the Year 2000
GPL System Primitives ............................................................................ 47 A2 34UL
GPL User's Guide.................................................................................... 47 A2 36UL
IOF Terminal User's Reference Manual Part 1....................................... 47 A2 38UJ
IOF Terminal User's Reference Manual Part 2....................................... 47 A2 39UJ
IOF Terminal User's Reference Manual Part 3....................................... 47 A2 40UJ
IQS End-User's Guide .............................................................................47 A2 73UR
JCL User's Guide .................................................................................... 47 A2 12UJ
SDI-GPL System Primitives..................................................................... 47 A2 65UL
Sort/Merge User's Guide .........................................................................47 A2 08UF
UFAS EXTENDED User's Guide.............................................................47 A2 04UF
CSB Millenium Application Test Facility and Booster ............. Ref 98-012 (TS7458)
On-Line Information
Bull Web Site............................................................... http://www.bull.com/year2000
iv
47 A2 23UG Rev03
Table of Contents
1.
2.
Introduction
1.1
The Year 2000 Problem.................................................................................................. 1-1
1.2
The Year 2000 Solutions ................................................................................................ 1-2
1.3
Impact on the Information System .................................................................................. 1-2
GCOS 7 Computing Environment
2.1
The GCOS 7 Operating System ..................................................................................... 2-1
2.1.1 GCOS 7: Year 2000 Readiness ........................................................................ 2-1
2.1.2 Solution .............................................................................................................. 2-2
2.1.3 The 61 Rule ....................................................................................................... 2-2
2.1.4 The 1900 Rule ................................................................................................... 2-3
2.2
Bull Platforms .................................................................................................................. 2-4
2.2.1 DPS 7000 Systems Ready for Year 2000 ......................................................... 2-4
2.2.2 Support of DPS 7000 Systems .......................................................................... 2-5
2.2.3 Upgrade ............................................................................................................. 2-5
2.3
Peripheral Devices .......................................................................................................... 2-6
2.3.1 Disks .................................................................................................................. 2-6
2.3.2 Printers .............................................................................................................. 2-6
2.3.3 Cartridge and Tape Drives ................................................................................ 2-7
2.3.4 Libraries ............................................................................................................. 2-7
2.3.5 Diskette Drives................................................................................................... 2-7
2.4
Communication Products ................................................................................................ 2-8
2.5
GCOS Service Facilities (GSF)....................................................................................... 2-8
2.5.1 Telecontrol ......................................................................................................... 2-8
2.5.2 RIDE and DYNDUMP Tools .............................................................................. 2-8
2.6
GCOS 7 Software Applications....................................................................................... 2-8
47 A2 23UG Rev03
v
How to Deal with the Year 2000
3.
vi
User Applications for GCOS 7
3.1
User Applications Overview ............................................................................................ 3-1
3.2
Date Processing.............................................................................................................. 3-2
3.2.1 COBOL .............................................................................................................. 3-2
3.2.1.1 Problem Handling.............................................................................. 3-3
3.2.1.2 Problem Resolution ........................................................................... 3-4
3.2.2 FORTRAN ......................................................................................................... 3-6
3.2.2.1 Date Occurrences ............................................................................. 3-6
3.2.2.2 Problem Handling.............................................................................. 3-6
3.2.3 C Language ....................................................................................................... 3-7
3.2.3.1 Date Occurrences ............................................................................. 3-7
3.2.3.2 Problem Handling.............................................................................. 3-8
3.2.4 IQS..................................................................................................................... 3-8
3.2.4.1 Date Occurrences ............................................................................. 3-8
3.2.4.2 Problem Handling.............................................................................. 3-8
3.2.5 UFAS Indexed Files........................................................................................... 3-9
3.2.6 IDS/II (DDL, DML, DMCL) ................................................................................. 3-9
3.2.6.1 Date Occurrences ............................................................................. 3-9
3.2.6.2 Problem Handling.............................................................................. 3-9
3.2.7 TDS Transactional Applications ...................................................................... 3-10
3.2.7.1 Date Occurrences ........................................................................... 3-10
3.2.7.2 Problem Handling............................................................................ 3-10
3.2.8 Journals ........................................................................................................... 3-11
3.2.8.1 Date Occurrences ........................................................................... 3-11
3.2.8.2 Problem Handling............................................................................ 3-11
3.2.9 FORMS ............................................................................................................ 3-11
3.2.9.1 Date Occurrences ........................................................................... 3-11
3.2.9.2 Problem Handling............................................................................ 3-11
3.2.10 Source Members ............................................................................................. 3-12
3.2.11 Load Modules .................................................................................................. 3-12
3.2.12 Compile Units .................................................................................................. 3-12
3.2.13 Catalogs........................................................................................................... 3-12
3.2.14 Disk Files ......................................................................................................... 3-12
3.2.15 Magnetic Tape Files ........................................................................................ 3-13
3.2.16 JCL................................................................................................................... 3-13
3.2.16.1 Date Occurrences ........................................................................... 3-13
3.2.16.2 Problem Handling............................................................................ 3-14
3.2.17 GCL.................................................................................................................. 3-15
3.2.17.1 Date Occurrences ........................................................................... 3-15
3.2.17.2 Problem Handling............................................................................ 3-17
3.2.18 GPL Primitives and C System Primitives......................................................... 3-18
3.2.19 SQL 7............................................................................................................... 3-19
3.2.19.1 Date Occurrences ........................................................................... 3-19
3.2.19.2 Problem Handling............................................................................ 3-19
47 A2 23UG Rev03
3.2.20 ORACLE .......................................................................................................... 3-19
3.2.20.1 Date Occurrences ........................................................................... 3-19
3.2.20.2 Problem Handling............................................................................ 3-21
3.2.21 Job Output Report ........................................................................................... 3-21
3.2.22 Communications .............................................................................................. 3-21
3.3
4.
Testing Applications for Year 2000 ............................................................................... 3-22
3.3.1 Millennium Bi-System Test Facility.................................................................. 3-22
3.3.1.1 IL01 Option Constraints on Millennium Test System ...................... 3-22
3.3.1.2 GCOS 7 Constraints on Millennium Test System ........................... 3-23
3.3.1.3 Impact on the Millennium Test System ........................................... 3-24
3.3.1.4 Examples......................................................................................... 3-25
3.3.2 Millennium Application Test Facility (Private Timer)........................................ 3-26
3.3.2.1 Objects Affected by Private Timer................................................... 3-28
3.3.2.2 Hints and Precautions ..................................................................... 3-29
3.3.2.3 Constraints ...................................................................................... 3-30
3.3.2.4 Scope of Application........................................................................ 3-31
3.3.2.5 Implementation................................................................................ 3-31
3.3.2.6 Messages in the JOR ...................................................................... 3-31
Conversion Methodology
4.1
Changing Two Digit YEAR Dates to Four Digits............................................................. 4-2
4.1.1 Purpose.............................................................................................................. 4-2
4.1.2 Using DSL and GCOS 7 Data Management Utilities ........................................ 4-2
4.2
Retaining Two Digit Year Dates...................................................................................... 4-3
5.
Conversion Tools
A.
SORT / MERGE Extension for Year 2000
B.
A.1
SORT/MERGE with COBOL...........................................................................................A-1
A.2
SORT with GPL............................................................................................................... A-2
A.3
SORT with C Language ..................................................................................................A-3
A.4
DSL Extension ................................................................................................................A-4
IQS Extension for Year 2000
B.1
IQS and the Year 2000 ...................................................................................................B-1
B.2
Year 2000 - The IQS Solution.........................................................................................B-2
B.3
IQS Elements Concerned ...............................................................................................B-4
B.3.1 Commands and Statements ..............................................................................B-4
B.3.2 Data ...................................................................................................................B-4
47 A2 23UG Rev03
vii
How to Deal with the Year 2000
C.
B.4
IQS Year 2000 Support Procedure .................................................................................B-5
B.4.1 Types of Processing ..........................................................................................B-5
B.4.2 Implementing IQS Year 2000 Support...............................................................B-6
B.4.3 Step 1: The Query H_IQS_Y2000 .....................................................................B-6
B.4.4 Step 2: The Load Module H_IQS_YEAR2.........................................................B-7
B.5
IQS Year 2000 Support Environment .............................................................................B-8
B.6
JCL to Run H_IQS_YEAR2 ..........................................................................................B-10
B.7
IQS Year 2000 Support Restrictions.............................................................................B-11
B.8
Rules for Comparison ...................................................................................................B-11
B.9
IQS Year 2000 by Example ..........................................................................................B-12
More About Private Timer
C.1
Private Timer Commands ...............................................................................................C-1
C.1.1 VALIDATE_PRIVATE_TIMER...........................................................................C-2
C.1.2 DISPLAY_PRIVATE_TIMER .............................................................................C-5
C.1.3 INVALIDATE_PRIVATE_TIMER .......................................................................C-6
C.2
Messages in the JOR......................................................................................................C-8
C.3
Messages under IOF.....................................................................................................C-20
C.3.1 Console Messages ..........................................................................................C-20
C.3.2 IOF Connection................................................................................................C-20
C.3.3 End of IOF Session..........................................................................................C-21
Index
viii
47 A2 23UG Rev03
Table of Graphics
Figures
2-1.
B-1.
Interpretation of Year Expressed in Two-Digit Format.................................................... 2-3
Implementation of IQS Year 2000 Support.....................................................................B-9
Tables
2-1.
2-2.
2-3.
2-4.
2-5.
2-6.
Operating System and Firmware Requirements............................................................. 2-4
Support of DPS 7/7000 Platforms................................................................................... 2-5
Disks Supported by GCOS 7-V7 TS 7458 and Later...................................................... 2-6
Printers Supported by GCOS 7-V7 TS 7458 and Later .................................................. 2-6
Tape/Cartridge Drives Supported by TS 7458 and Later ............................................... 2-7
Diskette Drives Supported by TS 7458 and Later .......................................................... 2-7
47 A2 23UG Rev03
ix
How to Deal with the Year 2000
x
47 A2 23UG Rev03
1. Introduction
1.1
The Year 2000 Problem
With the Year 2000, problems may occur with dates because the value of a year
field may be capable of more than one interpretation.
This ambiguity occurs in two cases:
• The year field uses two characters. This is shown in the syntax as YYMMDD,
YYDDD, or YY.MM.DD.
It is necessary to determine if YY means 19YY or 20YY.
• The year is stored in a binary field.
In this case the value may mean the number of the year within the century (the
range is from 00 to 99) or the number of years starting from 1900 (the range is
from 00 to the maximum value of the binary).
In both cases, it is necessary to know how to choose the interpretation of the value
of the year field.
47 A2 23UG Rev03
1-1
How to Deal with the Year 2000
1.2
The Year 2000 Solutions
Different solutions are available to avoid incorrect interpretation of dates:
• change the format of the year field in your applications:
a two character format is changed to a four-character format.
• compress and encode the year as only two characters.
In the above solutions, the 'old data' will be incompatible with the new versions of
the applications.
• use a “windowing technique” without change of the format of the year field.
Only dates between two limits are available, for example from 1961 to 2060.
The width of the window is 100 years.
• With windowing, the �old data’ remains compatible with new versions of
applications.
1.3
Impact on the Information System
The Year 2000 will impact all elements of the Information System including
hardware, firmware, operating systems, and user applications.
The impact is not limited to the mainframe. The network, open systems, and
client/server configurations are affected too.
Year 2000 limitations can be summarized as occurring in the following areas:
• GCOS 7 computing environment:
This includes hardware, firmware, Tests & Diagnostics, operating system,
middleware and networks.
• GCOS 7 software applications:
This includes:
в€’ software applications supplied by Bull with a marketing identifier,
в€’ software obtained from Bull approved software houses.
• GCOS 7 user applications:
These are your own in-house applications or those obtained from third party
software houses.
1-2
47 A2 23UG Rev03
2. GCOS 7 Computing Environment
2.1
The GCOS 7 Operating System
The expression "Year 2000 Ready" refers to products that are capable of correctly
identifying, manipulating, and performing calculations on dates beyond
31 December 1999 provided that they are used in accordance with the relevant
documentation and that, when linked to other components, they communicate the
calendar date on the same conditions.
2.1.1
GCOS 7: Year 2000 Readiness
1
3
3
IMPORTANT:
GCOS 7-V7 TS 7458 and GCOS 7-V8 TS 8458 are the first releases of GCOS 7
that are Year 2000 ready. All subsequent releases of GCOS 7, and all
subsequent Technical Statuses of V7, V8 and V9, are Year 2000 ready.
Previous GCOS 7 releases and previous Technical Statuses of release V7 are not
Year 2000 ready.
The Technical Statuses of GCOS 7 that are supported after the Year 2000 are:
• TS 7560 and TS 8560 until December 31, 2000
• TS 9662 until March 31, 2001
47 A2 23UG Rev03
2-1
How to Deal with the Year 2000
2.1.2
Solution
The solution chosen for GCOS 7 respects the following constraints:
• No change to the date format in the objects created by GCOS 7 (compile units,
files, etc.).
• No change to the date format in the reports created by GCOS 7 with
LIST_VOLUME, LIST_FILE, etc.
• No change of date format for disk or tape/cartridge labels or for file catalog
entries.
• No impact on customer applications. The adaptation of GCOS 7 does not itself
require modification of customer applications.
To comply with these constraints, GCOS 7 uses two rules:
• a windowing technique, called the “61 Rule” in this document. This rule
eliminates ambiguity in the interpretation of the date when the year is expressed
as two characters,
• the "1900 Rule" which ensures continuity when the year is coded in a binary
field.
2.1.3
The 61 Rule
The 61 rule defines a validity range when the year is expressed as two characters
(e.g. YYDDD, YY.MM.DD, etc.). The range is from 1 January 1961 to 31
December 2060.
This eliminates ambiguity in the interpretation of the date when the year is
expressed as two characters.
The YY year format is interpreted as follows:
• if YY is greater than or equal to 61, the year belongs to the 1900's, i.e. 1961 to
1999,
• if YY is less than 61 the year belongs to the 2000's, i.e. 2000 to 2060.
2-2
47 A2 23UG Rev03
GCOS 7 Computing Environment
Figure 2-1 shows how years expressed as two characters are interpreted.
00
61
99
Y Y = 6 1 thru 9 9
1900
2000
Y Y = 0 0 thru 60
Figure 2-1.
Interpretation of Year Expressed in Two-Digit Format
The year 1961 was chosen because it pre-dates the existence of GCOS 7.
GCOS 7 uses this rule each time two-character year dates are used.
2.1.4
The 1900 Rule
When the year field is stored in a binary field, its value means the number of years
starting from 1900.
The 1900 rule ensures continuity when the year is stored in a binary field. See the
paragraph GPL Primitives and C System Primitives in the Chapter User
Applications for GCOS 7.
47 A2 23UG Rev03
2-3
How to Deal with the Year 2000
2.2
Bull Platforms
You must consider the information on the Year 2000 compliance of the Bull
platforms given in this chapter to be general information. For more information
on Bull GCOS 7 platforms and their Year 2000 readiness, see the Bull Year 2000
compliance catalog available on the Bull Web site.
2.2.1
DPS 7000 Systems Ready for Year 2000
Table 2-1 shows the DPS 7000 systems ready for the Year 2000 with the minimum
firmware and GCOS 7 requirements.
Table 2-1.
Platform
Ares Phase 2
Ares Phase 3
Auriga 1
Auriga 2
OPTIMA
SUPRA
VEGA
NOVA
ARTEMIS
ARTEMIS
ARTEMIS
ARTEMIS
Operating System and Firmware Requirements
Model
DPS 7000/2x0 (1)
DPS 7000/3x0 (1)
DPS 7000/An (1)
DPS 7000/5x0
DPS 7000/7xx
DPS 7000/8xx
DPS 7000/Dx0
DPS 7000/Mx0
DPS 7000/4x0
DPS 7000/4x5
DPS 7000/Cx0
DPS 7000/MT11/21/31
DPS 7000/MT42/52/62
DPS 7000/
MT/72/82/83/84
/86/88/92/96
DPS 7000/TA
Year 2000
Ready
Firmware GCOS 7 Release
supporting
supporting
Year 2000
Year 2000
End of support Min H2-85 V7 min TS 7458
31 Dec 97
End of support Min L1-055 V7 min TS 7458
31 Dec 98
and ACAS
5.12a
YES
Min M1-145 V7 min TS 7458
(2)
YES
Min P1-065
V7 min TS 7458
YES
Min N1-145 V7 min TS 7458
YES
YES
YES
Min N1-148 V8 min TS 8458
Min P2-010 V8 min TS 8458
Min P2-010 V8 min TS 8458
YES
Min P2-050
V9 min TS 9662
(1) For development and test of Year 2000 applications
(2) Advance notice: End of support 31 December 2000.
2-4
47 A2 23UG Rev03
GCOS 7 Computing Environment
NOTE:
The minimum memory requirement as from TS 7458 is 64 Mbytes. See the
paragraph Upgrade below.
1
3
3
IMPORTANT:
After the year 2000, the behavior of any system that has not migrated to
GCOS 7-V7 minimum TS 7458 will be technically unpredictable. It is
therefore essential for all DPS 7000 systems to be upgraded to a supported
GCOS 7 release before 31 December 1999.
2.2.2
Support of DPS 7000 Systems
Table 2-2 shows the announced dates for end of support for DPS 7/7000 platforms.
Table 2-2.
Platform
L64
T1/T14C
LEO
LYRA
AQUILA
Ares Phase 1
Ares Phase 2
Ares Phase 3
2.2.3
Support of DPS 7/7000 Platforms
Model
DPS 7/x5
DPS 7/x07
DPS 7/x0
DPS 7/xx7
DPS 7/1XX7
DPS 7000/xx
DPS 7000/2x0
DPS 7000/3x0
DPS 7000/An
Support
No longer supported
No longer supported
No longer supported
No longer supported
No longer supported
No longer supported
End of support 31 Dec 1996
End of support 31 Dec 1997
End of support 31 Dec 1998
Upgrade
A technical analysis is recommended before installation of GCOS 7-V7 TS 7458
and later. This is related to the minimum memory requirement of 64 Mbytes and
the size of the applications running on such systems, both of which need to be
taken into account when considering an upgrade.
A hardware disk drives extension can be needed for the installation of TS7458.
47 A2 23UG Rev03
2-5
How to Deal with the Year 2000
2.3
Peripheral Devices
2.3.1
Disks
Table 2-3 summarizes the support of disks by GCOS 7-V7 TS 7458 and later.
Table 2-3.
2.3.2
Disks Supported by GCOS 7-V7 TS 7458 and Later
Device type
M452
D300
M500
D500
B10
Supported by
TS 7458 and later
No
No
Yes
Yes
Yes
FSA
including
CDA 7
Yes
Printers
Table 2-4 summarizes the connectivity of printers and their support by GCOS 7-V7
TS 7458 and later.
Table 2-4.
Bull
Platform
Ares Phase 2
Ares Phase 3
Auriga 1
Auriga 2
OPTIMA
SUPRA
VEGA
NOVA
ARTEMIS
ARTEMIS
Printers Supported by GCOS 7-V7 TS 7458 and Later
MP50 MP60
DPS 7000
Model
2x0/3x0
An
5x0/7xx
8xx
Dx0
Mx0
4x0/4x5
Cx0
MT42/52/62
MT/72/82/83/
84/86/88/92/96
NIP4
Printer Models
PR46 PR54 PR54P
PR71
PR88P PR90 see
Note 2
Yes
Yes
Yes
Yes
Yes
Yes
NS
Yes
NS
NS
No
No
NS
No
No
Yes
Yes
Yes
NS
No
No
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
NS
No
No
Yes
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
NS
NS
NS
NS
No
No
No
No
No
No
No
No
Yes
Yes
Yes
Yes
No
No
No
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
NOTES:
2-6
1.
NS signifies that the product is non-standard. In these cases, contact your
Bull Service Center before connecting these printers.
2.
Certain PR90 printers (for example, FP2000) are delivered as NS.
47 A2 23UG Rev03
GCOS 7 Computing Environment
2.3.3
Cartridge and Tape Drives
Table 2.5 summarizes the support of tape and cartridge drives for TS 7458 and
later.
Table 2-5.
Tape/Cartridge Drives Supported by TS 7458 and Later
MT/T9 CT/M5
Device
Type
Support by
TS 7458
YES
YES
and later
2.3.4
CT/M6
CT/36T
CT/LIB
CT/LIB/M5
CT/LIB/36T
YES
YES
YES
YES
YES
Libraries
Libraries attached to a UNIX server are supported by TS 7458 and later with the
new Year 2000 ready release of the ACSLS software version 5.3.
Libraries attached to an IBM server running the VM/SP operating system are not
Year 2000 ready. Year 2000 readiness is achieved only with servers running
VM/ESA with the new CLS release version 2.4.
Libraries having VM/SP IBM server will have to migrate to a UNIX server.
2.3.5
Diskette Drives
Table 2.6 summarizes the support of diskette drives for TS 7458 and later.
Table 2-6.
Diskette Drives Supported by TS 7458 and Later
Device Type
Support by TS 7458
and later
47 A2 23UG Rev03
F5
Yes
MD
Yes
2-7
How to Deal with the Year 2000
2.4
Communication Products
The following communication products are Year 2000 ready:
Datanet / DNS :
DNS-E (MainWay)
CNP 7/CNS
FCP 7/NCC
V4U3 ts 28
V2 U2
A2U3
N208
NOTE:
Datanet / DNS Version C1U6 is not Year 2000 ready.
For more information on communications products and their Year 2000 readiness,
see the Bull Year 2000 compliance catalog available on the Bull Web site.
2.5
GCOS Service Facilities (GSF)
2.5.1
Telecontrol
TSF 7 (Telecontrol) delivered with GSF 118, since end of 1996, is the first release
of TSF 7 Year 2000 ready.
So the subsequent releases of TSF 7 delivered with GSF 120 and GSF 122 are
Year 2000 ready.
2.5.2
RIDE and DYNDUMP Tools
The products RIDE and DYNDUMP tools will be Year 2000 ready with GSF
version 122.
2.6
GCOS 7 Software Applications
For more information about GCOS 7 software applications and their Year 2000
readiness, see the Bull Year 2000 Compliance Catalog available on the Bull
web-site at http://www.bull.com/year2000
2-8
47 A2 23UG Rev03
3. User Applications for GCOS 7
3.1
User Applications Overview
To solve most of the problems caused by the impact of the Year 2000 on your
applications, you are recommended to modify your programs either:
• by changing two digit year dates to four digits, or
• by retaining the two digit year date and applying a windowing technique (see the
chapter GCOS 7 Computing Environment).
If the first solution is adopted, the task is more complex because it is necessary to
apply the modifications to all elements of the application, including those that are
external to the application itself, such as:
• other called programs,
• databases,
• files.
You will need to take account of calls in your application to the DATE function and
of operations on fields containing two-character year dates. This chapter details
rules and advice for date processing in the various contexts of GCOS 7 users.
It is not essential to use conversion tools but they will greatly simplify the task if
you have a large number of applications to process.
Make sure that any new third party vendor software you acquire is Year 2000
ready.
47 A2 23UG Rev03
3-1
How to Deal with the Year 2000
3.2
Date Processing
You will find below recommendations for the various programming languages and
the different types of applications that you may use on your site.
3.2.1
COBOL
In both COBOL 85 and COBOL 74, the current date is obtained using the verb
ACCEPT:
ACCEPT FROM DATE returns the date in the form YYMMDD,
ACCEPT FROM DAY returns the date in the form YYDDD.
COBOL 85 also manages three new date formats through intrinsic functions as
from GCOS 7 TS 7356:
• ISO standard: YYYYMMDD where integers represent the year, month, and day,
• Julian: YYYYDDD where integers represent the year and the day in the year.
• Integer: where DDDDDDDD represents the number of days after 31 December
1600 using the Gregorian calendar. Monday, January 1 1601 was chosen as the
start date to establish a simple relationship between the Standard Date and
DAY-OF-WEEK, that is, integer date 1 was a Monday, DAY-OF-WEEK 1.
The intrinsic functions CURRENT-DATE and WHEN-COMPILED in COBOL 85
return the date and time in the form YYYYMMDDHHMMSSCCsHHMM (where s
is +, -, or 0).
1
3
3
IMPORTANT:
The intrinsic function CURRENT_DATE is offered with the GCOS 7 COBOL
85 compiler from GCOS 7 technical status TS6152. Any program using the
CURRENT_DATE function and compiled before GCOS 7 TS7356 will have
the millennium part of the year forced to 19 (e.g., 2001 is forced to 1901). The
right millennium is supported by the COBOL compiler delivered from TS7356.
This means that such programs using the CURRENT_DATE function and:
1.
compiled with TS<7356 must be recompiled with at least TS7356.
Recompilation from at least TS7458 is recommended in order to have a
Year 2000 supported system environment.
2.
compiled from TS7356 does not need to be recompiled because from this
TS the millennium part is correctly represented (e.g., 2001 is 2001).
COBOL 74 accepts dates expressed in the form YYMMDD or YYDDD only.
3-2
47 A2 23UG Rev03
User Applications for GCOS 7
Intrinsic functions in COBOL 85 are available to convert from one date format to
another:
DATE-OF-INTEGER
DAY-OF-INTEGER
INTEGER-OF-DATE
INTEGER-OF-DAY
converts from integer to standard
converts from integer to Julian
converts from standard to integer
converts from Julian to integer
A date can also be obtained by a program reading a record that contains a date
value.
If the builtin #DATE is used in a COBOL program via a call to the GCL variable
CREADVAR, the 61 Rule is applied. Alternatively, you can adapt your COBOL
program to use a four-digit year date using the builtin #EXTDATE, but do not
forget to increase the length of the reception zone by two characters. A COBOL
program using the verb #EXTDATE must be used only in conjunction TS 7560 or
later since #EXTDATE is not supported with earlier releases.
3.2.1.1
Problem Handling
There is no Year 2000 impact when the year is expressed as four digits (YYYY).
In other cases, the following aspects must be dealt with:
•
•
•
•
comparison of two-character or digit dates must be revised,
calculations that use the date must be revised,
conversion of four-digit year dates to two digits and vice versa must be revised,
sorts based on two digit year dates will not work. An extension to the GCOS 7
SORT/MERGE utilities will be available during 1997 to resolve this problem.
See the appendix Extensions to GCOS 7 for Year 2000.
Solutions can be found either by programming (as shown in the examples below),
or by converting all two digit year dates to four digits.
1
3
3
IMPORTANT:
If your programs use the value 99 in a date field for exception processing
purposes, problems will occur as soon as the year 1999 enters into the
calculation.
Your programs may also use the value 00 in a date field for exception
processing purposes and this must also be reviewed for a Year 2000 context.
47 A2 23UG Rev03
3-3
How to Deal with the Year 2000
3.2.1.2
Problem Resolution
The following examples show how these difficulties can be resolved by
programming. Note that limit and error cases are not treated.
Duration
COMPUTE YY = YY1 - YY2
is processed by:
IF YY1 - YY2 NOT < 0
COMPUTE YY = YY1 - YY2
ELSE COMPUTE YY = 100 + YY1 - YY2
END-IF
Add Duration to Year Date
ADD N TO YY
is processed by:
IF
YY + N < 100
ADD N TO YY
ELSE COMPUTE YY = YY + N - 100
END-IF
Subtract Duration from Year Date
SUBTRACT N
FROM YY
is processed by:
IF
YY - N NOT < 0
SUBTRACT N FROM YY
ELSE COMPUTE YY = 100 + YY - N
END-IF
3-4
47 A2 23UG Rev03
User Applications for GCOS 7
Date Comparison
IF YY1 > YY2 PERFORM SP
is processed by:
IF YY1 > 60
IF YY2 > 60
IF YY1 > YY2 PERFORM SP
END-IF
END-IF
ELSE IF YY2 > 60 PERFORM SP
ELSE IF YY1 > YY2 PERFORM SP
END-IF
END-IF
END-IF
Sort on Date
SORT FS ASCENDING YY USING FI GIVING FO
is processed by:
SORT FS ASCENDING YY INPUT PROCEDURE FI-PROC
OUTPUT PROCEDURE FO-PROC.
FI-PROC SECTION.
FI1.
OPEN INPUT FI.
FI2.
READ FI INTO FS-REC AT END GO TO FI3.
IF YY > 60 SUBTRACT 61 FROM YY
ELSE ADD 39 TO YY.
RELEASE FS-REC.
GO TO FI2.
FI3.
CLOSE FI.
FO-PROC SECTION.
FO1.
OPEN OUTPUT FO.
FO2.
RETURN FS AT END GO TO FO3.
IF YY > 38 SUBTRACT 39 FROM YY
ELSE ADD 61 TO YY.
WRITE FO-REC FROM FS-REC.
GO TO FO2.
FO3.
CLOSE FO.
See also the appendix Extensions to GCOS 7 for Year 2000 for handling of the
SORT/MERGE utilities.
47 A2 23UG Rev03
3-5
How to Deal with the Year 2000
3.2.2
FORTRAN
3.2.2.1
Date Occurrences
In FORTRAN, the date is obtained using the function KFRTIM. The result is a
character string whose format is determined by an input parameter. The three
possibilities are:
1.
2.
3.
MMM DD, YYYY
HH:MM:SS MMM DD, YYYY
YYDDD
A date can also be obtained by a program reading a record that contains a date
value.
If the builtin #DATE is used in a FORTRAN program via the primitive
FREADVAR, the 61 Rule is applied. You can adapt your FORTRAN program to
use a four-digit date using the builtin #EXTDATE, but do not forget to increase the
length of the reception zone by two characters. The program must not then be used
with a TS <7458 because #EXTDATE did not exist with earlier technical statuses.
3.2.2.2
Problem Handling
If the year is expressed as four digits (YYYY) the Year 2000 produces no
problems.
In other cases, problems are resolved in exactly the same way as for COBOL
described above.
3-6
47 A2 23UG Rev03
User Applications for GCOS 7
3.2.3
C Language
3.2.3.1
Date Occurrences
In C, there are three main formats for date and time:
calendar
expresses the date/time as a long integer representing
the number of seconds since a reference date/time
(January 1, 1970 at 0000 hours local time).
brokendown
expresses the date and time in the form of an integer
field structure, year, month, day, time, where the year
field is the number of years since 1900.
character
expresses the date and time in the form of a character
string with the format:
Tues Jan 8 14:24:47 1991
The current date is obtained by the time function which returns the date/time in
calendar format.
The following functions are used for date/time conversion:
localtime
converts date/time from calendar to brokendown
format.
gmtime
converts date/time from calendar to brokendown
format and additionally converts it from local time to
GMT.
ctime
converts date/time from calendar to character format.
mktime
converts date/time from brokendown to calendar
format (the output date/time is expressed in number of
seconds from January 1 1970 at 0000 hours, local
time).
difftime
compares two date/time values and returns the
difference in number of seconds.
strftime
converts date/time in brokendown format to a character
string with several format possibilities. The year can
be expressed as four characters or two characters (year
in century).
47 A2 23UG Rev03
3-7
How to Deal with the Year 2000
3.2.3.2
Problem Handling
There are no problems for dates obtained by C functions in the form of integers if
they are handled only by C programs.
When the year is obtained from a file or by the function strftime in two-character
format, the impact is as described above for COBOL.
3.2.4
IQS
3.2.4.1
Date Occurrences
The date is returned by the following IQS functions:
$DATE
returns the date in the form YYMMDD, format
�unsigned unpacked decimal 6’
@DATE
returns the date in the form �MMM DD, YYYY’,
format character 12.
$YEAR
returns the current year in the form YYYY, format
decimal 4
The instruction EXEC H_IQS_EXFUNC (function, arguments,...) may call
intrinsic COBOL functions that return the date. The year is always four characters.
3.2.4.2
Problem Handling
The problems are the same as those dealt with for programming languages above.
See the appendix Extensions to GCOS 7 for Year 2000 for a full description of the
solution which is an extension of IQS.
3-8
47 A2 23UG Rev03
User Applications for GCOS 7
3.2.5
UFAS Indexed Files
An indexed UFAS file can be defined with PRIMARY and SECONDARY keys
that can contain a year date in format YY. In such cases, key sorting based on the
year definition will not follow the 61 Rule.
1
3
3
IMPORTANT:
It is essential to check the potential impact on your applications.
3.2.6
IDS/II (DDL, DML, DMCL)
3.2.6.1
Date Occurrences
The date never appears directly in the DDL, DML, or DMCL.
There is, however, a date associated with each element of the DDL, DMCL. When
it is compiled, the date of the object concerned is noted and this date is checked on
execution. To facilitate debugging, the possibility is provided to force a date value
for an object:
• with the old IDS/II, the commands TRANSLATE DMCL and TRANSLATE
SCHEMA DDL of the utility DDLPROC have a parameter FORCED DATE IS
yy mm dd / yy ddd.
• with Full IDS/II, the utility MNDD (H_DDPROC) has the command
MODIFY_DATE (alias PATCH_DATE) which uses dates in a format
determined by the parameters:
- DDLREFDATE
- SDDLREFDATE
- DMLREFDATE
3.2.6.2
format MM.DD.YY.HH.MM
format MM.DD.YY.HH.MM
format MM.DD.YY.HH.MM
Problem Handling
These dates do not present any problems.
1
3
3
IMPORTANT:
IDS/II sets may be sorted using date items declared in the DDL Record Entry.
These date items can contain a year date in format YY in which case a sort of
set occurrences based on this year definition will not follow the 61 rule.
47 A2 23UG Rev03
3-9
How to Deal with the Year 2000
3.2.7
TDS Transactional Applications
3.2.7.1
Date Occurrences
There is no date manipulation or potential impact in any of the following contexts:
•
•
•
•
TDS generation
Master commands
XCP2
HA
There is date manipulation and potential impact in the following contexts:
• /HOST7: the GCL command PRINT_HOST_FILE has been modified to accept
the date on either two or four digits so there is no impact for the user application.
• CDIN structure: CDIN is a standard COBOL structure and has a field called
data-name2 with format PIC 9(06) used for the TDS RECEIVE date.
In the Communication Description for input, the data-name2 format PIC 9(06)
references a date which is the date of reception by TDS.
3.2.7.2
Problem Handling
CDIN structure: the format of this field is as declared in the STDS generation file
and can be YYMMDD (the default value), DDMMYY, OR MMDDYY. This field
belongs to a standard COBOL structure and will not be modified to express the
year as four digits.
1
3
3
IMPORTANT:
It is essential to check the potential impact on your applications of the use of the
reception date.
In /HOST, the GCL command PRINT_HOST_FILE has been modified to accept
the date on either two or four digits so there is no impact for the user application.
3-10
47 A2 23UG Rev03
User Applications for GCOS 7
3.2.8
Journals
3.2.8.1
Date Occurrences
The year part of ENDDATE and BEGDATE is stored internally in a binary field so
GCOS 7 uses the 1900 rule to manage it.
The GCL commands DUMPJRNL and ROLLFWD have been modified. The
fields BEGDATE and ENDDATE now accept either two- or four-digit year dates.
The command RECYCLE_JOURNAL_FILE of MAINTAIN_JAS uses the
parameter LASTDATE in the format [yy]yy.mm.dd/hh.mm.ss.msmsms.
3.2.8.2
Problem Handling
These dates do not present any problems.
3.2.9
FORMS
3.2.9.1
Date Occurrences
Generation
There is no impact for FORMS generation.
Runtime
In the description of the form referred to as identification, there is the form creation
date in format PIC X(5) YYDDD. This format has not been modified since
FORMS only tests for date equality.
3.2.9.2
Problem Handling
These dates do not present any problems.
The date is part of the structure formnameI so you must check that there are no
operations on the date or storage of the date.
47 A2 23UG Rev03
3-11
How to Deal with the Year 2000
3.2.10
Source Members
The year part of the creation and modification date is coded in two-character
format. GCOS 7 uses the 61 Rule to manage these dates.
3.2.11
Load Modules
The year part of the creation and modification date is coded in two-character
format. GCOS 7 uses the 61 Rule to manage these dates.
3.2.12
Compile Units
The year part of the creation and modification date is coded in two-character
format. GCOS 7 uses the 61 Rule to manage these dates.
3.2.13
Catalogs
The year part of LASTREF, LASTSAVE, CREATED, and MODIF is output with a
two-character format: YY.MM.DD/HH.MM.SS.
The year is stored in a binary field in the catalog internal structures. GCOS 7 uses
the 1900 Rule to manage it.
3.2.14
Disk Files
No action is necessary. For EXPDATE and CREDATE the year is coded within the
disk file labels in an 8-bit field and the value is the number of the year counted
from 1900. The range is from 1900 through 2155.
Disk files which must never expire may have been given the maximum expiration
date of 99/12/31. When we reach the Year 2000, such files will have passed their
expiration date. This means they are in danger of being deleted or migrated out,
automatically and transparently. It is therefore essential, as soon as TS 7560/8560
is installed, to identify such files (via LIST_FILE/FILLIST,
LIST_VOLUME/VOLLIST) and to give them a modified expiration date (via
MODIFY_FILE/FILMODIF or the GPL primitive $H_FILMODIF). The latest
possible date is now 60/12/31.
3-12
47 A2 23UG Rev03
User Applications for GCOS 7
3.2.15
Magnetic Tape Files
No action is necessary. The labels already conform to the IBM standard
GC26-4145-2 which allows coding of subsequent centuries. The date is coded as
six characters of which the leftmost has the following meanings:
Blank
0
1
and so on.
1900-1999
2000-2099
2100-2199
Tape files which must never expire may have been given the maximum expiration
date of 99/12/31. When we reach the Year 2000, such files will have passed their
expiration date. This means they are in danger of being deleted transparently. It is
therefore essential, as soon as TS 7560/8560 is installed, to identify such files (via
LIST_FILE, FILLIST, LIST_VOLUME, VOLLIST). These files must then be
recreated (via LOAD_FILE, COPY_FILE, CREATE, FILDUPLI) with a new
expiration date. The latest possible date is now 60/12/31.
3.2.16
JCL
3.2.16.1 Date Occurrences
The date occurs in the following JCL parameters:
• EXPDATE (format DDD, YY/DDD, YY/MM/DD) occurring in:
в€’ parameter group OUTFILE: CREATE, FILSAVE, FILALLOC, COMPARE,
в€’
в€’
в€’
в€’
в€’
в€’
в€’
LIBMAINT, etc.
parameter group PRTFILE: CREATE, PRINT, COMPARE, LIBMAINT, etc.
parameter group OUTSET: CREATE, FILSAVE, FILALLOC, etc.
OUTLIB description: LIBMAINT, etc.
WORKfile description: COBOL, etc.
basic ASSIGN.
PREALLOC, LIBALLOC, FILMODIF.
CATBUILD, CATMODIF.
• UPDATEGE and UPDATELE (format YY/MM/DD) specified by the SELECT
parameter of CATLIST.
• BEGDATE and ENDDATE (format YY.MM.DD/HH[...]) specified by:
в€’ ROLLFWD, and
в€’ DUMPJRNL.
47 A2 23UG Rev03
3-13
How to Deal with the Year 2000
• FORCED DATE IS {YY MM DD ! YY DDD} specified by: the TRANSLATE
command of DDLPROC in IDS/II.
• SYSMAINT processor commands: the LIST command with SORTKEY=DATE
lists the selected elements according to the date of creation: the year is coded as
two digits. 00 (for the Year 2000) is treated as earlier than 96 (year 1996), 97
(year 1997), etc.
• The default value of &H_DATE (format YYMMDD).
• The selection criteria CREATE and MODIF of the LIBMAINT processor
commands: occurring with the commands CRLIST, DELETE, MOVE, etc.
where the SELECT parameter has the date format MM/DD/YY.
See also the appendix Extensions to GCOS 7 for Year 2000 for handling of the
SORT/MERGE functions.
3.2.16.2 Problem Handling
The date format does not change in JCL for Year 2000 purposes. Since the year
stays coded as two digits, you must specify 98 for 1998, 99 for 1999, 00 for 2000,
01 for 2001, 02 for 2002, etc.
To interpret a two digit year date, GCOS 7 applies the 61 rule. This means, for
example, that if an expiration date is declared as 60, from GCOS 7-V7 TS 7560
and later the year date is interpreted as 2060. By contrast, pre-TS 7560, a file with
such an expiration date is treated as expired in 1960.
Other pre- and post-TS 7458 differences are:
• EXPDATE=00/300 is equivalent to EXPDATE=300. From TS 7560,
EXPDATE=00/300 means the 300th day of the Year 2000.
• The same is true for tape files except that the expiration date cannot be modified
by the utilities referred to above. Such tape files must therefore be recreated
with a new expiration date using CREATE/LOAD_FILE,
FILDUPLI/COPY_FILE or a user COBOL application.
3-14
47 A2 23UG Rev03
User Applications for GCOS 7
3.2.17
GCL
3.2.17.1 Date Occurrences
GCL Parameters
The date occurs in the following GCL parameters:
• EXPDATE (format DDD, [YY]YY/DDD, [YY]YY/MM/DD) used with:
в€’ the parameter groups FILE, OUTFILE, PRTFILE, LIB, OUTLIB, associated
with GCOS 7 commands,
в€’ the parameter group ASGi of the command EXEC_PG,
в€’ file, catalog, and system creation commands:
в€’ BUILD_FILE, BUILD_LIBRARY,В·BUILD_SYSTEM,
CREATE_CATALOG, CREATE_DK_FILE, CREATE_FILE,
CREATE_FILESET, CREATE_TAPE_FILE,
в€’ commands used to modify file or catalog expiration dates: MODIFY_FILE,
MODIFY_CATALOG,
в€’ file and library transfer directives: ENTER_FILETRANS_REQ,
ENTER_LIBTRANS_REQ,
в€’ file and library transfer command: EXECUTE_FILE_TRANSFER.
• WHEN (format MONTH.DD.[YY]YY.HH.MM] used with:
в€’ the request modification command: MODIFY_USER_REQ,
в€’ file transfer commands: ENTER_FILETRANS_REQ,
ENTER_LIBTRANS_REQ.
в€’ file migration requests:
REQUEST_MIGRATION_IN, REQUEST_MIGRATION_OUT,
в€’ job execution requests: ENTER_JOB_REQUEST
• LASTREF (format DDD or [YY]YY/MM/DD) used with the migration request
REQUEST_MIGRATION_OUT,
• UPDATEGE and UPDATELE (format [YY]YY/MM/DD) used with the
commands LIST_CATALOG, LIST_DIR and LIST_GEN,
• BEGDATE and ENDDATE (format [YY]YY.MM.DD/HH[...]) used with the
commands ROLLFWD and DUMPJRNL,
• LASTDATE (format [YY]YY.MM.DD/HH[...] used with the command
RECYCLE_JOURNAL_FILE in the MAINTAIN_JAS processor.
47 A2 23UG Rev03
3-15
How to Deal with the Year 2000
• SDATE and EDATE (format DDMM[YY]YY) used with the command
PRINT_HOST_FILE,
• FROM and OPTION (format MM.DD.[YY]YY/HH.MM) used with the
commands DISPLAY_ERROR_LOG and DISPLAY_CONSOLE_LOG,
• EXPDATE (format DDD, [YY]YY/DDD, [YY]YY/MM/DD) used with the
commands CREATE_VOLSET and MODIFY_VOLSET of the processor
MAINTAIN_STORAGE_MANAGER,
• SELECT with date format MM/DD/YY used with the creation and modification
commands of the MAINTAIN_LIBRARY processor: CRLIST, DELETE,
MOVE, etc. the year remains as two digits only.
• DDLREFDATE, SDDLREFDATE and DMCLREFDATE (format
MM.DD.YY.HH.MM) used with the command MODIFY_DATE of the
processor MAINTAIN_DATA_DESCRIPTION. For these parameters the
year remains as two digits only.
• SORTKEY=DATE used with the command LIST of the processor
MAINTAIN_SYSTEM to list the selected items sorted by creation date. The
year remains coded as two digits. 00 (for the Year 2000) is treated as earlier
than 96 (year 1996), 97 (year 1997), etc.
See also the appendix Extensions to GCOS 7 for Year 2000 for handling of the
SORT/MERGE functions.
Builtins
The GCL builtins concerned are:
• #ISITDATE which accepts date formats [YY]YY/[M]M/[D]D.
• #FW which accepts date formats [YY]YY/MM/DD. The character string
returned has the format YYWW.
• #DATE has not changed. The date is still returned with format YY/MM/DD.
• #EXTDATE (new builtin from TS 7560) used with the DISPLAY_PROFILE
directive returns the date with format YYYY/MM/DD.
3-16
47 A2 23UG Rev03
User Applications for GCOS 7
3.2.17.2 Problem Handling
From TS 7458, GCL accepts either of the formats YY and YYYY in the date fields
of most parameters, except as indicated above.
There is, however, no change in the default date format. If the default format is
used, the date stays coded as two digits, so you must specify 98 for 1998, 99 for
1999, 00 for 2000, 01 for 2001, 02 for 2002, etc.
To interpret a two digit year date, GCOS 7 applies the 61 rule. This means that if a
file was created with an expiration date, the interpretation is not the same before
GCOS 7-V7 TS 7560 as after. If the year is expressed as 60, it is considered as
expired pre-TS 7560, but not expired as from TS 7560.
Other pre- and post-TS 7458 differences are:
• EXPDATE=00/300 is equivalent to EXPDATE=300. From TS 7560,
EXPDATE=00/300 means the 300th day of the Year 2000.
• The same is true for tape files except that the expiration date cannot be modified
by the utilities referred to above. Such tape files must therefore be recreated
with a new expiration date using LOAD_FILE, LOAD_FILESET, COPY_FILE,
COPY_FILESET, or a user COBOL application.
Ideally you should modify your GCL source programs to use four-digit year dates
then recompile them.
47 A2 23UG Rev03
3-17
How to Deal with the Year 2000
3.2.18
GPL Primitives and C System Primitives
Some GPL primitives and C system primitives have date fields in the input or
output parameters. GCOS 7 applies the 61 Rule or the 1900 rule as appropriate.
GPL primitives concerned by the 61 Rule
H_DCJOBLIST, H_PUTACT, H_TIME, H_TRTIME, H_CD, H_DCSSF,
H_SUBFT, H_GETLOGC, H_SPAWNJOB, H_RCVHDR, H_DCSRT,
H_DCSKEY.
C system primitive concerned by the 61 Rule
h_putact_header.
The primitive SDI-GPL H_CMDSYST calls the domain S_Y_S_T_E_M. In this
domain the date is managed by the keyword EXPDATE (formats supported: DDD,
[YY]YY/DDD, [YY]YY/MM/DD):
• used with the commands BUILD_FILE, BUILD_LIBRARY,
• via the file-literal OUTFILE of the command LOAD_FILE,
• via the file-literal LIB of MAINTAIN_LIBRARY.
If the builtin #DATE is used in a GPL program via the primitive $H_READVAR,
the 61 Rule is applied. You can adapt your GPL program to use a four-digit date
using the builtin #EXTDATE, but do not forget to increase the length of the
reception zone by two characters. The program must not then be used with a TS
<7458 because #EXTDATE did not exist with earlier technical statuses.
GPL primitives concerned by the 1900 Rule
H_JOBTIME, H_TIME, H_TRTIME, H_ASSIGN, H_DCCATOPT,
H_DCFCOPY_RCD, H_DCFGEN_RCD, H_RTFLASG, H_FILMODIF,
H_PREALLOC, H_LIBALLOC, H_DCFL, H_DCFILINFO, H_DCEXTVOL,
H_DCLOGLAB, H_DFL1, H_GETLOGC, H_DCRESTIME.
C system primitives concerned by the 1900 Rule
h_jobtime, struct _assign, struct _cat_opt, struct _fgen_rcd, struct _fcopy_rcd,
struct_prealloc, struct _fgenextd_rcd, h_mdf_expdate.
See also the appendix Extensions to GCOS 7 for Year 2000 for handling of the
SORT/MERGE functions.
3-18
47 A2 23UG Rev03
User Applications for GCOS 7
3.2.19
SQL 7
3.2.19.1 Date Occurrences
SQL 7 does not process any variables in date format.
The current date is obtained by using the builtin NOW with the command:
SELECT NOW FROM IIDBCONSTANTS
The date is returned with format YYMMDD HH:MM:SS and is of type
"character”.
3.2.19.2 Problem Handling
Check whether your programs obtain the date using builtin NOW.
3.2.20
ORACLE
3.2.20.1 Date Occurrences
The following information is taken from the ORACLE SQL Reference Manual.
It remains the copyright of the ORACLE Corporation.
ORACLE uses two date format elements:
• the ISO standard date format element
• the RR date format element.
ISO standard date format element
ORACLE calculates the values returned by the date format element IYYY,IYY,IY,
and IW according to the ISO standard. There is therefore no impact on the Year
2000.
47 A2 23UG Rev03
3-19
How to Deal with the Year 2000
RR date format element
The RR date format element is similar to the YY date format element but it
provides additional flexibility for storing date values in other centuries. The RR
date format element allows you to store 21st century dates in the 20th century by
specifying only the last two digits of the year. It will also allow you to store 20th
century dates in the 21st century in the same way if necessary.
If you use the TO_DATE function with the YY date format element, the date value
returned is always in the current century. If you use the date format element
instead, the century of the return value varies according to the specified two-digit
year and the last two digits of the current year. The following table summarizes the
behavior of the RR date format element:
If the last two 0 thru 49
digits of the
current year
are:
50 thru 99
If the specified two-digit year is:
0 thru 49
50 thru 99
The return date is in the
The return date is in the
current century
century before the current one
The return date is in the
The return date is in the
century after the current one current century
The following example demonstrates the behavior of the RR date format element.
EXAMPLE:
Assume these queries are issued prior to the Year 2000.
SELECT TO_CHAR(TO_DATE('27-OCT-95', 'DD-MON-RR'), 'YYYY')
"4-digit year" FROM DUAL
The four digit year is 1995.
SELECT TO_CHAR(TO_DATE('27-OCT-17', 'DD-MON-RR'), 'YYYY')
"4-digit year" FROM DUAL
The four digit year is 2017.
Assume these queries are issued in the Year 2000 or after.
SELECT TO_CHAR(TO_DATE('27-OCT-95', 'DD-MON-RR'), 'YYYY')
"4-digit year" FROM DUAL
The four digit year is 1995.
SELECT TO_CHAR(TO_DATE('27-OCT-17', 'DD-MON-RR'), 'YYYY')
"4-digit year" FROM DUAL
The four digit year is 2017.
3-20
47 A2 23UG Rev03
User Applications for GCOS 7
Note that these queries return the same values regardless of whether they are issued
before or after the Year 2000. The RR date format element allows you write SQL
statements that will return the same values after the turn of the century.
вќ‘
3.2.20.2 Problem Handling
Check your applications to see how the date is used.
3.2.21
Job Output Report
There is no impact since the JOR already uses four-digit year dates.
3.2.22
Communications
There is no impact on network generation and file transfers by UFT.
47 A2 23UG Rev03
3-21
How to Deal with the Year 2000
3.3
Testing Applications for Year 2000
When you have adapted your applications, you will need to be able to simulate post
1999 dates and the transition from 31 December 1999 to 1 January 2000 without
having to modify the system date. The test method to use depends on the facilities
available on your site.
3.3.1
Millennium Bi-System Test Facility
The Millennium Bi-system Test Facility is available in a bi-system configuration,
that is two GCOS 7 operating systems running on a single DPS 7000. One of these
operating system runs with the real date while the other runs with a year date that
can be post-Year 2000 (selected by the customer for application test purposes).
The bi-system test facility is available on DPS 7000/MT42/52/62 and up.
There are two distinct product offers available starting with GCOS 7 TS 8458:
• A factory-fitted Year 2000 test platform, comprising one standard production
system and a second system dedicated to application testing. In this
configuration, the date for the test system must be set each time it is initialized.
The two systems cannot share either files or disks. This solution requires the
MIs CPFD059 and UTSD018.
• A user-defined Year 2000 test platform, where the two systems can both operate
in production mode (standard bi-system) but system 1 can be initialized as and
when required to operate in the same way, and with the same constraints (see
below), as the factory fitted platform. This solution requires the MIs CPFD046
and UTSD002.
In the factory-fitted version, millennium test mode is automatically set. In the
standard bi-system version, millennium test mode on system 1 is set by the
operator from the Service Processor.
3.3.1.1
IL01 Option Constraints on Millennium Test System
The following IL01 constraints apply to the test mode system:
• The IL01 options must include the DATE option with the format:
DATE(mm.dd.yy/hh.mm[.ss])
If the date option is omitted on a millennium test system, the following message
is displayed and IL01 OPTIONS? is repeated:
IL45 MILLENNIUM TEST SYSTEM, DATE MANDATORY
3-22
47 A2 23UG Rev03
User Applications for GCOS 7
• The option SHARED is not allowed. The following message is displayed and
IL01 OPTIONS? is repeated:
IL46 MILLENNIUM TEST SYSTEM, SHARING FORBIDDEN
• The option TIMEDEV is not allowed. The following message is displayed and
IL01 OPTIONS? is repeated:
IL49 MILLENNIUM TEST SYSTEM, TIMEDEV FORBIDDEN
• If pre-dating occurs, message IL70 is replaced by:
IL48 IMPORTANT: PREDATING (after the PREVIOUS... and CURRENT
LOCAL... messages).
3.3.1.2
GCOS 7 Constraints on Millennium Test System
The following GCOS 7 constraints also apply on the test mode system:
• MODIFY_TIME is not allowed. If you attempt to specify a different time, you
will receive the message:
TM09 MDTIME IGNORED
The reply to a DISPLAY_DEVIATION_TIME command is:
TM13 GCOS7 TIMEDEV IS 00.00
• The command MODIFY_HARDWARE_CONFIGURATION UNIT=<unit>
ACTION=IN SHARE=1 is forbidden. If you specify it, you receive the
message:
DV27 GCOS7: SITE NOT CONFIGURED FOR DUAL SYSTEM USAGE.
SHARE OPTION IS IGNORED
The same message is sent if a standard bi-system becomes a millennium test
system. If there is a list of shareable disks for the two systems, the list is
ignored.
• The Load Module H_TPC giving access to the Time Power Control commands
and called via the START_POWER_TIMER command is forbidden. If called,
the following message is displayed:
PW02 FUNCTION NOT AVAILABLE, CONTACT SUPPLIER
47 A2 23UG Rev03
3-23
How to Deal with the Year 2000
3.3.1.3
Impact on the Millennium Test System
Factory-Fitted Millennium Test System
A millennium test system set up in the factory is entirely independent of the
production system. The date on the production system is the current date provided
by the system whereas the date on the test system is the date provided by the
operator. There is no access to the system date on the test system. TIMEDEV is
always 0.
Standard Bi-System
In a standard bi-system, when the first system is to be switched to millennium test
mode, you are recommended to remove any disk sharing between the two systems.
This is in the interests of clean operation - the list of shared disks will in any case
be ignored on the test system.
When the first system is switched to millennium test mode, the TIMEDEV as
found in the PREVIOUS LOCAL... message becomes TIMEDEV=0.
If you execute a MODIFY_TIME command on the production system, there is no
impact on the test system where the time is controlled by TIMER.
If you execute a MODIFY_POWER command on the production system, the
power off will be done simultaneously on both systems. You must therefore ensure
consistency of the Time Power Control function.
On a standard bi-system, each time that the initialization mode of system 1 is
switched in either direction, either to millennium test mode or to normal production
mode, an INR and a RESTART(CLEAN) are necessary to avoid the system
becoming frozen and journalization problems.
If there is an automatic RESTART on the test system:
• if the member RELOAD_OPTIONS or INIT_OPTIONS contains the DATE
option, the automatic restart is effective but the start date is always that specified
by the DATE option,
• if the member RELOAD_OPTIONS or INIT_OPTIONS does not contain the
DATE option, the message:
IL45 MILLENNIUM TEST SYSTEM, DATE MANDATORY
is displayed followed by IL01 OPTIONS? Automatic restart is possible when
you supply the date.
3-24
47 A2 23UG Rev03
User Applications for GCOS 7
3.3.1.4
Examples
EXAMPLE 1:
Millennium test system without DATE at IL01 OPTIONS? The previous restart
was done on this system which is part of a standard bi-system.
SYSTEM PREVIOUS STATUS ON 4/11/97 AT 17.00
SHUT DOWN
*
IL01 OPTIONS?
I:
IL45 MILLENNIUM TEST SYSTEM, DATE MANDATORY
*
IL01 OPTIONS?
I:
DATE(04.11.05/18.00)
>>>PREVIOUS LOCAL DATE : 17.00.34 APR 11,1997 TIMEDEV = +02.00
>>>CURRENT LOCAL DATE : 18.00.29 APR 11,2005 TIMEDEV = +00.00
EXAMPLE 2:
Millennium test system with a DATE specified earlier than the previous one.
......
*
IL01 OPTIONS?
I:
DATE(04.11.98/15.00)
>>>PREVIOUS LOCAL DATE : 18.15.21 APR 11,2005
>>>CURRENT LOCAL DATE : 15.00.29 APR 11,1998
IL48 IMPORTANT PRE-DATING
TIMEDEV = +00.00
TIMEDEV = +00.00
EXAMPLE 3:
Millennium test system with automatic restart.
......
*
IL01 OPTIONS?
I:
INIT(AUTO),DATE(04.14.97/11.00)
>>>PREVIOUS LOCAL DATE : 15.10.23 APR 11,2005
>>>CURRENT LOCAL DATE : 11.00.29 APR 11,1997
IL48 IMPORTANT PRE-DATING
TIMEDEV = +00.00
TIMEDEV = +00.00
Build member RELOAD_OPTIONS of SYS.HSLLIB.
NEXT RESTART
47 A2 23UG Rev03
3-25
How to Deal with the Year 2000
SYSTEM PREVIOUS STATUS ON 4/11/97 AT 11.02.24
SHUT DOWN
BKST(/)
PVMF(BFS714)
TVMF(BFS714)
LIB(BFS714)
DATE(04.01.05/12.00)
>>> 12.00.29 APR 01,2005
TIMEDEV = +00.00
The next restart is the same as above if in MODIFY_RESTART_OPTIONS
REPEAT=1.
EXAMPLE 4:
Attempt to start the load module H_TPC on a millennium test system with the
command START_POWER_TIMER.
S:SPWRTM
16.36 X384 IN TPC_JOB USER=OPERATOR1 CLASS=P SPR=7 STATION=BY11
16.36 STARTED JOB TPC_JOB OPERATOR1 P
PW02 FUNCTION NOT AVAILABLE, CONTACT SUPPLIER
16.37 X384.1 ABORTED TPC_JOB OPERATOR1 SEV3
вќ‘
3.3.2
Millennium Application Test Facility (Private Timer)
For customers who do not have the DPS 7000 models capable of running in
bi-system mode, BULL has developed a millennium applications test facility
known as Private Timer to help during the application test phase.
This test facility, available from GCOS 7-V7 TS 7560 and GCOS 7-V8 TS 8560,
enables you to test applications with dates beyond 2000 without disrupting the
system or other applications.
The Private Timer enables you to test Year 2000 readiness of the applications that
you select. It cannot, however, be used to simulate passing the Year 2000 for your
operations as a whole.
This facility is intended primarily for use in connection with applications that
manage and compare dates. It enables you to run a given application with a
"private time", which is in fact both date and time.
3-26
47 A2 23UG Rev03
User Applications for GCOS 7
The Private Timer can be activated for the following user objects:
• a Load Module,
• a Job,
• a Project.
This solution requires the MI UTSD024 (formerly UTSD019).
It is henceforth possible to record a private time prior to the real date of the system
so as to allow execution, at the start of the year 2000, of applications still
insufficiently updated. It is strongly recommended to reserve this capability to this
carefully targeted area. This function is available as a standard feature with SER
P5068.02 with GCOS 7-V7 TS 7560 and GCOS 7-V8 TS 8560. No patch is
required with TS 9662.
The parameters recorded are saved in a VMF file and restored following a forced
stop (TSYS) or an involuntary stop (CRASH) of the GCOS 7 session in event of
WARM or COLD RESTART. These parameters are deleted in case of a restart
with RESTORE.
Private Timer Activated for Load Modules
You can start one or more Load Modules (LMs) with a private time. Each time that
the LM consults the system for the date and time, it updates its private time by the
time that has passed since the LM was started. The private time thus advances at
the same rate as the system time, and all dates and times used by the LM are
therefore in increasing date/time order.
However, reports written in the JOR (STEP STARTED and STEP COMPLETED),
use the real system time. An IMPORTANT message is added in the JOR
specifying the private date and time when the LM was started. The same message
is added in the LOGC file with a key corresponding to the real system time.
Private Timer Activated for Jobs
You can start one or more Jobs with a private time. Irrespective of which LM is
currently running, each time that the Job consults the system for the date and time,
it updates its private time by the time that has passed since the Job was started.
The private time thus advances at the same rate as the system time, and all dates
and times used by the LMs for this Job are therefore in increasing date/time order.
However, reports written in the JOR (STEP STARTED, STEP COMPLETED,
START, STOP, and RESULT JOB COMPLETED), use the real system time.
An IMPORTANT message is added in the JOR specifying the private date and time
when the Job was started, and a similar message is added for the private time at the
start of each LM. The same messages are added in the LOGC file with a key
corresponding to the real system time.
47 A2 23UG Rev03
3-27
How to Deal with the Year 2000
Private Timer Activated for Projects
You can declare a private time for one or more projects. The first Job activated
under a project with a private time is started with the declared private time.
Subsequent Jobs start with the updated private time thus ensuring continuity of the
date/time until the private time is invalidated for the project. This feature makes it
possible to simulate an IOF session with a private time.
However, reports written in the ACCOUNTING file use the real system time.
Records in the LOGC file have a key corresponding to the real system time.
Y2KTEST
The Millennium Test Booster system option allows customers to take maximum
advantage of their co-processors (HRP, X-HRP, PSP, BES, CDPs) when testing
applications for Year 2000 or Euro. Millennium Test Booster enables any
application using the Private Timer to run on co-processors. Moreover, this testing
process can be isolated in a particular co-processor resource by using the CDP full
support option (Artemis only). This can be done by connecting the privileged
function Y2KTEST to a given resource domain.
This option requires the MI UTSD024 (formerly UTSD019).
EXAMPLE:
CNFUNC DOMAIN=CDP2 FUNCTION=Y2KTEST
вќ‘
3.3.2.1
3-28
Objects Affected by Private Timer
Files
files manipulated in a private time environment have
simulated modification or creation dates.
Subfiles
subfiles (for example, library members) manipulated in
a private time environment have simulated
modification or creation dates.
Records
the date/time incorporated in a record and derived from
the Job or Load Module is the simulated date/time.
47 A2 23UG Rev03
User Applications for GCOS 7
3.3.2.2
Hints and Precautions
Load Modules
No check is made to see if a Load Module belongs to the system (that is , is stored
in the library SYS.HLMLIB). All LMs started with a private time execute with the
simulated time. You are therefore strongly recommended to limit this type of
validation to private LMs.
Files
Deletion of files with an expiration date early than the simulated date is accepted
even if the BYPASS option is not specified.
If you start Jobs or LMs that cause concurrent accesses by a file submitted by a Job
with a private time and another Job with either the system time or a different
private time, you must take care to manage the different date/time impact on the
files concerned.
TDS
If there is a restart WARM of a TDS that was started with a private time, it will be
restarted with the same private time as the first time it was started (except if the
TDS was started under a private time for project, in which case the private time
will have advanced). This may give rise to records not in chronological order.
Repeatable Jobs
A Job that is restarted will have the same private time when repeated as when it
was first started (except if the Job was started under a private project, in which case
the private time will have advanced).
IQS/IDS
The date of compilation of a schema must always be prior to the date of an
application or a file that uses it. When IQS/IDS is started in a private time
environment, the creation of schemas, applications, and files must respect this rule
in the interests of normal, straightforward operation. Then, on return to normal
system time, everything will still function normally. But if a schema is created
with a private time, it cannot be used with an application or file using the system
time because the schema date will be later.
47 A2 23UG Rev03
3-29
How to Deal with the Year 2000
3.3.2.3
Constraints
EJR and EFTR with the option WHEN
If you execute an EJR or EFTR command with the option WHEN (except
WHEN=IMMED) in a private time environment, the time displayed will be the
current simulated time but execution will not take place until this time becomes the
system time.
EXAMPLE:
On 25 April 1997, the private time 31 December 1999 12:00 is validated for the
project Y2K. The first job activated under Y2K with a private time, is started with
the declared private time. Subsequent jobs start with the updated private time
(unless the private time is invalidated for the project). The first IOF session for this
project will start with the time 31 December 1999 12:00. But if a user in the
project Y2K executes the command:
EJR A WHEN=+5M
The job request will be executed not in 5 minutes' time but on 31 December 1999
at 12:05 system time.
вќ‘
JCL
The value &H_DATE always returns the system date and time.
Journals
The save date and time recorded in journals is system date and time and the private
time is never used in this context. If you do a static rollforward without giving a
start date (the normal, recommended situation), the time will be system rather than
private time. Similarly, the LIST command of the MNJAS processor invariably
returns the real system time.
Also, TDS administrators must give the system time as the mandatory parameter of
DUMPJRNL.
GPL
The builtin GETOD() returns system time of day (no change).
The system primitive H_JOBTIME returns system date and time.
3-30
47 A2 23UG Rev03
User Applications for GCOS 7
3.3.2.4
Scope of Application
You can use the Private Timer in batch, IOF, or TDS mode.
When an application is started, GCOS 7 recognizes a private time first of all at
project level. If there is no private time for the project, it next checks for the Job
and finally for the Load Module.
If a Job with a private time PT1 is started under a project with private time PT2,
time PT2 will be used. A message in the JOR indicates the private time used.
However, if the time of the project is earlier than the system time when the Job is
started, the project time is not considered valid so the private time for the Job (or
the LM) is used instead.
3.3.2.5
Implementation
To start (VALIDATE_PRIVATE_TIMER, alias VPRVTM) or stop
(INVALIDATE_PRIVATE_TIMER, alias IVPRVTM) the Private Timer for a
project, Job or LM, you must have sysadmin rights or be Main operator.
The command to display the list of all objects for which a private time has been
declared (DISPLAY_PRIVATE_TIMER, alias DPRVTM) is available to all users.
For details of these commands, see the Appendix More About Private Timer.
The maximum number of objects for which a private time can be declared is 30 for
each of the types project, Job, LM, that is 90 overall.
3.3.2.6
Messages in the JOR
Examples of reports written in the JOR are given in the Appendix More About
Private Timer.
47 A2 23UG Rev03
3-31
How to Deal with the Year 2000
вќ‘
3-32
47 A2 23UG Rev03
4. Conversion Methodology
Whichever approach you decide to adopt, it is vital to have a rigorous strategy.
The best approach is to group the data for conversion into projects, then use a three
stage methodology:
• preliminary study to determine approximate costs,
• detailed diagnosis,
• modification of all programs and files impacted.
Check that all related data has been modified then test the programs, either in a live
application or in a simulation, using pre- and post-Year 2000 dates.
47 A2 23UG Rev03
4-1
How to Deal with the Year 2000
4.1
Changing Two Digit YEAR Dates to Four Digits
4.1.1
Purpose
The purpose is to change all occurrences of two digit year dates in your
applications to their four digit equivalents.
This will involve all kinds of data: files, programs, screen forms, etc.
You are recommended to use a bridge in your applications:
• first convert the date data fields from six to eight characters.
• put the applications into groups, then use a bridge; this bridge must be able to
handle both modified and non-modified programs.
The bridge method can also be used for archived files.
4.1.2
Using DSL and GCOS 7 Data Management Utilities
You can use the GCOS 7 utilities to convert dates in data files with GCOS 7TS 9662.
In particular, you can use the extension of DSL permitting the inclusion of several
RECORD paragraphs in a DSL deck. See the chapter on DSL in the manual
GCOS 7 Data Management Utilities.
EXAMPLE:
This example is taken from the manual GCOS 7 Data Management Utilities.
The input file (X.OLDDATE) contains records beginning with a year coded with 2
decimal digits. In the output file (X.NEWDATE), this year is extended to 4
decimal digits.
The input records are 200 bytes long.
4-2
47 A2 23UG Rev03
Conversion Methodology
The output records will be 202 bytes long and will begin with a year that is 4 bytes
long.
CREATE INFILE = X.OLDDATE
OUTFILE = (X.NEWDATE, CATNOW, DEVCLASS = MS/FSA, MEDIA = AB)
OUTALC OUTDEF = (RECSIZE = 202)
COMFILE = *DSL;
$INPUT DSL, PRINT;
RECORD:
INCLUDE = 1,2 LE '60'
ARRANGE = '20', (1,200)
RECORD:
INCLUDE = 1,2 GT '60'
ARRANGE = '19', (1,200)
END:
$ENDINPUT;
A two-digit year (xx, where xx <= 60) in the input file, is converted to a 4-digit
year 20xx in the output file.
A two-digit year (xx, where xx > 60) in the input file, is converted to a 4-digit year
19xx in the output file.
вќ‘
4.2
Retaining Two Digit Year Dates
If you decide to avoid the expense of conversion as described above, your
programs will need to apply the rules described in chapter 2 for operations on
dates:
• the 61 Rule, or equivalent.
This is the windowing technique as used by the GCOS 7 operating system, but
there is no reason why your window should not have different start and end
dates for the century covered by the window.
• the 1900 Rule.
• if your application uses the expressions YY + n and YY - m, the usable window
is: (YY - m, YY + n).
47 A2 23UG Rev03
4-3
How to Deal with the Year 2000
вќ‘
4-4
47 A2 23UG Rev03
5. Conversion Tools
If you wish to use one of the conversion tools available on the market:
• make sure that the source versions of all your applications are available,
• choose a tool running on a PC or other system that will enable you to identify
where modifications are required as well as to propagate the changes,
• set up a conversion methodology, with breakdown by project. Make sure that all
source programs are consistent,
• make sure that you can process both programs migrated out and those not
migrated out,
• check over the records of all that you have done.
Various tools are available that use a reference base created from source programs,
JCLs, DDLs, Forms, grammars (COBOL, Fortran, JCL, etc.) and create links
between the objects so that you can make an analysis of the impact on your
applications. The tools then help you to make the necessary modifications.
1
3
3
IMPORTANT:
BULL can provide you with tools adapted to GCOS 7 as well as associated
services. Contact your BULL account executive.
47 A2 23UG Rev03
5-1
How to Deal with the Year 2000
вќ‘
5-2
47 A2 23UG Rev03
A. SORT / MERGE Extension for Year 2000
An extension of the SORT/MERGE utilities is available for users who are keeping
the two digit year format. These facilities are available from GCOS 7-V7 TS 7560
and GCOS 7-V8 TS 8560.
A.1
SORT/MERGE with COBOL
In the SORT/MERGE statement, a new phrase for DATE will specify that the sort
policy is to follow the 61 Rule:
SORT/MERGE .....KEY {date_name [FOR DATE]...}
where date_name is a 2-character usage "DISPLAY" format.
EXAMPLE:
SORT/MERGE .....KEY {date_name1, date_name2 DATE}
• if the value of date_name2 is between 0 and 61
• and the value of date_name1 is between 67 and 99
date_name2 is considered to be later than date_name1.
COBOL programs that use a "SORT file_name" statement can dynamically change
the start year for the 100-year period to be covered by using an OPTIONS
parameter sub-string in the sort step such as:
SORT(...LOWYEAR=YY).
This feature does not apply to MERGE or "SORT data_name" statements.
вќ‘
47 A2 23UG Rev03
A-1
How to Deal with the Year 2000
A.2
SORT with GPL
GPL programs with a sort sub-routine use the primitive $H_DCSRT to create a sort
definition table (SRTDEF) and the primitive $H_DCSKEY to create a keys table.
These are used as part of the argument for the primitive that starts the sort,
$H_BEGSRT.
$H_DCSRT now has an optional parameter, LOWYEAR, with the syntax:
LOWYEAR [ = start_year | 61 ]
The LOWYEAR parameter allows you to define a 100-year window starting from
start_year. If you specify LOWYEAR with no argument, the default is 61 so the
window is 1961 - 2060.
To create a Year 2000 environment, add hexa 0800 (decimal 2048) to the value of
type in the H_DCSKEY structure for all keys concerned. The result of this action
is:
•
•
•
•
2053 means PDECY,
2054 means UDECY,
2060 means DISPY,
2066 means COMPY.
NOTE:
Once a GPL program has been modified for Year 2000, it can no longer be used
with GCOS 7-V7 <TS 7560 or V8 TS 8560.
See the documents GPL System Primitives, GPL User's Guide, and Sort/Merge
User's Guide.
A-2
47 A2 23UG Rev03
SORT / MERGE Extension for Year 2000
A.3
SORT with C Language
New constants for initialization of the datatype field of the _skey structure enable
the key field to be used as a year field. They are:
•
•
•
•
DATATYPE_UNPACKDECYEAR
DATATYPE_PACKDECYEAR
DATATYPE_COBOLDISPYEAR
DATATYPE_COBOLCOMPYEAR
The unused5 field of the _srt structure is used to specify the first year of a 100-year
window. To initialize this field, use the formula:
(256 * start_year) + 1
where start_year is a constant derived from the two right-most digits of a full 4character year date (i.e. start_year = 61 for 1961, 00 for 2000, etc.).
NOTES:
1.
Do not use any of these constants to initialize the _skey structure if the
unused5 field of the _srt structure is not initialized, nor when the key field
to be used is not a year field.
2.
If the unused5 field of the _srt structure has been initialized for Year 2000,
the program must not be run on versions of GCOS 7 before V7 TS 7560 or
V8 TS 8560.
3.
Once a C language programme has been modified for Year 2000, you can
no longer use with GCOS 7-V7 < TS 7560 or GCOS 7-V8 TS 8560.
More information is available in the Sort/Merge Users's Guide.
47 A2 23UG Rev03
A-3
How to Deal with the Year 2000
A.4
DSL Extension
To handle sorting problems in the DSL, an extension inside the SORT/MERGE
command file will use new types of record field in the paragraph RECORD for the
commands KEY/KEYS/SUM/INCLUDE/OMIT. These new types are PDECY,
UDECY, DISPY, and COMPY. The fields are of length two bytes so that dates can
be interpreted with a 4-character year.
There is a new keyword LOWYEAR in the FUNCTION paragraph.
If LOWYEAR = 61, the decimal fields PDECY, UDECY, DISPY, and COMPY
will be sorted in the sequence 61 62 ... 98 99 00 01 02 etc., thus covering the years
1961 to 2060.
If LOWYEAR = 82, the decimal fields PDECY, UDECY, DISPY, and COMPY
will be sorted in the sequence 82 83 ... 98 99 00 01 02 etc., thus covering the years
1982 to 2081.
A-4
47 A2 23UG Rev03
B. IQS Extension for Year 2000
B.1
IQS and the Year 2000
Year values in IQS are generally expressed as:
YY = year modulo 100
In other words, year dates are expressed as two digit values. The default period
covered is 1900 through 1999 and the default duration is 100 years.
EXAMPLE 1:
Default, YY=00
Range of years: 1900 through 1999
YY values
00
99
There are no difficulties in this example: SORT and all the operators function
normally.
However, since the default period can be modified by setting a different start year
(using LOWYEAR), this convention produces a break on a year that is a multiple
of 100.
47 A2 23UG Rev03
B-1
How to Deal with the Year 2000
EXAMPLE 2:
LOWYEAR is 1930
Range of years: 1930 through 2029
YY values
30 through 99 and
00 through 29
Problems occur when reordering the YY values. For example, 2010 (YY=10)
would be less than 1996 (YY=96).
The reordering is done for the purposes of:
• SORT,
• comparison using the operators >, >=, <, <=, and BETWEEN, plus the same
operators with NOT.
This representation of YY is used by the IQS system variable $DATE (YYmmdd),
defined as UNSIGNED UNPACKED DECIMAL 6 or, more generally, in a
composed number, for example, a French social security number with the format
nYYnnnnnnnnnnnn.
вќ‘
B.2
Year 2000 - The IQS Solution
This solution will be available with GCOS 7-V7 TS 7560 and GCOS 7-V8 TS
8560.
For reasons of compatibility with earlier versions of IQS, the default period is
(1900, 1999).
The start year can be changed by specifying a different year using LOWYEAR.
This value is specific to each application domain. Operating system applications
use 1961 as the default LOWYEAR value.
The default period is (LOWYEAR, LOWYEAR+99).
In the following examples:
• YY00 = LOWYEAR modulo 100
• YY = year modulo 100
1
3
3
IMPORTANT:
Ordering is done in accordance with the formula: ORD (YY) =
YY - YY00 + 100 * (YY < YY00)
B-2
47 A2 23UG Rev03
IQS Extension for Year 2000
where the value of the logical expression (YY < YY00):
• is 1 when TRUE,
• 0 when FALSE.
NOTES:
1.
ORD (YY) = YY when LOWYEAR is a multiple of 100
2.
To derive the year from YY, use the formula
year = 1900 + YY + 100 * (YY < YY00)
EXAMPLE 1: LOWYEAR is 1900
year range 1900
1999
YY :
00 ------------------------------->99
ORD(YY): 00 ------------------------------->99
EXAMPLE 2: LOWYEAR is 1930
year range
YY
ORD(YY)
YY < YY00
1930
2000
2029
30----------->99
00---------------->29
00 --------->69-70 --------------->99
false
true
Year 2000 support needs the LOWYEAR value and the ORD(YY) formula to
compare two years of a period. It is also necessary to know the IQS object items
(schemas, views, structures) affected by Year 2000 so as to be able to apply the
appropriate treatment.
вќ‘
47 A2 23UG Rev03
B-3
How to Deal with the Year 2000
B.3
IQS Elements Concerned
B.3.1
Commands and Statements
The following IQS commands and statements of the procedural language can
process data that contains a field value corresponding to the expression year
modulo 100:
• The SORT command and SORT verb. The sort processor accepts only decimal
keys with precision 2 for Year 2000 support. A sort key may need to be cut into
two, three, or more elements for a structure item.
• The COPY, EXTRACT, MERGE, WRITE commands when they use the
ORDER BY option.
• The conditions (WHERE and IF) with the comparison operators:
>, >=, <, <=, BETWEEN and
NOT>, NOT>=, NOT<, NOT<=, NOT BETWEEN.
• The RETAIN and REVIEW commands and the RETRIEVE verb when they use
the WHERE option. Access to the database can be modified, and access
optimization may be lost when a year field is included in a search key.
B.3.2
Data
Data handling may implicate other verbs by reference to a variable:
• Data with a description (schema/view/structure) where a Year 2000 indication is
appended to the description. The IQS compiler can use this to modify the binary
code generated for the query, and/or to produce a diagnostic report.
• The IQS system variable $DATE.
• The metabase variables:
DD-DATE of SYS-DD
SCHEMA-DATE of SYS-SCHEMA
QUERY-DATE and QUERY-VIEW-DATE of SYS-QUERY
MACRO-DATE of SYS-MACRO
REPORT-DATE of SYS-REPORT
FORMAT-DATE of SYS-FORMAT
QUERY-CU-DATE of SYS-QUERY-CU.
They are defined as UNSIGNED UNPACKED DECIMAL 6 (YYMMDD).
B-4
47 A2 23UG Rev03
IQS Extension for Year 2000
• DDLIBs that contain descriptions of the database records, or descriptions of
structured work file data. These are the schema/view or structure definitions.
The administrator may indicate the items that process an expression year
modulo 100 as described below in the paragraph IQS Year 2000 Support
Procedure.
• DEFINE or PARAMETER using the IDEM attribute produces a copy of a
DDLIB structure description plus a copy of any Year 2000 indication for the
item. When IQS creates a work file, it also creates the corresponding structure
from the descriptions of the elements of the record. This enables transfer of a
Year 2000 indication which needs to be present in a schema, view or structure.
Working variables and expressions have no description. They have only arithmetic
or character attributes, and a temporary origin.
The signification of working variables ($NUMi, @CHARi, or as defined in a
query) may change during query execution. At compile time IQS may output a
diagnostic report to indicate that a variable impacted by Year 2000 support has
been referenced.
B.4
IQS Year 2000 Support Procedure
B.4.1
Types of Processing
Three types of processing are concerned in Year 2000 support.:
• data sorting,
• data comparison,
• notification that data has been referenced.
Each of these operates on data of the following types:
• data not implicated by year 2000 support
• data with Usage is Year 2000. The values are 00 through 99 and represent the
result of the expression year modulo 100. Two positions are mandatory to
represent these values, but more positions can be used. The value is treated as
right justified. This is the only type authorized for comparison of BINARY
items.
• data with Usage Contains Year 2000. This is composed data, for example, a date
using the system variable $DATE, with a subfield defined by a position and a
length, corresponding to the previous definition. For example, the subfield
position=1, length=2 of $DATE is an expression year modulo 100.
47 A2 23UG Rev03
B-5
How to Deal with the Year 2000
B.4.2
Implementing IQS Year 2000 Support
To implement IQS Year 2000 support, IQS needs to identify the data concerned schemas, views, structures.
To achieve this, there are two special functions, the query H_IQS_Y2000 and the
Load Module (LM) H_IQS_YEAR2.
The procedure (steps 1 & 2) described below is external to the IQS system and
must be repeated each time an IQS object is modified, for example after a schema
is recompiled or updated, with the exception of the GRANT and REVOKE
commands.
During the second phase, you assign the DDLIB containing the IQS flagged
objects, execute commands, or compile and execute queries that reference a
flagged schema/view/structure. Modify any queries that you expect to be sorted by
date.
B.4.3
Step 1: The Query H_IQS_Y2000
See the figure Implementation of IQS Year 2000 Support later in this appendix.
A query called H_IQS_Y2000 reads the objects of the input DDLIB and creates a
file containing the items of these objects. The administrator then indicates which
of these items are impacted by Year 2000 support.
The query asks for the position and length of the year part of the elementary items
(of type DEC, BIN, or CHAR). The reply shows how the item is used:
Values
position = 0 (default)
position = 1 & length = item length
position = 1 & length < item length
position > 1 & any length >=2
position = -1
Usage of Item
item not concerned by year 2000
"Usage is Year 2000"
"Usage Contains Year 2000"
"Usage Contains Year 2000"
"Usage Signal Year 2000"
"Usage Signal Year 2000" is used to output a diagnostic report at compile time,
when an item cannot be processed but is concerned by Year 2000 (for example, a
BINARY item containing a date).
For PACKED DECIMAL items with precision n, determine the position value
according to the corresponding PIC 9(n)
When the length is more than two digits, the year value is assumed to be right
justified.
B-6
47 A2 23UG Rev03
IQS Extension for Year 2000
Items with type REC, STR, or GRP that contain one or more items concerned by
Year 2000 support will be automatically flagged during the execution of the next
step (H_IQS_YEAR2).
The query H_IQS_Y2000 in SYS.HSLLIB is an example of how to identify the
data concerned by Year 2000 and create an SSF library member which will contain
the position and length of an elementary field or subfield with "Usage is Year
2000" or "Usage Contains Year 2000" or "Usage Signal Year 2000".
Attributes of the structure of the output file cannot be changed. Only names may
be changed.
An output file may contain several objects. All the records of an object must be
consecutive, and each identification (object-name, record-name, item-name) must
be unique.
An output file contains all the records for an object. Only the elementary fields
(types BIN, CHAR, DEC) are flagged, and only the flagged elements need to be
present.
The query uses the metabase and reads the objects, records, and items of the input
DDLIB. You can customize the query taking account of the restrictions listed in
the paragraph Year 2000 Support Restrictions below.
Then the IQS Load Module H_IQS_YEAR2 in SYS.HLMLIB processes the file
created by H_IQS_Y2000 and flags the IQS objects.
B.4.4
Step 2: The Load Module H_IQS_YEAR2
See the figure Implementation of IQS Year 2000 Support later in this appendix.
The next step is to flag the items of each IQS object.
A specific LM called H_IQS_YEAR2 reads the file created in the step described
above, loads an IQS object, flags the specified items, and saves the flagged object
in another DDLIB.
For this, it uses two DDLIBs. The input DDLIB contains the unflagged IQS
objects. The Load Module:
• loads an IQS object (as SELECT) from the input DDLIB,
• reads the records of the file created by H_IQS_Y2000,
• modifies the tables of the object,
• saves the modified object in the output DDLIB.
When a field is modified, the structures or records in which they occur are
modified as having "Usage Contains Year 2000". It will then be possible at compile
time to notify a reference to the variable and/or to break down a structure for
sorting.
47 A2 23UG Rev03
B-7
How to Deal with the Year 2000
B.5
IQS Year 2000 Support Environment
Use the modified objects of the output DDLIB to compile and execute your queries
and commands.
Generation of the binary code and access to the database will be modified provided
that the MI "IQS Year 2000 Option PQDD004" is present. This MI may be absent
but, for correct execution of the query, DDLIB with modified objects must be
assigned to the IQS step.
NOTES:
1.
Execution may be in IOF, BATCH, or TDS mode. The default value 1900
of LOWYEAR can be modified by command or by the verb:
LET @MESSAGE = "SYSOPT LOWYEAR year-value "
where year-value is a 4-digit value but only the two rightmost digits are
processed. This value cannot be modified inside a RETRIEVE block.
This value is used only at execution time and remains valid until you
change it. When the value is changed, it is not necessary to recompile the
query.
2.
After a COMPILE or RECOMPILE SCHEMA or an UPDATE VIEW or
UPDATE STRUCTURE command, you must re-run step 2 to flag the
items of each updated IQS object. Step 1 may also be necessary when a
DDL schema changes or when item selection changes (for a view).
You can use the command DISPLAY_STATUS to return the current LOWYEAR
value.
A script
LET MAINT 1
PRINT SCHEMA
LET MAINT 0
<name>
displays the elements flagged as follows:
"Usage is Year 2000" with a Y flag,
"Usage Contains Year 2000" with a C flag
"Usage Signal Year 2000" with an S flag.
The DRI subcommand of DISPLAY SCHEMA can also be used to display these
flags.
See IQS YEAR 2000 By Example later in this appendix.
B-8
47 A2 23UG Rev03
IQS Extension for Year 2000
Figure B-1 summarizes the implementation of IQS Year 2000 Support:
P hase 1
STEP 1
D D LIB
input
SDD
VDD
FDD
Q uery
H _IQ S _Y 2000
U ser D ialog
S LLIB
output
m em bers:
"year"
item s
STEP 2
Load M odule
H _IQ S _YE A R 2
flags IQ S objects
D D LIB
output
"Y ear 2000"
objects
P hase 2
Q ueries
C om m ands
Figure B-1.
47 A2 23UG Rev03
IQ S 4.4 processor
plus the M I:
IQ S Y E A R 2000
plus LO W Y E A R
Q ueries/
C om m ands
Implementation of IQS Year 2000 Support
B-9
How to Deal with the Year 2000
B.6
JCL to Run H_IQS_YEAR2
Here is and example of the JCL to run the Load Module H_IQS_YEAR2.
VL options,module,
DDINPUT=libbin1,DDOUTPUT=libbin2,SLINPUT=libsl1,PRTLIB=libsl2;
STEP H_IQS_YEAR2 FILE=SYS.HLMLIB , OPTIONS= &1 ;
ASG INLIB1 ,&DDINPUT, SHARE=DIR;
ASG INLIB ,&DDOUTPUT, SHARE=DIR;
ASG SL
,&SLINPUT, SHARE=DIR;
ASG H_PR
,&PRTLIB , SUBFILE=&2_L;
ENDSTEP;
where:
• the OPTIONS string is:
SOURCE=sl_member_name,FROM=iqs_object1,TO=iqs_object2,
TYPE=ddtype;
• INLIB1 is the IFN of the DDLIB used with H_IQS_Y2000
• INLIB is the IFN of the output DDLIB containing the flagged objects
• SL is the IFN of the SL library containing the member created by H_IQS_Y2000
• H_PR is the IFN of the SL library of listings - Batch, Optional
• sl_member-name is an SSF member of the SL library created by H_IQS_Y2000
• iqs_object1 is the name of a schema/view/structure of inlib1
• iqs_object2 is the name of a schema/view/structure of inlib1
• TYPE is SDD | VDD | FDD | ALL
Depending on the value of TYPE, H_IQS_YEAR2 selects the records of the
SL..sl_member_name where object name (see Y2-IQS-OBJECT of the query) is
between iqs_object1 and iqs_object2.
B-10
47 A2 23UG Rev03
IQS Extension for Year 2000
B.7
IQS Year 2000 Support Restrictions
The following restrictions apply to the support of Year 2000 by IQS:
Binary items are not accepted by SORT.
Non-integer decimal items are rejected.
Arrays are rejected
(SORT ... ON array-of-date is rejected,
but not SORT ... ON array-of-date (5)).
After COMPILE SCHEMA (or RECOMPILE...) or UPDATE
VIEW/STRUCTURE, you must rerun the Load Module H_IQS_YEAR2.
GRANT and REVOKE are not affected.
When the DDL schema is modified, it may be necessary to rerun the query
H_IQS_Y2000 because the records and items may be changed.
B.8
Rules for Comparison
Binary items, non-integer decimal items, arrrays and structures are rejected.
The two elements to be compared must be of the same length, to a maximum of
255 characters.
An Year 2000 element that is not flagged (for instance, a constant) inherits Year
2000 attributes from the other comparison element.
The comparison of two Year 2000 elements is not meaningful unless the Year 2000
attributes of position and length of the two elements are identical.
47 A2 23UG Rev03
B-11
How to Deal with the Year 2000
B.9
IQS Year 2000 by Example
Year 2000 concerns all kinds of data that processes year values, not just the date
values themselves, and many descriptions of these may exist.
Only periods containing a year that is a multiple of 100 are concerned.
EXAMPLE:
1980 to 1990 is not concerned
2001 to 2005 is not concerned
1998 to 2005 (containing 2000) is concerned.
вќ‘
IQS processes structured data in command mode (RETAIN, REVIEW,
EXTRACT...) and in procedural mode (RETRIEVE, AFTER, BEFORE, WRITE,
READ, SORT...). IQS Year 2000 needs to make adaptions for the SORT processor
and for comparisons:
EXAMPLE:
When BIRTH-YEAR value 04 represents the year 2004, it must be greater than the
value 98 that represents the year 1998.
вќ‘
The paragraph is dealt with in two phases:
• IQS object preparation phase
• IQS command and IQS query processing phase
Only YEAR Modulo 100 values are studied. IQS adaptations concern calls to the
SORT processor and the comparison operators associated with WHERE and IF
conditions. The IQS compiler can output a diagnosis when a Year 2000 item is
referenced.
A Year 2000 item is a field of a schema, view or structure that is contained in a
DDLIB. The description of the structure associated with a work file, or the
description of a variable defined in a query with the IDEM attribute, is a copy of
the description of the original item and it inherits the Year 2000 attributes of these
descriptions.
B-12
47 A2 23UG Rev03
IQS Extension for Year 2000
IQS adaptations for the SORT processor are:
• rejection of BINARY items.
• rejection of non-integer decimal items, for example DEC (10,2) .
• rejection of arrays, but an element of an array is authorized, for example
TAB(5).
• an IQS sort key may need to be cut into two, three, or more elements, for
example a structure will be replaced by these elements. (The maximum number
of keys for the SORT processor is 64)
IQS adaptations for comparisons are:
• operators
>
>=
<
NOT>
NOT>=
NOT<
BETWEEN
NOT BETWEEN
<=
NOT<=
• rejection of BINARY items,
• rejection of non-integer DECIMAL items,
• rejection of arrays (but an element of array is authorized),
• rejection of structures,
• elements to compare cannot be expressions or functions, more particularly
SUBSTR function; only items and constants are processed,
• the WHERE condition may produce an optimization by use of key access. A
Year 2000 item, and any subsequent fields, are suppressed from the key,
• the two elements of a comparison must have the same length, and this length is
limited to 255 characters,
• a comparison of two Year 2000 elements is valid only when the elements have
the same Year 2000 position and length. When an unflagged element exists, it is
assumed to have the Year 2000 attributes of the other element.
47 A2 23UG Rev03
B-13
How to Deal with the Year 2000
LOWYEAR Value
The default value is 1900. The value represents the first year of the 100-year period
that runs from LOWYEAR to LOWYEAR+99.
LOWYEAR can be modified at C: or V: level by a command. In a query, it can be
modified by the statement:
LET @MESSAGE = "SYSOPT LOWYEAR ccyy"
The value remains valid until you change it or, under TDS, for the duration of the
transaction.
A query uses LOWYEAR only during execution: you can change it without
recompiling the query.
The LOWYEAR value cannot be modified inside a RETRIEVE block.
NOTES:
1.
The operators BETWEEN and NOT BETWEEN are not adapted to
support Year 2000 comparisons. You must change it to use a double
comparison with <= and >= operators.
2.
Metabase fields and the system variable $DATE are flagged by IQS when
the "IQS YEAR 2000 support" MI is present.
3.
Each time a schema/view/structure is modified or recompiled, the Year
2000 flags are lost (except for the GRANT and REVOKE commands), so
the steps of the PREPARATION phase described below must be repeated.
For use under TDS, you must:
• recompile and link the queries as for IOF,
• introduce the LOWYEAR value: specific query to run the transactions,
• adapt the JCL to assign the new DDLIB containing the IQS flagged objets and
the DDL objects.
B-14
47 A2 23UG Rev03
IQS Extension for Year 2000
PREPARATION Phase
1. The schema.
SCHEMA NAME IS IND.
COMMENT "-----------------------------------------------"
COMMENT " IQS ref manual vol 2 47A2 78UR figure A-5
"
COMMENT "-----------------------------------------------"
AREA NAME IS IND-A ORGANIZATION INDEXED USING KEY-1.
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
"--------------------------------------------"
" BUILD_FILE
indexed recsize=139 recform=V "
" KEY-1
2:60
"
" KEY-2
62:11:DUPREC
"
"--------------------------------------------"
RECORD NAME IS UNIVERSITY WITHIN IND-A
RECORD-TYPE DEFINED BY CHECK ON TYP
KEY KEY-1 IS ASCENDING U-NAME,FIL2,FIL3 DUP NOT
KEY KEY-2 IS ASCENDING FIL4 DUP LAST.
02 TYP
TYPE IS CHARACTER 1 CHECK VALUE "U".
02 U-NAME
TYPE IS CHARACTER 20.
02 FIL2
TYPE IS CHARACTER 20 CHECK VALUE " ".
02 FIL3
TYPE IS CHARACTER 20 CHECK VALUE " ".
02 FIL4
TYPE IS CHARACTER 11 CHECK VALUE " ".
02 CITY
TYPE IS CHARACTER 25.
RECORD NAME IS COLLEGE WITHIN IND-A
RECORD-TYPE DEFINED BY CHECK ON TYP
KEY KEY-1 IS ASCENDING C-U-NAME,COL-NAME,FIL3 DUP NOT
KEY KEY-2 IS ASCENDING FIL4 DUP LAST.
02 TYP
TYPE IS CHARACTER 1 CHECK VALUE "C".
02 C-U-NAME
TYPE IS CHARACTER 20.
02 COL-NAME
TYPE IS CHARACTER 20.
02 FIL3
TYPE IS CHARACTER 20 CHECK VALUE " ".
02 FIL4
TYPE IS CHARACTER 11 CHECK VALUE " ".
47 A2 23UG Rev03
B-15
How to Deal with the Year 2000
RECORD NAME IS STUDENT WITHIN IND-A
RECORD-TYPE DEFINED BY CHECK ON TYP
KEY KEY-1 IS ASCENDING S-U-NAME,S-COL-NAME,S-NAME DUP NOT
KEY KEY-2 IS ASCENDING SOCIAL-SEC DUP LAST.
02 TYP
TYPE IS CHARACTER 1 CHECK VALUE "S".
02 S-U-NAME
TYPE IS CHARACTER 20.
02 S-COL-NAME
TYPE IS CHARACTER 20.
02 S-NAME
TYPE IS CHARACTER 20.
02 SOCIAL-SEC
TYPE IS CHARACTER 11.
02 GRADE
TYPE IS CHARACTER 9
CHECK IS VALUE "JUNIOR
" "SENIOR
".
02 BIRTH-DATE.
04 B-YEAR
TYPE IS UNSIGNED UNPACKED DECIMAL 2.
04 B-MONTH
TYPE IS UNSIGNED UNPACKED DECIMAL 2
CHECK VALUE 1 THRU 12.
04 B-DAY
02 FEES-DUE
02 DIPLOMA
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
COMMENT
TYPE IS UNSIGNED UNPACKED DECIMAL 2
CHECK VALUE 1 THRU 31.
TYPE IS SIGNED BINARY 31.
TYPE IS CHARACTER 12 OCCURS 4.
"-----------------------------------------------"
" field SOCIAL-SEC could be defined as:
"
"
02 SOCIAL-SEC.
"
"
03 SEX
TYPE IS CHARACTER 1
"
"
03 BIRTH-YEAR TYPE IS CHARACTER 2
"
"
03 BIRTH-CITY TYPE IS CHARACTER 2
"
"
03 BIRTH-ORD
TYPE IS CHARACTER 6
"
" (SEX is 1 for male, 2 for female)
"
"-----------------------------------------------"
SET NAME IS U-C
OWNER IS UNIVERSITY.
MEMBER IS COLLEGE.
SET NAME IS C-S
OWNER IS COLLEGE.
MEMBER IS STUDENT.
END-SCHEMA.
B-16
47 A2 23UG Rev03
IQS Extension for Year 2000
2. Year 2000 elements (Refer to Step 1: The Query H_IQS_Y2000 above)
The only record concerned is STUDENT:
• fields B-YEAR of BIRTH-DATE
• part of SOCIAL-SEC (position=2 , length=2)
• BIRTH-DATE itself is concerned because it contains the B-YEAR field
Another definition for BIRTH-DATE might be UNSIGNED UNPACKED DEC 6,
for example.
NOTE:
If you define
02 ADATE
02 BDATE
UNSIGNED UNPACKED DEC 6,
UNSIGNED UNPACKED DEC 8,
and you use
MODIFY ADATE = $DATE
MODIFY BDATE = $DATE
then BDATE is also concerned by Year 2000 because the 4 leftmost positions
contain 00YY ($DATE returns YYMMDD ).
The query H_IQS_Y2000 is executed (with IQS 4.3) to prepare the file.
The symbol "==>" prefixes the user's replies. The symbol "==>*" means
comments for explanation purpose
>>>10:51 IQS V4.3
C:
==>exec H_IQS_Y2000
10
-4
Output Library name? (QUERY.TEST.SLREQ):
==>s/REQ/LOG/
Output Library name? (QUERY.TEST.SLLOG):
==>
Output member name? (YEAR2000FILE):
==>INDY2000
Output file in append mode? (Y):
==>
Objects: schema SDD , view VDD , structure FDD or ALL? (ALL):
==>
From first object name (A):
==>IND
to last object name (9):
==>IND
Do you want to flag the schema IND (Y):
47 A2 23UG Rev03
B-17
How to Deal with the Year 2000
==>
Do you want to flag the record UNIVERSITY (Y) ;
==>N
Do you want to flag the record COLLEGE (Y):
==>n
Do you want to flag the record STUDENT (Y):
==>
SDD
IND
STUDENT
1
2
2
STUDENT
TYP
S-U-NAME
REC 139
CHAR 1
CHAR 20
0
0
0
0
0
0
==>* to each question "Position of year part", the reply:
==>* 0 means that the field does not contain a year.
==>* 1 to 19 give the position of the first character year.
==>* return without answer, the default value is assumed
==>* (between parenthesis in the prompt).
B-18
Position of year part:0
==>n
*
Illegal numeric data
Please reenter
Position of year part:0
==>0
2 S-COL-NAME
Position of year part:0
==>
2 S-NAME
Position of year part:0
==>
2 SOCIAL-SEC
Position of year part:0
==>2
Length of year part: 2
==>
2 GRADE
Position of year part:0
==>
2 BIRTH-DATE
3 B-YEAR
(no year) or 1 to 19 (0) ;
Position of year part:0
==>1
Length of year part: 2
==>
3 B-MONTH
Position of year part:0
==>
3 B-DAY
Position of year part:0
(no year) or 1 to 1 (0):
(no year) or 1 to 19 (0):
CHAR 20
0
0
(no year) or 1 to 19 (0):
CHAR 20
0
0
(no year) or 1 to 19 (0):
CHAR 11
0
0
(no year) or 1 to 10 (0):
to 10 (2):
CHAR 9
0
0
(no year) or 1 to 8 (0):
STR
UPK
6
2
0
0
0
0
to 2 (2):
UPK 2
0
0
(no year) or 1 to 1 (0):
UPK 2
0
0
(no year) or 1 to 1 (0):
47 A2 23UG Rev03
IQS Extension for Year 2000
==>
2 FEES-DUE
BIN 31
0
0
Position of year part:0 (no year) or 1 to 30 (0):
==>
2 DIPLOMA
CHAR 12
0
1
Position of year part:0 (no year) or 1 to 11 (0):
==>
Do you want to print the member INDY2000 (Y):
==>
SDD
IND
STUDENT
2
2
2
2
2
3
3
3
2
2
S-U-NAME
S-COL-NAME
S-NAME
SOCIAL-SEC
GRADE
B-YEAR
B-MONTH
B-DAY
FEES-DUE
DIPLOMA
CHAR
CHAR
CHAR
CHAR
CHAR
UPK
UPK
UPK
BIN
CHAR
20
20
20
11
9
2
2
2
31
12
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
Y
2
2
Y
1
2
Y=Year
Field
Position
Field
Length
C:
==>/
<<<10:54
3. The OUTPUT file
After execution of H_IQS_Y2000 the records of INDY2000 member are:
SDD
SDD
SDD
SDD
SDD
SDD
SDD
SDD
SDD
SDD
IND
IND
IND
IND
IND
IND
IND
IND
IND
IND
STUDENT
STUDENT
STUDENT
STUDENT
STUDENT
STUDENT
STUDENT
STUDENT
STUDENT
STUDENT
2
2
2
2
2
3
3
3
2
2
S-U-NAME
S-COL-NAME
S-NAME
SOCIAL-SEC
GRADE
B-YEAR
B-MONTH
B-DAY
FEES-DUE
DIPLOMA
CHAR20
CHAR20
CHAR20
CHAR11
CHAR9
UPK 2
UPK 2
UPK 2
BIN 31
CHAR12
0
0
0
0
0
0
0
0
0
0
0
0
0
0Y
0
0Y
0
0
0
1
2
2
1
2
10
20
30
40
50
60
70
80
90
100
and only SOCIAL-SEC and B-YEAR need to be present.
47 A2 23UG Rev03
B-19
How to Deal with the Year 2000
4. Flag the IQS Schema (Refer to Step 2: The Load Module H_IQS_YEAR2
above)
S:
==>lmn sl query.common.y2000
>>>08:31 LMN 70.00
27 -7
C:
==>print EXECLM
EXEC_PG H_IQS_YEAR2, LIB=QUERY.COMMON.LMY2000,OPTIONS='SOURCE = INDY2000 ,NOPRINT ; '
FILE1=SL,ASG1=QUERY.TEST.SLLOG,
FILE2=INLIB1,ASG2=QUERY.TEST.BINDD,
FILE3=INLIB,ASG3=QUERY.TEST.BINTST;
C:
==>/
<<<08:31
S:
==>ai EXECLM lib=query.common.y2000
>>>08:32 EXEC_PG
10.0
OPTIONS :
SOURCE = INDY2000,NOPRINT;
IQS object IND is saved.
<<<08:32
SOURCE & DIAGNOSTICS
Error reporting example:
When an error is detected, the flagged object is not created. Position (=4) of
B-YEAR is changed for this error reporting example.
S:
==>ai EXECLM lib=query.common.y2000
>>>08:46 EXEC_PG
10.0
OPTIONS :
SOURCE = INDY2000,NOPRINT ;
SOURCE & DIAGNOSTICS
*** Incorrect position value for B-YEAR
*** error SEV 3 detected, IQS Object IND not saved.
<<<08:46
and the previous IQS object IND is kept.
NOTE:
It is better to suppress the NOPRINT option and to print the input records of the
INDY2000 file.
B-20
47 A2 23UG Rev03
IQS Extension for Year 2000
5. Results
Use the DDLIB assigned to INLIB during execution of H_IQS_YEAR2. The
binary DDL member must be present.
You can check that the MI "IQS YEAR 2000 support" is present on the site with
IQS 4.4 using the query:
>>>08:48 IQS V4.4
C:
==>auto
10
:
==>Print $DATE
20
:
==>/
C:
==>compile
C :
==>let maint 1
C:
==>cm
INTERMEDIATE OUTPUTS
==>
Year 2000: reference to $DATE system variable
at line 10
C:
==>* This message is not output when the MI YEAR 2000 is absent.
C:
==>/
<<<08:51
After use of the LET MAINT 1 command, the PRINT
SCHEMA/VIEW/STRUCTURE and the DISPLAY SCHEMA / VIEW /
STRUCTURE commands show the flagged items.
DISPLAY STATUS PARAMETERS returns the LOWYEAR value.
47 A2 23UG Rev03
B-21
How to Deal with the Year 2000
Note that DSTS COUNTERS or DSTS FILES and DSTS TRIGGERS do not
output the LOWYEAR value.
>>>11:34 IQS V4.4
C:
==>let maint 1
C:
==>* ITEM NUM column of record STUDENT contains year 2000 symbol:
* symbol Y: Usage is year 2000: field contains a value year
*
modulo 100
* symbol C: Usage contains year 2000: a part of the field
*
defined by a position and a length, contains a
*
value year modulo 100
* symbol S: Usage signals year 2000: outputs a message at
*
compile time (reference to year 2000 item)
* Note: the structure BIRTH-DATE is flagged "C"
C:
==>PRINT SCHEMA IND
******************************************************
*
*
*
IQS SCHEMA
: IND
*
*
*
******************************************************
LIBRARY NAME
: QUERY.TEST.BINTST
TRANSLATION DATE : 09/09/97
NUMBER OF AREAS :
NUMBER OF RECORDS:
NUMBER OF SETS
:
1
3
2
year 2000 supported.
LIST OF ACCESS RIGHTS:
-------------------*
*
RECORDS OF THE SCHEMA
: IND
---------------------- RECORD
1: UNIVERSITY
RECORD LENGTH:
97
PRIVACY
:
2
(0 RETRIEVAL
NUMBER OF FIELDS:
6
WITHIN AREA(S) : IND-A
B-22
1 UPDATE
2 INSERT/DELETE)
47 A2 23UG Rev03
IQS Extension for Year 2000
RECORD DESCRIPTION:
------------------------------------------------------------:ITEM:LEV.: ITEM NAME
:OFFS.: LENGTH :TYP :OCC:KEY:PRV:ADD:
: NUM:
:
:
:
:
:
:
:
:
:
------------------------------------------------------------: 1: 2 : TYP
: 0 :
1
:CHR : 1 : - : U :
:
: 2: 2 : U-NAME
: 1 :
20
:CHR : 1 : P : U :
:
: 3: 2 : FIL2
: 21 :
20
:CHR : 1 : - : U :
:
: 4: 2 : FIL3
: 41 :
20
:CHR : 1 : - : U :
:
: 5: 2 : FIL4
: 61 :
11
:CHR : 1 : S : U :
:
: 6: 2 : CITY
: 72 :
25
:CHR : 1 : - : U :
:
------------------------------------------------------------KEYS OF THE RECORD:
PRIMARY
KEY-1: U-NAME
SECONDARY
KEY-2: FIL4
- RECORD
2: COLLEGE
RECORD LENGTH
:
72
PRIVACY
:
2
(0 RETRIEVAL 1 UPDATE 2 INSERT/DELETE)
NUMBER OF FIELDS:
5
WITHIN AREA(S) : IND-A
RECORD DESCRIPTION:
------------------------------------------------------------:ITEM:LEV.: ITEM NAME
:OFFS.: LENGTH :TYP :OCC:KEY:PRV:ADD:
: NUM:
:
:
:
:
:
:
:
:
:
------------------------------------------------------------: 1 : 2 : TYP
: 0 :
1
:CHR : 1 : - : U :
:
: 2 : 2 : C-U-NAME
: 1 :
20
:CHR : 1 : P : U :
:
: 3 : 2 : COL-NAME
: 21 :
20
:CHR : 1 : P : U :
:
: 4 : 2 : FIL3
: 41 :
20
:CHR : 1 : - : U :
:
: 5 : 2 : FIL4
: 61 :
11
:CHR : 1 : S : U :
:
------------------------------------------------------------KEYS OF THE RECORD:
PRIMARY
KEY-1: C-U-NAME,
COL-NAME
SECONDARY
KEY-2: FIL4
- RECORD
3: STUDENT
RECORD LENGTH
:
139
PRIVACY
:
2
(0 RETRIEVAL 1 UPDATE 2 INSERT/DELETE)
NUMBER OF FIELDS:
12
WITHIN AREA(S) : IND-A
47 A2 23UG Rev03
B-23
How to Deal with the Year 2000
RECORD DESCRIPTION:
------------------------------------------------------------:ITEM:LEV.: ITEM NAME
:OFFS.: LENGTH :TYP :OCC:KEY:PRV:ADD:
: NUM:
:
:
:
:
:
:
:
:
:
------------------------------------------------------------: 1 : 2 : TYP
: 0 :
1
:CHR : 1 : - : U :
:
: 2 : 2 : S-U-NAME
: 1 :
20
:CHR : 1 : P : U :
:
: 3 : 2 : S-COL-NAME : 21 :
20
:CHR : 1 : P : U :
:
: 4 : 2 : S-NAME
: 41 :
20
:CHR : 1 : P : U :
:
:C 5 : 2 : SOCIAL-SEC : 61 :
11
:CHR : 1 : S : U :
:
: 6 : 2 : GRADE
: 72 :
9
:CHR : 1 : - : U :
:
:C 7 : 2 : BIRTH-DATE : 81 :
6
:STR : 1 : - : U :
:
:Y 8 : 3 : B-YEAR
: 81 :
2,0 :UPK : 1 : - : U :
:
: 9 : 3 : B-MONTH
: 83 :
2,0 :UPK : 1 : - : U :
:
: 10 : 3 : B-DAY
: 85 :
2,0 :UPK : 1 : - : U :
:
: 11 : 2 : FEES-DUE
: 87 :
31
:BIN : 1 : - : U :
:
: 12 : 2 : DIPLOMA
: 91 :
12
:CHR : 4 : - : U :
:
------------------------------------------------------------KEYS OF THE RECORD:
PRIMARY
KEY-1: S-U-NAME,
S-COL-NAME,
S-NAME
SECONDARY
KEY-2: SOCIAL-SEC
SETS OF THE SCHEMA : IND
-----------------.SET NAME : U-C
OWNER RECORD : UNIVERSITY
MEMBER RECORD: COLLEGE
.SET NAME : C-S
OWNER RECORD : COLLEGE
MEMBER RECORD: STUDENT
AREAS OF THE SCHEMA: IND
------------------IND-A
C:
==>* DRI subcommand of DISPLAY SCHEMA can be used to display
flags.
==>* DRI STUDENT shows year 2000 symbols, after ADD column
C:
==>DISPLAY SCHEMA IND
B-24
47 A2 23UG Rev03
IQS Extension for Year 2000
P:
==>DISPLAY ITEMS STUDENT
-----------------------------------------------------:ORD :LEV: ITEM NAME
: TYP : LENGTH:PRV: OCC: ADD:
-----------------------------------------------------: 1 : 2 : TYP
: CHR :
1
: U : 1 :
:
: 2 : 2 : S-U-NAME
: CHR : 20
: U : 1 :
:
: 3 : 2 : S-COL-NAME
: CHR : 20
: U : 1 :
:
: 4 : 2 : S-NAME
: CHR : 20
: U : 1 :
:
: 5 : 2 : SOCIAL-SEC
: CHR : 11
: U : 1 :
:C
: 6 : 2 : GRADE
: CHR :
9
: U : 1 :
:
: 7 : 2 : BIRTH-DATE
: STR :
6
: U : 1 :
:C
: 8 : 3 : B-YEAR
: UPK :
2,0 : U : 1 :
:Y
: 9 : 3 : B-MONTH
: UPK :
2,0 : U : 1 :
:
: 10 : 3 : B-DAY
: UPK :
2,0 : U : 1 :
:
: 11 : 2 : FEES-DUE
: BIN : 31
: U : 1 :
:
: 12 : 2 : DIPLOMA
: CHR : 12
: U : 4 :
:
---------------------------------------------------P:
==>/
C:
==>DISPLAY STATUS PARAMETERS
>>>LOWYEAR:
1900
>>>PARAMETERS
iqs version: V4.4
status: 32
syslevel: V800/8560
size: 240
poolsize:
50
lang: 0
terminal id: BH13TWS2107
terminal type: DKU7105
screen size: 24 * 80
ddlib1: QUERY.TEST.BINTST
ddlib2: *** library not assigned
ddlib3: *** library not assigned
sllib: QUERY.TEST.SLREQ
binlib: QUERY.TEST.BINREQ
culib: QUERY.TEST.CUREQ
#blib: QUERY.TEST.BINREQ
C:
==>LET @MESSAGE="SYSOPT LOWYEAR 1960"
47 A2 23UG Rev03
B-25
How to Deal with the Year 2000
C:
==>DSTS PARAMETERS
>>>LOWYEAR:
1960
>>>PARAMETERS
iqs version: V4.4
status: 32
syslevel: V800/8560
size: 240
poolsize:
50
lang: 0
terminal id: BH13TWS2107
terminal type: DKU7105
screen size: 24 * 80
ddlib1: QUERY.TEST.BINTST
ddlib2: *** library not assigned
ddlib3: *** library not assigned
sllib: QUERY.TEST.SLREQ
binlib: QUERY.TEST.BINREQ
culib: QUERY.TEST.CUREQ
#blib: QUERY.TEST.BINREQ
C:
==>dsts
>>>LOWYEAR:
1960
>>>PARAMETERS
iqs version: V4.4
status: 32
syslevel: V800/8560
size: 240
poolsize:
50
lang: 0
terminal id: BH13TWS2107
terminal type: DKU7105
screen size: 24 * 80
. . . . .
. . . . .
. . . . .
C:
==>/
<<<11:40
Compile query UPRINT2 shows edited messages.
B-26
47 A2 23UG Rev03
IQS Extension for Year 2000
After a LET MAINT 1 , IQS asks for "INTERMEDIATE OUTPUTS:" each time
the query compiler is called. Enter a Transmit character to continue.
>>>08:44 IQS V4.4
C:
==>select IND
V:
==>assign area IND-A to file QUERY.TEST.IND-A
V:
==>open
V:
==>let maint 1
V:
==>load UPRINT2
V:
==>^,$l
10
: def @C
char 2
20
: let @MESSAGE = " SYSOPT LOWYEAR 1920 "
30
: let @CHAR1 = $DATE
40
: retrieve STUDENT
50
:
where SOCIAL-SEC > "24500000000"
60
:
let @C = B-YEAR pic"99"
70
:
if @C = substr ( SOCIAL-SEC , 2 ,2)
80
:
then
90
:
else let substr( SOCIAL-SEC , 2 , 2) = B-YEAR
100
:
let @CHAR1 = @PROJECT
110
:
end
120
:
print S-NAME
130
:
SOCIAL-SEC
140
:
B-YEAR
150
:
@CHAR1
160
: end
170
: let @MESSAGE = "SYSOPT LOWYEAR 1900"
V:
==>compile
47 A2 23UG Rev03
B-27
How to Deal with the Year 2000
INTERMEDIATE OUTPUTS:
==>
Year 2000: reference to $DATE system variable
at line
30
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
50
B-YEAR: value is YEAR 2000
at line
60
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
70
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
90
B-YEAR: value is YEAR 2000
at line
90
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
130
B-YEAR: value is YEAR 2000
at line
140
V:
==>* on message 'value contains YEAR 2000 ', you find position and
* length value of the year part, except for a structure
element.
*
* @C and @CHAR1 are working variables:
* At beginning of execution, @CHAR1 contains the current Date,
* and during this execution it may receive the @PROJECT value.
* @CHAR1 and @C are not 'structured' variables.
V:
==>exec
ANNE
2457402000 45 970917
LUCIE
2017800100
1 970917
MARIE
2906612345 90 970917
SOPHIE
2047845789
4 970917
V:
==> let maint 0
V:
==>compile
V:
==>/
C:
==>/
<<<08:58
B-28
47 A2 23UG Rev03
IQS Extension for Year 2000
PROCESSING phase
IQS 4.3 shows the results without YEAR 2000 considerations
>>>08:51 IQS V4.3
10 -4
C:
==>select IND
V:
==>assign area IND-A to file QUERY.TEST.IND-A
V:
==>OPEN
V:
==>let maint 1
V:
==>load UPRINT
V:
==>^,$l
10
: retrieve UNIVERSITY
20
:
print U-NAME,CITY
30
:
retrieve COLLEGE
40
:
print COL-NAME
50
:
retrieve STUDENT
60
:
print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,
BIRTH-DATE
70
:
end
80
: end
90
: end
V:
==>compile
INTERMEDIATE OUTPUTS:
==>
V:
==>exec
DAUPHINE
PARIS
LAW
DAUPHINE
LAW
ANNE
2457402000 45 9 15
DAUPHINE
LAW
BRUNO
1041200010
4 2 18
BUSINESS
DAUPHINE
BUSINESS JULIE
2204501234 20 12 25
DAUPHINE
BUSINESS PAUL
1206000521 20 4 1
DAUPHINE
BUSINESS SIMON
1017500040
1 1 1
JUSSIEU
PARIS
BIOLOGY
MEDECINE
JUSSIEU
MEDECINE LUCIE
2017800100
1 11 11
JUSSIEU
MEDECINE MARIE
2906612345 90 10 5
JUSSIEU
MEDECINE ZEBULON
1457554321 45 6 18
47 A2 23UG Rev03
B-29
How to Deal with the Year 2000
PHARMACY
JUSSIEU
PHARMACY LEON
1908078900 90 10 18
JUSSIEU
PHARMACY SOPHIE
2047845789
4 5 8
SORBONNE
PARIS
PHILOSOPHY
V:
==>load uprint1
V:
==>^,$l
10 : retrieve STUDENT
20 :
print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,BIRTH-DATE
30 : end
31 : print "
retrieve via key-2"
40 : retrieve STUDENT via key-2
50 :
print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,BIRTH-DATE
60 : end
61 : print "
retrieve where key-2"
62 : retrieve STUDENT where SOCIAL-SEC > "00000000000"
63 :
print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,BIRTH-DATE
64 : end
V:
==>compile
INTERMEDIATE OUTPUTS:
==>
Fast start found on record STUDENT via key SOCIAL-SEC
at line
62
V:
==>exec
DAUPHINE
LAW
ANNE
2457402000 45 9 15
DAUPHINE
LAW
BRUNO
1041200010
4 2 18
DAUPHINE
BUSINESS
JULIE
2204501234 20 12 25
DAUPHINE
BUSINESS
PAUL
1206000521 20 4 1
DAUPHINE
BUSINESS
SIMON
1017500040
1 1 1
JUSSIEU
MEDECINE
LUCIE
2017800100
1 11 11
JUSSIEU
MEDECINE
MARIE
2906612345 90 10 5
JUSSIEU
MEDECINE
ZEBULON
1457554321 45 6 18
JUSSIEU
PHARMACY
LEON
1908078900 90 10 18
JUSSIEU
PHARMACY
SOPHIE
2047845789
4 5 8
retrieve via key-2
DAUPHINE
BUSINESS
SIMON
1017500040
1 1 1
DAUPHINE
LAW
BRUNO
1041200010
4 2 18
DAUPHINE
BUSINESS
PAUL
1206000521 20 4 1
JUSSIEU
MEDECINE
ZEBULON
1457554321 45 6 18
JUSSIEU
PHARMACY
LEON
1908078900 90 10 18
JUSSIEU
MEDECINE
LUCIE
2017800100
1 11 11
JUSSIEU
PHARMACY
SOPHIE
2047845789
4 5 8
DAUPHINE
BUSINESS
JULIE
2204501234 20 12 25
DAUPHINE
LAW
ANNE
2457402000 45 9 15
JUSSIEU
MEDECINE
MARIE
2906612345 90 10 5
retrieve where key-2
B-30
47 A2 23UG Rev03
IQS Extension for Year 2000
DAUPHINE
BUSINESS
SIMON
1017500040
DAUPHINE
LAW
BRUNO
1041200010
DAUPHINE
BUSINESS
PAUL
1206000521
JUSSIEU
MEDECINE
ZEBULON
1457554321
JUSSIEU
PHARMACY
LEON
1908078900
JUSSIEU
MEDECINE
LUCIE
2017800100
JUSSIEU
PHARMACY
SOPHIE
2047845789
DAUPHINE
BUSINESS
JULIE
2204501234
DAUPHINE
LAW
ANNE
2457402000
JUSSIEU
MEDECINE
MARIE
2906612345
V:
==>EXTRACT S-NAME,SOCIAL-SEC,BIRTH-DATE from STUDENT
INTERMEDIATE OUTPUTS:
==>
10 records extracted
F:
==>print
S-NAME
SOCIAL-SEC
1
4
20
45
90
1
4
20
45
90
1
2
4
6
10
11
5
12
9
10
1
18
1
18
18
11
8
25
15
5
B-YEAR B-MONTH B-DAY
ANNE
2457402000
45
9
15
BRUNO
1041200010
4
2
18
JULIE
2204501234
20
12
25
PAUL
1206000521
20
4
1
SIMON
1017500040
1
1
1
LUCIE
2017800100
1
11
11
MARIE
2906612345
90
10
5
ZEBULON
1457554321
45
6
18
LEON
1908078900
90
10
18
SOPHIE
2047845789
4
5
8
F:
==>/
V:
==>retain * from STUDENT where SOCIAL-SEC > "00000000000"
INTERMEDIATE OUTPUTS:
==>
V:
==>EXTRACT S-NAME,SOCIAL-SEC,BIRTH-DATE from STUDENT
INTERMEDIATE OUTPUTS:
==>
10 records extracted
47 A2 23UG Rev03
B-31
How to Deal with the Year 2000
F:
==>print
S-NAME
SOCIAL-SEC
ANNE
BRUNO
JULIE
PAUL
SIMON
LUCIE
MARIE
ZEBULON
LEON
SOPHIE
F:
==>/
V:
==>/
C:
==>/
<<<09:17
2457402000
1041200010
2204501234
1206000521
1017500040
2017800100
2906612345
1457554321
1908078900
2047845789
B-YEAR B-MONTH B-DAY
45
4
20
20
1
1
90
45
90
4
9
2
12
4
1
11
10
6
10
5
15
18
25
1
1
11
5
18
18
8
IQS 4.4 YEAR 2000 Particularities
Access methods
The UFAS and IDS access methods do not recognize Year 2000, so the value 98 is
always greater than the value 04 even when these values represent years.
For IND schema, UFAS orders the SOCIAL-SEC values of the STUDENT
records:
101xxxxxxxx
104xxxxxxxx
120xxxxxxxx
145xxxxxxxx
190xxxxxxxx
.....
201xxxxxxxx
204xxxxxxxx
220xxxxxxxx
245xxxxxxxx
290xxxxxxxx
.....
B-32
47 A2 23UG Rev03
IQS Extension for Year 2000
At present these values represent the period 1900 to 1999. If the period to be
considered is 1921 to 2020, for example, the file will contain the same records in
the same order but interpretation of the occurrences of these records will be
different.
To handle the query 'search for women born after 1945', write:
retain * from STUDENT where SOCIAL-SEC > "24500000000'
At present, the result is 290xxxxxxxx.
Later results will be
290xxxxxxxx
201xxxxxxxx
204xxxxxxxx
220xxxxxxxx
in ascending order.
To find them, when SOCIAL-SEC is flagged "YEAR 2000", IQS must suppress
access by the key SOCIAL-SEC; this enables you retrieve all occurrences. But the
records are not delivered in ascending order, and they must be sorted.
NOTE:
Access by key SOCIAL-SEC is access via KEY-2. When the key is suppressed,
access is via the primary key KEY-1.
UPRINT produces identical results with IQS 4.4 and IQS 4.3 .
With UPRINT1, fast start is suppressed, and last retrieve is via key-1. This gives
same results when LOWYEAR is 1900 or 1920 but the interpretation changes.
Dynamic descriptions
A work file is defined by the tuple file/file structure.
The DEFINE STRUCTURE AS RECORD command and the EXTRACT
command permit definition of a structure that contains the attributes of record
items, including Year 2000 flags, except when you define an additional item using
an expression or a function (such as SUBSTR).
This is displayed by PRINT STRUCTURE STR-STUDENT and
STR-STUDENT-ADD.
47 A2 23UG Rev03
B-33
How to Deal with the Year 2000
NOTES:
1.
X and Y rename existing fields and keep the YEAR 2000 flags, but Z,
defined as a SUBSTR of a field, loses the flag.
2. DEFINE/ UPDATE VIEW do not keep the flags of schema record items
Procedural mode uses the same processing with the DEFINE or PARAMETER or
WRITE verbs:
DEFINE x IDEM STR-STUDENT defines the structure x that contains attributes
of items of the structure STR-STUDENT, including the Year 2000 flags.
WRITE works the same way as EXTRACT. and the structure is associated with the
file and reused on SORT or READ verb.
Procedural mode enables definition of working variables or use of the
@CHARi, $NUMi or #DECi variables. These variables are not flagged and when
you execute LET A= BIRTH-DATE, the result has the attributes of A.
Also the functions (such as SUBSTR (SOCIAL-SEC ,2 ,2) ) and expressions
( B-YEAR + 1900 ) lose the year 2000 flags.
Example of interface with access method, and structure definition
>>>08:59 IQS V4.4
C:
==>select IND
V:
==>assign area IND-A to file QUERY.TEST.IND-A
V:
==>open
V:
==>load UPRINT
V:
==>^,$l
10
: retrieve UNIVERSITY
20
:
print U-NAME,CITY
30
:
retrieve COLLEGE
40
:
print COL-NAME
50
:
retrieve STUDENT
60
:
print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,
BIRTH-DATE
70
:
end
80
: end
90
: end
B-34
47 A2 23UG Rev03
IQS Extension for Year 2000
V:
==>go
DAUPHINE
PARIS
LAW
DAUPHINE
LAW
ANNE
2457402000 45 9 15
DAUPHINE
LAW
BRUNO
1041200010
4 2 18
BUSINESS
DAUPHINE
BUSINESS
JULIE
2204501234 20 12 25
DAUPHINE
BUSINESS
PAUL
1206000521 20 4 1
DAUPHINE
BUSINESS
SIMON
1017500040
1 1 1
JUSSIEU
PARIS
BIOLOGIY
MEDECINE
JUSSIEU
MEDECINE
LUCIE
2017800100
1 11 11
JUSSIEU
MEDECINE
MARIE
2906612345 90 10 5
JUSSIEU
MEDECINE
ZEBULON
1457554321 45 6 18
PHARMACY
JUSSIEU
PHARMACY
LEON
1908078900 90 10 18
JUSSIEU
PHARMACY
SOPHIE
2047845789
4 5 8
SORBONNE
PARIS
PHILOSOPHY
V:
==>ld UPRINT1
V:
==>^,$l
10
: retrieve STUDENT
20
:
print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,
BIRTH-DATE
30
: end
31
: print "
retrieve via key-2"
40
: retrieve STUDENT via key-2
50
:
print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,
BIRTH-DATE
60
: end
61
: print "
retrieve where key-2"
62
: retrieve STUDENT where SOCIAL-SEC > "00000000000"
63
:
print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,BIRTH-DATE
64
: end
V:
==>let maint 1
V:
==>compile
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
20
BIRTH-DATE: value contains YEAR 2000
at line
20
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
50
47 A2 23UG Rev03
B-35
How to Deal with the Year 2000
BIRTH-DATE:
at line
SOCIAL-SEC:
at line
SOCIAL-SEC:
at line
BIRTH-DATE:
at line
value
50
value
62
value
63
value
63
contains YEAR 2000
contains YEAR 2000 ( 2, 2)
contains YEAR 2000 ( 2, 2)
contains YEAR 2000
V:
==>exec
DAUPHINE
LAW
ANNE
DAUPHINE
LAW
BRUNO
DAUPHINE
BUSINESS JULIE
DAUPHINE
BUSINESS PAUL
DAUPHINE
BUSINESS SIMON
JUSSIEU
MEDECINE LUCIE
JUSSIEU
MEDECINE MARIE
JUSSIEU
MEDECINE ZEBULON
JUSSIEU
PHARMACY LEON
JUSSIEU
PHARMACY SOPHIE
retrieve via key-2
DAUPHINE
BUSINESS SIMON
DAUPHINE
LAW
BRUNO
DAUPHINE
BUSINESS PAUL
JUSSIEU
MEDECINE ZEBULON
JUSSIEU
PHARMACY LEON
JUSSIEU
MEDECINE LUCIE
JUSSIEU
PHARMACY SOPHIE
DAUPHINE
BUSINESS JULIE
DAUPHINE
LAW
ANNE
JUSSIEU
MEDECINE MARIE
retrieve where key-2
DAUPHINE
LAW
ANNE
DAUPHINE
LAW
BRUNO
DAUPHINE
BUSINESS JULIE
DAUPHINE
BUSINESS PAUL
DAUPHINE
BUSINESS SIMON
JUSSIEU
MEDECINE LUCIE
JUSSIEU
MEDECINE MARIE
JUSSIEU
MEDECINE ZEBULON
JUSSIEU
PHARMACY LEON
JUSSIEU
PHARMACY SOPHIE
V:
==>let @MESSAGE "SYSOPT LOWYEAR 1920"
B-36
2457402000
1041200010
2204501234
1206000521
1017500040
2017800100
2906612345
1457554321
1908078900
2047845789
45
4
20
20
1
1
90
45
90
4
9
2
12
4
1
11
10
6
10
5
15
18
25
1
1
11
5
18
18
8
1017500040
1041200010
1206000521
1457554321
1908078900
2017800100
2047845789
2204501234
2457402000
2906612345
1
4
20
45
90
1
4
20
45
90
1
2
4
6
10
11
5
12
9
10
1
18
1
18
18
11
8
25
15
5
2457402000
1041200010
2204501234
1206000521
1017500040
2017800100
2906612345
1457554321
1908078900
2047845789
45
4
20
20
1
1
90
45
90
4
9
2
12
4
1
11
10
6
10
5
15
18
25
1
1
11
5
18
18
8
47 A2 23UG Rev03
IQS Extension for Year 2000
V:
==>exec
DAUPHINE
LAW
DAUPHINE
LAW
DAUPHINE
BUSINESS
DAUPHINE
BUSINESS
DAUPHINE
BUSINESS
JUSSIEU
MEDECINE
JUSSIEU
MEDECINE
JUSSIEU
MEDECINE
JUSSIEU
PHARMACY
JUSSIEU
PHARMACY
retrieve via key-2
DAUPHINE
BUSINESS
DAUPHINE
LAW
DAUPHINE
BUSINESS
JUSSIEU
MEDECINE
JUSSIEU
PHARMACY
JUSSIEU
MEDECINE
JUSSIEU
PHARMACY
DAUPHINE
BUSINESS
DAUPHINE
LAW
JUSSIEU
MEDECINE
retrieve where key-2
DAUPHINE
LAW
DAUPHINE
LAW
DAUPHINE
BUSINESS
DAUPHINE
BUSINESS
DAUPHINE
BUSINESS
JUSSIEU
MEDECINE
JUSSIEU
MEDECINE
JUSSIEU
MEDECINE
JUSSIEU
PHARMACY
JUSSIEU
PHARMACY
V:
==>eject
ANNE
BRUNO
JULIE
PAUL
SIMON
LUCIE
MARIE
ZEBULON
LEON
SOPHIE
2457402000
1041200010
2204501234
1206000521
1017500040
2017800100
2906612345
1457554321
1908078900
2047845789
45
4
20
20
1
1
90
45
90
4
9
2
12
4
1
11
10
6
10
5
15
18
25
1
1
11
5
18
18
8
SIMON
BRUNO
PAUL
ZEBULON
LEON
LUCIE
SOPHIE
JULIE
ANNE
MARIE
1017500040
1041200010
1206000521
1457554321
1908078900
2017800100
2047845789
2204501234
2457402000
2906612345
1
4
20
45
90
1
4
20
45
90
1
2
4
6
10
11
5
12
9
10
1
18
1
18
18
11
8
25
15
5
ANNE
BRUNO
JULIE
PAUL
SIMON
LUCIE
MARIE
ZEBULON
LEON
SOPHIE
2457402000
1041200010
2204501234
1206000521
1017500040
2017800100
2906612345
1457554321
1908078900
2047845789
45
4
20
20
1
1
90
45
90
4
9
2
12
4
1
11
10
6
10
5
15
18
25
1
1
11
5
18
18
8
V:
==>* keep only last retrieve and modify the condition
* results are not ascending on SOCIAL-SEC
47 A2 23UG Rev03
B-37
How to Deal with the Year 2000
V:
==>^,$l
10
: retrieve STUDENT
20
: print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,BIRTH-DATE
30
: end
31
: print "
retrieve via key-2"
40
: retrieve STUDENT via key-2
50
: print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,BIRTH-DATE
60
: end
61
: print "
retrieve where key-2"
62
: retrieve STUDENT where SOCIAL-SEC > "00000000000"
63
: print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,BIRTH-DATE
64
: end
V:
==>10,61d
V:
==>s/00000000000/24400000000/p
62
: retrieve STUDENT where SOCIAL-SEC > "24400000000"
V:
==>eject
V:
==>^,$l
62
: retrieve STUDENT where SOCIAL-SEC > "24400000000"
63
: print S-U-NAME,S-COL-NAME,S-NAME,SOCIAL-SEC,BIRTH-DATE
64
: end
V:
==>go
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
62
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
63
BIRTH-DATE: value contains YEAR 2000
at line
63
DAUPHINE
LAW
ANNE
2457402000 45 9 15
JUSSIEU
MEDECINE LUCIE
2017800100
1 11 11
JUSSIEU
MEDECINE MARIE
2906612345 90 10 5
JUSSIEU
PHARMACY SOPHIE
2047845789
4 5 8
V:
==>* results are not sorted on SOCIAL-SEC ( Access via KEY-1)
==>*
* now , results of Extract command
*
save the structure of the file work
*
and print structure ( see symbols Y and C on ITEM NUM
column )
==>eject
B-38
47 A2 23UG Rev03
IQS Extension for Year 2000
V:
==>EXTRACT S-U-NAME,S-COL-NAME,SNAME,SOCIAL-SEC,BIRTH-DATE FROM
STUDENT
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
BIRTH-DATE: value contains YEAR 2000
10 records extracted
F:
==>SAVE STRUCTURE STR-STUDENT
F:
==>/
V:
==>*
case of additional items: renamed fields or expression
V:
==>XT S-NAME,X=SOCIAL-SEC,Y=B-YEAR,Z=SUBSTR(SOCIAL-SEC,1,3) FROM
STUDENT
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
B-YEAR: value is YEAR 2000
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
10 records extracted
F:
==>SAVE STRUCTURE STR-STUDENT-ADD
F:
==>print
S-NAME
X
Y Z
ANNE
2457402000
BRUNO
1041200010
JULIE
2204501234
PAUL
1206000521
SIMON
1017500040
LUCIE
2017800100
MARIE
2906612345
ZEBULON
1457554321
LEON
1908078900
SOPHIE
2047845789
F:
==>/
V:
==>PRINT STRUCTURE STR-STUDENT
47 A2 23UG Rev03
45
4
20
20
1
1
90
45
90
4
245
104
220
120
101
201
290
145
190
204
B-39
How to Deal with the Year 2000
*******************************************************
*
*
*
IQS STRUCTURE : STR-STUDENT
*
*
*
*******************************************************
LIBRARY NAME
: QUERY.TEST.BINTST
TRANSLATION DATE : 16/09/97
LIST OF ACCESS RIGHT:
-------------------RECORD OF THE STRUCTURE: STR-STUDENT
---------------------- RECORD
1: STR-STUDENT
RECORD LENGTH
:
77
NUMBER OF FIELDS:
8
WITHIN AREA(S) : WORK
RECORD DESCRIPTION:
--------------------------------------------------------------:ITEM :LEV.: ITEM NAME
:OFFS.: LENGTH : TYP :OCC:KEY:PRV:ADD:
: NUM :
:
:
:
:
:
:
:
:
:
--------------------------------------------------------------: 1 : 2 : S-U-NAME
: 0 :
20
: CHR : 1 : - : U :
:
: 2 : 2 : S-COL-NAME : 20 :
20
: CHR : 1 : - : U :
:
: 3 : 2 : S-NAME
: 40 :
20
: CHR : 1 : - : U :
:
:C 4 : 2 : SOCIAL-SEC : 60 :
11
: CHR : 1 : - : U :
:
:C 5 : 2 : BIRTH-DATE : 71 :
6
: STR : 1 : - : U :
:
:Y 6 : 3 : B-YEAR
: 71 :
2,0 : UPK : 1 : - : U :
:
: 7 : 3 : B-MONTH
: 73 :
2,0 : UPK : 1 : - : U :
:
: 8 : 3 : B-DAY
: 75 :
2,0 : UPK : 1 : - : U :
:
--------------------------------------------------------------V:
==>PRINT STRUCTURE STR-STUDENT-ADD
B-40
47 A2 23UG Rev03
IQS Extension for Year 2000
*******************************************************
*
*
*
IQS STRUCTURE : STR-STUDENT-ADD
*
*
*
*******************************************************
LIBRARY NAME
: QUERY.TEST.BINTST
TRANSLATION DATE : 16/09/97
LIST OF ACCESS RIGHT:
-------------------RECORD OF THE STRUCTURE: STR-STUDENT-ADD
---------------------- RECORD
1: STR-STUDENT-ADD
RECORD LENGTH
:
36
NUMBER OF FIELDS:
4
WITHIN AREA(S) : WORK
RECORD DESCRIPTION:
--------------------------------------------------------------:ITEM :LEV.: ITEM NAME
:OFFS.: LENGTH : TYP :OCC:KEY:PRV:ADD:
: NUM :
:
:
:
:
:
:
:
:
:
--------------------------------------------------------------: 1 : 2 : S-NAME
: 0 : 20
:CHR : 1 : - : U :
:
:C 2 : 2 : X
: 20 : 11
:CHR : 1 : - : U :
:
:Y 3 : 2 : Y
: 31 :
2,0 :UPK : 1 : - : U :
:
: 4 : 2 : Z
: 33 :
3
:CHR : 1 : - : U :
:
--------------------------------------------------------------V:
==>/
C:
==>/
<<<09:09
47 A2 23UG Rev03
B-41
How to Deal with the Year 2000
Reorder the results:
Sort verb and Order By option to order the SOCIAL-SEC results.
Review cannot be adapted.
>>>15:15 IQS V4.4
C:
==>select IND
V:
==>assign area IND-A to file query.test.ind-a
V:
==>open
V:
==>let maint 1
V:
==>load UPRINT3
V:
==>^,$l
10
: let @MESSAGE= "SYSOPT LOWYEAR 1920"
20
: retrieve STUDENT
30
:
where SOCIAL-SEC > "24400000000"
40
:
print S-NAME,SOCIAL-SEC,BIRTH-DATE
50
: end
60
: print "
retrieve via KEY-2"
70
: retrieve STUDENT
80
:
via KEY-2
90
:
where SOCIAL-SEC > "24400000000"
100
:
print S-NAME,SOCIAL-SEC,BIRTH-DATE
110
: end
120
: print "
retrieve and sort"
130
: retrieve STUDENT
140
:
where SOCIAL-SEC > "24400000000"
150
:
write S-NAME,SOCIAL-SEC,BIRTH-DATE to F1
160
: end
170
: sort f1 on SOCIAL-SEC
180
: read F1
190
:
print S-NAME,SOCIAL-SEC,BIRTH-DATE
200
: end
B-42
47 A2 23UG Rev03
IQS Extension for Year 2000
V:
==>compile
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains
at line
30
SOCIAL-SEC: value contains
at line
40
BIRTH-DATE: value contains
at line
40
SOCIAL-SEC: value contains
at line
90
SOCIAL-SEC: value contains
at line
100
BIRTH-DATE: value contains
at line
100
SOCIAL-SEC: value contains
at line
140
SOCIAL-SEC: value contains
at line
150
BIRTH-DATE: value contains
at line
150
SOCIAL-SEC: value contains
at line
170
SOCIAL-SEC: value contains
at line
190
BIRTH-DATE: value contains
at line
190
V:
==>DSTS PARAMETERS
>>>WORKSPACE:
>>>LOWYEAR:
YEAR 2000 ( 2, 2)
YEAR 2000 ( 2, 2)
YEAR 2000
YEAR 2000 ( 2, 2)
YEAR 2000 ( 2, 2)
YEAR 2000
YEAR 2000 ( 2, 2)
YEAR 2000 ( 2, 2)
YEAR 2000
YEAR 2000 ( 2, 2)
YEAR 2000 ( 2, 2)
YEAR 2000
UPRINT3
QRY
1900
>>>PARAMETERS
iqs version: V4.4
status: 32
syslevel: V800/8560
size: 240
poolsize:
50
lang: 0
terminal id: BH13TWS2107
terminal type: DKU7105
screen size: 24 * 80
ddlib1: QUERY.TEST.BINTST
ddlib2: *** library not assigned
ddlib3: *** library not assigned
sllib: QUERY.TEST.SLREQ
binlib: QUERY.TEST.BINREQ
culib: QUERY.TEST.CUREQ
#blib: QUERY.TEST.BINREQ
47 A2 23UG Rev03
B-43
How to Deal with the Year 2000
V:
==>exec
ANNE
2457402000
LUCIE
2017800100
MARIE
2906612345
SOPHIE
2047845789
retrieve via KEY-2
LUCIE
2017800100
SOPHIE
2047845789
ANNE
2457402000
MARIE
2906612345
retrieve and sort
ANNE
2457402000
MARIE
2906612345
LUCIE
2017800100
SOPHIE
2047845789
V:
==>DSTS PARAMETERS
>>>WORKSPACE:
>>>LOWYEAR:
45 9 15
1 11 11
90 10 5
4 5 8
1 11 11
4 5 8
45 9 15
90 10 5
45 9 15
90 10 5
1 11 11
4 5 8
UPRINT3
QRY
1920
>>>PARAMETERS
iqs version: V4.4
status: 32
syslevel: V800/8560
size: 240
poolsize:
50
lang: 0
terminal id: BH13TWS2107
terminal type: DKU7105
screen size: 24 * 80
ddlib1: QUERY.TEST.BINTST
ddlib2: *** library not assigned
ddlib3: *** library not assigned
sllib: QUERY.TEST.SLREQ
binlib: QUERY.TEST.BINREQ
culib: QUERY.TEST.CUREQ
#blib: QUERY.TEST.BINREQ
V:
==>DSTS FILES
>>>WORKSPACE:
UPRINT3
QRY
>>>FILES AND AREAS:
area
: IND-A
org =ind/n
status =
efn = QUERY.TEST.IND-A
printfile: PRINTER
assigned to TERM
B-44
op/input
47 A2 23UG Rev03
IQS Extension for Year 2000
V:
==>RETAIN * from STUDENT where SOCIAL-SEC > "24400000000"
INTERMEDIATE OUTPUTS:
==>
STUDENT: value contains YEAR 2000
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
V:
==>EXTRACT S-NAME,SOCIAL-SEC,BIRTH-DATE FROM STUDENT order by
SOCIAL-SEC
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
BIRTH-DATE: value contains YEAR 2000
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
4 records extracted
F:
==>print
S-NAME
SOCIAL-SEC
B-YEAR B-MONTH B-DAY
ANNE
2457402000
45
9
15
MARIE
2906612345
90
10
5
LUCIE
2017800100
1
11
11
SOPHIE
2047845789
4
5
8
F:
==>/
V:
==>EXTRACT S-NAME,SOCIAL-SEC,BIRTH-DATE FROM STUDENT order by -:
==>B-YEAR,B-MONTH,B-DAY
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
BIRTH-DATE: value contains YEAR 2000
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
4 records extracted
F:
==>print
S-NAME
SOCIAL-SEC
ANNE
MARIE
LUCIE
SOPHIE
F:
==>/
2457402000
2906612345
2017800100
2047845789
47 A2 23UG Rev03
B-YEAR B-MONTH B-DAY
45
90
1
4
9
10
11
5
15
5
11
8
B-45
How to Deal with the Year 2000
V:
==>retain S-NAME,SOCIAL-SEC,BIRTH-DATE from student where
SOCIAL-SEC BG "2"
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
BIRTH-DATE: value contains YEAR 2000
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
V:
V:
==>review
R:
==>FIRST
UNIVERSITY
TYP: U
U-NAME: DAUPHINE
CITY: PARIS
R:
==>FIRST college
COLLEGE
TYP: C
C-U-NAME: DAUPHINE
COL-NAME: LAW
R:
==>FIRST student
STUDENT
S-NAME: ANNE
SOCIAL-SEC: 2457402000
BIRTH-DATE
B-YEAR: 45
B-MONTH: 9
B-DAY: 15
R:
==>NEXT
*
No more STUDENT
R:
==>NEXT college
COLLEGE
TYP: C
C-U-NAME: DAUPHINE
COL-NAME: BUSINESS
R:
==>FIRST student
STUDENT
S-NAME: JULIE
SOCIAL-SEC: 2204501234
BIRTH-DATE
B-YEAR: 20
B-MONTH: 12
B-DAY: 25
B-46
47 A2 23UG Rev03
IQS Extension for Year 2000
R:
==>NEXT
*
No more STUDENT
R:
==>NEXT college
*
No more COLLEGE
R:
==>NEXT university
UNIVERSITY
TYP: U
U-NAME: JUSSIEU
CITY: PARIS
R:
==>FIRST college
COLLEGE
TYP: C
C-U-NAME: JUSSIEU
COL-NAME: BIOLOGY
R:
==>FIRST student
*
No more STUDENT
R:
==>NEXT college
COLLEGE
TYP: C
C-U-NAME: JUSSIEU
COL-NAME: MEDECINE
R:
==>FIRST student
STUDENT
S-NAME: LUCIE
SOCIAL-SEC: 2017800100
BIRTH-DATE
B-YEAR: 1
B-MONTH: 11
B-DAY: 11
R:
==>NEXT
STUDENT
S-NAME: MARIE
SOCIAL-SEC: 2906612345
BIRTH-DATE
B-YEAR: 90
B-MONTH: 10
B-DAY: 5
R:
==>NEXT
*
No more STUDENT
47 A2 23UG Rev03
B-47
How to Deal with the Year 2000
R:
==>NEXT college
COLLEGE
TYP: C
C-U-NAME: JUSSIEU
COL-NAME: PHARMACY
R:
==>FIRST student
STUDENT
S-NAME: SOPHIE
SOCIAL-SEC: 2047845789
BIRTH-DATE
B-YEAR: 4
B-MONTH: 5
B-DAY: 8
R:
==>NEXT
*
No more STUDENT
R:
==>NEXT college
*
No more COLLEGE
R:
==>NEXT university
UNIVERSITY
TYP: U
U-NAME: SORBONNE
CITY: PARIS
R:
==>NEXT college
COLLEGE
TYP: C
C-U-NAME: SORBONNE
COL-NAME: PHILOSOPHY
R:
==>NEXT student
*
No more STUDENT
R:
==>NEXT college
*
No more COLLEGE
R:
==>NEXT university
*
No more UNIVERSITY
R:
==>/
V:
==>/
C:
==>/
<<<15:22
B-48
47 A2 23UG Rev03
IQS Extension for Year 2000
Procedural mode: Work files, Save structures, Define Idem
>>>10:44 IQS V4.4
C:
==>select IND
V:
==>assign area IND-A to file QUERY.TEST.IND-A
V:
==>open
V:
==>let maint 1
V:
==>assign F1
V:
==>ld UPRINT5
V:
==>^,$l
130
: retrieve STUDENT
140
:
where SOCIAL-SEC > "24400000000"
150
:
write S-NAME,SOCIAL-SEC,BIRTH-DATE to F1
160
: end
V:
==>compile
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
140
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
150
BIRTH-DATE: value contains YEAR 2000
at line
150
V:
==>exec
V:
==>ld UPRINT6
V:
==>^,$l
170
: sort f1 on SOCIAL-SEC
180
: read F1
190
:
print S-NAME,SOCIAL-SEC,BIRTH-DATE
200
: end
V:
==>go
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
170
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
190
47 A2 23UG Rev03
B-49
How to Deal with the Year 2000
BIRTH-DATE: value contains YEAR 2000
at line
190
ANNE
2457402000 45 9 15
MARIE
2906612345 90 10 5
V:
==>
V:
==>file F1
F:
==>save structure STRF1
F:
==>/
V:
==>/
C:
==>/
<<<10:56
>>>10:56 IQS V4.4
C:
==>select IND
V:
==>assign area IND-A to file QUERY.TEST.IND-A
V:
==>open
V:
==>let maint 1
V:
==>load UPRINT4
V:
==>^,$l
10
: define 1 X idem STRF1
20
: retrieve student where SOCIAL-SEC > "24400000000"
30
:
let S-NAME of X = S-NAME of STUDENT
40
:
let SOCIAL-SEC of X = SOCIAL-SEC of STUDENT
50
:
let BIRTH-DATE of X = BIRTH-DATE of STUDENT
60
:
write X to F2
70
: end
80
: sort F2 on SOCIAL-SEC
90
: read F2
100
:
print
110
: end
V:
==>compile
INTERMEDIATE OUTPUTS:
==>
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
20
SOCIAL-SEC: value contains YEAR 2000 ( 2, 2)
at line
40
B-50
47 A2 23UG Rev03
IQS Extension for Year 2000
SOCIAL-SEC:
at line
BIRTH-DATE:
at line
BIRTH-DATE:
at line
SOCIAL-SEC:
at line
value
40
value
50
value
50
value
80
contains YEAR 2000 ( 2, 2)
contains YEAR 2000
contains YEAR 2000
contains YEAR 2000 ( 2, 2)
V:
==>exec
ANNE
2457402000 45 9 15
MARIE
2906612345 90 10 5
V:
==>let @MESSAGE = "SYSOPT LOWYEAR 1920"
V:
==>exec
ANNE
2457402000
MARIE
2906612345
LUCIE
2017800100
SOPHIE
2047845789
V:
==>PRINT STRUCTURE STRF1
45 9 15
90 10 5
1 11 11
4 5 8
*******************************************************
*
*
*
IQS STRUCTURE : STRF1
*
*
*
*******************************************************
LIBRARY NAME
: QUERY.TEST.BINTST
TRANSLATION DATE : 18/09/97
LIST OF ACCESS RIGHT:
-------------------RECORD OF THE STRUCTURE: STRF1
---------------------- RECORD
1: STRF1
RECORD LENGTH
:
37
NUMBER OF FIELDS:
6
WITHIN AREA(S) :
F1
47 A2 23UG Rev03
B-51
How to Deal with the Year 2000
RECORD DESCRIPTION:
--------------------------------------------------------------:ITEM :LEV.: ITEM NAME
:OFFS.: LENGTH : TYP :OCC:KEY:PRV:ADD:
: NUM :
:
:
:
:
:
:
:
:
:
--------------------------------------------------------------: 1 : 2 : S-NAME
: 0 :
20
: CHR : 1 : - : U :
:
:C 2 : 2 : SOCIAL-SEC : 20 :
11
: CHR : 1 : - : U :
:
:C 3 : 2 : BIRTH-DATE : 31 :
6
: STR : 1 : - : U :
:
:Y 4 : 3 : B-YEAR
: 31 :
2,0 : UPK : 1 : - : U :
:
: 5 : 3 : B-MONTH
: 33 :
2,0 : UPK : 1 : - : U :
:
: 6 : 3 : B-DAY
: 35 :
2,0 : UPK : 1 : - : U :
:
--------------------------------------------------------------V:
==>DSTS PARAMETERS
>>>WORKSPACE:
>>>LOWYEAR:
UPRINT4
QRY
1920
>>>PARAMETERS
iqs version: V4.4
status: 32
syslevel: V800/8560
size: 240
poolsize:
50
lang: 0
terminal id: BH13TWS2107
terminal type: DKU7105
screen size: 24 * 80
ddlib1: QUERY.TEST.BINTST
ddlib2: *** library not assigned
ddlib3: *** library not assigned
sllib: QUERY.TEST.SLREQ
binlib: QUERY.TEST.BINREQ
culib: QUERY.TEST.CUREQ
#blib: QUERY.TEST.BINREQ
V:
==>QUIT
<<<10:58
B-52
47 A2 23UG Rev03
IQS Extension for Year 2000
LOWYEAR Handling
A query can handle LOWYEAR values by use of GCL variables and/or IQS
permanent variables. For example:
Define and init a GCL variable by:
GB
LET
GCL-LOWYEAR-APPL001
GCL-LOWYEAR-APPL001
TYPE=DEC
1900
LENGTH=4
NUMVAL=1
Define a permanent IQS variable by:
PARAMETER
1
2
3
3
@TRANSACTION-STORAGE,
USER-SESSION-AREA
...
LOWYEAR-VAL UNSIGNED
UNPACKED
DEC 4
At the beginning of the IQS session, initialize and check the "year context" by:
EXEC
READLOWYEAR (LOWYEAR-VAL)
where the subquery READLOWYEAR might be:
PARAMETER X UNSIGNED UNPACKED DEC 4
LET @MESSAGE = "READVAR GCL-LOWYEAR-APPL001"
LET X = @MESSAGE PIC "9999"
/* init lowyear-val */
IF X BETWEEN 1900,1999
/* check year context*/
THEN DISPLAY X PROMPT "Current lowyear value is"
ELSE DISPLAY X PROMPT "Incorrect lowyear value"
END
/* and signal the lowyear value to the IQS processor */
LET @C = X Justified Left
LET @MESSAGE =CONC ("SYSOPT LOWYEAR "@C)
A subquery CHANGELOWYEAR would be called by:
LET LOWYEAR-VAL = 19YY
EXEC CHANGELOWYEAR (LOWYEAR-VAL)
NOTES:
There are three variables:
1.
The GCL "lowyear" variable: GCL-LOWYEAR-APPL001
2.
The USER "lowyear" variable: LOWYEAR-VAL
3.
The IQS internal "lowyear" variable: unnamed
All three of these MUST have the same value.
47 A2 23UG Rev03
B-53
How to Deal with the Year 2000
вќ‘
B-54
47 A2 23UG Rev03
C. More About Private Timer
C.1
Private Timer Commands
There are three commands specific to the Private Timer.
Two of these are available only to the system administrator or the Main Operator
and are used to declare a private time. They are:
VALIDATE_PRIVATE_TIMER
Declare a private time for a project, Job, or LM.
INVALIDATE_PRIVATE_TIMER
Cancel the private time for a project, Job, or LM.
The third command is available to all users:
DISPLAY_PRIVATE_TIMER
Display the list of objects for which a private time has
been validated.
47 A2 23UG Rev03
C-1
How to Deal with the Year 2000
C.1.1
VALIDATE_PRIVATE_TIMER
Purpose
To validate a single private time per command which can be applied to one or more
objects of type project (keyword PROJLIST) and/or Job (keyword JOBLIST)
and/or Load Module (keyword LMLIST).
Syntax
VALIDATE_PRIVATE_TIMER | VPRVTM
[ LMLIST
= { (name31 [name31] [name31]) } ]
[ JOBLIST = { (name8 [name8] [name8] ) } ]
[ PROJLIST = { (name12 [name12] [name12]) } ]
[YEAR=[CC]YY] [MONTH=DEC2] [DAY=DEC2] [HOUR=HH[.MM[.SS]]]
Parameters
C-2
LMLIST
List of Load Module names (maximum three per
command).
JOBLIST
List of Job names (maximum three per command).
PROJLIST
List of Project names (maximum three per command).
YEAR
Year of the simulated date. If CC is not specified to
indicate the century (19 or 20), YY is interpreted
according to the 61 rule: 99 is 1999, 03 is 2003.
The complete date must comply with the rule:
01/01/1981 < date < 12/31/2060.
MONTH
Month of the simulated date, in the range 1 to 12.
DAY
Day of the simulated date, in the range 1 to 31.
HOUR
The simulated time. If not specified, the current system
time is used.
47 A2 23UG Rev03
More About Private Timer
Function
Each time that the Timer is consulted for the date and time (with the exception of
the date and time for journalization), the Timer checks if the object concerned has a
private time validated for it. If it does, it returns a value such that the object
appears to have started at the declared time.
For the project, the first Job is activated with the declared private time. Subsequent
Jobs start with the updated private time thus ensuring continuity of the date/time
until the private time is invalidated for the project (via an IVPRVTM command).
Constraints
• Although the parameters LMLIST, JOBLIST, and PROJLIST are shown as
optional, one or more of them must be present in the command.
• If YEAR, MONTH, and DAY are not specified, HOUR is mandatory and a time
equivalent to system time is not accepted.
• The default values for YEAR, MONTH, DAY, and HOUR are the system date
and time except for an IOF session where any private time is used instead.
• This command is available only to SYSADMIN or the Main operator.
• The time specified must be at least one day (24h) + one hour later than the time
of submission (one hour to terminate the command and allow the user to start his
activities without time conflict), or at least 24 hours earlier. Otherwise the
command is rejected with the message:
*** TM59: Private time must be superior than current time
(minimum 24+1 hours)
• This command is not available in batch mode.
• If an object is started with a private time earlier than 24 hours from the current
system time, the private time is ignored and a warning message is written in the
JOR. There is no automatic invalidation of the object.
• The command VALIDATE_PRIVATE_TIMER can be executed more than once,
to declare a private time for the maximum number of objects which is 30 for
each type (LM, JOB et PROJ).
• The private time for an object cannot be directly modified. To modify the time,
it is necessary to invalidate and then revalidate.
47 A2 23UG Rev03
C-3
How to Deal with the Year 2000
Example
VALIDATE_PRIVATE_TIMER JOBLIST = (MYJOB1 MYJOB2) LMLIST=MYLM
YEAR=1999 MONTH=12 DAY=31 HOUR=23.51;
The Jobs MYJOB1 and MYJOB2 and the Load Module MYLM are validated with
a private time. Each time that one of these is started, the start of execution is
simulated as 31 December 1999, at 23h51.
If the LM is active when the command is executed or a Job is running, there is no
action in respect of the Job or LM until it is relaunched.
Error Messages
If an object of type LM, JOB or PROJ already has a private time, one of the
following messages is issued as appropriate:
***TM50: LM Name already in Private Timer List:
MYLM
***TM52: JOB Name already in Private Timer List:
MYJOB
***TM54: PROJECT Name already in Private Timer List: MYPROJ
If you declare a private time for more than 30 objects of any one type (LM, JOB or
PROJ), one of the following messages is issued as appropriate:
***TM51: Overflow in Private Timer List on LM Name.
***TM53: Overflow in Private Timer List on JOB Name.
***TM55: Overflow in Private Timer List on PROJ Name.
If you declare an LM, Job, or Project object with a private time less than system
time plus 24 hours, you will receive the message:
***TM59: Private time must be superior than current time
(minimum 24+1 hours).
If the date does not obey the rule 01/01/1981 < date < 12/31/2060 then the
following message is presented:
***TM62: Illegal value for date.
If the date is equal to or greater than system date without respecting the 25 hour
period, the following message is presented:
***TM59: Private time must be superior than current time
(minimum 24+1 hours).
If the date is earlier than the system date without respecting the 24 hour period then
the following message is presented:
***TM61: Private time must be inferior than current time
(minimum 24 hours).
C-4
47 A2 23UG Rev03
More About Private Timer
C.1.2
DISPLAY_PRIVATE_TIMER
Purpose
To list all objects for which a private time has been declared. It does not tell you
whether the object is in execution or not. This command is available to all IOF
users. To distinguish objects validated with an earlier or later date, each time
displayed by this command is preceded by a - or + sign, respectively.
Syntax
DISPLAY_PRIVATE_TIMER | DPRVTM
Parameters
None.
Error Messages
If there are no private times declared for any objects, the message displayed is:
Private Timer List Empty
Otherwise, a message of the following type is output (3 LMs, 2 Jobs, and 1 project
validated):
PRIVATE
PRIVATE
PRIVATE
PRIVATE
PRIVATE
PRIVATE
PRIVATE
47 A2 23UG Rev03
TIMER
TIMER
TIMER
TIMER
TIMER
TIMER
TIMER
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
AT:
AT:
AT:
AT:
AT:
AT:
AT:
+23:59:45
+23:59:45
+22:00:00
+17:30:00
+23:45:30
+16:00:00
-12.00.00
DEC
DEC
FEB
DEC
FEB
FEB
Jan
31,
31,
28,
31,
28,
29,
29,
1999
1999
2000
2000
2001
2004
1997
LM :
LM :
LM :
JOB :
JOB :
PROJ:
PROJ:
MYLM1
MYLM2
MYLM3
MYJOB1
MYJOB2
MYPROJ1
MYPROJ2
C-5
How to Deal with the Year 2000
C.1.3
INVALIDATE_PRIVATE_TIMER
Purpose
To invalidate the private time for one or more LMs and/or Jobs, and/or projects.
Syntax
INVALIDATE_PRIVATE_TIMER | IVPRVTM
[ LMLIST
= { * | name31 [name31] [name31] } ]
[ JOBLIST
= { * | name8
[name8]
[name8]
} ]
[ PROJLIST = { * | name12 [name12] [name12] } ]
Parameters
LMLIST
Names of the LMs (maximum 3 per command) or *
(all LM objects).
JOBLIST
Names of the Jobs (maximum 3 per command) or *
(all Job objects).
PROJLIST
Names of the projects (maximum 3 per command) or *
(all project objects).
Constraints
1
3
3
IMPORTANT:
Objects already started with a private time continue to execute with their
original private time.
• Although the parameters LMLIST, JOBLIST, and PROJLIST are shown as
optional, one or more of them must be present in the command.
• If a user is connected under IOF to a project which has a validated private time,
invalidation does not take place until the end of the IOF session, and all the
user's Jobs until then are submitted with the validated private time.
• The command cannot be executed in batch mode.
• The command is reserved to the system administrator and the Main operator.
• The command aborts on the first error detected.
C-6
47 A2 23UG Rev03
More About Private Timer
Error Messages
If an LM, Job, or LM object is explicitly named in the command and it does not
exist, one of the following messages issued as appropriate:
***TM56: LM Name not in Private Timer List:
***TM57: JOB Name not in Private Timer List:
***TM58: PROJ Name not in Private Timer List:
MYLM
MYJOB
MYPROJ
If an LM, Job, or Project is validated (by the command VPRVTM), with a
date/time earlier than the real system date/time plus one hour, the following
message is issued:
***TM59: Private time must be superior than current time
(minimum 24+1 hours).
47 A2 23UG Rev03
C-7
How to Deal with the Year 2000
C.2
Messages in the JOR
The five examples given below for the Job C85DATE include:
• a COBOL compile step,
• a LINKER step to create an LM in a temporary library,
• the execution this LM.
In all the examples, the Job is started by EJR in an IOF session.
EXAMPLE 1:
The Job C85DATE has been validated with a private time of 31 December 1999,
23h59m45secs.
All steps are submitted with the private time of the Job which takes priority over
any LM private time. The time used is shown by the message:
WARNING
JOB <C85DATE> STARTED AT SIMULATED DATE ...
at the start of the JOR. Further messages
WARNING
LM <....> STARTED AT SIMULATED DATE ...
confirm that each step is submitted with the same private time. In step 3, note how
the date/time of creation of the temporary LM C85DATE is indeed based on the
private time.
C-8
47 A2 23UG Rev03
More About Private Timer
JOBID=C85DATE
USER=USER01
PROJECT=Y2K
BILLING=Y2K
RON=X0357
-------------------------------------------------------------------------------14:14:30
JOB EXECUTION LISTING
JUN 10, 1997
-------------------------------------------------------------------------------WARNING
JOB <C85DATE> STARTED AT SIMULATED DATE 23:59:45 DEC 31, 1999
STEP 1 CBL
LOAD MODULE = H_COBOL85 (13:58 MAR 24, 1997 )
LIBRARY = SYS.HLMLIB
WARNING
LM <H_COBOL85> STARTED AT SIMULATED DATE 23:59:55 DEC 31, 1999
14:14:41
STEP STARTED XPRTY=9 (JUN 10, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFS711 FOR IFN: H_CULIB
EFN: ;200357.TEMP.CULIB
CBL02. SUMMARY FOR C85DATE: NO ERRORS, NSTD=2 CU PRODUCED.
TASK MAIN PGID=0052 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
6
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
45
H_INFILE ON BFS711 : NB OF IO REQUESTS=
1
H_CULIB
ON BFS711 : NB OF IO REQUESTS=
36
H_PR
ON BFS711 : NB OF IO REQUESTS=
9
CPU
0.004
PROG MISSING PAGES
21
STACKOV
0
ELAPSED
0.059
SYS MISSING PAGES
0
LINES
138
LIMIT
NOLIM
BACKING STORE
0
LOCKED
135168
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
102400
CPSIZE
4096
14:14:45 STEP
COMPLETED
(JUN 10, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 2 LINKER
LOAD MODULE = H_LINKER (10:55 APR 09, 1997 )
LIBRARY = SYS.HLMLIB
WARNING
LM <H_LINKER> STARTED AT SIMULATED DATE 00:00:01 JAN 01, 2000
14:14:47
STEP STARTED XPRTY=9 (JUN 10, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME:
EFN: ;200357.TEMP.LMLIB
LK00.(120.00) SUMMARY FOR C85DATE NO ERROR
PRODUCED
TASK MAIN PGID=0052 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
F_CAT000 ON BFS711 : NB OF IO REQUESTS=
BINFILE
ON BFS711 : NB OF IO REQUESTS=
HCULIB
ON BFS711 : NB OF IO REQUESTS=
INLIB
ON BFS711 : NB OF IO REQUESTS=
OUTLIB
ON BFR0A8 : NB OF IO REQUESTS=
H_PR
ON BFS711 : NB OF IO REQUESTS=
CPU
0.005
PROG
STACKOV
0
ELAPSED
0.056
SYS
47 A2 23UG Rev03
BFR0A8 FOR IFN: OUTLIB
DETECTED. OUTPUT MODULE
0
7
0
0
3
2
5
7
65
9
MISSING PAGES
6
MISSING PAGES
0
C-9
How to Deal with the Year 2000
LOCKED
CPSIZE
14:14:50
LINES
155648
CARDS
4096
STEP
129
LIMIT
NOLIM
BACKING STORE
0
LIMIT
NOLIM
BUFFER SIZE
COMPLETED
0
122880
(JUN 10, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 3
LOAD MODULE = C85DATE (00:00 JAN 01, 2000 )
LIBRARY = TEMP.LMLIB
WARNING
LM <C85DATE> STARTED AT SIMULATED DATE 00:00:05 JAN 01, 2000
14:14:51
STEP STARTED XPRTY=9 (JUN 10, 1997)
CBL11. DISPLAY C85DATE DEBUT
CBL11. DISPLAY C85DATE DATE 000101
CBL11. DISPLAY C85DATE DAY 00001
CBL11. DISPLAY C85DATE DAY-OF-WEEK 6
CBL11. DISPLAY C85DATE TIME 00000579
CBL11. DISPLAY C85DATE FIN
TASK MAIN PGID=0052 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
3
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
CPU
0.000
PROG MISSING PAGES
STACKOV
0
ELAPSED
0.003
SYS MISSING PAGES
LINES
0
LIMIT
NOLIM
BACKING STORE
LOCKED
106496
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
CPSIZE
4096
14:14:51 STEP
COMPLETED
(JUN 10, 1997)
>>> XUFAS
14:14:52
C-10
START
STOP
CPU
ELAPSE
RESULT
0
0
0
73728
NORMAL JENDPG PROCESSING
14:14:30 (JUN 10, 1997)
14:14:52 (JUN 10, 1997)
0.010
0.362
JOB COMPLETED
LINES
CARDS
267
0
47 A2 23UG Rev03
More About Private Timer
EXAMPLE 2:
The same job as in example 1 was validated with a private time of 10 June 1997
15h00 but this time is already in the past when the job is started. To avoid
backtracking in time, the private time is ignored and the user is advised by the
following message:
WARNING
SIMULATED DATE (.............) IS EXPIRED FOR JOB <....>
Since there is no valid simulated date for the three steps of the job, they are
executed with current system time.
Note however, that if any of the LMs used by the Job had a valid private time, this
time would have beeen used and the user would have received the additional
message:
WARNING
LM <...> STARTED AT SIMULATED DATE ....
JOBID=C85DATE
USER=USER01
PROJECT=Y2K
BILLING=Y2K
RON=X0353
-------------------------------------------------------------------------------17:52:33
JOB EXECUTION LISTING
JUN 10, 1997
-------------------------------------------------------------------------------WARNING
SIMULATED DATE (15:00:00 JUN 10, 1997) IS EXPIRED FOR JOB <C85DATE>
STEP 1 CBL
LOAD MODULE = H_COBOL85 (13:58 MAR 24, 1997 )
LIBRARY = SYS.HLMLIB
17:52:43 STEP STARTED XPRTY=9 (JUN 10, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFS711 FOR IFN: H_CULIB
EFN: ;200353.TEMP.CULIB
CBL02. SUMMARY FOR C85DATE: NO ERRORS, NSTD=2 CU PRODUCED.
TASK MAIN PGID=004E PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
6
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
45
H_INFILE ON BFS711 : NB OF IO REQUESTS=
1
H_CULIB
ON BFS711 : NB OF IO REQUESTS=
36
H_PR
ON BFS711 : NB OF IO REQUESTS=
9
CPU
0.004
PROG MISSING PAGES
21
STACKOV
0
ELAPSED
0.064
SYS MISSING PAGES
0
LINES
138
LIMIT
NOLIM
BACKING STORE
0
LOCKED
135168
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
102400
CPSIZE
4096
17:52:47 STEP
COMPLETED
(JUN 10, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 2 LINKER
47 A2 23UG Rev03
C-11
How to Deal with the Year 2000
LOAD MODULE = H_LINKER (10:55 APR 09, 1997 )
LIBRARY = SYS.HLMLIB
17:52:50 STEP STARTED XPRTY=9 (JUN 10, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFR0A8 FOR IFN: OUTLIB
EFN: ;200353.TEMP.LMLIB
LK00.(120.00) SUMMARY FOR C85DATE NO ERROR DETECTED. OUTPUT MODULE PRODUCED
TASK MAIN PGID=004E PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
6
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
F_CAT000 ON BFS711 : NB OF IO REQUESTS=
3
BINFILE
ON BFS711 : NB OF IO REQUESTS=
2
HCULIB
ON BFS711 : NB OF IO REQUESTS=
5
INLIB
ON BFS711 : NB OF IO REQUESTS=
7
OUTLIB
ON BFR0A8 : NB OF IO REQUESTS=
65
H_PR
ON BFS711 : NB OF IO REQUESTS=
9
CPU
0.005
PROG MISSING PAGES
6
STACKOV
0
ELAPSED
0.055
SYS MISSING PAGES
0
LINES
129
LIMIT
NOLIM
BACKING STORE
0
LOCKED
155648
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
122880
CPSIZE
4096
17:52:53 STEP
COMPLETED
(JUN 10, 1997)
17:52:54
STACKOV
LOCKED
CPSIZE
17:52:54
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 3
LOAD MODULE = C85DATE (17:52 JUN 10, 1997 )
LIBRARY = TEMP.LMLIB
STEP STARTED XPRTY=9 (JUN 10, 1997)
CBL11. DISPLAY C85DATE DEBUT
CBL11. DISPLAY C85DATE DATE 970610
CBL11. DISPLAY C85DATE DAY 97161
CBL11. DISPLAY C85DATE DAY-OF-WEEK 2
CBL11. DISPLAY C85DATE TIME 17525454
CBL11. DISPLAY C85DATE FIN
TASK MAIN PGID=004E PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
3
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
CPU
0.000
PROG MISSING PAGES
0
ELAPSED
0.003
SYS MISSING PAGES
LINES
0
LIMIT
NOLIM
BACKING STORE
106496
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
4096
STEP
COMPLETED
(JUN 10, 1997)
>>> XUFAS
17:52:55
C-12
START
STOP
CPU
ELAPSE
RESULT
0
0
0
73728
NORMAL JENDPG PROCESSING
17:52:33 (JUN 10, 1997)
17:52:55 (JUN 10, 1997)
0.010
0.369
JOB COMPLETED
LINES
CARDS
267
0
47 A2 23UG Rev03
More About Private Timer
EXAMPLE 3:
This is a similar situation to example 1, but here it is the project which has a
validated private time..
The message is:
WARNING
PROJECT <Y2K> STARTED AT SIMULATED DATE ...
(instead of
WARNING
JOB <C85DATE> STARTED AT SIMULATED DATE ...)
JOBID=C85DATE
USER=USER01
PROJECT=Y2K
BILLING=Y2K
RON=X0362
-------------------------------------------------------------------------------14:47:34
JOB EXECUTION LISTING
JUN 10, 1997
--------------------------------------------------------------------------------
WARNING
PROJECT <Y2K> STARTED AT SIMULATED DATE 23:59:45 FEB 28, 2000
STEP 1 CBL
LOAD MODULE = H_COBOL85 (13:58 MAR 24, 1997 )
LIBRARY = SYS.HLMLIB
WARNING
LM <H_COBOL85> STARTED AT SIMULATED DATE 23:59:55 FEB 28, 2000
14:47:45
STEP STARTED XPRTY=9 (JUN 10, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFS711 FOR IFN: H_CULIB
EFN: ;200362.TEMP.CULIB
CBL02. SUMMARY FOR C85DATE: NO ERRORS, NSTD=2 CU PRODUCED.
TASK MAIN PGID=0057 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
6
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
45
H_INFILE ON BFS711 : NB OF IO REQUESTS=
1
H_CULIB
ON BFS711 : NB OF IO REQUESTS=
36
H_PR
ON BFS711 : NB OF IO REQUESTS=
8
CPU
0.004
PROG MISSING PAGES
21
STACKOV
0
ELAPSED
0.056
SYS MISSING PAGES
0
LINES
138
LIMIT
NOLIM
BACKING STORE
0
LOCKED
135168
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
102400
CPSIZE
4096
14:47:49 STEP
COMPLETED
(JUN 10, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 2 LINKER
LOAD MODULE = H_LINKER (10:55 APR 09, 1997 )
LIBRARY = SYS.HLMLIB
47 A2 23UG Rev03
C-13
How to Deal with the Year 2000
WARNING
LM <H_LINKER> STARTED AT SIMULATED DATE 00:00:01 FEB 29, 2000
14:47:51
STEP STARTED XPRTY=9 (JUN 10, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFR0A8 FOR IFN: OUTLIB
EFN: ;200362.TEMP.LMLIB
LK00.(120.00) SUMMARY FOR C85DATE NO ERROR DETECTED. OUTPUT MODULE PRODUCED
TASK MAIN PGID=0057 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
7
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
F_CAT000 ON BFS711 : NB OF IO REQUESTS=
3
BINFILE
ON BFS711 : NB OF IO REQUESTS=
2
HCULIB
ON BFS711 : NB OF IO REQUESTS=
5
INLIB
ON BFS711 : NB OF IO REQUESTS=
7
OUTLIB
ON BFR0A8 : NB OF IO REQUESTS=
65
H_PR
ON BFS711 : NB OF IO REQUESTS=
8
CPU
0.005
PROG MISSING PAGES
6
STACKOV
0
ELAPSED
0.054
SYS MISSING PAGES
0
LINES
129
LIMIT
NOLIM
BACKING STORE
0
LOCKED
155648
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
122880
CPSIZE
4096
14:47:54 STEP
COMPLETED
(JUN 10, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 3
LOAD MODULE = C85DATE (00:00 FEB 29, 2000 )
LIBRARY = TEMP.LMLIB
WARNING
LM <C85DATE> STARTED AT SIMULATED DATE 00:00:05 FEB 29, 2000
14:47:55
STEP STARTED XPRTY=9 (JUN 10, 1997)
CBL11. DISPLAY C85DATE DEBUT
CBL11. DISPLAY C85DATE DATE 000229
CBL11. DISPLAY C85DATE DAY 00060
CBL11. DISPLAY C85DATE DAY-OF-WEEK 2
CBL11. DISPLAY C85DATE TIME 00000539
CBL11. DISPLAY C85DATE FIN
TASK MAIN PGID=0057 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
3
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
CPU
0.000
PROG MISSING PAGES
0
ELAPSED
0.001
SYS MISSING PAGES
LINES
0
LIMIT
NOLIM
BACKING STORE
106496
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
4096
STEP
COMPLETED
(JUN 10, 1997)
STACKOV
LOCKED
CPSIZE
14:47:55
>>> XUFAS
14:47:55
C-14
START
STOP
CPU
ELAPSE
RESULT
0
0
0
73728
NORMAL JENDPG PROCESSING
14:47:34 (JUN 10, 1997)
14:47:55 (JUN 10, 1997)
0.010
0.355
JOB COMPLETED
LINES
CARDS
267
0
47 A2 23UG Rev03
More About Private Timer
EXAMPLE 4:
It is still the same Job as before, but this time it is the Load Module C85DATE
(created dynamically by the LINKER step) which has a validated private time.
The only message in the JOR is:
WARNING
LM <C85DATE> STARTED AT SIMULATED DATE ...
JOBID=C85DATE
USER=SYSADMIN
PROJECT=SYSADMIN
BILLING=INSTAL
RON=X0364
-------------------------------------------------------------------------------15:13:53
JOB EXECUTION LISTING
JUN 10, 1997
-------------------------------------------------------------------------------STEP 1 CBL
LOAD MODULE = H_COBOL85 (13:58 MAR 24, 1997 )
LIBRARY = SYS.HLMLIB
15:14:04 STEP STARTED XPRTY=9 (JUN 10, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFS711 FOR IFN: H_CULIB
EFN: ;200364.TEMP.CULIB
CBL02. SUMMARY FOR C85DATE: NO ERRORS, NSTD=2 CU PRODUCED.
TASK MAIN PGID=0059 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
6
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
45
H_INFILE ON BFS711 : NB OF IO REQUESTS=
1
H_CULIB
ON BFS711 : NB OF IO REQUESTS=
36
H_PR
ON BFS711 : NB OF IO REQUESTS=
9
CPU
0.004
PROG MISSING PAGES
21
STACKOV
0
ELAPSED
0.057
SYS MISSING PAGES
0
LINES
138
LIMIT
NOLIM
BACKING STORE
0
LOCKED
135168
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
102400
CPSIZE
4096
15:14:07 STEP
COMPLETED
(JUN 10, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 2 LINKER
LOAD MODULE = H_LINKER (10:55 APR 09, 1997 )
LIBRARY = SYS.HLMLIB
15:14:10 STEP STARTED XPRTY=9 (JUN 10, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFR0A8 FOR IFN: OUTLIB
EFN: ;200364.TEMP.LMLIB
LK00.(120.00) SUMMARY FOR C85DATE NO ERROR DETECTED. OUTPUT MODULE PRODUCED
TASK MAIN PGID=0059 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
6
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
F_CAT000 ON BFS711 : NB OF IO REQUESTS=
3
BINFILE
ON BFS711 : NB OF IO REQUESTS=
2
HCULIB
ON BFS711 : NB OF IO REQUESTS=
5
INLIB
ON BFS711 : NB OF IO REQUESTS=
7
OUTLIB
ON BFR0A8 : NB OF IO REQUESTS=
65
H_PR
ON BFS711 : NB OF IO REQUESTS=
9
47 A2 23UG Rev03
C-15
How to Deal with the Year 2000
CPU
STACKOV
LOCKED
CPSIZE
15:14:13
0.005
0
ELAPSED
0.053
LINES
129
155648
CARDS
0
4096
STEP
COMPLETED
PROG MISSING PAGES
6
0
0
LIMIT
NOLIM
SYS MISSING PAGES
BACKING STORE
LIMIT
NOLIM
BUFFER SIZE
122880
(JUN 10, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 3
LOAD MODULE = C85DATE (15:13 JUN 10, 1997 )
LIBRARY = TEMP.LMLIB
WARNING
LM <C85DATE> STARTED AT SIMULATED DATE 00:00:00 FEB 25, 2002
15:14:14
CPSIZE
15:14:14
STEP STARTED XPRTY=9 (JUN 10, 1997)
CBL11. DISPLAY C85DATE DEBUT
CBL11. DISPLAY C85DATE DATE 020225
CBL11. DISPLAY C85DATE DAY 02056
CBL11. DISPLAY C85DATE DAY-OF-WEEK 1
CBL11. DISPLAY C85DATE TIME 00000006
CBL11. DISPLAY C85DATE FIN
TASK MAIN PGID=0059 PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
3
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
CPU
0.000
PROG MISSING PAGES
0
ELAPSED
0.001
SYS MISSING PAGES
LINES
0
LIMIT
NOLIM
BACKING STORE
106496
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
4096
STEP
COMPLETED
(JUN 10, 1997)
15:14:15
>>> XUFAS
NORMAL JENDPG PROCESSING
START
15:13:53 (JUN 10, 1997)
LINES
STOP
15:14:15 (JUN 10, 1997)
CARDS
CPU
0.010
ELAPSE
0.359
RESULT
JOB COMPLETED
STACKOV
LOCKED
C-16
0
0
0
73728
267
0
47 A2 23UG Rev03
More About Private Timer
EXAMPLE 5:
Each of the Load Modules has a separate validated private time, and they are not
chronological.
Each of the messages of type:
WARNING
LM <XXXX> STARTED AT SIMULATED DATE ...
gives the private time used for the corresponding step
JOBID=C85DATE
USER=USER01
PROJECT=Y2K
BILLING=Y2K
RON=X0135
-------------------------------------------------------------------------------11:42:27
JOB EXECUTION LISTING
JUN 13, 1997
-------------------------------------------------------------------------------STEP 1 CBL
LOAD MODULE = H_COBOL85 (13:58 MAR 24, 1997 )
LIBRARY = SYS.HLMLIB
WARNING
LM <H_COBOL85> STARTED AT SIMULATED DATE 12:00:00 JUL 14, 1998
11:42:47
STEP STARTED XPRTY=9 (JUN 13, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFR0A8 FOR IFN: H_CULIB
EFN: ;200135.TEMP.CULIB
CBL02. SUMMARY FOR C85DATE: NO ERRORS, NSTD=2 CU PRODUCED.
TASK MAIN PGID=008A PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
6
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
45
H_INFILE ON BFS711 : NB OF IO REQUESTS=
1
H_CULIB
ON BFR0A8 : NB OF IO REQUESTS=
36
H_PR
ON BFS711 : NB OF IO REQUESTS=
9
CPU
0.004
PROG MISSING PAGES
21
STACKOV
0
ELAPSED
0.080
SYS MISSING PAGES
1
LINES
138
LIMIT
NOLIM
BACKING STORE
0
LOCKED
135168
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
102400
CPSIZE
4096
11:42:51 STEP
COMPLETED
(JUN 13, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 2 LINKER
47 A2 23UG Rev03
C-17
How to Deal with the Year 2000
LOAD MODULE = H_LINKER (10:55 APR 09, 1997 )
LIBRARY = SYS.HLMLIB
WARNING
LM <H_LINKER> STARTED AT SIMULATED DATE 18:00:00 SEP 25, 1997
11:42:58
STEP STARTED XPRTY=9 (JUN 13, 1997)
FP04.
250 BLOCKS
ALLOCATED ON VOLUME: BFS711 FOR IFN: OUTLIB
EFN: ;200135.TEMP.LMLIB
LK00.(120.00) SUMMARY FOR C85DATE NO ERROR DETECTED. OUTPUT
MODULE PRODUCED
TASK MAIN PGID=008A PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
7
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
0
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
F_CAT000 ON BFS711 : NB OF IO REQUESTS=
2
BINFILE
ON BFS711 : NB OF IO REQUESTS=
2
HCULIB
ON BFS711 : NB OF IO REQUESTS=
5
INLIB
ON BFR0A8 : NB OF IO REQUESTS=
7
OUTLIB
ON BFS711 : NB OF IO REQUESTS=
65
H_PR
ON BFS711 : NB OF IO REQUESTS=
9
CPU
0.005
PROG MISSING PAGES
6
STACKOV
0
ELAPSED
0.094
SYS MISSING PAGES
0
LINES
129
LIMIT
NOLIM
BACKING STORE
0
LOCKED
155648
CARDS
0
LIMIT
NOLIM
BUFFER SIZE
122880
CPSIZE
4096
11:43:01 STEP
COMPLETED
(JUN 13, 1997)
>>> XUFAS
NORMAL JENDPG PROCESSING
STEP 3
LOAD MODULE = C85DATE (18:00 SEP 25, 1997 )
LIBRARY = TEMP.LMLIB
WARNING
LM <C85DATE> STARTED AT SIMULATED DATE 23:59:59 DEC 24, 2001
11:43:05
STEP STARTED XPRTY=9 (JUN 13, 1997)
CBL11. DISPLAY C85DATE DEBUT
CBL11. DISPLAY C85DATE DATE 011224
CBL11. DISPLAY C85DATE DAY 01358
CBL11. DISPLAY C85DATE DAY-OF-WEEK 1
CBL11. DISPLAY C85DATE TIME 23595912
CBL11. DISPLAY C85DATE FIN
TASK MAIN PGID=008A PRID=00 COMPLETED
SYSBKST
ON BFS711 : NB OF IO REQUESTS=
0
SYSPVMF
ON BFS711 : NB OF IO REQUESTS=
3
SYSLIB
ON BFS711 : NB OF IO REQUESTS=
1
SYSBKST* ON BFS711 : NB OF IO REQUESTS=
0
CPU
0.000
PROG MISSING PAGES
C-18
0
47 A2 23UG Rev03
More About Private Timer
STACKOV
LOCKED
CPSIZE
11:43:05
0
ELAPSED
0.004
LINES
0
106496
CARDS
0
4096
STEP
COMPLETED
>>> XUFAS
11:43:06
START
STOP
CPU
ELAPSE
RESULT
LIMIT
NOLIM
SYS MISSING PAGES
BACKING STORE
LIMIT
NOLIM
BUFFER SIZE
1
0
73728
(JUN 13, 1997)
NORMAL JENDPG PROCESSING
11:42:27 (JUN 13, 1997)
11:43:06 (JUN 13, 1997)
0.010
0.639
JOB COMPLETED
LINES
CARDS
267
0
вќ‘
47 A2 23UG Rev03
C-19
How to Deal with the Year 2000
C.3
Messages under IOF
C.3.1
Console Messages
All messages sent to the console during an IOF session (except the message
returned by the DISPLAY_TIME (DTM) command) where a private time is used
display the system time.
C.3.2
IOF Connection
When you start an IOF session from a project with a validated private time, the
following message is displayed:
--> PROJECT <name> STARTED AT SIMULATED DATE ...
and each Load Module executed during the session displays the message:
--> LM <name> STARTED AT SIMULATED DATE ...
Since the private time for the project is incremented normally, if you disconnect
from IOF then reconnect, the date and time displayed will have advanced normally:
>>>12:03 IOF-BY11 V750
SYS: W749 SM: W749 LM: W749 FW: Pl-70A
-->11.19 X446.1 COMPLETED IOF
Y2K Q
-->11.19 X446
OUTPUT COMPLETED IOF Y2K
-->11.19 X447
STARTED IOF
Y2K Q
-->PROJECT <Y2K> STARTED AT SIMULATED DATE 12:03:29 DEC 25, 1998
**********site_i****************
* SYSTEME BY11 BFS711:MS/B10 *
*
V750
W749
*
**********site_i****************
BYII:
>>>12:03 SCN 70.01
-->LM <H SCANNER> STARTED AT SIMULATED DATE 12:03:39 DEC 25, 1998
C:
<<<12:03
BY11: dtm
12.03
DATE = FRI DEC 25,1998
BY11: bye
C-20
47 A2 23UG Rev03
More About Private Timer
C.3.3
End of IOF Session
The ELAPSED time shown in the screen display at the end of an IOF session
represents the difference between the private time at disconnection and the system
time at the moment of connection.
>>>12:00 IOF-BY11 V750
SYS: W715 SM: W715 LM: W715 FW: P1-066
-->ISSUED ON JUN 13, 1997
-->17.46 X160.1
COMPLETED IOF
USER01 Q
-->17.46 X160
OUTPUT COMPLETED IOF
USER01
-->ISSUED ON JUN 16, 1997
-->09.38 X177
STARTED
IOF
USER01 Q
**********site_i******************
*
SYSTEM BY11 BFS711:MS/B10
*
*
V750
W715
*
**********site_i******************
Y 2 K
S: dtm
12.01
DATE = FRI DEC 25,1998
S: bye
<<<12:01:37 USER01
LOGGED OFF
<<<
CPU
0.005
<<<
ELAPSED 802222.
<<<
47 A2 23UG Rev03
C-21
How to Deal with the Year 2000
вќ‘
C-22
47 A2 23UG Rev03
Index
#
B
#DATE
GPL 3-18
#DATE builtin
COBOL 3-3
FORTRAN 3-6
#EXTDATE
GPL 3-18
#EXTDATE builtin
COBOL 3-3
FORTRAN 3-6
BEGDATE 3-11
GCL parameter 3-15
JCL parameter 3-13
/
/HOST 3-10
1
1900 rule 2-3
6
61 rule
2-2
A
application conversion
methodology 4-1
application testing 3-22
applications, user
solutions 3-1
47 A2 23UG Rev03
C
C language 3-7
C system primitives 3-18
cartridge and tape drives supported
cartridge drives supported 2-7
catalogs 3-12
communication products 2-8
compile units 3-12
conversion tools 3-1, 5-1
converting dates
DSL 4-2
2-7
D
DATE function 3-1
date processing
COBOL 3-2
DDL Record Entry 3-9
DDLREFDATE
GCL parameter 3-16
disk files 3-12
diskette drives supported 2-7
disks supported 2-6
DISPLAY_PRIVATE_TIMER command C-5
DMCLREFDATE
GCL parameter 3-16
i-1
How to Deal with the Year 2000
DPS 7000
year 2000 readiness 2-4
DSL
converting dates 4-2
DUMPJRNL GCL command 3-11
E
EDATE
GCL parameter 3-16
ENDDATE 3-11
GCL parameter 3-15
JCL parameter 3-13
exception processing 3-3
EXPDATE
GCL parameter 3-15, 3-16
JCL parameter 3-13
F
file transfers 3-21
FORCED DATE IS
IDS/II statement 3-14
FORMS 3-11
FORTRAN 3-6
FROM
GCL parameter 3-16
Full IDS/II 3-9
G
GCL 3-15
GCL builtins 3-16
GCOS 7
year 2000 readiness 2-1
GCOS 7 software applications 2-8
GCOS 7, solutions for 2-2
GCOS Service Facilities (GSF) 2-8
GPL primitives 3-18
H
H_IQS_Y2000 query B-6
H_IQS_YEAR2 Load Module B-7
i-2
I
IDS/II 3-9
IDS/II sets
sorting 3-9
INVALIDATE_PRIVATE_TIMER command
C-6
IQS 3-8
year date ordering formula B-3
IQS elements
rules for comparison B-11
IQS Year 2000 support B-6
implementation B-9
IQS year dates B-1
J
JCL 3-13
Job Output Report
JOR 3-21
journals 3-11
3-21
L
LASTDATE
GCL parameter 3-15
LASTREF
GCL parameter 3-15
libraries supported 2-7
load modules 3-12
LOWYEAR B-2
M
magnetic tape files 3-13
MAINTAIN_SYSTEM processor 3-16
memory requirement 2-5
millennium applications test facility 3-26
millennium bi-system
factory-fitted 3-24
GCOS 7 restraints 3-23
IL01 options 3-22
standard 3-24
millennium bi-system test facility 3-22
47 A2 23UG Rev03
Index
N
network generation
new software 3-1
3-21
O
operating system, solution for 2-2
OPTION
GCL parameter 3-16
ORACLE 3-19
P
post 1999 date simulation 3-22
printers supported 2-6
Private Timer 3-26, C-1
console messages C-20
display objects C-5
end of IOF session C-21
Jobs 3-27
JOR messages C-8
Load Modules 3-27
objects 3-28
Projects 3-28
start C-2
stop C-6
R
RECYCLE_JOURNAL_FILE
command 3-11
RIDE and DYNDUMP Tools 2-8
ROLLFWD GCL command 3-11
S
SDATE
GCL parameter 3-16
SDDLREFDATE
GCL parameter 3-16
SELECT
GCL parameter 3-16
SORT/MERGE utilities A-1
47 A2 23UG Rev03
sorting
COBOL A-1
DSL A-4
IDS/II sets 3-9
UFAS files 3-9
sorting problems A-1
source members 3-12
SQL 7 3-19
SYSMAINT processor commands
3-14
T
tape drives supported 2-7
TDS 3-10
Telecontrol 2-8
two digit year dates 2-3
conversion 4-2
modification 4-2
retention 4-3
U
UFAS files
sorting 3-9
UFT 3-21
UPDATEGE
GCL parameter
JCL parameter
UPDATELE
GCL parameter
JCL parameter
3-15
3-13
3-15
3-13
V
VALIDATE_PRIVATE_TIMER
command C-2
W
WHEN
GCL parameter 3-15
windowing technique 1-2
i-3
How to Deal with the Year 2000
Y
Year 2000
impact 1-2
year 2000 readiness
communication products
DPS 7000 2-4
Year 2000 readiness
GCOS 7 2-1
user applications 3-1
year dates
ambiguity 1-1
interpretation 1-2
IQS B-1
i-4
2-8
47 A2 23UG Rev03
Technical publication remarks form
Title :
DPS7000/XTA NOVASCALE 7000 How to Deal with the Year2000 Operating
System: General
Reference NВє :
47 A2 23UG 03
Date:
April 1999
ERRORS IN PUBLICATION
SUGGESTIONS FOR IMPROVEMENT TO PUBLICATION
Your comments will be promptly investigated by qualified technical personnel and action will be taken as required.
If you require a written reply, please include your complete mailing address below.
NAME :
COMPANY :
ADDRESS :
Please give this technical publication remarks form to your BULL representative or mail to:
Bull - Documentation Dept.
1 Rue de Provence
BP 208
38432 ECHIROLLES CEDEX
FRANCE
info@frec.bull.fr
Date :
Technical publications ordering form
To order additional publications, please fill in a copy of this form and send it via mail to:
BULL CEDOC
357 AVENUE PATTON
B.P.20845
49008 ANGERS CEDEX 01
FRANCE
CEDOC Reference #
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
_ _
_ _
_ _ _ _
_
[ _ _ ]
[ _ _ ]
Phone:
FAX:
E-Mail:
+33 (0) 2 41 73 72 66
+33 (0) 2 41 73 70 66
srv.Duplicopy@bull.net
Designation
Qty
: The latest revision will be provided if no revision number is given.
NAME:
Date:
COMPANY:
ADDRESS:
PHONE:
E-MAIL:
For Bull Subsidiaries:
Identification:
For Bull Affiliated Customers:
Customer Code:
For Bull Internal Customers:
Budgetary Section:
For Others: Please ask your Bull representative.
FAX:
BULL CEDOC
357 AVENUE PATTON
B.P.20845
49008 ANGERS CEDEX 01
FRANCE
REFERENCE
47 A2 23UG 03
Документ
Категория
Без категории
Просмотров
16
Размер файла
565 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа