The Vancouver Utilities for UNIX

from UV Software Inc.


You can find Year 2000 solutions from many vendors. Would't it be nice if you could find a product that can solve your Year 2000 problems - and still have value beyond January 1, 2000? If that's the solution you're looking for, then UV Software has it!

UV Software was formed in 1992 to develop and market a package of general purpose utilities for UNIX systems. The programs are written in ANSI C, and some of the more prominent utilities are: uvcopy, uvsort, uvlist,and uvhd. There are over 300 pre-programmed jobs (for the uvcopy interpreter), to perform many useful tasks such as: cross- references, table analysis, scan/replace, creating COBOL copy-book layouts, and processing standard labelled tapes (not handled by UNIX system software).

The Vancouver Utilities have been extensively used to convert mainframe systems to UNIX, but they were primarily intended for ongoing, everyday use. These utilities were designed to fill the gaps in UNIX system software that were formerly supplied with mainframe operating systems.

For example, 'uvsort' replaces the UNIX system sort, which cannot be used for mainframe type files, because these files do not have line-feeds, may be indexed, and may contain packed sort fields. Uvsort also has a Year 2000 sort field type. The 'uvcopy' utility replaces the mainframe 'DATA' utility and can be used to copy files while selecting or deleting records, or reformatting the output records.

Please note that these utilities are compatible with Micro Focus indexed files and without these, you would otherwise have to write COBOL programs to perform even the simplest file maintenance on indexed files. The UNIX system has hundreds of utilities, but most of them require linefeeds and none of them can process indexed files.

The Vancouver Utilities are much more than just Year 2000 tools. You will continue to use them long after the year 2000. They can perform file maintenance functions necessary and complementary to any other Year 2000 tools that you may already have.

The Vancouver Utilities provide solutions to the two main aspects of the Year 2000 problem - program problem detection (impact analysis) and data file conversion (bridge programming). The 'y2scan' job will scan your directory of COBOL source programs and create a problem report showing:

These reports are table driven and you would first update the supplied table of common date field names with any names unique to your site. Y2scan does not operate directly on your COBOL source directory. The directory is pre-processed to an alternate directory, expanding copy-books and encoding group name fields (to show length and date components). This alternate directory is a valuable asset when you are correcting your original source. You can use vi and grep on the expanded/encoded directory to further investigate the problem areas indicated by the y2scan report.

There are 2 main solutions to the Year 2000 problem - windowing or date field expansion. Expansion is preferred, especially where date fields are used as indexed file keys and sort keys. However, expansion may take longer. Many sites will use a combination of expansion and windowing. Date field expansion can be quite manageable if your site has made extensive use of copy-books.

Turning from COBOL program correction to data file conversion, uvcopy is ideal for the 'bridge' programs required to expand date fields and insert '19' or '20' depending on the existing 2 digit year. You can generate these bridge programs automatically from the old and new versions of the copybook. In case you are interested, the same technique is used to generate SQL*LOADER control files for loading Oracle data-bases.

So if you have a UNIX system, consider the Vancouver Utilities to address your Year 2000 needs or to complement your existing Year 2000 tools. This is one tool you'll keep using well into the 21st century.

For more information and prices, please Email your mailing address.

Owen Townsend
Email: [email protected]
UV Software Inc.
5436 Victoria Dr.
Vancouver BC
Canada V5P 3V8
Phone: 604-321-1024
Fax: 604-324-6333


Y2scan Sample Report

JOB: y2scan2d   Directory: cobs1b   DATE: 1997/04/10_11:05:37
Table of Keywords and Qualifiers, loaded from file: tf/y2tbl1
======================================================================
 if ~~~~~~~~ greater ~~~ less ~~~~~~ > ~~~~~~~~~ < ~~~~~~~~~
 add ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 subtract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 start ~~~~~ greater ~~~ less ~~~~~~ > ~~~~~~~~~ < ~~~~~~~~~
 select ~~~~ indexed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 sort ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
======================================================================
Table of Date-Field-Names, loaded from file: tf/y2tbl2
======================================================================
year~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
date~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yy~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yr~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
age-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-age~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
======================================================================
 
000040     if exp-test-date@6 < "750101"
              display "EXPIRY TEST DATE INVALID" upon con74 stop run .
000047     if wm-expiry@6@year < exp-test-date@6
              move warmas-rec@64@year to expire-rec

000050**        0002 matches @EOF in file: cobs1b/cobolw.bat
 
000013     select war-purged assign to disc-warpurg-f
                  organization indexed access sequential
                  record key is wp-expiry@6@year with duplicates .
000069     sort sort-file ascending key ws-expiry@6@year
                input procedure is sortin
                output procedure is sortout .
000076     if wm-expiry@6@year less than expiry-test@6@yy
              move warmas-rec@64@year to sort-rec@64@year

000087**        0003 matches @EOF in file: cobs1b/cobolx.bat
 
======================================================================
0005 TOTAL HITS found in 0008 files in directory: cobs1b

The y2scan report first lists the 2 tables that control the selection of COBOL statements in the body of the report. For example line 40 is listed because it contains the keyword ' if ' and the qualifier ' < ' from table #1, and also contains 'date' from table #2.


Bridge Program Sample #1 - Expanding Date Fields

Given    - an indexed file of 40 byte records with a 6 digit date
           in columns 21-26 (yymmdd).

Required - copy the file inserting the century and shifting the remainder
           of the record as required. Set the century to '19' or '20'
           depending on the year greater or less than '50'.

   input:  x-------------------991231-------------x
           x-------------------000101-------------x

  output:  x-------------------19991231-------------x
           x-------------------20000101-------------x

# datefix1 - copy a file inserting the century for 6 digit dates
fili1=?input,rcs=40,typ=ISF
filo1=?output,rcs=42,typ=ISFi1
@run
       opn    all
loop   get    fili1,a0             get record into area 'a'
       skp>   eof
#----------------------------------------------------------------------
       mvc    b0(20),a0            move 1st 20 bytes from 'a' to 'b'
       mvn    b20(8),a20(6)        move numeric expand date to 8 bytes
       skp=   tag1                 bypass century if zeros/blanks
       mvc    b20(2),'19'          presume century '19'
       cmc    a20(2),'50'          input year => 50 ?
       skp=>  tag1                 yes - leave as is
       mvc    b20(2),'20'          no  - change to '20'
tag1   mvc    b28(14),a26          shift cols 27-40 over to 29-42
#----------------------------------------------------------------------
       put    filo1,b0             write area 'b' to the output file
       skp    loop                 repeat loop until EOF
# EOF - close files and end job
eof    cls    all
       eoj

The bridge programs can be generated automatically from the old and new versions of the copybook. Before execution you can modify them if required. The uvcopy interpretive instruction set has the power to do whatever special processing you desire. This is much more flexible than a black-box utility that is designed to perform the task internally.

You might think that you will not need bridge programs if you have adopted the 'windows' solution. However you will probably need some bridge programs to interface with outside agencies who are using expanded dates.


Example #2 - Creating Test data by Aging Current Data

Assume you are ready to test in January 1998. You can reboot your machine with a date in January 2000, but you will also need to advance the dates in your test files by a corresponding amount. The following illustrates an advance of 2 years (730 days), and assumes 'windows'.

   input:  x-------------------971231-------------x
           x-------------------980101-------------x

  output:  x-------------------991231-------------x
           x-------------------000101-------------x

The uvcopy instructions to advance the dates are shown below. This code would be inserted in a job similar to the one shown in example #1.

#------------------------------------------------------------------------
      dati1o4 $ca1,a20(6)       convert yymmdd to days-since-1900
      add     $ca1,730          add 730 days (2 years)
      dati4o1 b20(6),$ca1       convert days-since-1900 back to calendar
#------------------------------------------------------------------------

www.year2000.com To the Year 2000 Information Centerâ„¢