This section describes the significant changes to each new release. The update descriptions will appear in reverse order - most recent at the front and oldest at the back (old entries dropped after 3 years).
COPYRIGHT 1993-2009 UV Software Inc. All rights reserved - Worldwide. Please see license agreements in the price list section uvprices.htm. Please see installation instructions in section install.htm.
Note that references to documentation sections with suffix ".doc" are text files. These are automatically converted to HTML for the website. Any UPPER case names are converted to lower case & the extension ".doc" is converted to ".htm". For example versions.doc is converted to versions.htm and MVSJCL.doc is converted to mvsjcl.htm.
Owen Townsend Tel: 604-980-5434
UV Software Inc. Fax: 604-980-5404
4667 Hoskins Rd. Eml: owen@uvsoftware.ca
North Vancouver, Web: http://www.uvsoftware.ca
BC, Canada, V7K2R3
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Unix/Linux sites commonly use 'cron' to schedule unattended batch processing jobs at night. But if critical errors occur, you might want to email an error indication to application managers at home.
We now provide a script 'ssmtp1' based on the open source 'ssmtp' package. You can call this script at critical points in your JCL/scripts. Note that all scripts converted from the original mainframe JCL have a common 'Terminated Abnormally' point at the end of each JCL/script as follows:
S9900=A
logmsg2 "ERR: Terminated Abnormally,JCC=$JCC,Step=$JSTEP" RV ACK
--> ssmtp1 "$JOBID Terminated Abnormally, step=$JSTEP, ERRcode=$JCC"
==================================================================
jobabend51
exit $JCC
You can use http://www.rpmfind.net to find the appropriate ssmtp package for your Operating System. I downloaded & installed the version for my Red Hat Enterprise as follows:
rpm -ivh ssmtp-2.61.11.9.fc11.x86_64.rpm ======================================== - stores 'ssmtp' executable in /usr/sbin/ssmtp - stores config file in /etc/ssmtp/ssmtp.conf
The config file for ssmtp is much simpler than for the full featured mail & sendmail system. Here is the config file I used for my testing. Note that I setup a 'gmail' account as a gateway to any email address on the internet.
# /etc/ssmtp.conf - config file for 'sSMTP' (alternative to mail/sendmail) root=postmaster mailhub=smtp.gmail.com:587 UseSTARTTLS=YES AuthUser=owen.townsend88@gmail.com AuthPass=owen1234 # password changed
See ssmtp/ssmtp1 setup begining at: http://www.uvsoftware.ca/admjobs.htm#8Q1.
We do not want our implementation of 'ssmtp' to interfere with mail & sendmail. 'mail' (user interface) passes the mail to 'sendmail' (transport agent), which (without special configuration), delivers the mail ONLY to other login user accounts on the local unix/linux system, and NOT to the internet.
Some ssmtp setups show you how to disable 'sendmail' & have 'mail' call 'ssmtp'. But we need the standard mail/sendmail to deliver console logs from cron jobs to appsadm, as described at: http://www.uvsoftware.ca/admjobs.htm#5I1. Or, see August 2009 below (in these version enhancement descriptions).
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Job scheduling is documented at: http://www.uvsoftware.ca/admjobs.htm#Part_5. We have now extended the documentation to illustrate how you can capture the console messages from cron jobs into date/time stamped files.
When jobs (JCL/scripts) are scheduled by 'cron', the console messages are 'mailed' to the owner of the 'crontab' file used to schedule the cron jobs (since there is no login screen to display the messages).
We recommend setting up an applications administrator account 'appsadm', who will own the crontab files stored in /home/appsadm/sf/... This will avoid any confusion with the several other cron jobs owned by 'root'.
If you have scheduled cron jobs to run overnight, you can login as 'appsadm' and read your 'mail' to see if any errors occurred in the nightly processing.
But, it would be nice if we could capture the 'mailed' console messages into date/time stamped files, in case we forget to read & save the mail each morning. We do this by scheduling another script to run after the nightly processing jobs. This script 'read's the 'mail' & 'save's it into date/time stamped files stored in /home/appsadm/cronlog2/...
These procedures are illustrated at: http://www.uvsoftware.ca/admjobs.htm#5I1.
Note that we already had a system for capturing 'console logs' from logged in operators who are running JCL/scripts interactively. This system provides mainframe applications converted to Unix/linux with functionality similar to the builtin console logging system provided by mainframes. See documentation at: http://www.uvsoftware.ca/admjobs.htm#Part_6.
The logged in user message collection is started by inserting the unix/linux 'script' command at the end of the user profile & specifying a date/time stamped file to collect the messages in /home/appsadm/log1/userxx/yymmdd_HHMMSS. See suggested profile at: http://www.uvsoftware.ca/admjobs.htm#1C2.
Note that the raw script files contain a lot of screen control characters that make them difficult to view or print. The profiles provided run a 'logfix' script to scrub the console logs.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'nameadrs1.cbl' is a Name & Address Data Entry program that illustrates the powerful screen display/accept capabilities provided with Micro Focus COBOL. If you have installed the Vancouver Utilities, you will find 'nameadrs1.cbl' at /home/uvadm/cobol/cbls/nameadrs1.cbl. If you do not have Vancouver Utilities, you may download the demo program from http://www.uvsoftware.ca/nameadrs1.cbl.
This is significant news for mainframe sites migrating to Unix/Linux. If the mainframe applications are mostly 'batch' with just a few online CICS programs, you can use Micro Focus screen programs to replace the few CICS programs.
Of course if you have a lot of online/CICS programs, you would use the Micro Focus 'MTO' option (Mainframe Terminal Option) to emulate CICS on Unix/Linux.
Micro Focus also provide 'JES' (JCL Emulation), but most migrations will be better served by converting the JCL to Korn shell or Perl scripts, because it is difficult to insert Unix/Linux commands/scripts into JCL. The JCL emulator only runs COBOL and the expected mainframe utilities, which means you have to write a COBOL program to call any desired Unix/Linux command/script.
When you convert the JCL to Korn shell or Perl scripts, you can easily integrate any Unix/Linux commands, scripts, & the vast array of open systems software available.
Please see 'Character User Interfaces' at:
http://supportline.microfocus.com/Documentation/books/sx51/sx51indx. =========================================================================
There are a few demo programs provided in $COBDIR/demo/..., but none as realistic as the 'nameadrs1.cbl' demonstrated and listed on the website at http://www.uvsoftware.ca/mvcobol.htm#Part_7
********************************************************************
* *
* ** Name & Address Entry Screen ** *
* *
* Telephone: [ 6049805434 ] *
* Name: [ TOWNSEND, OWEN ] (Last, First) *
* Address1: [ 4667 HOSKINS RD. ] *
* Address2: [ ] *
* City: [ NORTH VANCOUVER ] *
* State: [ BC ] *
* Zip: [ V7K2R3 *
* *
* Message: *
* *
* Command---> ______________________________ <--- *
* a=add,c=change,d=delete,n=next,p=prior,b=Blankscreen,q=quit *
* *
********************************************************************
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
This is something that several customers and prospects have been asking for. Now we can convert mainframe COBOL applications with Embedded SQL statements to unix/linux using MySQL databases.
You do not need the Vancouver Utilities package to perform the test/demos described at http://www.uvsoftware.ca/sqldemo.htm#Part_6.
You can download the demo files & programs to test COBOL/ODBC/MySQL at your site. All components can be free downloads from uvsoftware.ca, opencobol.org, unixODBC.org, and MySQL.com. I have not yet tested with OpenCOBOL. I use and recommend Micro Focus COBOL for mainframe conversions.
The UV Software site gives you the step by step procedures to download and install all components required. I suggest you start with MySQL.
http://www.uvsoftware.ca/sqldemo.htm#Part_1 gives you instructions to download, install, and test MySQL. UV software provides a delimited file 'cust1.txt' that you can load into a table for interactive SQL Query testing in Part_1. In Part_6 we will use the cust1 table to test COBOL access via ODBC.
Getting Open Source software components to work together is often difficult and I think you will benefit from my experiences. See the problems & solutions at http://www.uvsoftware.ca/sqldemo.htm#6G2.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'genacum2' is a Vancouver Utility to generate uvcopy jobs to accumulate all numeric fields (packed/zoned/binary) in any data file. The jobs are generated automatically from the 'cobmap' record layout (which is generated from the COBOL copybook).
cobmap1 start-end bytes for cobol record fields 200902200736 pg# 0001
cpys/custmas1.cpy RCSZ=00256 bgn end lth typ
* custmas1 - cobol copy book for custmas1 file (see uvtrain.
10 cm-num pic 9(6). 0000 0005 006 n 6
10 cm-delete pic x(4). 0006 0009 004
10 cm-name pic x(25). 0010 0034 025
10 cm-adrs pic x(25). 0035 0059 025
10 cm-city pic x(16). 0060 0075 016
10 filler001 pic x(44). 0076 0119 001
10 cm-thisyr-sales pic s9(7)v99 comp-3 occurs 12. 0120 0124 005pns 9
10 cm-lastyr-sales pic s9(7)v99 comp-3 occurs 12. 0180 0184 005pns 9
10 filler003 pic x(16). 0240 0255 016
*RCSZ=00256
#1. uvcopy genacum2,fili1=maps/custmas1,filo1=pfa1/custmas1,uop=f0
==============================================================
- convert cobmap to uvcopy job to accumulate All numeric fields
#2. uvcopy pfa1/custmas1 <-- execute job to add all numeric fields custmas1
====================
genacum2 RCSZ=00256 DataFile=d2asc/custmas1
2009/02/26_09:22:03 copybook=cpys/custmas1.cpy
line# Field-Name occurs start lth type field-total
1 cm-num 0005 006 n 7,259,353
2 cm-thisyr-sales 12 0124 005 pns 99,697.93
3 cm-lastyr-sales 12 0184 005 pns 45,440.85
Record count 32 ** Hash-Total 21,773,231 **
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
uvhdcob displays data file field contents beside the copybook fieldnames. See complete documentation at uvhdcob.htm.
In Jan 2009, we added the 'v' command to verify character, numeric,& packed data fields. Verify searches the file for unprintable characters in pic x fields, and invalid digits or signs in unpacked or packed numeric fields.
#1. cd /home/uvadm <-- change to uvadm for test files
==============
#2. uvhdcob dat1/cm1_testuvhdcob cobol/maps/custmas1 <-- uvhdcob on demo file
================================================ (intentional BAD data)
- uvhdcob displays 1st record (not shown here) & prompts for command
#2a. --> v <-- search & Verify character,numeric,& packed fields
============================================================
rec# 10 fieldname occurs bgn end typ<------ data (hex if typ=p/b) -----> 001 cm-num 0 5 n 15468X 313534363858 <-BadN 002 cm-delete 6 9 003 cm-name 10 34 TAURUS RESOURCES 004 cm-adrs 35 59 1110 - 625 HOWE STREET 005 cm-city 60 75 VANCOUVER 006 filler001 76 76 007 cm-prov 77 78 B. 42EE <-BadC 008 filler002 79 79 009 cm-postal 80 89 V6C2T6 010 cm-phone 90 101 604 685 8565 011 cm-contact 102 119 MEL RAHAL 012 cm-thisyr-sales 012 120 124pns EE0123456C <-- Bad Packed 013 cm-lastyr-sales 012 180 184pns 000000000C 014 filler003 240 255 C 19980331
v --> 10 recs verified, 4 ERRs found in rec# 10, 1st at byte# 0
2 packed & 1 numeric bad signs/digits, 1 unprintables in char fields
--> vv <-- continue Verify
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Verifying Numeric & Packed fields is the best way to detect any discrepancy between the copybook layouts & the actual data - especially effective for files with packed fields, where the unique sign codes must be in the last byte of each packed field.
Why do we need 'genverify1' if we can use uvhdcob ? - because uvhdcob displays & verifies ONLY the 1st field of any OCCURS. uvhdcob would not be conclusive for files such as custmas1 which has occurs 12 for this year & last year sales.
See complete doc for 'genverify1' at DATAcnv1.htm#8D1 thru 8E3. Here is the genverify report for the dat1/cm_testuvhdcob file used for the uvhdcob test/demo on the previous page.
lth(p=packed) hex-representation numeric-data rec# occurs# field-name =================================================================
06 313534363858 15468X 010 cm-num 05p EE0123456C 010 01 cm-thisyr-sales 05p- E01234567D 010 12 cm-lastyr-sales
06 323334335858 2343XX 020 cm-num 05p EE0012345C 020 03 cm-thisyr-sales 05p 1E2E3E4E5E 020 01 cm-lastyr-sales 05p 00000000EE 020 12 cm-lastyr-sales
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The Vancouver Utility comparison jobs CMPjobs.htm have had major enhancements. Comparisons for Variable length files (RDW & IDXFORMAT) are now faster & easier.
In the past we used scripts to first convert the variable length to fixed length for the 'uvcmp1' comparison job. We have developed 2 new jobs (uvcmp2 & uvcmp3), that compare the variable length files directly.
| uvcmp2 |
|
| uvcmp3 |
|
Note that we have changed the name of (& combined) the RDW variable length compare scripts from uvcmpVA1 (ASCII) & uvcmpVE1 (EBCDIC) to 'uvcmpRDW1'. The combined script uses optin 'y0' for ASCII & 'y1' for EBCDIC.
We have added a new option 'u2' to minimize the reports to displaying/printing only the 64 byte segments that mismatch. This is a huge space saver for sites that have large records.
Here are all options from CMPjobs.htm#2D2 (see sample report on 2D3).
uop=q1a0b0c0d0e0f0g0h0p30r8192s8t500000u3x2y0 - option defaults
a# - dsplcmnt to exclude field #1
b# - length to exclude field #1
c# - dsplcmnt to exclude field #2
d# - length to exclude field #2
e# - dsplcmnt to exclude field #3
f# - length to exclude field #3
g# - dsplcmnt to exclude field #4
h# - length to exclude field #4
n0 - print column scale only at begin report
n1 - print column scale for each record mismatch pair
p30 - line# to test overflow at begin record only
r8192- record size (largest RDW recsize, default 8192)
s8 - StopPrint count, after s# mismatched records
t500000 - StopRead count, after s# mismats, else read to EOF
u1 - stop print at last segment with mismatch
u2 - inhibit printing all matching segments after 1st
x# - hex or char print (x1 char, x2 hex, x0 auto)
y0 - do NOT translate, file already ASCII, default(y0)
y1 - translate char lines to ASCII (for EBCDIC files)
z2 - RDWz2 2 byte RDW recsize prefixes (vs RDWz4 dflt)
User OPtion (uop) defaults = q1p30r8192s8t500000u3x2y0
-->null to accept or enter/override -->
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'acum1' is a pre-programmed 'uvcopy job' to accumulate any 1 field in any 1 file for any use desired (might be for a hash total to prove file validity after conversions, or to get a 2nd opinion when COBOL reports look suspicious).
'acum1' will prompt for file-name, file-type, field dsplcmnt, length,& type, with an option to crossfoot a specified number of consecutive same-size fields.
Here is a sample command for the customer master file used for the uvhdcob demo in January 2009 (2 pages ahead).
uvcopy acum1,fili1=dat1/custmas1,uop=a120b5c12d2e2f0r256 ======================================================== - see options described below
acum1 - acum any field for hash total, etc
file type options: LST(text), RSF(fixed,default), RDWz4, RDWz2, ISF, IDXf8
uop=a0b0c1d0e0f0r0 - default options
a0 - field dsplcmnt (zero relative)
b0 - field length (must specify)
c1 - cross-foot number of fields
c12 - example for 12 months sales
d0 - field type numeric unpacked
d1 - field type binary
d2 - field type packed
e0 - edit 0 decimals
e2 - edit 2 decimals
f0 - ASCII file
f1 - EBCDIC file
r0 - recsize if typ=RSF
User OPtion (uop) defaults = q1a0b0c1d0e0f0r0
-->null to accept or enter/override -->
====================================================================
acum1: dsplcmnt 120, length 5, occurs 12, recsize 256: dat1/custmas1
field total--> 99,697.93 records= 32
====================================================================
See the full documentation for 'acum1' at UVjobs.htm#T1 thru T4.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'selectf1' is a uvcopy pre-programmed job to select records from any file depending on the value in any specified field <=> 2 specified values. Two specified values allows you to select a range of values in any 1 field. There is an option to crossfoot contiguous same size fields for the test value.
Here is a sample command to select sales records with this-year sales over $50.00 OR less than -50.00. See the customer master file used for the uvhdcob demo in January 2009 (on the next page).
uvcopy selectf1,fili1=dat1/custmas1,uop=a120b5c12f0,arg1='>5000',arg2='|<-5000' ===============================================================================
uop=a0b0c1d0e0f0r0 - default options
a0 - field dsplcmnt (zero relative)
b0 - field length (must specify)
c1 - cross-foot number of fields
c12 - example for 12 months sales
d0 - field type numeric unpacked
d1 - field type binary
d2 - field type packed
f0 - ASCII file
f1 - EBCDIC file
r0 - recsize if typ=RSF
uop=a120b5c12d2f0 - EX: field dsp 120, lth 5, packed(c2), ASCII(f0)
arg1='>500',arg2='|<-500' <-- select recs > 5.00 OR <-5.00 in 120(5p)
arg1='=0',arg2='_' <-- select records with thisyr sales zero
arg2='&/|' - else 1st byte must be &/| AND/OR
arg2='&/|</=/>' 2nd byte must be <=>
15 records selected via >50000 & |<-50000 090221:153134:selectf1: EOF fili01 rds=32 size=8192: dat1/custmas1 090221:153134:selectf1: EOF filo01 wrts=15 size=3840: tmp/dat1_custmas1_sel
See the full documentation for 'selectf1' at UVjobs.htm#V1 thru V4.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
We have added Part 5 to http://www.uvsoftware.ca/sqldemo.htm#Part_5 to illustrate Pro*COBOL 'EXEC SQL' interface to Oracle database.
We document the procedures to download Oracle & install server & client. We list 2 sample COBOL programs to load/unload a database table. We also show the script to run procob32 & compile with Micro Focus COBOL server express.
If desired, you can download the demo programs & compile scripts as documented at sqldemo.htm#5A1.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
SQLdemo.htm or http://www.uvsoftware.ca/sqldemo.htm gives you the step by step procedures to download the MySQL software from www.mysql.com, and setup a testing directory with demo files that you can download from www.uvsoftware.ca.
The test files from UV Software are much more realistic than the 'pet' table used in the MySQL reference manual tutorial. 'customer1.txt' & 'sales1.txt' are "delimited","text","files" for loading database tables 'ar.customer1' & 'ar.sales1'.
The UV Software tutorial then guides you thru the various SQL commands (CREATE tables, LOAD tables, SELECT from, etc). Since our demo tables have a common customer number field, you can perform a 'JOIN' to select sales1 items matching the customers in the customer1 table.
You do NOT need the Vancouver Utilities software package to perform the tutorials in Part 1. But in Part_2, I will demonstrate how the 'uvcopy' utility can help any SQL site to create the "delimited","files" required to load SQL database tables.
SQLdemo.htm#Part_3 lists 2 sample C-API to SQL programs & documents the procedures to download, compile, & execute them using the demo files/tables described above. If you are a C programmer, I think you will appreciate these samples.
A new version of uvcopy, 'uycopy' was created to provide access to SQL DataBase tables. It had to be a separate version (from uvcopy) because it requires the SQL C-API libraries for compilation at sites with an SQL DataBase installed.
'uycopy' adds file 'typ=DBT' to define a DataBase Table & environmental variables (DBhost1, DBuser1, DBpass1) for connection to the DataBase. Please see the loadsales1/unloadsales1 sample jobs listed in SQLdemo.htm#Part_2.
| 3. | 'http://downloads.mysql.com/docs/refman-5.1-en.pdf' |
| - complete documentation for MySQL (2200 pages) | |
| - our guide to download .rpm files, install,& perform the 'pet' tutorials |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The 'On-site Conversion Training Plan' has been enhanced. Here is the mainframe conversion training plan, but also see the general purpose Vancouver Utilities training plans at http://www.uvsoftware.ca/uvprices.htm#I1 - I10.
UV Software recommends a 4 or 5 week on-site visit to train the conversion team in using the Vancouver Utilities to convert mainframe JCL, COBOL,& DATA to Korn shell scripts, Micro Focus COBOL,& ASCII data files for Unix/Linux systems.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The profiles supplied with the Vancouver Utilities have been further enhanced and are now better explained at ADMjobs.htm#1B2. You can see them listed on pages ADMjobs.htm#1C1 thru 1C5. Here is a short summary & the advantages.
The profiles supplied with the Vancouver Utilties are split into 3 parts (common_defines, stub_profile,& common_profile).
'common_defines' defines locations of TESTLIBS/TESTDATA & PRODLIBS/PRODDATA.
The user's 'stub_profile' (renamed .profile for ksh or .bash_profile for bash), defines RUNLIBS/RUNDATA as TESTLIBS/TESTDATA for programmers or PRODLIBS/PRODDATA for operators.
The 'common_profile' then defines the various 'PATH's using $RUNLIBS For example: export PATH=$PATH:$RUNLIBS/jcls (converted JCL/scripts).
JCL/scripts address data-files relative to $RUNDATA, since the JCL converter inserted common function 'jobset51' at the begining to 'cd $RUNDATA'. See sample JCL conversions at MVSJCL.htm#1C1.
The benefits of this system are HUGE:
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Generation file reporting has been enhanced on console logs & history entries have been increased to record the last 30 actions. We will illustrate only the recent enhancements here in versions.htm for August 2008.
See the previous GDG enhancements in versions.doc for June 2007, or the complete GDG system documented at http://uvsoftware.ca/mvsjcl.htm#Part_5.
The June 2007 enhancements ensured that new generations were not committed until successful EOJ. New generations are created in jobtmp/subdirs & moved back to their original/subdirs at Normal EOJ.
Reporting of GDG file commitments (or NOT if ABterm) has been improved as illustrated below using test/demo job jgl200.ksh (listing at mvsjcl.htm#1F3). We will show only the end of the console log for an ABterm & then the complete console log for the rerun.
080922:131311:JGL200: ERR: step#S0020 cgl200 abterm 99
080922:131311:JGL200: ERR: Terminated Abnormally,JCC=99,StepsExec=2,Last=S0020 y/n?
080922:131313:JGL200: ERR: GDG files NOT moved from jobtmp/subdirs to /home/mvstest/testdata/subdirs
080922:131313:JGL200: - can rerun OK, since GDGs not added to RUNDATA/subdirs
080922:131313:JGL200: - OR restart at abterm step & reply y to move prompt
080922:131313:JGL200: ERR: jobtmp/JGL200/GDG/gl/files NOT moved to $RUNDATA/gl/ listed below:
gl/account.master_000005
gl/account.trans_000006
080922:131346:JGL200: Begin Job=JGL200
080922:131346:JGL200: WARN: files exist in jobtmp/GDG subdirs (from prior Abterm ERR?)
080922:131346:JGL200: ---- files in jobtmp/JGL200/GDG/*/* listed below:
jobtmp/JGL200/GDG/gl/account.master_000005
jobtmp/JGL200/GDG/gl/account.trans_000006
080922:131346:JGL200: jobtmp/GDG/subdir/files must be moved/removed before run starts
080922:131346:JGL200: y = move back to $RUNDATA/GDG/subdirs - restart from step# ?
080922:131346:JGL200: n = do NOT move back (will erase) - rerun from begining ?
080922:131349:JGL200: Begin Step S0010 sort (#1)
080922:131349:JGL200: file: SORTIN=gl/account.tran1 bytes=1600
080922:131349:JGL200: gen+1: SORTOUT=jobtmp/JGL200/GDG/gl/account.trans_000006 gens=18
080922:131349:JGL200: file: SYSIN=gl/parms/pgl200s1 bytes=
080922:131349:JGL200: file: SYSIN=/home/mvstest/testlibs/parms/pgl200s1 bytes=34
080922:131349:JGL200: uvsort fili1=gl/account.tran1,filo1=jobtmp/JGL200/GDG/gl/account.trans_000006
080922:131349:JGL200: EOF fili01 20 rds, 1600 size; gl/account.tran1
080922:131349:JGL200: EOF filo01 20 wrts, 1600 size; jobtmp/JGL200/GDG/gl/account.trans_000006
080922:131349:JGL200: Begin Step S0020 cgl200 (#2)
080922:131349:JGL200: gen+1: GLTRANS=jobtmp/JGL200/GDG/gl/account.trans_000006 gens=18
080922:131349:JGL200: gen0: GLMSOLD=gl/account.master_000004 insize=8720
080922:131349:JGL200: gen+1: GLMSNEW=jobtmp/JGL200/GDG/gl/account.master_000005 gens=10
080922:131349:JGL200: moving jobtmp/JGL200/GDG/subdir/files back to $RUNDATA/subdirs/
`jobtmp/JGL200/GDG/gl/account.master_000005' -> `gl/account.master_000005'
`jobtmp/JGL200/GDG/gl/account.trans_000006' -> `gl/account.trans_000006'
080922:131349:JGL200: JobEnd=Normal, StepsExecuted=2, LastStep=S0020
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
We now maintain the last 30 GDG file actions in the indexed control file. Actions are coded G0=reads by exportgen0, G1=writes by exportgen1, AB=ABterms.
Here is the uvhd display for the 'gl/account.master_' file. GDG filenames are coded with a trailing '_' underscore (followed by a 6 digit generation#). The latest generation# for gl/account.master is seen below at byte 128 'G1_000005'.
uvhd ctl/gdgctl51I.dat r2048 <-- use 'uvhd' to display GDG control file records ============================
10 20 30 40 50 60
r# 2 0123456789012345678901234567890123456789012345678901234567890123
2048 gl/account.master_ gdg=10
64 next=000000(000000:000000)000000:000000 JGL200 080922:131349
128 080922:131349:G1_000005(000001:000004)JGL200 S0020 cgl200 +
192 080922:131349:G0_000004(000001:000004)JGL200 S0020 cgl200
256 080922:131313:AB_000005(______:______)JGL200 S0020 cgl200 *
320 080922:131311:G1_000005(000001:000004)JGL200 S0020 cgl200
384 080922:131311:G0_000004(000001:000004)JGL200 S0020 cgl200
448 080922:131225:G0_000004(000001:000004)JGL100 S0010 cgl100
512 080922:131216:G1_000004(000001:000003)JGL220 S0010 cgl200 +
576 080922:131216:G0_000003(000001:000003)JGL220 S0010 cgl200
640 000000:000000:___000000(000000:000000)_______ _____ _________
- - - - - 20 entries removed to save space - - - - -
1984 000000:000000:___000000(000000:000000)_______ _____ _________>.
date:Time:action:GDG# oldest:newest Jobname Step# Program
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'uvcopy' is the most powerful data file manipulation utility in the Vancouver Utilities package. There are over 500 'uvcopy jobs' (parameter files for the uvcopy interpreter), that perform many functions involved in mainframe conversions & running mainframe applications on Unix/Linux systems.
uvcopy is vital because it can process various mainframe data types & files (such as packed decimal fields & indexed files), that can not be processed by the standard Unix/Linux system utilities. uvcopy is continually enhanced, and here are some recent improvements.
Vancouver Utilities generate uvcopy jobs to convert mainframe files to Unix/Linux. The uvcopy jobs are generated automatically from the COBOL copybook record layouts. There are 2 main choices. We can retain the same record layouts by translating EBCDIC fields to ASCII, but preserving packed/binary fields unchanged (compatible with Micro Focus COBOL). This choice allows you to quickly migrate your mainframe applications to Unix/Linux.
The 2nd choice is to convert the data files to pipe delimited text files for loading Relational databases. Packed/binary fields will be unpacked and edited with signs & decimal points as required to load RDBMS tables. Here is a sample of pipe delimited output from http://www.uvsoftware.ca/datacnv1.htm#4C2.
101301|JOHN HENRY|1815 BOW RD|VANCOUVER|BC|V9S1H1|+82898|+1490.61|
101399|GEORGE BROWN|125 PENDER ST|VANCOUVER|BC|V5L1W1|+82898|-1462.61|
101476|BONNIE SMITH|444 YALE RD|VANCOUVER|BC|V2P6J1|+121395|+376.92|
edta1 c900(11),b102(5p),'+zzzzzzzzz9' #10 face-value
sqz c900(11),' ' squeeze left no longer req'd
edta1 c1000(12),b107(5p),'+zzzzzzz.99' #11 maint-tax
sqz c1000(12),' ' edta1 eliminates 'sqz' instrns
var d0(2000),c0(100),0011,'|' convert to pipe delimited
Above we are showing the generated 'edt/sqz' instructions only for the last 2 fields, and the 'var' instruction which removes the right hand blanks from the 11 100 byte max fields & inserts the '|' pipe delimiters.
The 'a1' option on 'edta1' left adjusts the edited output, so we no longer need to generate the 'sqz' instructions, shortening the code generated from the copybooks.
You do not need to modify these auto generated jobs for most files, but for files with multiple record types, you need to insert record type test & skip to the auto generated bank of instructions for that record type. We would write the different record types to different files for loading separate tables, since RDBMS tables do not allow multiple record types.
uvcopy gives us the power & flexibility to convert the most difficult mainframe files. The Vancouver Utilities have successfully converted several mainframe sites that could not be converted by other vendor's tools.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Several of our customers have nightly batch jobs scheduled by cron. Some of them have reported batch shift failures due to file permissions.
To understand how we use cron to schedule batch jobs, please see: http://www.uvsoftware.ca/admjobs.htm#Part_5
You could run a night shift from a crontab owned by 'root' & never have a permissions failure, but this would be extremely dangerous. One wrong use of 'rm *' could wipe out your system. Running as appsadm/apps protects your system.
Our suggested crontabs & scripts are owned by 'appsadm' in group 'apps' which is common to the group of operators & programmers who work with the production data & libraries. The permissions in this group must be 775 for directories & 664 for files (which extends security to the group level).
Batch failures can occur if a day shift operator/programmer creates a file with the wrong permissions or group & this file is later used by the nightly batch scripts. FTP'd files can have the wrong permissions. Somebody might use 'root' to fix something & forget to reset permissions/owner/group.
We can prevent these failures if we setup a cron script (setperms1) to set permissions & group before the nightly batch jobs are scheduled.
The setperms1 script & the crontab used to schedule it must of course be run under 'root' to be able to change permissions & groups. See crontab_root example at http://www.uvsoftware.ca/admjobs.htm#5F2. Here is the essential line:
30 01 * * 2-6 /home/appsadm/sf/setperms1 all # fix permissions #=========================================== on data & libraries # minute hour day-of-mth mth-of-yr day-of-week <----command---->
The crontab above (owned by root) schedules setperms1 at 1:30 AM Tues-Sat. The crontab below (owned by appsadm) schedules nightly1 at 1:45 AM Tues-Sat.
45 01 * * 2-6 /home/appsadm/sf/nightly1 all # schedule nightly batch jobs #==========================================
See the full 'setperms1' script at http://www.uvsoftware.ca/admjobs.htm#5H1, but here are the essential lines:
. /home/appsadm/env/common_defines
find "$PRODDATA" -type d -exec chmod 775 {} \;
find "$PRODDATA" -type f -exec chmod 664 {} \;
chown -R appsadm:apps "$PRODDATA"
'PRODDATA' is the super directory containing all production subdirs & files, and is defined in 'common_defines', for example:
export PRODDATA=/p2/proddata
Please see the file system design (directory structures) suggested for mainframe conversions at http://www.uvsoftware.ca/admjobs.htm#2B0.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
UV Software can now provide the Morada RPG compiler for Unix/Linux systems, so we can now migrate your RPG programs as well as your COBOL, JCL,& DATA files from your mainframe to Unix/Linux systems.
RPG source cleanup & compile scripts are provided. Please see complete details at http://www.uvsoftware.ca/vserpg.htm.
uvhd is a file investigation utility primarily intended for mainframe type files with packed/binary fields & without the LineFeeds required by most Unix/Linux system utilities.
The search/replace feature has been enhanced to allow different length patterns to be used for 'TEXT' files (as well as descriptive fields within fixed length records).
See the example at uvhd.htm#L4 which replaces tabs in text files (scripts & source programs) with 4 spaces (vs the default 8).
'uvhd' is most customers favorite utility, and is a free download from http://www.uvsoftware.ca/libuvhd.htm.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
http://www.uvsoftware.ca/uvprices.htm#G1 thru G3, now documents 20 points of preparations for conversions of mainframes to Unix/Linux/Windows systems.
You should find these useful regardless of whether you intend to use the mainframe migration software & services provided by UV Software.
UV Software can make enhancements during the conversion, that will make your applications easier to run, improve your backups, etc. Here are some examples of enhancements that we can provide.
See more details at http://www.uvsoftware.ca/uvprices.htm#J0 thru page J6.
http://www.uvsoftware.ca/cnvaids.htm is intended to make you aware of the many conversion, testing, & debugging aids supplied by the Vancouver Utilities. I believe you will find many of these aids essential to the success of your conversion project.
These aids were originally in several documents (MVSJCL,MVSCOBOL,MVSDATA,etc). In January 2008, this separate document (CNVaids) was created to avoid the duplications in the original documents, which now have links to this document.
Many of these aids are illustrated using supplied test/demo files & you can run many of these once you have installed the Vancouver Utilities. These 'practice sessions' will help you when you start working on your own conversions of JCL, COBOL,& DATA files.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'countc1d' is a new uvcopy job (in /home/uvadm/pf/util/countc1d) to count lines of code & comments in all files in the specified directory. This job assumes the files are scripts (that use '#' as the comment identifier). This works for most unix/linux scripts, configuration files, uvcopy jobs, etc.
Here is the Op. Instrns & sample report for /home/uvadm/env. We use the profiles directory since it has only a few files & the sample report is short.
mkdir stats <-- make subdir to receive report (if not already present) =========== - report name = directory + '.stats' extension
uvcopy countc1d,fild1=env =========================
countc1d - count lines of Code,Comments,Total for scripts & uvcopy jobs
Directory: env prefix= 2008/04/21_10:10:09
Code Comments Total Filename Report: stats/env.count
14 22 36 env/kshrc
15 21 36 env/bashrc
14 46 60 env/common_defines
69 161 230 env/common_profile
20 139 159 env/stub_profile
18 31 49 env/root_profile
150 420 570 * Grand Totals *
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'statdir1' is a new script (in /home/uvadm/sf/util/statdir1) to count files, subdirs,& total KB used in the specified parent directory. Here is the Op. Instrns & sample report for /home/uvadm:
mkdir stats <-- make subdir to receive report (if not already present) =========== - report name = directory + '.stats' extension
statdir1 /home/uvadm <-- count files,subdirs,KB used in uvadm ==================== - report in /home/uvadm/stats/uvadm.stats
statdir1 - FileCounts & DiscUsage for SubDirs in ParentDir: /home/uvadm statdir1 uvadm >stats/uvadm.stats Sun Apr 20 02:01:02 PDT 2008 =============================================================== #1 Files=0000030 SubDirs=0000 KB=0000248 - /home/uvadm/batDOS #2 Files=0000021 SubDirs=0000 KB=0003576 - /home/uvadm/bin #3 Files=0000007 SubDirs=0000 KB=0001376 - /home/uvadm/binDOS #4 Files=0000049 SubDirs=0006 KB=0000492 - /home/uvadm/cobol #5 Files=0000064 SubDirs=0000 KB=0000588 - /home/uvadm/ctl #6 Files=0000089 SubDirs=0000 KB=0000760 - /home/uvadm/dat1 #7 Files=0000100 SubDirs=0000 KB=0010640 - /home/uvadm/doc #8 Files=0000151 SubDirs=0001 KB=0013392 - /home/uvadm/dochtml #9 Files=0000019 SubDirs=0001 KB=0000228 - /home/uvadm/env #10 Files=0000010 SubDirs=0000 KB=0000132 - /home/uvadm/hdr #11 Files=0000087 SubDirs=0001 KB=0001324 - /home/uvadm/htmlcode #12 Files=0000029 SubDirs=0000 KB=0005644 - /home/uvadm/lib #13 Files=0000220 SubDirs=0082 KB=0002688 - /home/uvadm/mvstest #14 Files=0000013 SubDirs=0000 KB=0000212 - /home/uvadm/ovl #15 Files=0000005 SubDirs=0000 KB=0000076 - /home/uvadm/perlm #16 Files=0000002 SubDirs=0000 KB=0000024 - /home/uvadm/perls #17 Files=0000787 SubDirs=0005 KB=0010276 - /home/uvadm/pf #18 Files=0000000 SubDirs=0000 KB=0000008 - /home/uvadm/rpts #19 Files=0000583 SubDirs=0004 KB=0004804 - /home/uvadm/sf #20 Files=0000044 SubDirs=0000 KB=0000436 - /home/uvadm/sfun #21 Files=0000055 SubDirs=0000 KB=0007120 - /home/uvadm/src #22 Files=0000030 SubDirs=0000 KB=0000428 - /home/uvadm/srcf #23 Files=0000009 SubDirs=0000 KB=0000108 - /home/uvadm/stats #24 Files=0000141 SubDirs=0004 KB=0001228 - /home/uvadm/tf #25 Files=0000000 SubDirs=0000 KB=0000008 - /home/uvadm/tmp #26 Files=0000161 SubDirs=0082 KB=0002148 - /home/uvadm/vsetest
Total Files=2706, SubDirs=186, KB=67964, for ParentDir=/home/uvadm
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
RDW (Record Descriptor Word) files are now supported by all Vancouver Utilities (uvcp,uvsort,uvcopy,uvqrpg,uxcp,uxsort,uxcopy,uxqrpg,& uvhd).
This is important for mainframe variable length file conversions to unix/linux. Mainframe FTP products such as BSTTFTPC from Barnard Systems (www.bsiopti.com) insert a 2 byte binary record size at the begining of each record.
The Vancouver Utility file conversions save the record size at the end, so the record layout will match the copybook descriptions, used to preserve the packed/binary fields while character fields are translated to ASCII.
After conversion, the saved record length is used to load variable length files on unix/linux for Micro Focus COBOL variable length formats (IDXFORMAT3 or IDXFORMAT8).
See data file conversions at http://www.uvsoftware.ca/vsedata.htm#Part_4 or http://www.uvsoftware.ca/mvsdata.htm#Part_4
Note that we can also convert the data files back to EBCDIC & insert the 2 byte binary record sizes for the BSSFTPC product to reload ESDS files on the mainframe.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The mainframe JCL, COBOL,& DATA conversions continue to improve with each new customer. The latest is a major financial corporation in Phoenix, and you can read the customer's reference letter at uvintro.htm#H1.
See the updated documentation at http://uvsoftware.ca/mvsjcl.htm#Part_4. Part 4 covers all steps of the conversion from directory design, thru the conversions to testing & implementation.
A friend tells me that he knows an IT shop that calls my website the 'BIBLE' (on mainframe conversions I assume). Of course I was pleased to hear that my website is appreciated.
I have worked diligently to make the UV Software website a source of real knowledge about converting mainframe JCL, COBOL,& DATA to Unix/Linux/Windows (not just the collection of buzzwords I see on some websites).
After receiving the 'BIBLE' compliment, I wrote a letter illustrating some of the more useful profiles & scripts that you can download from my website - regardless of whether you buy my mainframe conversion software or not.
| Please | see http://www.uvsoftware.ca/uvintro.htm#I1 |
Large File handling (over 2 gig) has just been extended to Windows/DOS, as well as all flavors of Unix & Linux. Large Files can now be processed by Vancouver Utilities (C programs: uvhd, uvsort, uvcp, uvcopy,& uvqrpg).
| Note |
|
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The converter inserts 2 common copybooks while converting mainframe COBOL to Unix/Linux Micro Focus COBOL. This common code replicates mainframe features that are otherwise not available on Unix/Linux systems.
copy "unixwork1.cpy". <-- inserted after 'WORKING-STORAGE'
W-S fields used by unixproc1.cpy
perform unixproc1. <-- inserted after 'PROCEDURE DIVISION'
- to perform common code in unixproc1.cpy
copy "unixproc1.cpy". <-- inserted at end of program
We have just found another reason (#4 below) why it was a great idea to insert these common copybooks into all programs during conversion.
EXEC SQL CONNECT DSNE/ORACLE@SOA END-EXEC.
==========================================
| See | more at http://www.uvsoftware.ca/mvscobol.htm#2E0 |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The data file compare jobs have been updated to provide for variable length record compares & exclusion fields. The data file compare utilities were 1st used for Year 2000, but are now being used to verify mainframe data conversions. You can see complete details at http://www.uvsoftware.ca/cmpjobs.htm but here is a brief introduction to the data file compares provided by UV Software.
| uvcmpFA1 |
|
| uvcmpFE1 |
|
| uvcmpVA1 |
|
| uvcmpVE1 |
|
| uvcmpIDX81 |
|
uvcmpVA1 & uvcmpVE1 are designed for variable length 'RDW' files, which have 4 byte record prefixes with the record length in binary in the 1st 2 bytes (3rd & 4th bytes unused nulls).
The following script demo is from http://www.uvsoftware.ca/cmpjobs.htm#2F1 & the ample output report is at http://www.uvsoftware.ca/cmpjobs.htm#2F3.
uvcmpVE1 dat0/testRDWe dat0/testRDWe2 r64k1 <-- script to compare RDW files =========================================== - see sample report below
uvcmp1 - compare 2 files, print mismatched record pairs, flag diffs with '*'s
2007/11/17_18:49:27 UOPs=q1k0m1p30r256s8t500000v2x0
recsize reccount file-size typ Report=rpts/testRDWe.cmp
1: 64 8 512 RSF File1=tmp1/testRDWe
2: 64 8 512 RSF File2=tmp2/testRDWe2
1 2 3 4 5 6
f#rec#byte# 0123456789012345678901234567890123456789012345678901234567890123
============================================================================
1 3 0 0044IBM000 - International Business Machines....................
FFFFCCDFFF464C9A8998A899894CAA898AA4D888898A00000000000000000000
0044924000000953595139651302429552204138955200000000000000000000
** ****
2 3 0044IBM000 - International Business Mothers ....................
FFFFCCDFFF464C9A8998A899894CAA898AA4D9A889A400000000000000000000
0044924000000953595139651302429552204638592000000000000000000000
** ****
1 6 0 0028REDHAT - Red Hat Linux ....................................
FFFFDCCCCE464D884C8A4D89AA44000000000000000000000000000000000000
0028954813000954081303954700000000000000000000000000000000000000
**
2 6 0028REDH00 - Red Hat Linux ....................................
FFFFDCCCFF464D884C8A4D89AA44000000000000000000000000000000000000
0028954800000954081303954700000000000000000000000000000000000000
**
======================= EOF or stop count reached ==========================
Total=000008,read=000008,mismatches=000002,stop=000008,term=500000
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'uvhd' is most customers favorite utility & invaluable for investigating mainframe & unix/linux files with packed/binary fields. uvhd is a free download from http://www.uvsoftware.ca/libuvhd.htm.
We recently added option 'a' for RDW (Record Descriptor Word) files. These files have variable length records with the record size in Big-End binary in the 1st 2 bytes (& next 2 bytes null).
uvhd dat1/testRDWe a <-- examine RDW test file, option 'a' translate ASCII ==================== - no file type option, defaults to 256 byte blocks
10 20 30 40 50 60
r# 1 0123456789012345678901234567890123456789012345678901234567890123
0 ....DELL00 - Dell Inc. ....HP0000 - Hewlett Packard....IBM000 -
0100CCDDFF464C8994C984440100CDFFFF464C8A98AA4D8898980200CCDFFF46
080045330000045330953B000C008700000008563533071321940C0092400000
64 International Business Machines....MFC000 - Micro Focus COBOL
4C9A8998A899894CAA898AA4D888898A0200DCCFFF464D88994C98AA4CDCDD44
0953595139651302429552204138955200004630000004939606634203626300
128 ....MS0000 - Microsoft Corp.....REDHAT - Red Hat Linux ....SUN0
0100DEFFFF464D8899A98A4C99940100DCCCCE464D884C8A4D89AA440200EEDF
0C0042000000049396266303697B0C0095481300095408130395470004002450
192 00 - Sun Microsystems Ltd ....UVSI00 - UV Software Inc.
FF464EA94D8899AAAA89A4DA84440200EEECFF464EE4E98AA8984C984444
00000245049396282354203340000000452900000450266361950953B000
Since we did not specify option 'z' to recognize RDW, uvhd would display the file in 256 byte blocks. In this case the entire file is only 252 & contains 8 short RDW records. Note the 1st 2 bytes of the 1st record (DELL) is x'0018' = ((1*16)+(8*1)) = 24 bytes.
uvhd dat1/testRDWe z0a3p4y7 <-- rerun uvhd with RDW & text output options
=========================== - z0=file type 'RDW', a3=translate to ASCII
- p4=drop 4 byte binary recsize, y7=text out
- displays 1st record & waits for your command
10 20 30 40 50 60
r# 1 0123456789012345678901234567890123456789012345678901234567890123
0 ....DELL00 - Dell Inc.
0100CCDDFF464C8994C98444
080045330000045330953B00
---> w99999 <-- write all records (8) to tmp/testRDWe_yymmdd_hhmmssW
DELL00 - Dell Inc.
HP0000 - Hewlett Packard
IBM000 - International Business Machines
MFC000 - Micro Focus COBOL
MS0000 - Microsoft Corp.
REDHAT - Red Hat Linux
SUN000 - Sun Microsystems Ltd
UVSI00 - UV Software Inc.
See other options explained at http://www.uvsoftware.ca/uvhd.htm#X2
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
This script should be very useful to any unix/linux site:
Here is the report I created for all /home/... dirs on my machine:
statdir1 /home <-- call script, arg1 is directory to be examined ============== - sample report below
stats/home.rpt - FileCounts & DiscUsage for SubDirs in ParentDir: /home
#1 Files=0000063 SubDirs=0049 TotKB=0004308 - /home/appsadm
#2 Files=0000126 SubDirs=0022 TotKB=0001180 - /home/aquitec
#3 Files=0000266 SubDirs=0057 TotKB=0018216 - /home/berks
#4 Files=0000036 SubDirs=0037 TotKB=0000372 - /home/callatay
#5 Files=0000070 SubDirs=0061 TotKB=0025964 - /home/carol
- - - - - etc - - - - -
#82 Files=0003280 SubDirs=0252 TotKB=0060484 - /home/uvadm
#83 Files=0003995 SubDirs=0297 TotKB=0070032 - /home/uvext
#84 Files=0000015 SubDirs=0006 TotKB=0000100 - /home/uvtest1
#85 Files=0000407 SubDirs=0079 TotKB=0003168 - /home/vsetest
Total Dirs=85, Files=33711, SubDirs=3646, KB=1550852, for ParentDir=/home
You can rerun for homedirs using a lot of storage, for example:
statdir1 /home/uvadm <-- rerun for selected homedirs ====================
'statdir1' is a very powerful & interesting script. You can see it listed at http://www.uvsoftware.ca/CNVaids.htm#2G1
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'statlogin1' should appeal to Unix/Linux system administrators. It reads a system file (/var/log/messages) and creates a table summary report of user logins by month & userid. Here are a few lines of the input file, followed by a sample report.
Oct 23 06:11:51 uvsoft3 login[16341]: session opened for user laval4 by LOGIN(uid=0) Oct 23 06:11:51 uvsoft3 -- laval4[16341]: LOGIN ON tty5 BY laval4 Oct 23 06:13:08 uvsoft3 ftpd[16342]: FTP LOGIN FROM 192.168.0.2, uvsoft2.uvsoft.ca (laval4) Oct 23 07:15:00 uvsoft3 login[16341]: session closed for user laval4 Oct 23 07:15:23 uvsoft3 login[16516]: authentication failure; logname=LOGIN uid=0 euid=0 tty=tty5 ruser= rhost= user=mvstest Oct 23 07:15:33 uvsoft3 login[16516]: session opened for user mvstest by LOGIN(uid=0) Oct 23 07:15:33 uvsoft3 -- mvstest[16516]: LOGIN ON tty5 BY mvstest Oct 23 21:00:42 uvsoft3 shutdown: shutting down for system halt
statlogin1 2007/11/26_21:24:24 logins by month & userid
tbl#001 pg#001 -argument-
line# count % mth login
1 13 5 Nov efunds2
2 13 5 Nov laval4
3 23 10 Nov mvstest
4 27 12 Nov root
5 26 11 Nov uvadm
6 26 11 Nov uvbak
7 8 3 Oct efunds2
8 7 3 Oct laval4
9 10 4 Oct mvstest
10 11 4 Oct root
222*100 *TOTAL*
This uvcopy job scans for 'session opened', then scans for ' user ', extracts the following word (userid),& uses the userid & month as the table argument
See 'statlogin1' job listed at http://www.uvsoftware.ca/tablejobs.htm#J1. To scan for desired data & build table above requires only 21 lines of code. The job is 87 lines total because we include 66 lines of comments for operating instructions & a samples of input & output.
Using this job as an example, you should be able to write other jobs to table summarize other items that interest you from this file or other system files.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The Vancouver Utilities provides GDG (Generation Data Group) processing similar to the mainframe facility. In May 2007, the VU GDG system was significantly enhanced and some new features go well beyond the original features provided on the mainframe.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The indexed control file allows us to provide some significant enhancements that go well beyond the original GDG implementation on the mainframe.
See the complete documentation for the Vancouver Utility GDG system at http://www.uvsoftware.ca/mvsjcl.htm#Part_5.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
This version has significant improvements in handling variable length sequential & indexed files (IDXFORMAT3 & IDXFORMAT8 compatible with Micro Focus COBOL).
uvsort, uvcp, uvcopy, uvqrpg now pass thru the input record length to the output file. In uvsort the variable reclth is temporarily appended to the record for the sort phase & then used to write the specified record length on the output phase. This was necessary to not disrupt any includes, omits, field moves, etc that are specified zero relative.
Previous versions would have written the max length specified for each particular variable length file which worked for most applications since they should have been programmed to accept the max for the file (but I found some customer COBOL programs that did not allow the max for the file).
The 'ftpgdg1' script is designed to detect files FTP'd from remote sites & move them to a 2nd directory, renaming to prevent overwriting existing files.
The remote site should name their files with a trailing underscore '_', so we can use the 'exportgen1' function (documented on page '3D2' of MVSJCL.doc).
'exportgen1' is the Vancouver Utility function to replace the mainframe 'GDG' function. It replaces the trailing '_' with '_000001' if there is no existing matching filename, or assign the next 6 digit sequential number if there is an existing match.
Please see the 'ftpgdg1' script documented at www.uvsoftware.ca/mvsjcl.htm#8K1 Page '8K2' describes how we tested it at UV Software & the script is listed on page '8K3'.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
See details & examples at http://www.uvsoftware.ca/admjobs.htm#Part_4
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
This script will change permissions on entire directory trees, using 'recursion' to process all levels of sub-directories. This script can save hours of manual investigation & correction.
See ADMjobs.htm#7B1 or http://www.uvsoftware.ca/admjobs.htm#7B1
For projects such as mainframe conversions, there is usually a team of programmers who must be able to read & write on a common set of directories & files (JCL/COBOL libraries & datafiles).
We recommend 775 for directories & 664 for files. This extends security to the 'group' level & all team members must be in the same group. Scripts would be 775 since they are files with the execute bit on.
This script is the solution to a very significant problem, that I frequently encounter when I arrive onsite to assist customer conversions.
If the site administrator did not initially setup the profiles with umask 002 (permissions 775/664 for directories/files), then the other programmers will be very frustrated when they attempt to work on the shared directories of JCL, COBOL,& DATA files.
Part 4 of VSEJCL.htm#Part_4 was completely rewritten as a result of a recent conversion. It now documents all activities required during the conversion period.
| VSEDATA.htm | was also rewritten as a result of the same conversion. |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Overlays can eliminate the need for pre-printed forms such as letterheads, tax notices, etc.
An 'overlay' is a file that is loaded into the memory of a laser printer, prior to sending a report file to the printer. When each formfeed is received, the overlay is superimposed upon the variable data for that page.
The development of 'uvoverlay' was suggested by a customer. I had helped convert that site from a mainframe to unix in 2000. I returned in 2006 to help him move the JCL/scripts, programs,& data to new hardware.
When we converted in 2000, we had replaced the line printer with laser printers & we used the 'uvlist' scripts to get the mainframe style reports (with 132 columns & 66 lines) onto 8 1/2 by 11 3 hole punched paper.
In 2006 the customer asked if I could help him to use overlay printing & eliminate several preprinted forms (letterheads, tax notices, etc). The text data for these forms was generated by COBOL programs in his JCL/scripts & printed via 'uvlist' scripts.
I searched the web for unix programs to create overlays from forms created by Microsoft WORD & I found the 'pcloverlay' program, freeware downloadable from http://www.shady.com & 'kevin@shady.com'.
I then developed 'uvoverlay' to prepend the overlay with the report file. 'uvoverlay' does more than just concatenate the files, it allows you to specify laser printer options to adjust the report data. You can modify the cpi, lpi, margins, etc to match the overlay form you are printing.
Please see the complete documentation at: http://uvsoftware.ca/uvoverlay.htm.
Overlay printing is a good example of adding a new feature to your existing applications (of JCL/scripts & COBOL programs). uvoverlay.htm shows you how to add overlay printing to applications previously converted from a mainframe, using the directory structures, as documented in MVSJCL.htm#1A1 or http://www.uvsoftware.ca/mvsjcl.htm#1A1.
Even if you do not immediately need overlay printing, I am sure you will learn a lot by studying the procedures & directory setups used to implement an application such as this.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Option 'z1' is provided to read BDW/RDW standard IBM mainframe variable length files. Also specify option 'y6' (y2=append LineFeeds, y4=strip prefixes), and you can then use 'w999999' (write all) to create text records without the binary BDW/RDW record prefixes.
IBM BDW/RDW standard variable length format is as follows:
- 4 byte block lth hdr with lth in 1st 2 bytes & 3-4 x'0000'
- 4 byte record lth hdr with lth in 1st 2 bytes & 3-4 x'0000'
- lengths in 1st 2 bytes are BIG-END format vs INTEL little-end
IE - record lth 80 would be x'0050' not x'5000' as per INTEL
- blk lth 16384 would be x'4000' not x'0040' as per INTEL
Here is the 1st 64 bytes of a test/demo file dat1/testBDWe. This is the Ebcdic version (dat1/testBDW is the ASCII version). You can examine dat1/testBDWe with uvhd as follows:
uvhd dat1/testBDWe a <-- option 'a' translates char line to ASCII ====================
10 20 30 40 50 60
0123456789012345678901234567890123456789012345678901234567890123
........DELL00 - Dell Inc. ....HP0000 - Hewlett Packard....IBM0
00000100CCDDFF464C8994C984440100CDFFFF464C8A98AA4D8898980200CCDF
1000080045330000045330953B000C008700000008563533071321940C009240
The 1st 64 bytes shows the 4 byte BDW, followed by RDW for 1st record (DELL), followed by 2nd record RDW+data (HP), followed by 3rd record RDW+data (IBM). uvhd displays data 'vertical hex', converting to horizontal hex we have:
| at byte 00 |
|
| at byte 04 |
|
| at byte 28 |
|
| at byte 56 |
|
Run uvhd twice, the 1st time to strip BDW hdrs,& a 2nd time to strip RDW hdrs:
uvhd dat1/testBDWe z1y4a <-- run#1 - strip BDW prefixes ======================== option z1=read BDW, y4=strip BDW,a=show ASCII
---> w999999 <-- write out, stripping BDW headers (from 2 blocks)
--> result is RDW only file (16 records)
uvhd tmp/testBDWe.yymmddhhmmssW z1y6a <-- uvhd run#2 - strip RDW prefixes ===================================== - z1=RDW,y4=strip RDW,y2=insert LFs
---> w999999 <-- write out, stripping RDW headers,& inserting LineFeeds
- result is text only file (16 records)
See DATAcnv1.htm#Part_5 for more examples
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Option 's' of 'tras' will translate zoned signs from EBCDIC to ASCII for use with Micro Focus COBOL. You could use this to fix the signs in files that have been FTP'd in text mode from the mainframe to unix/linux/windows.
FTP from the mainframe in text mode will automatically translate EBCDIC to ASCII. Most people know that you can't do this if there are any packed or binary fields, but some don't realize that any unpacked signs need to be corrected from the mainframe conventions to Micro Focus COBOL conventions.
In EBCDIC +'0123456789' is '{ABCDEFGHI' (x'C0' thru x'C9')
In EBCDIC -'0123456789' is '}JKLMNOPQR' (x'D0' thru x'D9')
In ASCII +'0123456789' is '0123456789' (x'30' thru x'39') (no diff)
In ASCII -'0123456789' is 'pqrstuvwxy' (x'70' thru x'79')
Here is a complete uvcp command to translate a 152 byte EBCDIC record to ASCII (OK if no packed fields & no zoned signed fields).
uvcp "fili1=infile,typ=LST,rcs=152,filo1=outfile,tra=0(152)" =================================================^^^^^^^^^^=
If the file had a zoned signed field in bytes 41-49 (0 rel), then we could use the following uvcp to correct the units zone in byte 49.
uvcp "fili1=infile,typ=LST,rcs=100,filo1=outfile,tras=49(1)" ====================================================^=======
We could also have used 'mvn=41(9za)41(9ze)', but the advantage of 'tras' is that we can correct multiple contiguous signed fields with 1 instruction. For example if we had 12 * 9 byte signed fields in bytes 41-112, we could use:
uvcp "fili1=infile,typ=LST,rcs=154,filo1=outfile,tras=41(112)" ====================================================^=========
The recsize is specified as 154 because FTP text would have added 2 bytes for CR/LF to the original 152 (40 + 112). If we wanted to drop the CR/LF to get back to the original record length of the mainframe file, (so we don't have to change the COBOL programs) we should use the following:
uvcp "fili1=infile,typ=LST,rcs=154,filo1=outfile,tras=41(112),rcs=152,typ=RSF" ====================================================^=========================
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
/home/uvadm/env <--- profiles provided here :-----common_defines - defines TEST/PROD LIBS/DATA so stub_profile : can use $symbols to define RUNLIBS/RUNDATA :-----common_profile - common profile (called by stub_profile) : defines PATH's etc using $RUNLIBS/$RUNDATA :-----stub_profile - will be renamed .profile (ksh) or .bash_profile (bash) : - defines RUNLIBS/RUNDATA for programmers & operators : /home/appsadm/env <--- setup user 'appsadm' & copy from /home/uvadm/env/* :-----common_defines - customize profiles here in /home/appsadm/env/... :-----common_profile - common profile (called by stub_profile) :-----stub_profile - customize & copy to homedirs .profile or .bash_profile
Mainframe conversion sites should setup an application administrator userid 'appsadm', copy /home/uvadm/env/* to /home/appsadm/env,& customize profiles there depending on the locations of their libraries & data. Do NOT customize profiles in /home/uvadm/env/... because they would be overwritten when a new version of Vancouver Utilities is installed.
We recommend the concept of 'stub' & 'common' profiles. The shell profile in each user's homedir is a 'stub' that calls the longer 'common' profile which is stored in /home/appsadm/env/...
This is a big advantage for any site with multiple users, it means you can update the common profile once in 1 place & those changes are effective for all users.
The common_profile will use $RUNLIBS & $RUNDATA to define PATH's to scripts & data directories.
The 'stub' profiles in programmer homedirs define RUNLIBS=$TESTLIBS & RUNDATA=$TESTDATA. The 'stub' profiles in production operator homedirs define RUNLIBS=$PRODLIBS & RUNDATA=$PRODDATA.
The stub profiles would also define user variable items such as: TERM, stty erase character, aliases, console logging on/off.
The stub profiles call 'common_defines' & 'common_profile' using the '.' (dot execution), which means the 'export's made in the common_profile will still be effective on return to the users profile.
See more at http://www.uvsoftware.ca/admjobs.htm#1B1 or at ----> http://www.uvsoftware.ca/install.htm#G0
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
UV Software can now provide MVS JCL to Perl script conversion in addition to the existing MVS JCL to Korn shell script. Please see MvsJclPerl.htm or http://www.uvsoftware.ca/mvsjclperl.htm.
The 'Multi-Client' system is for sites that have multiple systems of of JCL/scripts, COBOL programs,& data files that they wish to run on the same machine. The profile for each user can default to an initial client, and then he can use the 'chgclient' script to change to any desired client.
The system provides multi-level searches for scripts & programs for both 'production' & 'test' modes.
In 'prod' mode the libraries are searched in the following sequence: emergency, clientapp, clientcom, sitecom,& appscom.
In 'test' mode the libraries are searched in the following sequence: clientapp, clientcom, sitecom,& appscom.
'uvhd' now has the 'g' command to generate sequence numbers. For example to generate sequence#s in cols 75-80 in a file of 80 byte records:
uvhd tmp/test100 r80u <-- start uvhd on test file Recsize 80 Update mode =====================
--> g999i10 74(6),'000010' <-- Generate seq#s on next 999 recs,
====================== - Increment by 10
- in bytes 74-79 (0 rel) or cols 75-80
- starting from '000010' initial value
See more examples on page P1 of uvhd.htm#P1 or http://www.uvsoftware.ca/uvhd.htm#P1
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Please see http://www.uvsoftware.ca/admjobs.htm to see new documentation on setting up RAID arrays, Partitioning,& making file systems.
The example was based on a Dell 2800 with 6 x 73 gig SCSI discs:
The original mainframe had been converted to unix in 1994, and at that time, the customer was very impressed when a job that took 4 hours on the mainframe was reduced to 10 minutes on the unix system.
Now in 2006, that job takes only 7 seconds on the Dell 2800 with 4 gig of memory (vs 64 meg on the 12 year old unix system).
The MVS & VSE JCL converters continue to be enhanced with each new conversion.
| See | 'http://www.uvsoftware.ca/mvsjcl.htm' for more about MVS JCL conversion. |
'uvhd' is an interactive utility for investigating mainframe type files with packed or binary fields. It displays the data in vertical hexadecimal and allows you to browse, search, select, print, etc. You can now insert sequence#s as well as check sequence#s.
Most customers say uvhd is an essential tool when converting to unix/linux.
See http://www.uvsoftware.ca/libuvhd.htm to download the latest version (free).
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
| IDXFORMAT1 |
|
| IDXFORMAT3 |
|
| IDXFORMAT8 |
|
The 'uv' utilities (uvcp,uvsort,uvcopy,uvqrpg) can process IDXFORMAT1 files (& any non-indexed file). The 'uv' utilities use the D-ISAM file handler which is compatible with Micro Focus COBOL IDXFORMAT1.
The 'ux' utilities (uxcp,uxsort,uxcopy,uxqrpg) can process IDXFORMAT3/8 files (in addition to IDXFORMAT1 & any non-indexed file). The 'ux' utilities must be compiled using the Micro Focus compiler to include the file handler for IDXFORMAT3 & IDXFORMAT8. See the special compile instructions on page D1 of install.htm#D1.
We provide COBOL test programs cobidx31/cobidx32 to write/read IDXf3 files and cobidx81/cobidx82 to write/read IDXf8 files. The IDXf3 & IDXf8 programs are the same except for the '$SET IDXFORMAT(8)' on line 1 of cobidx81/82.
Text files 'idx3S' & 'idx8S' are provided as input to these tests. It has the indexed key in the 1st 4 bytes & the desired record length in the next 4 bytes. COBOL programs 'cobidx31/cobidx81' load the IDXf3/IDXf8 files & 'uxcp' reads them back & outputs text nonindexed files. Then we do the reverse (load the Indexed files with uxcp & read them back with cobidx32/cobidx82)
See these tests documented at http://www.uvsoftware.ca/mvscobol.htm#Part_8
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The mainframe conversion documentation has been reorganized as follows:
Text doc file - HTML file (hyperlink) - description =============================================================
| MVSJCL.doc |
|
| VSEJCL.doc |
|
| MVSCOBOL.doc |
|
| VSECOBOL.doc |
|
| MVSDATA.doc |
|
| VSEDATA.doc |
|
| DATAcnv1.doc |
|
Previously only the 'JCL' conversion was split into 'MVS' & 'VSE' versions. Now 'COBOL' & 'DATA' are also split to separate versions. This allows us to give more specific examples since the JCL is different.
UV Software maintains documentation as text files with 'vi' & automatically converts them to HTML when significant changes are made (see HTMLjobs.htm).
"uvhitctr2.pl" is a CGI Perl program that you may download from UV Software. It displays counts month by month for this year & last year, for example:
ThisYear=000016 (J=0,F=0,M=0,A=0,M=0,J=0,J=16,A=0,S=0,O=0,N=0,D=0) LastYear=000078 (J=1,F=2,M=3,A=4,M=5,J=6,J=7,A=8,S=9,O=10,N=11,D=12)
At UV Software the documentation is maintained as text files so it can be edited with unix/linux editors such as 'vi'. The HTML is automatically generated from the text files (as explained in Part_2 of HTMLjobs.htm). The automatic conversion inserts the following Server Side Include (SSI) to uvhitctr2.pl at the end of every document:
<!--#exec cgi="/cgi-bin/uvhitctr2.pl" -->
The hit counter files are periodically FTP'd from the ISP website to UV Software's computer for analysis & charting. We can see which documents have the most hits & which months have the most hits.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The primary focus of DATAcnv1.htm is conversion of mainframe EBCDIC data files to ASCII, while preserving packed decimal fields, and translating any zoned signs to ASCII equivalents. Conversion jobs are automatically generated from the COBOL copybooks.
We have now added a few pages begining at DATAcnv1.htm#5A1 to document the reverse - converting ASCII files back to EBCDIC.
This allows us to take files back to the mainframe, and in addition it gives us a way to verify the original conversion - by comparing the reconverted files to the original EBCDIC files.
DATAcnv1.htm#5B1 documents the 'uvcmp1' utility to compare data files and flag differences with '*'s (sample below).
1 2 3 4 5 6
f#rec#byte# 0123456789012345678901234567890123456789012345678901234567890123
============================================================================
1 1 0 10130140 JOHN HENRY 1815 BOWEN ROAD VANC
FFFFFFFF44DDCD4CCDDE444444444444444FFFF4CDECD4DDCC4444444444ECDC
1013014000168508559800000000000000018150266550961400000000005153
64 OUVER BCV9S1H1 bi Wb g qq 00014906A970530191809
DEECD44444444444CCEFEFCF0888005880008000770FFFFFFFFCFFFFFFFFFFFF
645590000000000023592181029C0072C0047C0111C000149061970530191809
*
2 1 10130140 JOHN HENRY 1815 BOWEN ROAD VANC
FFFFFFFF44DDCD4CCDDE444444444444444FFFF4CDECD4DDCC4444444444ECDC
1013014000168508559800000000000000018150266550961400000000005153
64 OUVER BCV9S1H1 bi Wb g qq 000149061970530191809
DEECD44444444444CCEFEFCF0888005880008000770FFFFFFFFFFFFFFFFFFFFF
645590000000000023592181029C0072C0047C0111C000149061970530191809
*
The '*' differences shown are not a problem - they are caused by translating zoned signs from EBCDIC to ASCII & back, because there are no + zones in ASCII. The original + zones in EBCDIC x'C_' are lost (not needed) in ASCII where normal numeric zones x'3_' are the only + zones. When we convert back we get the normal numeric zones in EBCDIC x'F_', which cause the mismatches (but these are not errors). See more details on zoned sign conversions on page DATAcnv1.htm#3C6.
We need a utility such as 'uvcmp1' because we can't use the unix/linux 'diff' command, since diff is for text files only and mainframe style data files are fixed length without the LineFeeds required by diff.
The other unix/linux system command for comparing files is 'cmp' which is good for telling you whether 2 files are the same or not, but it does not illustrate the differences as does the Vancouver Utility 'uvcmp1'.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
These cross-reference reports will be invaluable during testing & debugging. The Cross-References & the documentation for them has been greatly improved. Here is a list of the cross-reference reports available, followed by just 1 sample report contents (xcobcopy2).
| xcobcopy1 |
|
| xcobcopy2 |
|
| xcobcall1 |
|
| xcobcall2 |
|
| xjkshfile1 |
|
| xjkshfile2 |
|
| xjkshprog1 |
|
| xjkshprog2 |
|
Keyword=copy Exclude= Include= page# 1 Directory=/home/vsetest/cbls Options=q1a16b16c4e0d0j0l0s2w1a16b16c4e1q0i7 =======================================================2005/03/24_12:49:50
custmas.cpy car100.cbl car120.cbl car130.cbl car140.cbl ____________6 car150.cbl car200.cbl
paymas.cpy cpy100.cbl
saledtl.cpy_2 car150.cbl car200.cbl
sdline.cpy car200.cbl
stline.cpy car200.cbl
You can see samples for all the cross-references at: MVSJCL.htm#9E1 or MVSJCL.htm#9E1 or MVSCOBOL.htm#4Q1.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Vancouver Utilities provides a utility to extract the essential file info from the COBOL programs into a concise report. The report prints 1 line for each file found in each program. Here is a sample report. See more details at MVSCOBOL.htm#4J1
cobfil41 ** COBOL Files Report ** Dir=cbls 2005/03/05_20:04:06 progname.cbl DDname OAM open recsz copybook.cpy FDname Key ================================================================================
car100.cbl custmas SS I 00256 custmas.cpy custmas car100.cbl nalist L O 00120 nalist
car200.cbl saledtl SS I 00064 saledtl.cpy saledtl car200.cbl custmas IR I 00256 custmas.cpy custmas car200.cbl cm-cust car200.cbl salelst L O 00120 sdline.cpy salelst
These reports are a vital guide to your testing & debugging. This job extracts the essential info for each Data-File from each step in the JCL/script & combines this with the matching file info from the matching COBOL program. Here is a sample report. See more details at MVSJCL.htm#9H1 or VSEJCL.htm#9H1.
jclfil43 ** JCL Report with COBOL Files info ** 20050305 page#0002 stp# progname.cbl DDname OAM open recsz copybook data-file-name ================================================================================
#001 sort sortin1 SS I 00064 ar/sales.items
sortout SS O 00064 $DW/##srtext
sysin tmp/${JOBID}_${JOBSTEP}_${PROGID}
#002 car200.cbl saledtl SS I 00064 saledtl.cpy $DW/##srtext
custmas IR I 00256 custmas.cpy ar/customer.master.indexed
salelst L O 00120 sdline.cpy ar/sales.list
syslst $DP/${JOBID}_${JOBSTEP}_${PROGID}
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The mainframe conversion procedures have been reorganized into the following documents:
MVSJCL.htm - Convert MVS JCL to ksh scripts for unix,linux,Windows/SFU VSEJCL.htm - Convert VSE JCL to ksh scripts for unix,linux,Windows/SFU COBOLcnv.htm - Convert Mainframe COBOL to Micro Focus COBOL DATAcnv1.htm - Convert EBCDIC data to ASCII, preserving packed decimal fields DATAcnv2.htm - for higher volume & more complex DATA conversions
For longer more important documents (such as MVSJCL.htm), we now generate a 'permuted keyword index' (cross-reference) & insert it at the end. Keywords are extracted from the ** headings, permuted, sorted,& converted to HTML hyperlinks. "permuting" shows each word in turn at the begining of the original sentence & sorts on these keywords. Insignificant words are dropped by a table which is easily updated.
Each page (about every 50 lines) of the main document includes a link to the keyword index, so you can quickly get to the index & then to the 1st letter of the desired keywords. You ca see how effective this is at: http://www.uvsoftware.ca/mvsjcl.htm#kwindex
See Part 2 of HTMLjobs.htm#Part_2 for the details of how the Vancouver Utilities all text documentation is automatically converted to HTML for the web site. You might be able to use a similar process if you have legacy text documents.
The requirements for obtaining 'evaluation copies' of the Vancouver Utilties is more clearly described at uvprices.htm#M1. Becoming a UV Software partner is described at uvprices.htm#P1.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Use these when you want to print multi column tickets,labels,etc (2up,3up,etc). This assumes the input records contain some sequential# or alpha sequence that we wish to appear in sequence horizontally or vertically. Three versions of the program are provided:
| multicol1 |
|
| multicol2 |
|
| multicol3 |
|
0001 one 0002 two 0003 three 0004 four ------- etc ------ 0097 ninety seven 0098 ninety eight 0099 ninety nine 0100 one hundred
0001 one 0026 twenty-six 0051 fifty-one 0076 seventy-six
0002 two 0027 twenty-seven 0052 fifty-two 0077 seventy-seven
0003 three 0028 twenty-eight 0053 fifty-three 0078 seventy-eight
----------------- etc ------------------
0025 twenty-five 0050 fifty 0075 seventy-five 0100 one hundred
These jobs were suggested by Mike Fey of Datex Services Vancouver. The most important job to him was multicol3, since he already had an application to print horizontally, and he needed a way to rearrange the file to achieve the vertical column effect.
These jobs read the entire file into memory to allow the vertical sequencing. By default 10 megabytes are reserved for the input area 'a', but you could increase to 100 meg or more if required depending on your memory available. Since 200 bytes are allowed for each record, 10 meg allows 50,000 records,& 100 meg would allow 500,000 records.
See these jobs documented at http://www.uvsoftware.ca/testdemo.htm#U1
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
uvsort now maintains the original file record sequence. This is effective when multiple records exist for the specified sort keys. This feature is implemented by automatically adding an extra low order sort field with an input record sequence number. For best performance, uvsort uses the 'qsort' algorithm which does not guarantee original record sequence.
Sort field type 'g' changes the character collation sequence. The exact sequence is shown on page C3 of http://www.uvsoftware.ca/uvsort.htm#C3. This was requested by customers converting DB2 UDB applications from the mainframe to unix/linux. Other sites might use this if they want UPPER & lower case letters to sort together (vs the separate ranges of ASCII).
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'gentest1' will generate uvcopy jobs to generate test data files based on the COBOL copybooks. The cobol copybooks are 1st converted to the 'cobmap' record layouts by the 'cobmap1' utility.
The generated uvcopy jobs are named after the copybooks and they call sub- routines to generate data for each field. Each picture field in the copybook generates a 'bal' to a subrtn, depending on field type (type X, packed, binary, signed/unsigned numeric). For example:
bal genx,'a00035b0025','address' <-- sample call to subrtn =================================
This calls subrtn 'genx' for a type X field starting at byte 35 (option a00035) that is 25 bytes long (option b0025), whose fieldname is 'address'.
Here is a summary of the subrtns called & a description of the actions performed for the various field types:
| genx |
|
| gen9 |
|
| gens |
|
| genp |
|
Calling subrtns keeps the generated uvcopy jobs short since most of the field processing code is in these sub-routines. Please see details & sample copybooks & generated jobs in part 5 of DATAcnv1.doc or on the internet at --> www.uvsoftware.ca/datacnv1.htm#Part_5
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
DATAcnv1.htm documents data conversion from EBCDIC to ASCII, while preserving any packed or binary fields, and modifying any unpacked zoned signs to Micro Focus COBOL standards.
The data conversion jobs are automatically generated from the COBOL copybooks. If a copybook is not available, it can be automatically generated by scanning the data file. The 'signscan' jobs have been significantly enhanced to detect all packed & zoned fields that are logically possible to detect.
There is also a new master script to generate all conversion jobs with one command (gencnvE1). This generates multiple jobs to scan the data and create the copybook, the EBCDIC to ASCII translation, and a job to convert the data to pipe delimited text for loading Relational DataBases.
The requirements for obtaining evaluation copies and becoming a UV Software marketing partner are now clearly explained in uvprices.htm.
SFU is Services For Unix running under Windows 2000, XP, or Server 2003. SFU allows you to run a unix/linux shell (ksh, bash, csh, sh, etc) on a Windows system (UV Software recommends the Korn shell 'ksh').
UV Software has completed testing the mainframe conversion tools (for JCL, COBOL,& Data) under SFU. We had previously tested under Cygwin & Uwin (other emulators for unix/linux on Windows). We now recommend SFU.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
uvsort now allows you to specify up to 20 input files & up to 60 output files. On input you may specify record selects/deletes/reformats that are applied to all records. On output you may specify record selects/deletes/reformats that are different for different output files.
A maximum of 20 input & 60 output files apply when you specifically name the desired files (fili1=...,fili2=...,fili20=...,filo1=...,filo2=...,filo60=...).
An alternative to specifying multiple input filenames is to use the new run option 'f2', to input all files from a specified directory, OR all filenames matching a specified prefix.
For output files, you may specify option 'f1' on key1 (key1f1) to output multiple separate files for duplicate record key sets based on key1. This is a unique & powerful feature that can be used to write out separate files for each customer#, salesman#, state/province, etc.
The output filenames are automatically created in the specified output directory, with an optional prefix, followed by the current key1 data value.
Please see these new features described in detail on pages C5,F4,G2,I2 of uvsort.htm. These enhancements make uvsort even more powerful than SYNCSORT.
The mainframe JCL to Korn shell script converter has been updated to use these new uvsort enhancements when converting SYNCSORTs to uvsort. Please see mvsjcl.htm#6F6 for an example of converting a SYNCSORT with multiple selects/deletes for multiple output files.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
A Windows/DOS version of Vancouver Utilities is now available. The 'WinDos' package is executables only. Source code for the C programs is provided only for the Unix versions. The WinDos executables run in the DOS window under Windows 95,98,NT,2000,XP.
The WinDos versions were compiled using the lcc-win32 compiler. The author of lcc-win32 is Jacob Navia & it may be downloaded from: http://www.cs.virginia.edu/~lcc-win32/ But you do not need it since the WinDos package includes the executables.
The UV WinDos utilties are especially valuable when run under the KORN shell for windows (see http://www.mks.com), or the BASH shell for windows See http://www.cygwin.com.
The Vancouver Utilities now support Variable Length Indexed files compatible with Micro Focus COBOL IDXFORMAT3. For more info on these file types, please see the 'File Handling' documentation for Micro Focus Object or Server Express COBOL.
The Micro Focus COBOL 'EXTFH' file handler is compiled into the new 'ux' versions of the Vancouver Utility programs (uxcp,uxsort,uxcopy,& uxqrpg) versus the original versions (uvcp,uvsort,uvcopy,& uvqrpg).
Two versions of the programs are required since only Micro Focus COBOL users (server express 2.2+) could compile 'ux' versions whereas any user can compile 'uv' versions which use D-ISAM to support Indexed Sequential FIXED record length files. See install.htm for complete details of compiling both 'uv' & 'ux' programs.
Run these tests & ensure your outputs match the expected outputs which are illustrated following each test/demo. Running these 'test/demo's is also a great way to investigate the Vancouver Utilities & find out which utilties will be the most useful to you.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
New section HTMLjobs.doc describes how the UV Software text documentation is automatically converted to HTML & FTP'd to the website ('http://www.uvsoftware.ca').
The Vancouver Utilities distribution CD now contains subdir 'dochtml'. If you install as directed in install.doc, you can point your web browser to the dochtml subdir as follows: (replace 'httpd://' with 'file:/')
file:/home/uvadm/dochtml ========================
Over 99.8% of the HTML you see here on the UV Software web site was generated automatically. Only a few small files such as index.htm were coded manually. The voluminous documentation (99.8%) continues to be maintained via the UNIX 'vi' editor. When website updates are made (monthly or whatever) the 99.8% is reconverted & merged with the few small hand coded files. The result is 'tar'd, compressed,& FTP'd to the webserver.
This may be of interest to other sites with legacy documentation. If your legacy documentation has a clear set of rules for page headings & section/chapter references, then you (or UV Software) could write a uvcopy job to automatically convert your legacy documentation to HTML.
DATAcnv1.doc is intended to help you convert EBCDIC data files whether or not the COBOL copybook is available. Other conversion documents in the Vancouver Utilities presume the COBOL copybooks are available.
When the COBOL copybook is not available, we have procedures to scan the EBCDIC data to determine the record layout. 'signscanA' can determine the locations of packed fields & zoned signs which would be destroyed if you translate the entire record to ASCII.
When the COBOL copybook is available, you can use it with this document, by skipping the signscanA & sign2cpyA procedures. All the data conversion procedures are driven by the copybook whether supplied or created by scanning the data.
DATAcnv1 is intended to convert 1 file at a time. DATAcnv2 is intended to convert entire mainframe sites with hundreds of data files. DATAcnv1 is applicable to sites that receive data files from outside sources which supply the data in varying formats with or without copybooks.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
jclfil23 ** JCL report with COBOL info ** 20020522 page#0001 jobname.jcl st# progname.bat DDname genf OAM open recsz copybook.cpy data-file-name ====================================================================================================
csh240 #001 cshc240.bat cshfms $DM/cshfms
cshfact IR I 00080 $DM/cshfact
dm01 $DW/_scr1
prntr LS O 00132 $DP/$(date +%H%M%S)_${JOBID}_${PROGID}
002 cshc241.bat cshfms SS I 00150 cshtran $DM/cshfms
dm01 $DW/_scr1
prntr LS O 00132 $DP/$(date +%H%M%S)_${JOBID}_${PROGID}
003 csh240.bat cshfms $DM/cshfms
cshfact IR I 00080 cshfact $DM/cshfact
cshtsum SS IO 00200 cshtsum $DM/cshtsum
csh240a SS O 00104 $DW/csh240a
csh240b SS I 00150 cshtran $DW/csh240b
dm01 $DW/_scr1
prntr L O 00132 $DP/$(date +%H%M%S)_${JOBID}_${PROGID}
| table1 |
|
If your requirements exceed the limitations of this general purpose job then you can custom write your own uvcopy job. Several examples are given.
| sltbl1 |
|
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
64 bit accumulators are now available for uvcopy & uvqrpg on some systems (UnixWare 7 & DEC Alpha). UnixWare 7 provides long long integers now on via software on 32 bit hardware. 64 bit accumulators are generated via a new compile argument I32 or I64, for example:
ccuvall INT I64 DISAM <-- compile all utilties for Intel UW7 long long ccuvall DEC I64 DISAM <-- compile all utilties for DEC Alpha long 64 bits
ccuvall DEC I32 SUN <-- compile all utilties for SUN with 32 bit acums
See the complete compile instructions in install.htm#C1 As of Feb 2000, I am not sure whether long long is available for other architectures (SUN,HP,etc), but I will update this as soon as I find out.
For uvcopy 64 bit accumulators are used for the counters $ca1-$ca24 thru $ci1-$ci24, and for the table accumulators ('tbl' instruction). For uvqrpg 64 bit accumulators are used for the 8 total levels of 100 accumulators per level, and for the table analysis tbl instruction. Please see the details in uvqrpg.htm
Note that the previous 32 bit accumulators allowed for 2,000,000,000 but if this is dollars & cents it is only $20,000,000.00 - 64 bits allows numbers so big you never have to worry about it. uvcopy & uvqrpg allow for 20 digits.
64 bit accumulators are more important for uvqrpg than for uvcopy, since uvcopy is primarily a data manipulation utility rather than a report utility. Please see the uvqrpg announcement in October 1999, or the detailed documentation in uvqrpg.htm
Note1 - we have changed the 'sort file' & 'report file' conventions for uvqrpg (was new in Oct 1999, so this change can be made now before users have developed many new jobs).
Was: sort-in=fili1, sort-out=filo1, report-in=fili2, report-out=filo2
Now: sort-in=fili8, sort-out=filo8, report-in=fili1, report-out=filo1
The '@end' function has been removed as of Oct 1999 (was redundant). You must remove them from the end of your uvqrpg jobs. The reason was to improve error checking on @dtl which must be coded on an instruction & not on a line by itself. You can code on a 'nop' if desired.
@dtl nop
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
This is a major component of the Vancouver Utilities. 'uvqrpg' is being used with great success, replacing well known mainframe utilities such as 'easytrieve'.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'uvhdcob' is similar to the original uvhd.
| uvhd |
|
| uvhdcob |
|
datafile=dat1/custmas1 bytes=8192 rsz=256 totrecs=32 current=2 cobmapfile=maps/custmas1 today=199902151608 datalastmod=1999011612 rec# 2 fieldname occurs bgn end typ<------ data (hex if typ=p/b) -----> cm-num 0 5 n 132588 cm-delete 6 9 cm-name 10 34 GEECOE GENERATOR SERVICES cm-adrs 35 59 UNIT 170 - 2851 SIMPSON cm-city 60 75 RICHMOND filler001 76 76 cm-prov 77 78 BC filler002 79 79 cm-postal 80 89 V6X2R2 cm-phone 90 101 604-278-4488 cm-contact 102 119 cm-thisyr-sales 012 120 124pns 000004680C cm-lastyr-sales 012 180 184pns 000005360C cm-thisyr-xft 240 244pns 4120202038 cm-lastyr-xft 245 249pns 3731303036 filler003 250 255
null=next,r#=rec,b#=byte,+/-recs,s=search,u=update,p=print,w=write ,q=quit,?=help -->
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
| NOTE |
|
uvcp fili1=dat1/file1,typ=ISFl1,rcs=40,filo1=dat2/file2,typ=ISFl0,rcs=40
========================================================================
^^ ^^
- 'l1' of 'typ=ISFl1' specifies READONLY for the ISAM input file.
- 'l0' of 'typ=ISFl0' specifies Exclusive for the ISAM output file.
See uvlocks.doc for test results for most of the possible combinations. (also includes test results for COBOL programs & TIP/ix)
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Prior to January 1999, the DISAM/DISAMdat option allowed you to compile uvcopy, uvcp,& uvsort to process DISAM Indexed files with or without the '.dat' extension on the data partition. Microfocus COBOL does not use the .dat extension. TIP/ix will read either but always creates .dat extensions and TIP/ix users compensate by using symbolic links (a messy solution).
As of Jan/99, environmental variable 'DISAMEXT' is provided for sites that want to use '.dat' extensions, rather than the default of no extension.
export DISAMEXT=dat ===================
This export causes '.dat' extensions to be expected on input & created on output. Sites that always want '.dat' can put this export in /etc/profile.
Can export DISAMEXT=dat from your shell prompt for 'as required' use. For example if you wish to process TIP/ix data files. Don't forget to export DISAMEXT="" before you run any uvcopy/uvcp/uvsorts that create files for Micro Focus COBOL.
As of 2003, the supplied profiles 'export DISAMEXT=dat', and a COBOL file handler configuration file 'extfh.cfg' is supplied with 'IDXNAMETYPE=2', which causes Micro Focus to read/write the '.dat' extension.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| 99V01 | .dat: D-ISAM '.dat' extensions |
| 08V08 | Abterm: 1st run console log - ABterm lines only |
| 08V08 | Abterm: console log for rerun (after ABterm) |
| 09V06 | Accept: Micro Focus COBOL Accept/Display Documentation |
| 08V11 | Access: uycopy API for DataBase/Table access |
| 09V05 | Access: COBOL access to MySQL DataBase via ODBC |
| 09V03 | Accum: genacum2 - generate jobs to accum ALL numeric fields |
| 09V01 | Accumulate: acum1 - accumulate any 1 field in any datafile |
| 00V03 | Accumulators: 64 bit accumulators for uvcopy & uvqrpg |
| 08V08 | Actions: GDG file history actions increased to 30 |
| 09V03 | Acum: Generate uvcopy job to acum all numeric fields |
| 09V01 | Acum1: - accumulate any 1 field in any datafile |
| 09V01 | Acum1: sample report from acum1 |
| 09V02 | Added: 'verify' command added to 'uvhdcob' |
| 07V05 | Admjobs.doc: new backup plan - Part4 of ADMjobs.doc |
| 07V06 | Advanced: GDG Advanced Features (beyond mainframe capability) |
| 08V09 | Advantages: Advantages of common_defines, stub_profile,& common_profile |
| 07V11 | Aids: inserting common copybooks aids conversions |
| 08V03 | Aids: Mainframe Conversion Aids |
| 04V01 | Also: JCL converter also enhanced |
| 05V07 | And: Visitor Counter for This Year and Last Year |
| 08V11 | Api: uycopy API for DataBase/Table access |
| 08V12 | Api: Pro-COBOL EXEC SQL API to Oracle DB |
| 08V09 | Are: Profiles are vital for Unix/Linux |
| 06V10 | Background: Background |
| 07V05 | Backup: new backup plan - Part4 of ADMjobs.doc |
| 04V08 | Based: gentest1 - generate test data files based on COBOL copybooks |
| 07V06 | Basic: VU GDG Basic Features |
| 08V05 | Batch: Preventing Nightly Batch Failures |
| 06V09 | Bdw: uvhd option 'z1' for variable length BDW/RDW files |
| 07V06 | Beyond: GDG Advanced Features (beyond mainframe capability) |
| 07V11 | Bible: www_uvsoftware.ca is the 'BIBLE' |
| 00V03 | Bit: 64 bit accumulators for uvcopy & uvqrpg |
| 08V11 | Book: SQL Book References |
| 08V11 | C-api: MySQL C-API sample programs |
| 07V06 | Capability: GDG Advanced Features (beyond mainframe capability) |
| 09V10 | Capturing: logs by mail from cron jobs |
| 07V04 | Chmodr2: chmodR2 - change permissions on all files & subdirs |
| 09V02 | Cm_testuvhdcob: genverify1 report for dat1/cm_testuvhdcob |
| 09V02 | Cmpjobs: CMPjobs enhanced |
| 09V03 | Cobmap: sample cobmap - custmas1 |
| 02V06 | Cobol: jobflow2 - JCL Report with COBOL Info |
| 04V08 | Cobol: gentest1 - generate test data files based on COBOL copybooks |
| 05V03 | Cobol: COBOL 'Files' Report |
| 05V03 | Cobol: Cross References for COBOL & JCL/scripts |
| 05V08 | Cobol: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 05V08 | Cobol: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 09V05 | Cobol: COBOL access to MySQL DataBase via ODBC |
| 09V06 | Cobol: Micro Focus COBOL Accept/Display Documentation |
| 09V06 | Cobol: Micro Focus COBOL SCREEN program demo |
| 99V01 | Cobol: uvhdcob - data file utility with COBOL field names |
| 09V01 | Command: notes re command line options |
| 09V02 | Command: 'verify' command added to 'uvhdcob' |
| 09V02 | Command: response to search/verify command |
| 09V02 | Command: uvhdcob - test/demo 'verify' command |
| 08V02 | Comments: countc1d - count lines of code & comments |
| 07V11 | Common: inserting common copybooks aids conversions |
| 08V09 | Common_defines: Advantages of common_defines, stub_profile,& common_profile |
| 08V09 | Common_profile: Advantages of common_defines, stub_profile,& common_profile |
| 07V10 | Compare: scripts for various file types |
| 07V10 | Compares: Data File Compares |
| 05V04 | Comparisons: Reverse Conversion & Data File Comparisons |
| 05V08 | Compatibility: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 05V08 | Compatibility: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 08V04 | Compiler: Morada RPG compiler |
| 08V08 | Console: 1st run console log - ABterm lines only |
| 08V08 | Console: log for rerun (after ABterm) |
| 09V01 | Console: log (option prompts) |
| 09V01 | Console: log - options prompt |
| 04V01 | Converter: JCL converter also enhanced |
| 05V02 | Copies: Evaluation copies & Partnerships |
| 04V03 | Copy: Evaluation copy & Partnership Policies |
| 05V03 | Copybook: xcobcopy2 - crossref all PROGRAMS using any 1 COPYBOOK |
| 04V08 | Copybooks: gentest1 - generate test data files based on COBOL copybooks |
| 07V11 | Copybooks: inserting common copybooks aids conversions |
| 06V08 | Correct: uvcp 'tras' to correct zoned signs |
| 08V02 | Count: countc1d - count lines of code & comments |
| 08V02 | Countc1d: - count lines of code & comments |
| 05V07 | Counter: Hit Counter Usage at UVSI |
| 05V07 | Counter: Hit Counter downloadable from UV Software |
| 05V07 | Counter: Visitor Counter for This Year and Last Year |
| 07V08 | Counts: statdir1 - report file counts & KB used in a Parent dir |
| 09V10 | Cron: 'cron mail logs' vs 'logged in user logs' |
| 09V10 | Cron: capturing logs by mail from cron jobs |
| 09V11 | Cron: emailing cron job ERRORS to managers at home |
| 05V03 | Cross: Cross References for COBOL & JCL/scripts |
| 05V03 | Crossref: xcobcopy2 - crossref all PROGRAMS using any 1 COPYBOOK |
| 09V03 | Custmas1: sample cobmap - custmas1 |
| 02V06 | Custom: table1 general purpose job vs custom written jobs |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| 99V01 | D-isam: D-ISAM '.dat' extensions |
| 09V02 | Dat1: genverify1 report for dat1/cm_testuvhdcob |
| 04V08 | Data: gentest1 - generate test data files based on COBOL copybooks |
| 05V04 | Data: Reverse Conversion & Data File Comparisons |
| 07V10 | Data: Data File Compares |
| 08V07 | Data: edt a1 option reduces data file conversion code |
| 99V01 | Data: uvhdcob - data file utility with COBOL field names |
| 08V11 | Database: MySQL DataBase Tutorial & Test/Demo |
| 08V11 | Database: uycopy API for DataBase/Table access |
| 09V05 | Database: COBOL access to MySQL DataBase via ODBC |
| 04V03 | Datacnv1: DATAcnv1 enhanced |
| 02V12 | Datacnv1.doc: DATAcnv1.doc |
| 09V01 | Datafile: acum1 - accumulate any 1 field in any datafile |
| 04V11 | Demo: input file tf/test100a |
| 08V11 | Demo: MySQL DataBase Tutorial & Test/Demo |
| 09V02 | Demo: uvhdcob - test/demo 'verify' command |
| 09V06 | Demo: Micro Focus COBOL SCREEN program demo |
| 09V01 | Depending: selectf1 - select records depending on field value |
| 06V02 | Design: RAID, Partitioning,& File System Design |
| 07V06 | Detect: ftpgdg1 - detect/rename FTP'd files |
| 07V08 | Dir: statdir1 - report file counts & KB used in a Parent dir |
| 08V01 | Directory: statdir1 - Directory Statistics |
| 09V06 | Display: Micro Focus COBOL Accept/Display Documentation |
| 99V01 | Display: uvhdcob - sample display |
| 02V12 | Doc: HTMLjobs - Convert Text Doc to HTML |
| 03V04 | Documentation: TestDemo.doc - new section of documentation |
| 05V02 | Documentation: Documentation Re-Organized |
| 05V07 | Documentation: Mainframe Conversion Documentation Reorganized |
| 09V06 | Documentation: Micro Focus COBOL Accept/Display Documentation |
| 03V04 | Dos: Windows/DOS versions of Vancouver Utilities |
| 05V07 | Downloadable: Hit Counter downloadable from UV Software |
| 08V07 | Edt: a1 option reduces data file conversion code |
| 09V11 | Emailing: cron job ERRORS to managers at home |
| 04V01 | Enhanced: JCL converter also enhanced |
| 04V03 | Enhanced: DATAcnv1 enhanced |
| 06V02 | Enhanced: JCL Conversions enhanced |
| 06V02 | Enhanced: uvhd enhanced |
| 07V11 | Enhanced: Mainframe Conversion Enhanced |
| 08V04 | Enhanced: uvhd scan/replace enhanced |
| 08V08 | Enhanced: GDG file reporting enhanced |
| 09V02 | Enhanced: CMPjobs enhanced |
| 04V01 | Enhancements: Enhancements to uvsort |
| 04V10 | Enhancements: Oct 2004 Enhancements to uvsort |
| 07V06 | Enhancements: GDG Enhancements |
| 08V03 | Enhancements: Optional Enhancements during Conversion |
| 08V08 | Entries: notes re history entries |
| 06V07 | Env: 'profiles' provided in /home/uvadm/env |
| 09V11 | Errors: emailing cron job ERRORS to managers at home |
| 04V03 | Evaluation: Evaluation copy & Partnership Policies |
| 05V02 | Evaluation: Evaluation copies & Partnerships |
| 06V10 | Example: Good example of Vancouver Utilities |
| 08V12 | Exec: Pro-COBOL EXEC SQL API to Oracle DB |
| 07V12 | Extended: RDW support extended to all utilities |
| 99V01 | Extensions: D-ISAM '.dat' extensions |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| 08V05 | Failures: Preventing Nightly Batch Failures |
| 07V06 | Features: GDG Advanced Features (beyond mainframe capability) |
| 07V06 | Features: VU GDG Basic Features |
| 04V10 | Field: sort field type 'g' |
| 09V01 | Field: acum1 - accumulate any 1 field in any datafile |
| 09V01 | Field: selectf1 - select records depending on field value |
| 99V01 | Field: uvhdcob - data file utility with COBOL field names |
| 09V02 | Fields: genverify1 - generate jobs to Verify Packed/Numeric Fields |
| 09V03 | Fields: Generate uvcopy job to acum all numeric fields |
| 09V03 | Fields: genacum2 - generate jobs to accum ALL numeric fields |
| 05V03 | Flow: Job Flow Reports |
| 09V06 | Focus: Micro Focus COBOL Accept/Display Documentation |
| 09V06 | Focus: Micro Focus COBOL SCREEN program demo |
| 07V06 | Ftp: ftpgdg1 - detect/rename FTP'd files |
| 07V06 | Ftpgdg1: - detect/rename FTP'd files |
| 07V06 | Gdg: GDG Advanced Features (beyond mainframe capability) |
| 07V06 | Gdg: GDG Enhancements |
| 07V06 | Gdg: VU GDG Basic Features |
| 08V08 | Gdg: GDG file history actions increased to 30 |
| 08V08 | Gdg: GDG file reporting enhanced |
| 09V03 | Genacum2: - generate jobs to accum ALL numeric fields |
| 02V06 | General: table1 general purpose job vs custom written jobs |
| 04V08 | Generate: gentest1 - generate test data files based on COBOL copybooks |
| 06V07 | Generate: uvhd now has sequence# generate |
| 09V02 | Generate: genverify1 - generate jobs to Verify Packed/Numeric Fields |
| 09V03 | Generate: Generate uvcopy job to acum all numeric fields |
| 09V03 | Generate: genacum2 - generate jobs to accum ALL numeric fields |
| 00V03 | Generator: uvqrpg - report generator |
| 04V08 | Gentest1: - generate test data files based on COBOL copybooks |
| 09V02 | Genverify1: - generate jobs to Verify Packed/Numeric Fields |
| 09V02 | Genverify1: report for dat1/cm_testuvhdcob |
| 06V10 | Good: Good example of Vancouver Utilities |
| 07V11 | Handle: All platforms handle Large Files |
| 07V10 | Handles: uvhd now handles RDW files |
| 07V06 | Handling: IDXf8 Variable Length file handling improved |
| 06V07 | Has: uvhd now has sequence# generate |
| 08V08 | History: GDG file history actions increased to 30 |
| 08V08 | History: notes re history entries |
| 05V07 | Hit: Hit Counter Usage at UVSI |
| 05V07 | Hit: Hit Counter downloadable from UV Software |
| 06V07 | Home: 'profiles' provided in /home/uvadm/env |
| 09V11 | Home: emailing cron job ERRORS to managers at home |
| 02V12 | Html: HTMLjobs - Convert Text Doc to HTML |
| 02V12 | Htmljobs: HTMLjobs - Convert Text Doc to HTML |
| 05V08 | Idxf3: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 05V08 | Idxf3: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 05V08 | Idxf8: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 05V08 | Idxf8: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 07V06 | Idxf8: IDXf8 Variable Length file handling improved |
| 07V06 | Improved: IDXf8 Variable Length file handling improved |
| 08V08 | Increased: GDG file history actions increased to 30 |
| 03V04 | Indexed: support for Variable Length Indexed files |
| 02V06 | Info: jobflow2 - JCL Report with COBOL Info |
| 07V11 | Inserting: common copybooks aids conversions |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| 02V06 | Jobflow2: - JCL Report with COBOL Info |
| 05V02 | Keyword: Permuted Keyword Index |
| 07V11 | Large: All platforms handle Large Files |
| 09V01 | Line: notes re command line options |
| 08V09 | Linux: Profiles are vital for Unix/Linux |
| 99V01 | Locking: File Locking Options for UV Sequential files |
| 07V07 | Log: sample input /var/log/messages |
| 08V08 | Log: 1st run console log - ABterm lines only |
| 08V08 | Log: console log for rerun (after ABterm) |
| 09V01 | Log: console log (option prompts) |
| 09V01 | Log: console log - options prompt |
| 09V10 | Logged: 'cron mail logs' vs 'logged in user logs' |
| 07V07 | Logins: statlogin1 - table summary user logins by month & userid |
| 09V10 | Logs: 'cron mail logs' vs 'logged in user logs' |
| 09V10 | Logs: 'cron mail logs' vs 'logged in user logs' |
| 09V10 | Logs: capturing logs by mail from cron jobs |
| 09V10 | Mail: 'cron mail logs' vs 'logged in user logs' |
| 09V10 | Mail: capturing logs by mail from cron jobs |
| 09V11 | Mail: ssmtp vs mail/sendmail |
| 05V07 | Mainframe: Mainframe Conversion Documentation Reorganized |
| 07V06 | Mainframe: GDG Advanced Features (beyond mainframe capability) |
| 07V11 | Mainframe: Mainframe Conversion Enhanced |
| 08V03 | Mainframe: Mainframe Conversion Aids |
| 08V03 | Mainframe: Preparations for Mainframe Conversion |
| 09V11 | Managers: emailing cron job ERRORS to managers at home |
| 07V07 | Messages: sample input /var/log/messages |
| 09V06 | Micro: Micro Focus COBOL Accept/Display Documentation |
| 09V06 | Micro: Micro Focus COBOL SCREEN program demo |
| 04V03 | Microsoft: Microsoft Windows SFU |
| 07V07 | Month: statlogin1 - table summary user logins by month & userid |
| 08V04 | Morada: Morada RPG compiler |
| 08V07 | Most: uvcopy - most powerful Vancouver Utility |
| 06V07 | Multi-client: Multi-Client systems |
| 04V11 | Multi-column: multicol1/2/3 - rearrange files for multi-column printing |
| 04V11 | Multicol1: multicol1/2/3 - rearrange files for multi-column printing |
| 04V11 | Multicol2: output (vertical) |
| 08V11 | Mysql: MySQL C-API sample programs |
| 08V11 | Mysql: MySQL DataBase Tutorial & Test/Demo |
| 09V05 | Mysql: COBOL access to MySQL DataBase via ODBC |
| 03V04 | New: TestDemo.doc - new section of documentation |
| 07V05 | New: backup plan - Part4 of ADMjobs.doc |
| 08V05 | Nightly: Preventing Nightly Batch Failures |
| 06V07 | Now: uvhd now has sequence# generate |
| 07V10 | Now: uvhd now handles RDW files |
| 09V02 | Numeric: genverify1 - generate jobs to Verify Packed/Numeric Fields |
| 09V03 | Numeric: Generate uvcopy job to acum all numeric fields |
| 09V03 | Numeric: genacum2 - generate jobs to accum ALL numeric fields |
| 04V10 | Oct: Oct 2004 Enhancements to uvsort |
| 09V05 | Odbc: COBOL access to MySQL DataBase via ODBC |
| 08V10 | On-site: On-site Conversion Training Plan |
| 06V09 | Option: uvhd option 'z1' for variable length BDW/RDW files |
| 08V07 | Option: edt a1 option reduces data file conversion code |
| 09V01 | Option: console log (option prompts) |
| 08V03 | Optional: Optional Enhancements during Conversion |
| 09V01 | Options: console log - options prompt |
| 09V01 | Options: notes re command line options |
| 99V01 | Options: File Locking Options for UV Sequential files |
| 08V12 | Oracle: Pro-COBOL EXEC SQL API to Oracle DB |
| 06V10 | Overlay: Overlay Printing |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| 09V02 | Packed: genverify1 - generate jobs to Verify Packed/Numeric Fields |
| 07V08 | Parent: statdir1 - report file counts & KB used in a Parent dir |
| 07V04 | Part: VSEJCL.doc Part 4 rewritten |
| 07V05 | Part4: new backup plan - Part4 of ADMjobs.doc |
| 06V02 | Partitioning: RAID, Partitioning,& File System Design |
| 04V03 | Partnership: Evaluation copy & Partnership Policies |
| 05V02 | Partnerships: Evaluation copies & Partnerships |
| 06V07 | Perl: JCL to Perl script conversion |
| 07V04 | Permissions: chmodR2 - change permissions on all files & subdirs |
| 05V02 | Permuted: Permuted Keyword Index |
| 07V05 | Plan: new backup plan - Part4 of ADMjobs.doc |
| 08V10 | Plan: On-site Conversion Training Plan |
| 07V11 | Platforms: All platforms handle Large Files |
| 04V03 | Policies: Evaluation copy & Partnership Policies |
| 08V03 | Preparations: Preparations for Mainframe Conversion |
| 08V05 | Preventing: Preventing Nightly Batch Failures |
| 04V11 | Printing: multicol1/2/3 - rearrange files for multi-column printing |
| 06V10 | Printing: Overlay Printing |
| 08V12 | Pro-cobol: Pro-COBOL EXEC SQL API to Oracle DB |
| 06V07 | Profiles: 'profiles' provided in /home/uvadm/env |
| 08V09 | Profiles: Profiles are vital for Unix/Linux |
| 09V06 | Program: Micro Focus COBOL SCREEN program demo |
| 05V03 | Programs: xcobcopy2 - crossref all PROGRAMS using any 1 COPYBOOK |
| 08V11 | Programs: MySQL C-API sample programs |
| 09V01 | Prompt: console log - options prompt |
| 09V01 | Prompts: console log (option prompts) |
| 06V07 | Provided: 'profiles' provided in /home/uvadm/env |
| 06V02 | Raid: RAID, Partitioning,& File System Design |
| 06V09 | Rdw: uvhd option 'z1' for variable length BDW/RDW files |
| 07V10 | Rdw: uvhd now handles RDW files |
| 07V12 | Rdw: RDW support extended to all utilities |
| 05V02 | Re-organized: Documentation Re-Organized |
| 04V11 | Rearrange: multicol1/2/3 - rearrange files for multi-column printing |
| 09V01 | Records: selectf1 - select records depending on field value |
| 08V07 | Reduces: edt a1 option reduces data file conversion code |
| 05V03 | References: Cross References for COBOL & JCL/scripts |
| 08V11 | References: SQL Book References |
| 07V06 | Rename: ftpgdg1 - detect/rename FTP'd files |
| 05V07 | Reorganized: Mainframe Conversion Documentation Reorganized |
| 08V04 | Replace: uvhd scan/replace enhanced |
| 08V08 | Reporting: GDG file reporting enhanced |
| 08V08 | Rerun: console log for rerun (after ABterm) |
| 09V02 | Response: to search/verify command |
| 05V04 | Reverse: Reverse Conversion & Data File Comparisons |
| 07V04 | Rewritten: VSEDATA.doc rewritten |
| 07V04 | Rewritten: VSEJCL.doc Part 4 rewritten |
| 08V04 | Rpg: Morada RPG compiler |
| 08V08 | Run: 1st run console log - ABterm lines only |
| 07V07 | Sample: input /var/log/messages |
| 07V07 | Sample: output report |
| 08V11 | Sample: MySQL C-API sample programs |
| 09V01 | Sample: report from acum1 |
| 09V03 | Sample: cobmap - custmas1 |
| 09V03 | Sample: report |
| 99V01 | Sample: uvhdcob - sample display |
| 08V04 | Scan: uvhd scan/replace enhanced |
| 09V06 | Screen: Micro Focus COBOL SCREEN program demo |
| 09V02 | Search: response to search/verify command |
| 03V04 | Section: TestDemo.doc - new section of documentation |
| 09V01 | Select: selectf1 - select records depending on field value |
| 09V01 | Selectf1: - select records depending on field value |
| 09V11 | Sendmail: ssmtp vs mail/sendmail |
| 06V07 | Sequence: uvhd now has sequence# generate |
| 99V01 | Sequential: File Locking Options for UV Sequential files |
| 04V03 | Sfu: Microsoft Windows SFU |
| 06V08 | Signs: uvcp 'tras' to correct zoned signs |
| 05V07 | Software: Hit Counter downloadable from UV Software |
| 04V10 | Sort: field type 'g' |
| 08V11 | Sql: SQL Book References |
| 08V12 | Sql: Pro-COBOL EXEC SQL API to Oracle DB |
| 09V11 | Ssmtp: vs mail/sendmail |
| 07V08 | Statdir1: - report file counts & KB used in a Parent dir |
| 08V01 | Statdir1: - Directory Statistics |
| 08V01 | Statistics: statdir1 - Directory Statistics |
| 07V07 | Statlogin1: - table summary user logins by month & userid |
| 08V09 | Stub_profile: Advantages of common_defines, stub_profile,& common_profile |
| 07V04 | Subdirs: chmodR2 - change permissions on all files & subdirs |
| 07V07 | Summary: statlogin1 - table summary user logins by month & userid |
| 03V04 | Support: for Variable Length Indexed files |
| 07V12 | Support: RDW support extended to all utilities |
| 06V02 | System: RAID, Partitioning,& File System Design |
| 06V07 | Systems: Multi-Client systems |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| 07V07 | Table: statlogin1 - table summary user logins by month & userid |
| 08V11 | Table: uycopy API for DataBase/Table access |
| 02V06 | Table1: general purpose job vs custom written jobs |
| 02V06 | Tablejobs.doc: TABLEjobs.doc |
| 04V08 | Test: gentest1 - generate test data files based on COBOL copybooks |
| 08V11 | Test: MySQL DataBase Tutorial & Test/Demo |
| 09V02 | Test: uvhdcob - test/demo 'verify' command |
| 04V11 | Test100a: demo input file tf/test100a |
| 03V04 | Testdemo.doc: TestDemo.doc - new section of documentation |
| 05V08 | Testing: IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 05V08 | Testing: IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 02V12 | Text: HTMLjobs - Convert Text Doc to HTML |
| 08V10 | Training: On-site Conversion Training Plan |
| 06V08 | Tras: uvcp 'tras' to correct zoned signs |
| 08V11 | Tutorial: MySQL DataBase Tutorial & Test/Demo |
| 04V10 | Type: sort field type 'g' |
| 07V10 | Types: compare scripts for various file types |
| 08V09 | Unix: Profiles are vital for Unix/Linux |
| 07V07 | User: statlogin1 - table summary user logins by month & userid |
| 09V10 | User: 'cron mail logs' vs 'logged in user logs' |
| 07V07 | Userid: statlogin1 - table summary user logins by month & userid |
| 03V04 | Utilities: Windows/DOS versions of Vancouver Utilities |
| 05V08 | Utilities: 'uv' utilities |
| 05V08 | Utilities: 'ux' utilities |
| 06V10 | Utilities: Good example of Vancouver Utilities |
| 07V12 | Utilities: RDW support extended to all utilities |
| 99V10 | Utilities: 'uvqrpg' report writer for the Vancouver Utilities |
| 08V07 | Utility: uvcopy - most powerful Vancouver Utility |
| 99V01 | Utility: uvhdcob - data file utility with COBOL field names |
| 06V07 | Uvadm: 'profiles' provided in /home/uvadm/env |
| 00V03 | Uvcopy: 64 bit accumulators for uvcopy & uvqrpg |
| 08V07 | Uvcopy: - most powerful Vancouver Utility |
| 09V03 | Uvcopy: Generate uvcopy job to acum all numeric fields |
| 06V08 | Uvcp: 'tras' to correct zoned signs |
| 06V02 | Uvhd: enhanced |
| 06V07 | Uvhd: now has sequence# generate |
| 06V09 | Uvhd: option 'z1' for variable length BDW/RDW files |
| 07V10 | Uvhd: now handles RDW files |
| 08V04 | Uvhd: scan/replace enhanced |
| 09V02 | Uvhdcob: 'verify' command added to 'uvhdcob' |
| 09V02 | Uvhdcob: - test/demo 'verify' command |
| 99V01 | Uvhdcob: - data file utility with COBOL field names |
| 99V01 | Uvhdcob: - sample display |
| 00V03 | Uvqrpg: 64 bit accumulators for uvcopy & uvqrpg |
| 00V03 | Uvqrpg: - report generator |
| 99V10 | Uvqrpg: 'uvqrpg' report writer for the Vancouver Utilities |
| 05V07 | Uvsi: Hit Counter Usage at UVSI |
| 04V01 | Uvsort: Enhancements to uvsort |
| 04V10 | Uvsort: Oct 2004 Enhancements to uvsort |
| 05V08 | Uxcp: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 05V08 | Uxcp: testing IDXf3/IDXf8 compatibility between MF COBOL & uxcp |
| 08V11 | Uycopy: API for DataBase/Table access |
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| 09V01 | Value: selectf1 - select records depending on field value |
| 03V04 | Vancouver: Windows/DOS versions of Vancouver Utilities |
| 06V10 | Vancouver: Good example of Vancouver Utilities |
| 08V07 | Vancouver: uvcopy - most powerful Vancouver Utility |
| 99V10 | Vancouver: 'uvqrpg' report writer for the Vancouver Utilities |
| 07V07 | Var: sample input /var/log/messages |
| 03V04 | Variable: support for Variable Length Indexed files |
| 06V09 | Variable: uvhd option 'z1' for variable length BDW/RDW files |
| 07V06 | Variable: IDXf8 Variable Length file handling improved |
| 07V10 | Various: compare scripts for various file types |
| 09V02 | Verify: 'verify' command added to 'uvhdcob' |
| 09V02 | Verify: genverify1 - generate jobs to Verify Packed/Numeric Fields |
| 09V02 | Verify: response to search/verify command |
| 09V02 | Verify: uvhdcob - test/demo 'verify' command |
| 03V04 | Versions: Windows/DOS versions of Vancouver Utilities |
| 04V11 | Vertical: multicol2 output (vertical) |
| 05V07 | Visitor: Visitor Counter for This Year and Last Year |
| 08V09 | Vital: Profiles are vital for Unix/Linux |
| 07V04 | Vsedata.doc: VSEDATA.doc rewritten |
| 07V04 | Vsejcl.doc: VSEJCL.doc Part 4 rewritten |
| 03V04 | Windows: Windows/DOS versions of Vancouver Utilities |
| 04V03 | Windows: Microsoft Windows SFU |
| 99V10 | Writer: 'uvqrpg' report writer for the Vancouver Utilities |
| 02V06 | Written: table1 general purpose job vs custom written jobs |
| 07V11 | Www_uvsoftware.ca: is the 'BIBLE' |
| 05V03 | Xcobcopy2: - crossref all PROGRAMS using any 1 COPYBOOK |
| 05V07 | Year: Visitor Counter for This Year and Last Year |
| 05V07 | Year: Visitor Counter for This Year and Last Year |
| 06V08 | Zoned: uvcp 'tras' to correct zoned signs |
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page