Notes - jclcnvbrief.doc being updated

jclcnvbrief.htm is intended to be a simpler more concise version of 'jclcnv1demo.htm' & jclcnvtest.htm. As of April 2020 jclcnvbrief.doc has parts 0,1,2; parts 3,4,5,,6 of jclcnvtest.doc were saved separately to be updated & added back to jclcnvbrief.doc.

Part_1 (preparation for JCL conversion) & Part_2 (JCL conversion procedures) are brief reviews of more extensive documentation in jclcnv1demo.htm

Note that extension .htm refers to the text version of documentation & extension .htm refers to the HTML version on the uvsoftware website. For example, the HTML link to jclcnv1demo.doc is https://jclcnv1demo.htm.

JCL Conversion - contents Parts 0,1,2


Part_0 - Vancouver Utilities Documentation relevant to JCL/script testing.

Part_1 - Preparation for JCL conversion
- Brief review of procedures documented in jclcnv1demo.htm
- Installing Vancouver Utilties
- Setting up user accounts & profiles
- $RUNLIBS & $RUNDATA environmental variables to define locations
  of testlibs & testdata to allow multiple sets on 1 computer
- Separate $RUNDATA's avoid conflicts for programmer testing

Part_2 JCL conversion procedures
- setting up directories for testlibs & testdata
 JCL conversion options control-file --> $RUNLIBS/ctl/jclunixop51
- options a-z allow sites to select desired JCL conversion behaviours
 scripts for JCL conversion, all or 1 at a time
 jcl2ksh51A - script to convert ALL JCL
- jcl0 -----------> jcl1 -------> jcl2 ---------> jcl3 ----> jcl4
  mainframe cleanup, expandProcs, JCL to scripts, modify for java
 jcl2ksh51 - script to convert 1 JCL at a time vs all

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

jclcnvbrief.doc - Contents (continued)

Note
  • Parts 3,4,5,6 are temporarily separated & being updated
  • will be added back soon
  • meanwhile see similar doc in uvsoftware.ca/jclcnv1demo.htm
  • This jclcnvbrief.doc is intended to be a simpler more concise
    version of jclcnv1demo.htm

Part_3 - JCL detailed Conversion & Test procedures
- reconvert mainframe JCL to Unix scripts
- jcl0 ----> jcl1 ------> jcl2 ---------> jcl3 ----------> jcl4 ----> jcls
  cleanup, expandProcs, JCL to scripts, java option, executables
- explain conversions from JCL to ksh scripts
- copy jcl3 or jcl4 to jcls for execution (only jcls is in $PATH)

Part_4 - JCL Conversion & Test procedures for JCL/scripts requiring manual changes.
- Most SORT functions (INCLUDE,OMIT,INREC,OUTREC,BUILD,REFORMAT,etc)
  are converted automatically to uvsort equivalents
- Complex functions such as (JOIN/JOINKEYS, IFTHEN, PARSE) require addition
  of a uvcopy procedure to supplement uvsort.
- will show JCL, script, uvcopy supplement,& joblog for some samples
- will execute with the joblog script to capture logs

Part_5 - JCL Converstion Testing Aids & Tips
- cross-references, programs, files, parms, procs, etc
- JCL statistics, table summaries of various items

Part_6 - uvhelp menus to find various aids (both unix & Vancouver Utilities)

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

Part_0. Relevant Vancouver Utilities Documentation

Here are links to Vancouver Utilities Documentation relevant to JCL conversion.


#01. 'https://uvsoftware.ca/install.htm'
==================================
Install Vancouver Utilities

#02. 'https://uvsoftware.ca/jclcnv1demo.htm'
======================================
JCL Conversion - the 'LONG' version

#03. 'https://uvsoftware.ca/jclcnv.htm'
==================================
JCL Conversion - a 'SHORTER' more concise version
(not yet complete as of May 2020)
*** THIS documentation ***

#04. 'https://uvsoftware.ca/uvdemos.htm'
 ==================================
- Vancouver Utilities for any Unix/Linux site
- minimizing JCL conversion & maximizing General Purpose use
- many useful command line utilities & scripts
- Selectjobs, Tablejobs, UVscripts
- presented in a demo/tutorial manner
- run the comamnds & see if your outputs matches expected results
- 'UVdemos' is a great place to start exploring Vancouver Utilities

#05. 'https://uvsoftware.ca/uvhelp.htm'
 =================================
- command line menus to most useful utilities
- both unix system utilities & Vancouver Utilities
- handy way to find the syntax of many useful commands
- just enter --> uvhelp <-- at your shell prompt

#06. 'https://uvsoftware.ca/jclcnv3aids.htm'
======================================
Testing aids & utilties that may assist JCL conversions

#07. 'https://uvsoftware.ca/uvtrain.htm'
 ==================================
 Vanvouver Utilities Training Guide
- for uvsort, uvcp, uvcopy, uvhd, uvlist
- examples & exercises

#08. 'https://uvsoftware.ca/scripts1.htm'
 ===================================
 many usefull scripts calling both unix utilities & Vancover Utiliites
- just a few examples are: renaming files,
- counting lines in all files in directory
- counting files in all subdirs of a superdir
- running unix 'diff' for all files in 2 directories
- listing, moving, removing files older than a number of days, etc

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

Part0 Relevant Vancouver Utilities Documentation (continued)


#09. 'https://uvsoftware.ca/uvsort.htm'
 =================================
- Vancouver Utility replacement for mainframe SORT
- JCL converter automatically converts SORT steps to uvsort syntax
- handles all but a few complex DFSORT functions such as JOIN & PARSE
  which are handled by uvcopy with some manual cccoding required

#10. 'https://uvsoftware.ca/uvcp.htm'
 ===============================
- Vancouver Utility replacement for IDCAMS, IEBGENER, etc
- JCL converter converts IDCAMS,IEBGENER,etc to uvcp
- can select/delete records, reformat records, etc

#11. 'https://uvsoftware.ca/uvcopy1.htm'
 ==================================
- most powerful Vancouver Utility
- replaces complex mainframe utilities
- documentation in 3 parts

#12. 'https://uvsoftware.ca/uvcopy2.htm'
 ==================================
- uvcopy functions (vs instrucitons in uvcopy3)
- file declarations, file types,
- options, work areas, variable names

#13. 'https://uvsoftware.ca/uvcopy3.htm'
 ==================================
- uvcopy instructions (over 100 instructions)
- uvcopy an extremely powerful data manipulation utility
- the power of assembler language without the complexity
- interpretive, just create/modify a parameter file & execute it

#14. 'https://uvsoftware.ca/uvhd.htm'
 ===============================
- interactive data file investigation utiltiy
- displays records in 'vertical hexadecimal'
- great for mainframe type files with packed/binary data
- browse,search,update,select,print,etc
- most customer's favorite utility

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

Part_1. Preparation for JCL conversion

Part1 Preparation for JCL conversion - Contents


1A1. uvadm - Vancouver Utility home directory

1B1. 'profiles' provided in /home/uvadm/env

1C1. .bash_profile for userxx

1C2. common_profile_xxx for client xxx

1D1. RUNLIBS & RUNDATA determine PATHs to programs/scripts & data

1D2. Advantages of stub_profile,& common_profile

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

1A1. uvadm - Vancouver Utility home directory

We assume you have already installed the Vancouver Utilities as documented at https://uvsoftware.ca#install.htm.

uvadm - Vancouver Utility home directory

 /home/uvadm
 :-----bin             <-- binaries (uvcopy,uvsort,etc)
 :-----ctl               - control files for various purposes
 :-----dat1              - test data files to demo various Vancouver Utilities`
 :-----doc               - Vancouver Utilities documentation (text)
 :-----dochtml           - documentation in HTML (same as on www.uvsoftware.ca)
 :-----env          <----- profiles for users, PATHs to utilities & other software
 :-----hdr               - hdr files for C compiles
 :-----htmlcode          - merged into dochtml when text converted to HTML
 :-----lib               - libraries for C compiles (subfunctions,DISAM,etc)
 :-----mf                - MainFrame samples minimized (vs mvstest,vsetest)
 :-----mvstest         <-- test/demos for MVS JCL/COBOL mainframe conversions
 :     :-----...         - many subdirs omitted, see page '3B2'
 :-----pf              <-- Parameter Files for uvcopy & uvqrpg
 :     :-----adm         - administrative jobs
 :     :-----demo        - demo jobs
 :     :-----IBM         - IBM mainframe conversion jobs
 :     :-----util        - utility jobs
 :-----sf              <-- Script Files
 :     :-----adm         - administrative scripts
 :     :-----demo        - demo scripts
 :     :-----IBM         - IBM mainframe conversion scripts
 :     :-----util        - utility scripts
 :-----sfun              - ksh functions used in converted JCL/scripts
 :                       - jobset51,jobend51,exportgen0,exportgen1,logmsg1,etc
 :-----src             <-- Vancouver Utilities C source code
 :-----srcf              - C source for various sub-functions
 :-----tf                - test files for various examples in doc
 :-----tmp               - tmp subdir (test/demo outputs)
 :-----vsetest         <-- test/demos for VSE JCL/COBOL mainframe conversions
 :     :-----...         - many subdirs omitted, see VSEJCL.htm

Note that the uvadm subdirs for 'sf' (script files) & 'pf' (uvcopy parameter files) (or uvcopy jobs) are further sub-directoried as shown above.

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

1B1. 'profiles' provided in /home/uvadm/env

'profiles' provided in /home/uvadm/env

 /home/uvadm/env         <-- profiles provided here
 :-----stub_profile_uv     - copy/rename to .profile (ksh) or .bash_profile (bash)
 :                         - defines RUNLIBS/RUNDATA for programmers & operators
 :-----common_profile_uv <-- common profile (called by stub_profile)
 :                         - defines PATH's etc using $RUNLIBS/$RUNDATA
 /home/appsadm/env       <-- setup user 'appsadm' & copy from /home/uvadm/env/*
 :-----stub_profile_ABC    - customize & copy to homedirs .profile or .bash_profile
 :-----common_profile_ABC  - common profile (called by stub_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 'common_profile' which are stored in /home/appsadm/env/...

  1. The supplied 'stub_profile' is copied to homedirs, renamed as '.bash_profile' for bash shell (Linux) & '.profile' for Korn shell (Unix), and then modified depending on whether the user is a programmer or operator. - defines RUNLIBS as testlibs for programmers OR prodlibs for operators - defines RUNDATA as testdata for programmers OR proddata for operators

  2. 'common_profile' then defines the 'PATH's using $RUNLIBS,$COBDIR,$UV,etc For example: export PATH=$PATH:$RUNLIBS/jcls (converted JCL/scripts). Defines software superdirs (uvadm, COBDIR, ORACLE_BASE, ORACLE_HOME, etc)

  3. '$RUNDATA' determines data-file locations indirectly as follows: $RUNDATA defines the superdir housing all data-files. All JCL/scripts call a common function 'jobset51' which changes directory to $RUNDATA (cd $RUNDATA). The JCL converter inserts jobset51 at the begining of all converted JCL/scripts and then addresses all data files relative to $RUNDATA.

Note that stub profiles must call 'common_profile' using '.' (dot execution), which means the 'export's made in the common_profile will still be effective on return to the users profile.

This system is a big advantage for any site with multiple users, it means the sysadmin can update common_profile once in 1 place & those changes are effective for all users.

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

1B2. 'profiles' provided in /home/uvadm/env


 #1. Login userxx --> /home/userxx

 #2. cp $UV/env/stub_profile /home/userxx/.bash_profile
     ===================================================
     - copy UV stub profile overwriting system default

 #3. vi .bash_profile    <-- modify RUNLIBS & RUNDATA definitions
     ================

stub_profile - stripped down version

 # stub_profile_uv - stub_profile for Vancouver Utilities
 #                 - stub_profile calls 'common_profile'
 #
 # common_profile & stub_profile - distributed in $UV/env/...
 # - copy to $APPSADM/env/... (/home/appsadm/env/...) & modify for your site
 # stub_profile defines $RUNLIBS & $RUNDATA for common_profile,
 # - which uses them to define PATHs to libraries & data
 #
 export RUNLIBS=$HOME/testlibs1 # superdir for libraries
 export RUNDATA=$HOME/testdata1 # superdir for datafiles
 export CNVDATA=$HOME/cnvdata1  # superdir for datafile conversions
 #
 echo "Vancouver Utility profile"
 echo "HOSTNAME=$HOSTNAME LoginUser=$LOGNAME"
 echo "RUNLIBS=$RUNLIBS RUNDATA=$RUNDATA"
 #
 . /home/appsadm/env/common_profile_uv  # CHANGED to "appsadm" when profiles copied
 #====================================  # from uvadm/env/ to appsadm/env/
 #Note - the '.' execution of the common_profile is essential
 #     - it allows the many $SYMBOL=... definitions to remain effective
 #       on return to the user's stub_profile (.bash_profile or .profile)
 #     - could replace the '.' with 'source' (but '.' is traditional)
 #
 # - after uvadm install, you should setup appsadm & store env/profiles there
 # - then all user profiles should call common_profile from /home/appsadm/env/...
 # - prevents loss of customized common_profile when new version uvadm installed
 #
 #       ** misc items that user may need to override common_profile defs **
 # export TERM=linux       # TERM - modify depending on your terminal
 # stty erase '^?'         # erase char - modify depending on your terminal
 # stty intr '^C'          # interrupt ^C, (probably already default ?)
 # export UVLPDEST="-dlp0" # default destination for uvlp(uvlist) scripts
 #                         # change to a printer near you & un-comment
 #
 #                       ** user aliases, etc **
 # alias l='ls -l'         # save keystrokes on very often used commands
 # - see common_profile for several more aliases
 # - add more here depending on user preferences
 #
 #                ** Console Logging - optional **
 # - may un-comment several lines here to activate 'console logging'
 # - see details at https://uvsoftware.ca/admjobs.htm_Part_6
 # - the most critical line as follows:
 # --> exec script $LOGDIR/log1/$LOGNAME/$(date +%y%m%d_%H%M%S)

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

1B3. 'profiles' provided in /home/uvadm/env

common_profile - stripped-down version

 # common_profile_xxx - for users of Vancouver Utilities
 #                    - by Owen Townsend, UV Software
 # - distributed in $UV/env/common_profile_uv
 # - copy/rename to $APPSADM/env/common_profile_xxx ('xxx' ID's your organization)
 # - see more at www.uvsoftware.ca/install.htm & www.uvsoftware.ca/admjobs.htm
 #
 # common_profile_xxx - defines search PATHs based on $RUNLIBS & $RUNDATA
 #              defined in user's .bash_profile before calling this commmon_profile
 #
 # stub_profile_xxx - copied to user homedirs & renamed as .profile or .bash_profile
 #                  - defines RUNLIBS & RUNDATA before calling common_profile
 # export RUNLIBS=$HOME/testlibs  #<-- stub_profile_uv definitions
 # export RUNDATA=$HOME/testdata  #  - modify for your site
 #
 # . /home/appsadm/env/common_profile_xxx #<-- must '.' execute common_profile
 # ======================================    - store common_profile in appsadm/env
 #
 #Note - the '.' execution of the common_profile is essential
 # - it allows the many $SYMBOL=... definitions to remain effective
 #   on return to the user's stub_profile (.bash_profile or .profile)
 # - could replace the '.' with 'source' (but '.' is traditional)
 #
 #Note - profiles distributed in $UV/env/... (usually /home/uvadm/env/...)
 # - setup user 'appsadm' & copy $UV/env/* to $APPSADM/env/...
 # - change common_profile_uv to common_profile_xxx where 'xxx' IDs your organization
 # - change stub_profiles to call common_profile from $APPSADM/env/...
 #   (so you will not lose your changes to profiles when new uvadm installed)
 #
 #                  ** begin code for common_profile **
 #
 export UV=/home/uvadm           # UV homedir symbol used below
 export APPSADM=/home/appsadm    # site applications administrator
 export LOGDIR=$APPSADM          # console logging subdirs log1,log2,log3
 #
 # setup PATH for Vancouver Utilities programs & scripts (uvadm & appsadm)
 # - append onto system PATH, using symbols defined above ($UV, $APPSADM, etc)
 export PATH=$PATH:$HOME/bin:$HOME/sf:$APPSADM/bin:$APPSADM/sf:$RUNLIBS/sf
 export PATH=$PATH:$UV/bin:$UV/sf/adm:$UV/sf/demo:$UV/sf/util:$UV/sf/IBM
 export PATH=$PATH:$UV/help
 export PATH=$PATH:/usr/sbin   # add system dir for sendmail, etc
 #
 # setup 'PFPATH' for uvcopy & uvqrpg interpreter to find Parameter Files (jobs)
 export PFPATH=$RUNLIBS/pf,$CNVDATA/pfx3,$RUNLIBS/ezts,$HOME/pf,$APPSADM/pf
 export PFPATH=$PFPATH,$UV/pf/adm,$UV/pf/demo,$UV/pf/util,$UV/pf/IBM
 # - uvcopy accepts ',' delimiters as well as ':' in case of SFU on Windows
 #

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

 #                 ** UV Recommended items **
 umask 002                     # permissions 775 dirs, 664 files
 trm=$(tty)                    # capture terminal device for PS1
 export trmv=${trm#/dev/}      # remove prefix /dev/
 export HOSTNAME               # should already be set
 export HOST1=${HOSTNAME%%.*}  # extract 1st segment of $HOSTNAME
 export PS1='<@$HOST1:$LOGNAME:$PWD> '
 export EDITOR=vi              # for Korn shell history
 export VISUAL=vi              # for Korn shell history
 export HISTSIZE=5000;         # Korn shell history file size
 #
 #                      ** aliases **
 # alias commands to prompt for overwrite (highly recommended)
 # - use option '-f' when you have many files  (rm -f tmp/*, etc)
 alias rm='rm -i'              # confirm removes
 alias mv='mv -i'              # confirm renames
 alias cp='cp -i'              # confirm copy overwrites
 alias l='ls -l'               # save keystrokes
 alias cdl='cd $RUNLIBS'       # quick access to LIBS superdir
 alias cdd='cd $RUNDATA'       # DATA superdir
 alias vi='vim'                # use vim for Linux (huge improvement over vi)
 # alias vi='\vi'              # disable vim if vim not installed
 #
 #                   ** printer stuff **
 # printer destinations for  laser printing scripts
 # - modify UVLPDEST to the network printer closest to you
 export UVLPDEST="-dMS610"      # default dest for uvlp(uvlist) scripts
 export UVLPOPTN="-onobanner"   # for unix/linux (SFU does not allow)
 export UVHDPRINT=uvlp12        # script for uvhd 'i' immediate print command
 #
 #                  ** Microsoft SQL Server **
 # see www.uvsoftware.ca/sqldemo.htm Part6
 export PATH=$PATH:/opt/mssql-tools/bin
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/microsoft/msodbcsql/lib64
 export ODBCSQL="ODBC Driver 13 for SQL Server"
 export DATABASE=testdb   # $(DATABASE) used in table create & load scripts
 export ODBCINI=/etc/odbc.ini
 export ODBCSYSINI=/etc/  #<-- Directory with ODBC config (not File odbcinst.ini)
 #
 #          ** JAVA CLASS_PATH added to common_profile_xxx **
 export CPDIR=/home/classxx/OpenBatch
 export CLASS_PATH="$CPDIR/db2jcc_license_cu.jar:$CPDIR/db2java.zip:$CPDIR/db2jcc.jar\
 :$CPDIR/sqlj.zip:$CPDIR/appbuilder-common.jar\
 :$CPDIR/commons-logging.jar:$CPDIR/log4j-1.2.9.jar\
 :$CPDIR/tcb_bt_r16v01_cmtrbk.jar\
 :$CPDIR/coreBatch.jar"
 export PKG=tcbbt     # define java package name in env-var $PKG
 # java -cp $CLASSPATH $PKG.java_program_name
 #
 # adding user written db2 utility scripts to the PATH
 export PATH=$PATH:$RUNLIBS/db2s
 # named same as mainframe utilities - dsntiaul, dsnutilb, dsnuproc, etc
 #
 #------------------------- end of common_profile ---------------------------

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

1C1. profiles for Vancouver Utilities on Unix/Linux

RUNLIBS determine PATHs to programs,scripts,jcls,etc

The PATH to JCL/scripts depends on $RUNLIBS (testlibs or prodlibs), example:


 export PATH=$PATH:$RUNLIBS/jcls    <-- PATH to JCL/scripts (in common_profile)
 ===============================

RUNDATA determine PATHs to DATA files

'$RUNDATA' determines data-file locations indirectly as follows:

Advantages of RUNLIBS/RUNDATA & stub_profile/common_profile

  1. You never need to change JCL/scripts between TESTING & PRODUCTION.

  2. Programmers execute JCL/scripts from $TESTLIBS/jcls that access data from $TESTDATA/... because their profiles set RUNLIBS/RUNDATA as TESTLIBS/TESTDATA

  3. Operators execute JCL/scripts from $PRODLIBS/jcls that access data from $PRODDATA/... because their profiles set RUNLIBS/RUNDATA as PRODLIBS/PRODDATA

  4. This system could allow testing & production on the same machine. They are usually on separate machines, and this system provides great flexibility for both these situations.

  5. Different programmers can have their own set of TESTDATA simply by changing the definition of RUNDATA in their profile.

  6. On production machines, different operators could operate on different sets of data for different companies on the same machine, using the same JCL/scripts & COBOL programs with no changes required.

  7. The system administrator (appsadm) can make changes in 1 place to affect all users vs having to update profiles in all user homedirs.

  8. The sysadmin would control any updates to common_profile. On test systems the programmers would control updates to their stub_profile.

  9. Programmers have the flexibility required. They can select different sets of testdata by redefining RUNDATA in their profile

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

Part_2. JCL Conversion Procedures

Part2 JCL Conversion Procedures - Contents


2A1. Initial setup of JCL & DATA conversion superdirs & subdirs
- cnvdata/... testdata/... testlibs/...
- could be within your homedir for test/demo/education
- separate directories in separate filesystem for actual conversion project

2B1. JCL conversion Libraries - testlibs/... subdirs for conversion
- multi-step conversions mainframe JCL in jcl0/... to jcls/... scripts

2B2. Library subdirs for production (after conversion)
- many intermediate subdirs not required when conversion complete

2C1. JCL conversion Control-Files $RUNLIBS/ctl/...
- JCL converter collects/encodes info from mainframe JCL
  in ctl/datactl53 to assist JCL convrter conversions to scripts
(record-sizes, file-types, GDGs, etc)
- masterctl51 to supply/modify record sizes, file types, GDGs
  that may not be available in the mainframe JCL
- options for JCL converter

2C2. jclunixop51 - JCL converter options control-file
- options a-z allow sites to select desired JCL conversion behaviours

2C3. Example customizing JCL converter control file options
- can set option 'f3' if your mainframe files have no packed/binary fields
  and not need the packed/binary conversion methods

2D1. Data subdirs testdata/... subdirs for test/demo executions

2E1. JCL Conversion - Detailed Instructions
 JCL converter control file
 jcl2ksh51A - script to convert ALL JCL
jcl0 ----> jcl1 ------> jcl2 ---------> jcl3 ----------> jcl4 ----> jcls
  cleanup, expandProcs, JCL to scripts, java option, executables
 jcl2ksh51 - script to convert 1 JCL at a time vs all

2E2. Re-run PROC expansion only (without re-converting Procs,Parms,Includes)
 jclpx51: jcl1 --> jcl2
- use when PROCs added/modified OR when PROC expander utility modified

2E2. Re-run script conversion (without re-converting Procs,Parms,Includes,Proc expand)
 jclxx51: jcl2 --> jcl3
- use when JCL to script converter modified to improve conversions

2E3. Extra Conversions to call JAVA programs vs COBOL, allow for schedulers, etc
jclex51: jcl3 --> jcl4

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2A1. JCL Conversion Procedures

Initial setup directories for test/demo conversions


 #1. login yourself --> /home/userxx

 #2a. mkdir cnvdata    <-- make superdir for DATA conversion (optional)
 #2b. mkdir testdata   <-- make superdir for DATA subdirs
 #2c. mkdir testlibs   <-- make superdir for JCL/COBOL subdirs (most important)

 #3a. cdc          <-- alias cdd='cd $CNVDATA' --> cd cnvdata
      ====
 #3b. cnvdatadirs  <-- setup subdirs for DATA conversion EBCDIC to ASCII
      ===========    - may not be required if no packed/binary fields

 #4a. cdd          <-- alias cdd='cd $RUNDATA' --> cd testdata
      ====

 #4b. mvsdatadirs  <-- setup DATA subdirs for later execution JCL/scripts
      ===========

 #5a. cdl          <-- alias cdl='cd $RUNLIBS' --> cd testlibs
      ===

 #5b. mvslibsdirs  <-- setup subdirs for JCL & COBOL/Java conversions
      ===========

 #6a. copymvsctls  <-- script to copy control files from /home/uvadm/ctl/*
      ===========      to $RUNLIBS/ctl/...
                     - see copymvsctls at $UV/sf/IBM/...

 #6b. l ctl        <-- list ctlfiles copied to $RUNLIBS/ctl/...
      =====
      drwxrwxr-x 2 uvadm apps  4096 Sep 13 16:13 add
      -rw-rw-r-- 1 uvadm apps 16826 Sep 13 16:12 masterctl51
      -rw-rw-r-- 1 uvadm apps   910 Sep 12 17:43 coboljava2
      -rw-rw-r-- 1 uvadm apps 16826 Sep 15 11:39 datactl53
      -rw-rw-r-- 1 uvadm apps 24594 Sep 12 07:41 jclunixop51

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2B1. JCL Conversion Directories

JCL conversion Libraries

 /home/userxx           <-- homedir for JCL conversions & testing
 :-----testlibs         <-- libraries
 :     :------cbls        - COBOL programs
 :     :------cnvdoc      - documentation re JCL conversion & testing
 :     :------cnvitems    - JCL conversion problems & solutions
 :     :------cnvtest     - JCL/script test procedures & results
 :     :------cpys        - copybooks
 :     :------ctl         - conversion control (jclunixop51,datactl53)
 :     :------db2s        - DB2/SQL scripts to load/unload tables
 :     :------errs        - JCL converter ERROR reports
 :     :------include0    - test/demo INCLUDEs supplied
 :     :------includes    - will be merged with jcl1, output to jcl2
 :     :------jcl0        - mainframe JCLs
 :     :------jcl1        - JCLs cleaned-up 73-80 cleared, names lowercased
 :     :------jcl2        - JCLs with PROCs expanded from procs/...
 :     :------jcl3        - JCLs converted to Korn shell scripts
 :     :------jcl4        - extra/custom conversions depending on site
 :     :------jcl5mod     - JCL/scripts requiring manual changes
 :     :------jcls        - execution directory (scripts from jcl4 & jcl5mod)
 :     :------parm0       - control cards (SORT FIELDS, etc)
 :     :------parm1       - control cards with 73-80 cleared
 :     :------parms       - db2/sql's modified, export delimited inserted
 :     :------proc0       - mainframe PROCs
 :     :------procs       - cleaned-up called by JCL proc expander
 :     :------pf          - misc uvcopy jobs (data file maintenance, etc)
 :     :------pfs         - uvcopy jobs, supplement uvsort for COMPLEX functions
 :     :------rpts        - misc reports, directory lists with line counts, etc
 :     :------rptsjcl     - JCL reports&stats (saved here, since rpts/ stats/ dynamic)
 :     :------sf          - misc scripts assisting conversions & executions
 :     :------sfun        - functions for JCL/scripts (jobset51,exportfile,logmsg,etc)
 :     :------stats       - statistics from runjclstats,runsortstats,runvarstats
 :     :------tmp         - tmp subdir used by uvsort & various conversions
 :     :------xref        - cross-references (see XREFjobs.htm)
 suffix '0' (as in jcl0) indicates the mainframe components before conversion
 - cbl0=COBOL programs, cpy0=copybooks, jcl0=JCLs, proc0=PROCs, parm0=Parms, include0=Includes

suffix 's' (as in jcls) indicates the Final result outputs of conversions. Most of the intermediate subdirs can go away after the conversion is complete.

jcl2ksh51A script converts All


 jcl2ksh51A all   <-- convert ALL JCL thru all steps, as illustrated below
 ==============     - do not run yet, will run on page '2X9'
 proc0 -------> procs   parm0 -------> parms   include0 -------> includes
       cleanup                cleanup                   cleanup
 jcl0 ----> jcl1 --------> jcl2 --------> jcl3 ----------> jcl4 -------> jcls
   cleanup    PROC expand    convert ksh   extra converts  copy to jcls to execute

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2B2. JCL Conversion Directories

subdirs to test JCL conversion problems

During test/debug, it is convenient (for UV Software) to isolate a subset of JCLs for separate conversion & testing. This avoids changing other JCLs until we solve the problem, then we would reconvert all JCLs as above.

 /home/userxx           <-- homedir for JCL conversions & testing
 :-----testlibs         <-- libraries
 :     :                     --- other subdirs not shown (see above) ---
 :     :------jt1        - cleanedup 73-80 cleared, names lowercased
 :     :------jt2        - PROCs expanded from procs
 :     :------jt3        - JCLs converted to Korn shell scripts
 :     :------jt4        - JCL/scripts converted for schedulers
 :     :------jts        - JCL/scripts for execution

Select/Reconvert/Test problem JCLs


 #1. cp jcl1/... jt1/...     <-- copy sample problem JCLs to test dir
     ===================

 #2. vi .../...   <-- fix the problem (JCL converter, ctlfiles, options, etc)
     ==========

 #3. cp jcl1/jclxxx.jcl jt1/  <-- copy problem JCL from jcl1/... to jt1/...
     ======================       for reconversion

 #4. jt1234A all      <-- reconvert problem JCL
     ===========

 #5. jts/jclxxx.ksh   <-- execute script (test/debug)
     ==============

jt1234A script reconverts All

 jt1 ----------> jt2 ---------> jt3 -----------> jt4 -------------> jts
    PROC expand    convert ksh   extra converts  copy to jts to execute

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2B3. JCL Conversion Procedures

library subdirs for production (after conversion)

The previous page illustrated the many library subdirs requiired for conversion There were many because most conversions are multi-stage, but only the final stage subdir is required for production as shown below:

 /home/userxx
 :-----testlibs2        <-- libraries for JCL conversions
 :     :------ctl         - conversion control files (jclunixop51,datactl53I)
 :     :------db2s        - DB2/SQL scripts to load/unload tables
 :     :------parms       - SYSIN modules (control cards)
 :     :------jcls        - JCL/scripts (Korn shells converted from JCLs)
 :     :------pf          - misc uvcopy jobs (data file maintenance, etc)
 :     :------pfs         - uvcopy jobs, supplement uvsort for COMPLEX functions
 :     :------sf          - misc scripts assisting conversions & executions
 :     :------sfun        - functions for JCL/scripts (jobset51,exportfile,logmsg,etc)
 :     :------stats       - statistics from runjclstats,runsortstats,runvarstats
 :     :------tmp         - tmp subdir used by uvsort & misc
 :     :------xref        - cross-refs (JCL/script programs,parms,procs,datafiles,etc)

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2C1. JCL Conversion Procedures

Control Files for JCL Conversion

 /home/userxx/
 :------testlibs                <-- JCL conversion superdir $RUNLIBS
 :      :-----jcl0,jcl1,etc       - many other subdirs not shown here
 :      :-----ctl               <-- Only testlibs/ctl documented here
 :      :     :add/               - subdir for rcs,typ,gdg info assist to info in JCL
 :      :     :------masterctl51  - copied/renamed from datactl53 after 1st JCL conversion
 :      :     :                   - may then modify rcs,typ,gdg to update datactl53
 :      :     :                     for rcs,typ,gdg info not found in the mainframe JCL
 :      :-----cobfil55bI.dat      - used to create datactl53 (if COBOL prgms available)
 :      :-----cobfil55bI.idx
 :      :-----coboljava2          - relates COBOL names to Java names
 :      :-----dataadd51           - ctl/add/masterctl51 & other files combined & loaded to
 :      :-----dataadd52I.dat        Indexed file to update rcs,typ,gdg datactl53
 :      :-----dataadd52I.idx
 :      :-----datacat52I.dat      - datafile info from LISTCAT reports (if available)
 :      :-----datacat52I.idx
 :      :-----datactl53         <-- JCL converter control file, loaded to Indexed file
 :      :-----datactl53I.dat        to supply rcs,typ,gdg to JCL converter
 :      :-----datactl53I.idx
 :      :-----datajcl51           - LRECL, FB/VB extracted from JCL to create
 :      :-----datajcl51a            control file for JCL converter
 :      :-----datajcl51aI.dat
 :      :-----datajcl51aI.idx
 :      :-----datajcl52           - multi step process to create ctlfile for JCL cnv
 :      :-----jclscripts          - list of scripts to replace some mainframe utilities
 :      :-----jclunixop51       <-- JCL converter options file for Linux sites
 :      :     :                   - may need to modify options depending on site
 :      :     :                   - see listing on next page --->
 :      :-----jclunixop53       <-- alternate for AIX sites
 :      :-----rexxprograms        - list of REXX program substitues for some utilities
 :      :-----sortops2.tbl        - list of DFSORT & ICETOOL operations for statistics
 :      :-----utilities           - list of mainframe utilities to be converted

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2C2. JCL Conversion Procedures

JCL Conversion control-file


 jclprocop51:d0h0i0q5y4  #<-- options for jclproc51 (MF & AIX COBOL) (q1->q5 Apr2020)
 # ====================    --> this is '*jclunixop51' for Linux vs 'jclunixop53' for AIX COBOL
 #*$UV/ctl/jclunixop51 - Vancouver Utilities JCL conversions for Linux COBOL/JAVA
 # $UV/ctl/jclunixop53 - Vancouver Utilities JCL conversions for AIX COBOL
 #        *jclprocop51 options (line#01) used by jclproc51 (PROC expand)
 #         jclunixop53 options (line#20) used by jclunix53 (JCL converter for AIX COBOL)
 # ----------------- jclprocop51 options for jclproc51 PROC expansion ------------------
 # d0         - DD overrides inhibited - default OK if you do not use overrides
 # d1         - DD overrides activated - change d0 to d1 if you use DD overrides
 # d4         - debug dump jct1 table before & aafter marksteps1 & after marksteps2
 #   h0       - do NOT replace &symbols in :NOREPLACE: table (near end this file)
 #   h1       - replace all &SYMBOLs if value declared (will be $SYMBOLs in ksh)
 #     i0     - default includes directory is $RUNLIBS/includes (Apr01/2017)
 #     i2     - change includes directory to $RUNLIBS/parms (Apr01/2017)
 #       q1   - remove //* comments from PROCs <-- activated Feb02/18 for Asite
 #       q2   - remove //* comments from JCLs (will be #comments in scripts)
 #       q3   - remove //* comments from Both PROCs & JCLs
 #       q5   - remove //* comments from PROCs if < 4 alphas (drop all '*' lines)
 #         y4 - replace all &symbols with values (vs only on filenames)
 #
 jclunixop51:a2b0c8d0e2f1g1h0i0j0k15l1999m1n3o8p0q0r0s0t15u0v0w0x0y6z0 #<- mvstest options
 #           =========================================================
 # Apr29/20 - file type option changes f1 typ=LST, f3(f1+f2) force typ=LST regardless datactl53I
 # Sep12/19 - j5 to convert COBOL calls to JAVA calls
 # May20/18 - c8 UPPERcase filenames to lookup datactl53I req'd for lowercase filenames
 #  a1                           - EXEC *ABEND* will goto S9900 Abterm
 #  a2                           - minimize ABEND step code (Aug18/13)
 #  a4                           - inhibit ABEND steps (EXEC #commented)
 #  a8                           - inhibit IEFBR14 steps with no DD's (Jun01/12)
 #    b1                         - remove '$$' from '$$SYMBOL$$'s in filenames
 #    b2                         - assign &&/__temp files to data1/__... vs $JTMP/__...
 #      c0                       - all filenames lower case
 #      c1                       - program names UPPER case
 #      c2                       - filenames UPPER case (also uop=l2 jcldata52)
 #      c4                       - control card modulenames UPPER case
 #      c8                       - UPPERcase filenames to lookup datactl53I
 #        d1                     - drop DDNAMES that begin/end with LOAD/LIB
 #        d2                     - drop DSNAMES that begin/end with load/lib
 #        d4                     - used for debug dump in jclproc51
 #        d8                     - inhibit sort field -4 VB/RDW for diff report
 #          e1                   - echo run command to test script w/o programs
 #          e2                   - option '-v' on cp & mv echo to console log
 #            f0                 - default file typ=RSF (allows packed/binary)
 #            f1                 - default uvsort/uvcp file typ=LST
 #            f2                 - over-ride file typ by ctl/datactl53I (if filename match)
 #            f3                 - f1+f2 force typ=LST regardless datactl53I
 #              g0               - new GDGs data/, use exportgen2 vs exportgen1
 #              g1               - new GDGs jobtmp/, move to data/ at Normal EOJ
 #              g2               - new GDGs $RUNDATA/jobtmp/, move to data at EOJ
 #                               - g0g1g2 warnings only, see jobset51/exportgen1
 #               h0              - NO replace for &SYMBOLs in :NOREPLACE: table
 #                                 all other &SYMBOLS replaced if value available
 #               h1              - DO replace the &SYMBOLs in :NOREPLACE: table
 #                                 generate data ctl file with expanded filenames
 #                 i0            - lookup datactl53I for rcs,typ,key (always 2014+)
 #                 i1            - update datactl53I input recsizes from outsizes
 #                 i2            - lookup cobfil55bI for recsize, updt datactl53I if 0
 #                 i4            - update datactl53I w cobfil55bI recsize even if non-zero
 #                 i8            - update datactl53I typ=LSTt if L/46 cobfil55bI
 #                 i16           - update datactl53I input rcs from out even if non-zero
 #                 i32           - set typ=LSTt if recsize 132/133 on SORT,IEBGENER,etc
 #                 i64           - updt data=pb,typ=RSF if input pb & output not (or vv)
 #                   j0          - default COBOL calls as per option 'r'
 #                   j1          - generate JAVA calls (vs COBOL) for COBOLs called directly
 #                   j2          - include -DDDNAME=$DDNAME for each file in step
 #                   j4          - generate JAVA calls for COBOLs called by IKJEFT01
 #                   j8          - change output script file extension from .ksh to .java
 #                   j16         - insert # elif ((S0020 == 4)); then & # alias goto ...
 #                     k1        - FTP: insert 'open' prior to 1st line if IP#
 #                     k2        - FTP: insert 'user' prior 1st word if not cmd
 #                     k4        - copy FTP commands from lib module to instream
 #                     k8        - use FTP option '-u' to inhibit authorization
 #                       l1999   - recsize default for typ=LSTt option f5/f6
 #                          m0   - generate exportfile modules original filename
 #                          m1   - $RUNLIBS/parms/... (or $RUNLIBS/parmsds/parmlib/...)
 #                          m2   - parms subdirs $RUNLIBS/parmsds/subdir/parmnames
 #                          m4   - generate --> sed -f $SEDSCRIPT $SYSIN_P >$SYSIN
 #                          m8   - assign parms to $RUNDATA vs $RUNLIBS default
 #                            n0 - unrecognized JCL passed thru as is
 #                            n1 - unrecognized JCL cmntd out with '#?' cols 1-2
 #                            n2 - if any '=' present, convert any ','s to ';'s
 #                            n3 - if n2 & no '=', cmnt out with '#?' cols 1-2
 #                            n4 - convert unrecognized JCL to instream data
 #                          o8   - expand all &/$symbols in EXEC keyword=values
 #                        p1     - use topnode as subdir data1/topnode/file.name.nodes
 #                      q1       - drop //* comments in code from PROCs (Dec2014)
 #                      q2       - drop //* comments in code from JCL (not yet)
 #                    r0         - gen cobrun, executes .int's & allows animation
 #                    r1         - gen runw for .ints NetExpress/Windows
 #                    r2         - assume executable programs either unix/windows
 #                    r4         - assume executables in PATH (progname only)
 #                    r8         - generate 'findexec' Multi-Level program search
 #                    r16        - generate 'unikixvsam $RLX/COBOLX'
 #                    r32        - generate Natural call (natsec batch ...)
 #                  s1           - convert SORT for SYNCSORT (not uvsort)
 #                  s2           - convert sort field 'c' to 'e' (Ebcdic seq)
 #                t1             - insert clear alias goto fpr COND & stepctl51
 #                t2             - insert stepctl51 for stepstops & steptimes
 #                t4             - insert goto after stepctl51 &/or COND test
 #                t8             - insert jobend51 (jobabend51 obsoleted by testcc)
 #              u1               - make topnode subdir Apr30/2018
 #            v1                 - comment #rm DELETE via IDCAMS DELETE
 #            v2                 - comment #rm DELETE via DISP=(OLD/SHR/MOD,DEL)
 #          w1                   - generate 'unikixbld -i -d $KIXDATA/filename'
 #          w2                   - insert $RUNDATA on exportfile/gen for unikix
 #          w4                   - unikixvsam $RLX/dsnutilb vs dsnutilb <$SYSIN
 #        x1                     - Tsite traceback SYSIN files to parm on prior step
 #        x4                     - Tsite chg TABLEname @@CHG1.___ to DB2ADMIN.___
 #        x8                     - Tsite insert "$PKG." java -cp $CLASS_PATH $PKG.prgmname
 #      y2                       - Asite dbtload/dbtunload by LOAD in procname
 #      y4                       - jclproc51, replace &symbols on all lines vs DSNs
 #    z1                         - append 1 on COBOL reserved word DDNAMES
 #    z2                         - 2 blanks sep before comments vs 1 (in parjcl)
 #    z8                         - Tsite debug: show sysin search back files to parms
 # ----------------------------------------------------------------------------
 # Aug01/19 - use option x_ for all Tsite options as follows:
 # - disable existing x_ for Indexed file type IDXf_ (assume IDXf1)
 # - option x1 to make Tsite parms tarceback optional
 # - option y1 to x4 TABLEname @@CHG1._ to DB2ADMIN._
 # - option y8 to x8 insert $PKG. on java calls
 # ----------------------------------------------------------------------------
 # Jul31/19 - Csite parmsds option m to not generate SYSIN_P & grep
 #         - disable m16 parmfile@member vs parmfile/member (not used)
 #         - disable current m1 $RUNDATA vs $RUNLIBS & m8 original filename
 #         - Re-assign as follows:
 #      m1 - $RUNLIBS/parms/... (or $RUNLIBS/parmsds/parmlib/...)
 #      m2 - parms subdirs $RUNLIBS/parmsds/subdir/parmnames
 #      m4 - generate --> sed -f $SEDSCRIPT $SYSIN_P >$SYSIN
 #      m8 - assign parms to $RUNDATA vs $RUNLIBS default
 # ----------------------------------------------------------------------------
 # Note re w2 - use sfun/jobset52 if you use w2
 #            - $RUNDATA/... inserted on export JTMP, RPTS,& SYOT
 # ------------------------------------------------------------------------
 # Following lines will be inserted in scripts until :ENDINSERT
 # - except for '# ' comment (col1 '#', col2 ' ' blank)
 # '#!/.......' is 1st line output - usually '#!/bin/ksh' or '#!/bin/ksh93'
 #!/bin/ksh
 #export start=S0000   #<-- may uncomment & insert restart step#
 export jobid2=jobidx JOBID2=JOBIDX; scriptpath="$0"; args="$*"
 if [[ -z "$jobid1" ]]; then export jobid1=$jobid2; fi
 for arg in $args; do if [[ "$arg" == *=* ]]; then export $arg; fi; done
 integer JCC=0 SCC=0 LCC=0  # init step status return codes
 autoload jobset51 jobend51 jobabend51 logmsg1 logmsg2 stepctl51 evalcp1
 autoload exportfile exportfil1 exportfil2
 autoload exportgen0 exportgen1 exportgen2 exportgenall exportgenx
 jobset51    # call function for JCL/script initialization
 goto
 S0000=A
 :ENDINSERT: - above non #comment lines inserted at begin output scripts
 # jobset51 inserted at begin each script
 # - sets up job environment: export subdirs, setup printer subdir/date
 # - RUNDATA & RUNLIBS must have been exported (in .profile or in shell)
 # - .profile must "export FPATH=$RUNLIBS/sfun" to find functions
 # - autoload declares functions called by jcl/scripts
 # - stores any restart step# in alias 'goto' (last line inserted above)
 #
 #------------------ search/replace tables ------------------
 # REPTBL1 - replace any pattern on any INPUT (JCL before conversion to script)
 #      --------- many lines omitted, don't need to modify ---------
 #----------------------------------------------------------------------------
 # Table of uvsort jobname_step#s to be supplemented by uvcopy
 # - for complex SORT operations beyond uvsort capability
 # - such as JOIN, PARSE, IFTHEN
 # - JCLname_stepnumber of uvsorts requiring uvcopy supplement
 :UVSORTUVCOPY:
 abc100_S0030
 abc200_S0050
 abc300_S0020
 ~~~~~~~~~~~~~~~~~~~~
 #------------------------ end jclunixop51 ---------------------------

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2C3. JCL Conversion control-file

customize JCL converter control file

Note
  • DO NOT DO THIS, if you are investigating your sample JCL conversions
  • This was done by UV Software setup to perform your sample conversions
  • Could do later if you wanted to perform JCL conversion in a new superdir
    (vs investigating the results of your sample conversions from UV Software)

 vi ctl/jclunixop51  <-- customize JCL converter options ?
 ==================    - depending on your site
Note
  • Here are just a few of the options JCL converter options
  • Please see all options described in jclcnvbrief.htm#2C2

 jclunixop51:a2b0c8d0e2f1g1h0i0j0k15l1999m1n3o8p0q0r0s0t15u0v0w0x0y6z0 #<- JCL cnv options
 #           ==========**======**==================**=================
 #           f0           - default file typ=RSF (allows packed/binary)
 #          *f1           - default uvsort/uvcp file typ=LST
 #           f2           - over-ride file typ by ctl/datactl53I (if filename match)
 #           f3           - f1+f2 force typ=LST regardless datactl53I
 #              *j0          - default COBOL calls as per option 'r'
 #               j1          - generate JAVA calls (vs COBOL) for COBOLs called directly
 #               j2          - include -DDDNAME=$DDNAME for each file in step
 #               j4          - generate JAVA calls for COBOLs called by IKJEFT01
 #               j8          - change output script file extension from .ksh to .java
 #               j16         - insert # elif ((S0020 == 4)); then & # alias goto ...
 #                   *r0        - gen cobrun, executes .int's & allows animation
 #                    r1        - gen runw for .ints NetExpress/Windows
 #                    r2        - assume executable programs either unix/windows
 #                    r4        - assume executables in PATH (progname only)
 #                    r8        - generate 'findexec' Multi-Level program search
 #                    r16       - generate 'unikixvsam $RLX/COBOLX'
 #                    r32       - generate Natural call (natsec batch ...)

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2D1. Data Directories

 /home/nbe
 :---testdata          <-- data dirs (defined as $RUNDATA in JCL/scripts)
 :   :---arcdata        - testdata for various JCL/scripts saved here
 :   :   :---jar100     - subdir for each JCL/script
 :   :   :   :---files  - files can be restored to data1 simplify testing
 :   :---backup         - can backup/data1/* here
 :   :---data1          - datafiles for JCL/scripts
 :   :---ctl            - GDG control file
 :   :---jobctl         - for start/stop by step# control
 :   :---joblog         - log files from JCL/script executions
 :   :---jobmsgs        - status msgs from JCL/scripts
 :   :---jobtimes       - job/step times date stamped history files
 :   :---jobtmp         - temp files for SYSIN instreams, GDG files, etc
 :   :---sysout         - SYSOUT printer files
 :   :---tmp            - tmp subdir for uvsort & misc use

Notes re test data files

Various sets of testdata files are stored in arcdata/subdirs for testing various subsets of JCL/scripts. For example to test jar100.ksh, you would:

  1. Login userxx --> /home/userxx

  2. cdd --> /home/userxx/testdata2 (alias cdd='cd $RUNDATA')

  3. cp -r data1/* backup/data1 <-- can backup existing data1/* files if required

  4. rm -rf data1/* <-- remove all old test files from data1/...

 5. cp -r arcdata/jar100/* data1  <-- restore testdatafiles for jar100.kssh
    ============================

 6. joblog jar100.ksh             <-- test/debug jar100
    =================
  1. rm -rf data1/*

  2. cp -r backup/data1/* data1 <-- restore original data1/* files if required
Note
  • need '-r' option on 'rm' & 'cp' if datafiles subdirectoried by topnode

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2E1. JCL Conversion Procedures

jcl2ksh51A - convert All procs,parms,includes,jcls


 #0a. Login userxx --> /home/userxx

 #0b. cdl --> /home/userxx/testlibs  (alias cdl='cd $RUNLIBS')

 #1. jcl2ksh51A all    <-- convert ALL JCL thru all steps, as illustrated below
     ==============      - reply null (take default) at all prompts
                         - or reply 'y' for prompts that demand a y/n response
                         - reply 'YES' to cleanup procs,parms,includes
 proc0 -------> procs   parm0 -------> parms   include0 -------> includes
       cleanup                cleanup                   cleanup
 jcl0 -----> jcl1 --------> jcl2 --------> jcl3 ----------> jcl4 -------> jcls
    cleanup    PROC expand    convert ksh   extra converts  copy 1 at a time to test

 #2. vi errs/*     <-- investigate errors
     =========       - includeNF.rpt jclproc51.err jclunix51.err parmNF.rpt procNF.rpt

 #3. vi jcl3/...   <-- investigate converted scripts (depending on errs/...)
     ===========

 #4. Modify JCL converter, options, control files, etc to improve conversions

 #5. Repeat jcl2ksh51A etc

jcl2ksh51 - convert 1 JCL at a time (vs all above)

Script 'jcl2ksh51' will convert 1 at a time (vs jcl2ksh51A for All JCLs). Use when debugging particular problems & after modifying the JCL converter, or jclunixop51 (options), or procs modified, or new JCLs added to jcl0/...

For example, to re-convert jar100.jcl:


 jcl2ksh51 jcl0/jar100.jcl  <-- example, convert jar100.jcl
 ========================
 jcl0 -----> jcl1 --------> jcl2 ---------> jcl3 -----------> jcl4 -------> jcls
    cleanup    PROC expand     convert ksh   extra converts   prompt to copy

First you must have run 'jcl2ksh51A' to convert All because it also converts the PROCs and PARMs. Use 'jcl2ksh51' for later additions from the mainframe.

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2E2. JCL Conversion

re-run PROC expansion for All JCLs


 jclpx51 jcl1 jcl2    <-- expand PROCs in all jcl1/* --> jcl2/...
 =================

You might use jclpx51 to re-expand the PROCs in all jcl1/* --> jcl2/... Use if you modify the jclprocop51 options in the JCL converter control file ($RUNLIBS/ctl/jclunixop51) OR if UV Software has enhanced the PROC expansion utility to fix problems you have reported.

Reconvert All JCLs without Repeating cleanups & proc expansion


 jclxx51 jcl2 jcl3     <-- convert all jcl2/* to ksh in jcl3/...
 =================

You might use jclxx51 to reconvert JCL to scripts when you do not need to to repeat the JCL cleanup & proc expand jcl0 --> jcl1 --> jcl2 Use if you modify the JCL converter control file OR if UV Software has enhanced the JCL converter to fix problems you have reported.

run PROC expansion for 1 JCL


 jclproc51 jcl1/jar100.jcl jcl2/jar100.jcl
 =========================================

Reconvert 1 JCL at a time


 jclunix51 jcl2/jar100.jcl jcl3/jar100.ksh
 =========================================

Notes re converting 1 JCL at a time

  1. 'jclproc51' is the C program for the PROC expander & 'jclpx51' is a script that repeats jclproc51 for all JCLs in jcl1/* outputting to jcl2/...

  2. 'jclunix51' is the C program for the JCL converter & 'jclxx51' is a script that repeats jclunix51 for all JCLs in jcl2/* outputting scripts to jcl3/...

  3. Running the C programs directly would normally only bd required when we need to modify the programs & debug any problems.

 gdb $UV/bin/jclunix51   <-- run 'gdb' to debug jclunix51.c
 =====================
 --> b 1234       <-- set breakpoint at line 1234
 --> run jcl2/jar100.jcl jcl3/jar100.ksh  <-- run gdb on I/O files
 --> p variablex  <-- display variables as required to debug

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

2E3. JCL Conversion

Extra conversions for schedulers, java, DBs, etc

Note
  • this is site dependent & may not be required, but if it is
    a custom uvcopy utility will be written & named approriately
  • we supply a placeholder job 'jclextra' which copies jcl3/* --> jcl4

 uvcopy jclextra,fild1=jcl3,filld2=jcl4 <-- modify scripts site dependent
 ======================================     (schedulers, java, DBs, vSAMs,etc)
  - site dependent extra conversions if required or just copy all jcl3 --> jcl4

 uvcopy jclextra   <-- same as above (indir/outdir default as above)
 ===============

reconvert all JCL except procs,parms,includes

Script jcl1234A performs the 3 conversions above (jclpx51, jclxx51, jclextra)


 jcl1234A jcl1 jcl2 jcl3 jcl4
 ============================

'jcl1234A' is a convenient script to convert sets of JCL during test/debug. We will use it to convert our demo set of JCL scripts (jar100,etc)


 cp jcl1/jar* jt1     <-- select sample problem JCLs for separate conversion
 ================

 jcl1234A jt1 jt2 jt3 jt4    <-- convert sample problem JCLs
 ========================

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

Part_3

Notes 20200501 - to be updated

 Parts 3,4,5,6 from doc/jclcnvtest.doc split out to doc/jclcnvP3456.doc
 - yet to be updated & re-added to this jclcnvbrief.doc
 - jclcnvbrief.doc is intended to be a simpler version more concise version
   of jclcnv1demo.htm

Goto:   Begin this doc End this doc Index this doc Contents this library UVSI Home-Page

Permuted Index of Keywords from ** Headings **

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 

1C1 Advantages: Advantages of RUNLIBS/RUNDATA & stub_profile/common_profile

2E2 Cleanups: Reconvert All JCLs without Repeating cleanups & proc expansion
1B3 Common_profile: - stripped-down version
1C1 Common_profile: Advantages of RUNLIBS/RUNDATA & stub_profile/common_profile
2C1 Control: Control Files for JCL Conversion
2C3 Control: customize JCL converter control file
2C2 Control-file: JCL Conversion control-file
2C3 Converter: customize JCL converter control file
2B1 Converts: jcl2ksh51A script converts All
2C3 Customize: JCL converter control file

1C1 Data: RUNDATA determine PATHs to DATA files
2D1 Data: Notes re test data files
2E3 Dbs: Extra conversions for schedulers, java, DBs, etc
2A1 Demo: Initial setup directories for test/demo conversions
2A1 Directories: Initial setup directories for test/demo conversions
1A1 Directory: uvadm - Vancouver Utility home directory
1B2 Down: stub_profile - stripped down version

1B1 Env: 'profiles' provided in /home/uvadm/env
2E3 Except: reconvert all JCL except procs,parms,includes
2E2 Expansion: Reconvert All JCLs without Repeating cleanups & proc expansion
2E2 Expansion: re-run PROC expansion for All JCLs
2E2 Expansion: run PROC expansion for 1 JCL
2E3 Extra: Extra conversions for schedulers, java, DBs, etc

1A1 Home: uvadm - Vancouver Utility home directory
1B1 Home: 'profiles' provided in /home/uvadm/env

2E1 Includes: jcl2ksh51A - convert All procs,parms,includes,jcls
2E3 Includes: reconvert all JCL except procs,parms,includes

2E3 Java: Extra conversions for schedulers, java, DBs, etc
2E2 Jc: Notes re converting 1 JCL at a time
2E1 Jcl2ksh51: - convert 1 JCL at a time (vs all above)
2B1 Jcl2ksh51a: jcl2ksh51A script converts All
2E1 Jcl2ksh51a: jcl2ksh51A - convert All procs,parms,includes,jcls
2B2 Jt1234a: jt1234A script reconverts All

2B1 Libraries: JCL conversion Libraries
2B3 Library: subdirs for production (after conversion)

2E1 Parms: jcl2ksh51A - convert All procs,parms,includes,jcls
2E3 Parms: reconvert all JCL except procs,parms,includes
1C1 Paths: RUNDATA determine PATHs to DATA files
1C1 Paths: RUNLIBS determine PATHs to programs,scripts,jcls,etc
2B2 Problem: Select/Reconvert/Test problem JCLs
2B2 Problems: subdirs to test JCL conversion problems
2E2 Proc: Reconvert All JCLs without Repeating cleanups & proc expansion
2E2 Proc: re-run PROC expansion for All JCLs
2E2 Proc: run PROC expansion for 1 JCL
2E1 Procs: jcl2ksh51A - convert All procs,parms,includes,jcls
2E3 Procs: reconvert all JCL except procs,parms,includes
2B3 Production: library subdirs for production (after conversion)
1B1 Profiles: 'profiles' provided in /home/uvadm/env
1C1 Programs: RUNLIBS determine PATHs to programs,scripts,jcls,etc
1B1 Provided: 'profiles' provided in /home/uvadm/env

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 

2E2 Re-run: PROC expansion for All JCLs
2B2 Reconvert: Select/Reconvert/Test problem JCLs
2E2 Reconvert: Reconvert 1 JCL at a time
2E2 Reconvert: Reconvert All JCLs without Repeating cleanups & proc expansion
2E3 Reconvert: all JCL except procs,parms,includes
2B2 Reconverts: jt1234A script reconverts All
2E2 Repeating: Reconvert All JCLs without Repeating cleanups & proc expansion
2E2 Run: PROC expansion for 1 JCL
1C1 Rundata: Advantages of RUNLIBS/RUNDATA & stub_profile/common_profile
1C1 Rundata: RUNDATA determine PATHs to DATA files
1C1 Runlibs: Advantages of RUNLIBS/RUNDATA & stub_profile/common_profile
1C1 Runlibs: RUNLIBS determine PATHs to programs,scripts,jcls,etc

2E3 Schedulers: Extra conversions for schedulers, java, DBs, etc
2B2 Select: Select/Reconvert/Test problem JCLs
2A1 Setup: Initial setup directories for test/demo conversions
1B2 Stripped: stub_profile - stripped down version
1B3 Stripped-down: common_profile - stripped-down version
1B2 Stub_profile: - stripped down version
1C1 Stub_profile: Advantages of RUNLIBS/RUNDATA & stub_profile/common_profile
2B2 Subdirs: to test JCL conversion problems
2B3 Subdirs: library subdirs for production (after conversion)

2A1 Test: Initial setup directories for test/demo conversions
2B2 Test: Select/Reconvert/Test problem JCLs
2B2 Test: subdirs to test JCL conversion problems
2D1 Test: Notes re test data files

1A1 Utility: uvadm - Vancouver Utility home directory
1A1 Uvadm: - Vancouver Utility home directory
1B1 Uvadm: 'profiles' provided in /home/uvadm/env

1A1 Vancouver: uvadm - Vancouver Utility home directory
1B2 Version: stub_profile - stripped down version
1B3 Version: common_profile - stripped-down version
2E1 Vs: jcl2ksh51 - convert 1 JCL at a time (vs all above)

2E2 Without: Reconvert All JCLs without Repeating cleanups & proc expansion

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

Visitor Counters for ThisYear and LastYear