| Part_1 | - Easytrieve converter introduction | 
| - sample Easytrieve source file to illustrate conversion | |
| - converter output equivalent (uvcopy job) | |
| - Setup required for Easytrieve conversion | |
| - Libraries & Data directories required | |
| - Converting Easytrieve - 1 program at a time | |
| - Converting Easytrieve - ALL programs in directory | |
| - Executing uvcopy job converted from Easytrieve | |
| - test/data Input/Output files illustrated | |
| - possible manual changes required after conversion | 
| Part_2 | - QUIKJOB (documentation not provided here) | 
| - see https://www.uvsoftware.ca/jclcnv1demo.htm#6B1 - 6B4 | 
| Note | 
 | 
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
| 1A1. | Easytrieve converter introduction | 
| 1B1. | sample Easytrieve source file to illustrate conversion | 
| 1B2. | converter output equivalent (uvcopy job) | 
| 1C0. | Converting Easytrieve source to uvcopy code | 
| 1C1. | Pre-Requisites, setup profiles as per ADMjobs.doc | 
| 1C2. | Setup required for Easytrieve conversion | 
| 1C3. | Libraries & Data directories required for Easytrieve conversion | 
| 1D1. | Converting Easytrieve - 1 program at a time | 
| 1D2. | Converting Easytrieve - ALL programs in directory | 
| 1D3. | Possible manual changes after auto-conversion | 
| 1E1. | Executing uvcopy job (eztlist1) converted from Easytrieve | 
| 1E2. | test/data Input/Output files illustrated | 
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
'ez2uvcopy' is a Vancouver Utility (from UV Software) to convert CA Easytrieve to the uvcopy interpretive language. 'uvcopy' is a powerful data manipulation language that was developed to replace various mainframe utilities when converting to Unix or Linux systems.
uvcopy provides functions that are non-existent in the usual Unix utilities:
uvcopy is somewhat similar to the IBM 360 assembler language, so if you have a mainframe background the code will look familiar to you. In addition to the usual basic instructions, uvcopy has many powerful instructions for scan/replace, table processing, etc.
uvcopy has the power of assembler but without the complexity of compiling since it is 'interpretive' (just edit the parameter file & rerun).
There is a lot of documentation for uvcopy, but if you have a mainframe background, I think you could get a quick start by studying the examples given in UVjobs1.htm. Then you could run the 'eztlist1' conversion given in Part 1 of this EZTRVetc.doc & refer to the uvcopy3.htm instruction manual as required.
install.htm - install guide for Vancouver Utilities on Unix/Linux ADMjobs.htm - Site Admin (backups, cron scheduling, console logs) UVjobs1.htm - pre-programmed uvcopy jobs to Demo & Customize uvcopy1.htm - uvcopy introduction, file declarations, etc uvcopy2.htm - work areas,$symbols,options,patterns,registers,etc uvcopy3.htm - detailed instruction reference (with alpha index) CNVaids.htm - Mainframe JCL/COBOL/DATA Conversion Aids JCLcnv1demo.htm - Converting MVS JCL to Unix/Linux Korn shell scripts VSEJCL.htm - Converting VSE JCL to Unix/Linux Korn shell scripts
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
* EZTLIST1 - CREATE CUSTOMER TELEPHONE LIST * - cust#, name, tel#, contact * - demo EasyTrieve conversion to uvcopy * - by Owen Townsend, UV Software, Oct2011, updt Mar2015 FILE CUSTMAS SYS004 F(256) CUS-REC 1 256 A CUS-NO 1 6 N CUS-NAME 11 25 A CUS-ADRS 36 25 A CUS-CITY 61 17 A CUS-PROV 78 02 A CUS-POSTAL 81 10 A CUS-TEL 91 12 A CUS-CONTACT 103 18 A * FILE EZTLIST SYSLST F(80) TEL-REC 1 80 A TEL-CUSNO 1 6 N TEL-NAME 9 25 A TEL-NUM 36 12 A TEL-CONTACT 50 68 A REC-COUNT W 5 N * JOB INPUT CUSTMAS FINISH CUSTEOF MOVE SPACES TO TEL-REC MOVE CUS-NO TO TEL-CUSNO MOVE CUS-NAME TO TEL-NAME MOVE CUS-TEL TO TEL-NUM MOVE CUS-CONTACT TO TEL-CONTACT ADD 1 TO REC-COUNT PUT EZTLIST GO TO JOB * CUSTEOF. PROC DISPLAY 'TOTAL RECORDS' REC-COUNT END-PROC
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
 # eztlist1 - uvcopy job converted from EasyTrieve by Vancouver Utilities
 #         - ez2uvcopy run on 2015/03/26_18:29:34 at UV_Software
 # See documentation at www.uvsoftware.ca/eztrvetc.htm
 # - or www.uvsoftware.ca/jclcnv1demo.htm#Part_6
 #
 was=a8192b8192c8192d8192e8192f8192g8192h8192q24000s8192  #<-- set area memories
 #* eztlist1 - create customer telephone list
 #* - cust#, name, tel#, contact
 #* - demo easytrieve conversion to uvcopy
 #* - by owen townsend, uv software, oct2011, updt mar2015
 #file custmas sys004 f(256)
 fili1=?${CUSTMAS},rcs=00256,typ=RSF
 #*
 #file eztlist syslst f(80)
 filo2=?${EZTLIST},rcs=00080,typ=LSTt
 #*
 lodc1=q0(48)
 $custmas                         =a0(256c)
 $cus-rec                         =a0(256c)
 $cus-no                          =a0(6z)
 $cus-name                        =a10(25c)
 $cus-adrs                        =a35(25c)
 $cus-city                        =a60(17c)
 $cus-prov                        =a77(2c)
 $cus-postal                      =a80(10c)
 $cus-tel                         =a90(12c)
 $cus-contact                     =a102(18c)
 $eztlist                         =b0(80c)
 $tel-rec                         =b0(80c)
 $tel-cusno                       =b0(6z)
 $tel-name                        =b8(25c)
 $tel-num                         =b35(12c)
 $tel-contact                     =b49(68c)
 $rec-count                       =s0(5z)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
 @run
         opn    all
 #job input custmas finish custeof
 job010  get    fili1,a0            get next record
         skp<=  2
         bal    custeof
         skp    job900
         add    $ca1,1              count records in file
 #
         clr    $tel-rec,' '
         mvf    $tel-cusno,$cus-no
         mvf    $tel-name,$cus-name
         mvf    $tel-num,$cus-tel
         mvf    $tel-contact,$cus-contact
         add    $rec-count,1
         put    filo2,b0
         skp    job010
 #*
 #*EJect
 custeof nop
         msgv1 ' TOTAL RECORDS $rec-count '
         ret=
 nofin   ret=                       dummy subrtn if no FINISH on job
 job900  cls    all                 end all files
         eoj
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
Easytrieve conversions will probably be performed following the JCL conversions (documented in JCLcnv1demo.htm &/or VSEJCL.htm).
JCLcnv1demo.htm#Part_3 instructed you to setup user 'mvstest' (/home/mvstest), copy supplied demo files from /home/uvadm/mvstest/..., run the conversions,& execute the resulting Korn shell scripts.
If you did the above, you are ready to begin the Easytrieve conversions, because mvstest includes the directories & files required for the easytrieve test/demos.
If you have not already setup 'mvstest', the following instructions will show you how to setup 'testlibs' & 'testdata' in your homedir, copy the demo files, run the conversions,& execute the resulting uvcopy jobs.
The following instructions will assume your userid is 'userxx'.
You must setup your profile to use the Vancouver utilities as instructed in admjobs.htm#Part_1.
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
| Note | 
 | 
#1. Login userxx ---> /home/userxx
 #2a. mkdir testlibs   - make superdir for library subdirs
      ==============
 #2b. mkdir testlibs   - make superdir for library subdirs
      ==============
 #3a. cdl   <-- change into libraries using alias 'cdl' (in common_profile)
      ===       alias cdl='cd $RUNLIBS' & RUNLIBS=$HOME/testlibs
 #3b. mkdir ezt0 ezt1 ezt3 ezts tmp
      =============================
      - make subdirs required for Easytrieve conversions
      - see illustrations & descriptions on the next page
 #3c. cp $UV/mvstest/testlibs/ezt0/* ezt0
      ===================================
      - copy supplied test/demo easytrieve source files
      - use $UV (usually /home/uvadm) in case your site is non-standard
 #4a. cdd   <-- change into libraries using alias 'cdd' (in common_profile)
      ===       alias cdd='cd $RUNDATA' & RUNDATA=$HOME/testdata
 #4b. mkdir data1 jobtmp rpts tmp
      ===========================
      - make subdirs required for Easytrieve executions
      - see illustrations & descriptions on the next page
 #4c. cp $UV/mvstest/testdata/data1/* data1
      =====================================
      - copy supplied test/demo DATA files
      - eztlist1 uses only data1/customer.master
      - but copies several small files in case of other demos
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
 /home/userxx            <-- can setup in your home-dir
 :----testlibs             - profile contains: export RUNLIBS=$HOME/testlibs
 :    :----ezt0            - subdir for Easytrieve source from the mainframe
 :    :     :----eztlist1  - Easytrieve source for demo
 :    :----ezt1            - cleaned up source (col 73-80 cleared)
 :    :----ezt2            - converter output (uvcopy jobs)
 :    :----ezts            - copy here before any changes
 :    :                    - protect overwriting edits on conversion reruns
 :    :----tmp             - subdir often required by Vancouver Utilities
                           - to keep working directory clean
       :----testdata - profile: export RUNDATA=$HOME/testdata : :----data1 - subdir for data files : : :----customer.master - input for eztlist1 : : :----customer.phone.list - output report : :----rpts : : :----customer.phone.list - optional, reports in separate subdir : : : :----tmp - subdir required for 'uvhd' etc
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The following Operating Instructions are based on the supplied demo 'eztlist1' which was listed on page '1B1' & the expected converter output on page '1B2'.
#1. Login userxx ---> /home/userxx
 #2. cdl   <-- change into libraries using alias 'cdl' (in common_profile)
     ===       alias cdl='cd $RUNLIBS' & RUNLIBS=$HOME/testlibs
 #3. uvcopy cleanup,fili1=ezt0/eztlist1,filo1=ezt1/eztlist1,uop=q0i7g8n1
     ===================================================================
     - cleanup mainframe easytrieve source (clear cols 73-80)
 #4. uvcopy ez2uvcopy,fili1=ezt1/eztlist1,filo1=ezt2/eztlist1
     ========================================================
     - convert mainframe easytrieve source to uvcopy code
 #5. cp ezt2/eztlist1 ezts
     =====================
     - copy to ezts before any changes that may be required
     - protects overwriting your edits in case of conversion reruns
| Note | 
 | 
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The operating instructions to convert ALL files in a directory are actually easier than for 1 file at a time, because we only need to specify the directory names (vs individual files).
Note that 'uvcopy' is replaced by 'uvcopyx' which is a script that repeats the specified uvcopy job (cleanup or ez2uvcopy) for all files in the directory.
#1. Login userxx ---> /home/userxx
 #2. cdl   <-- change into libraries using alias 'cdl' (in common_profile)
     ===       alias cdl='cd $RUNLIBS' & RUNLIBS=$HOME/testlibs
 #3. uvcopyx cleanup ezt0 ezt1 uop=q0i7g8n1
     ======================================
     - cleanup mainframe easytrieve sources (clear cols 73-80)
 #4. uvcopyx ez2uvcopy ezt1 ezt2 uop=q0i7
     ====================================
     - convert mainframe easytrieve sources to uvcopy jobs
 #5. cp ezt2/* ezts  <-- do NOT do this
     ==============
| Note | 
 | 
 #5a. cp ezt2/eztlist1 ezts
      =====================
      - copy 1 at a time only when we ready to edit/test/debug each job
      - protects overwriting your edits in case of conversion reruns
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
After automatic conversion by 'ez2uvcopy', many jobs will execute with no manual changes, but some may require changes. Here are the possible changes we are aware of & some of these may be automated in future.
    IF FIELDA EQ 'A', 'B', 'C'   <-- easytrieve
    cmc $fielda,'A'              <-- auto conversion to uvcopy
    tst $fields,'ABC'            <-- manual correction
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
#1. login userxx --> /home/userxx
 #2. cdd   <-- change into data dirs using alias 'cdd' (in common_profile)
     ===       alias cdd='cd $RUNDATA' & RUNDATA=$HOME/testdata
#3. Export Logical filenames to Physical filenames
 #3a. export CUSTMAS=data1/customer.master     <-- demo file supplied
      ====================================       - see listing below
 #3b. export EZTLIST=rpts/customer.phone.list  <-- output file
      -======================================
The converted uvcopy job (listed on page '1B2') defines the files as:
       fili1=${CUSTMAS} <-- $symbol replaced by export value from above
       filo1=${EZTLIST} <-- $symbol replaced by export value from above
 #4. uvcopy eztlist1    <-- execute the job using exported filenames
     ===============
 #4a. uvcopy eztlist1,fili1=data1/cutsomer/master,filo1=rpts/customer.phone.list
      ==========================================================================
See Input records & Output report listed on teh next page -->
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page
The input file is provided in /home/uvadm/dat1/custmas1. The same file is also provided in /home/uvadm/mvstest/testdata/data1/customer.master for the test/demo. This file contains 24 packed decimal fields & cannot be displayed or printed by normal unix/linux utilities (vi,lp,etc). Here is the 'uvhd' of first record:
uvhd dat1/custmas1 r256 =======================
                   10        20        30        40        50        60
 r#     1 0123456789012345678901234567890123456789012345678901234567890123
        0 130140    EVERGREEN MOTORS LTD.    1815 BOWEN ROAD          NANA
          3333332222454545444244545524542222233332445442544422222222224444
          130140000056527255E0DF4F230C44E0000181502F75E02F140000000000E1E1
       64 IMO          BC V9S1H1    250-754-5531 LARRY WRENCH     ..4V|...
          4442222222222442535343222233323332333324455525544442222201357000
          9DF00000000002306931810000250D754D55310C12290725E38000000246C000
      128 .........W0....`........)X}..f3.....\.................4V}...f...
          0000000005300016000000002570063100095000000000000000013570016000
          0C0000C0270D0540C0000C0098D0263C0444C0000C0000C0000C0246D0056C00
      192 ...............................f.....<........f.C 19950531
          0000008900000000880000000018000680001300000000694233333333222222
          00C0026C0000C0023C0000C0083C0056D0012C0000C0016D3019950531000000
          
 130140  EVERGREEN MOTORS LTD.      250-754-5531
 132588  GEECOE GENERATOR SERVICES  604-278-4488
 139923  JOHNSTONE BOILER & TANKS   604-320-1845
 142175  LILLY ELECTRIC (1973) LTD  604-534-9787
 145264  MAGRATH SUPPLIES LTD.      250-843-2987
 147615  O'CONNER R.V. CENTRE       604-858-4161
      - - - etc (22 lines removed) - - -
 318833  TOP NOTCH CONSTRUCTION     403-385-2965
 400002  ACKLANDS LTD               250-705-2583
 401210  COAST RANGE CONSTRUCTION   604 681 2626
 402875  HULL, DON & SONS LTD.      250-836-2964
 403887  MILNER, LARRY              250-351-9472
 406082  PRECAM RENTALS LTD:        250-637-6351
         TOTAL RECORDS              00032
Goto: Begin this doc , End this doc , Index this doc , Contents this library , UVSI Home-Page