Mainframe to Linux JCL Conversion Testing - content Parts


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
- scripts for JCL conversion (all or 1 at a time)

Part_3 - JCL Conversion & Test procedures for 10 selected JCLs
- 10 JCL's identified by Acerta for the JCL testing course
  (bf001,2,3,4,5,6,7, bo206,bo207,bo215)
- isolate the 10 JCLs into separate subdirs jt1,jt2,jt3,jt4,jts
  (vs all 500 JCLs in jcl0,jcl1,jcl2,jcl3,jcl4,jcls)
- reconvert to ksh scripts in jcl3 & Automic scripts in jcl4
- explain conversions from JCL to ksh scripts & Automic scripts
- copy jt3 to jts for execution (only jts is in $PATH)
- execute the 10 scripts, check outputs, debug as required
- students will take turns executing & checking results
- instructor may have created some intentional bugs

Part_4 - JCL Conversion & Test procedures for complex SORTs, 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.

Part3 (JCL/script testing) is the prime objective for the training course.

Part1 (preparation for JCL conversion) & Part_2 (JCL conversion procedures) are brief reviews of more extensive documentation in other documents, such as http://uvsoftware.ca/jclcnv1demo.htm.

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 that may be relevant to this JCL testing course documentation.

www.uvsoftware.ca/Acerta/jclcnvtest.htm

www.uvsoftware.ca/Acerta/jclcnvitems.htm

Note
  • following documents are public access on uvsoftware.ca

http://uvsoftware.ca/jclcnv1demo.htm

http://uvsoftware.ca/jclcnv3aids.htm

http://uvsoftware.ca/uvtrain.htm

Vanvouver Utilities Training Guide

http://uvsoftware.ca/uvhelp.htm

http://uvsoftware.ca/scripts1.htm

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

Part0 Relevant Vancouver Utilities Documentation (continued)

http://uvsoftware.ca/uvsort.htm

http://uvsoftware.ca/uvcp.htm

http://uvsoftware.ca/uvcopy1.htm

http://uvsoftware.ca/uvcopy2.htm

http://uvsoftware.ca/uvcopy3.htm

http://uvsoftware.ca/uvhd.htm

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


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

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

1A1. uvadm - Vancouver Utility home directory

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 Vaancouver 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)
 :-----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

1C1. profiles for Vancouver Utilities on Unix/Linux

RUNLIBS & RUNDATA determine PATHs to programs/scripts & data

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' determines data-file locations indirectly as follows:

Advantages of 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


Part_2 - JCL conversion procedures
- setting up directories for testlibs & testdata
- scripts for JCL conversion (all or 1 at a time)

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

2A1. JCL Conversion Procedures

JCL conversion LIBRARIES

 /home/userxx
 /home/acerta2         <-- user 'acerta2' for this documentation
 :-----testlibs
 :     :------cbls        - COBOL programs (crossref requires)
 :     :------cpys        - copybooks (crossref requires)
 :     :---I--ctl         - conversion control files (jclunixop51,datactl53I)
 :     :------db2s        - DB2/SQL scripts to load/unload tables
 :     :------errs        - JCL converter writes ERROR reports here
 :     :---I--include0    - test/demo INCLUDEs supplied
 :     :------includes    - will be merged with jcl1, output to jcl2
 :     :---I--jcl0        - test/demo JCLs supplied
 :     :------jcl1        - intermediate conversion 73-80 cleared
 :     :------jcl2        - PROCs expanded from procs
 :     :------jcl3        - JCLs converted to Korn shell scripts
 :     :------jcl4        - JCL/scripts converted for Automic scheduler
 :     :----F-jcls        - copy here manually 1 by 1 during test/debug
 :     :------pf          - misc uvcopy jobs (data file maintenance, etc)
 :     :------pfs         - uvcopy jobs, supplement uvsort for COMPLEX functions
 :     :---I--parm0       - control cards & includes (SORT FIELDS, etc)
 :     :------parm1       - control cards with 73-80 cleared
 :     :------parms       - db2/sql's modified, export delimited inserted
 :     :---I--proc0       - test/demo PROCs supplied
 :     :------procs       - will be merged with jcl1, output to jcl2
 :     :------rexx        - REXX programs
 :     :------rpts        - reports from runsysinrpts1
 :     :------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
 :     :------vars        - JSS variables to test JCL ksh scripts with joblog4
 :     :------xref        - cross-references (see XREFjobs.htm)
 ---I-- Marks subdirs Initialized with mainframe components to be converted
        COBOL programs, copybooks, JCLs, PROCs, Parms, Includes
        control files required for conversions or executions
 ----F- marks the Final result outputs of the conversion
        many subdirs can go away after the conversion is complete

JCL subset conversions

 :     :------jt1        - 73-80 cleared
 :     :------jt2        - PROCs expanded from procs
 :     :------jt3        - JCLs converted to Korn shell scripts
 :     :------jt4        - JCL/scripts converted for Automic scheduler
 :     :------jts        - JCL/scripts converted for Automic scheduler

During test/debug, it is convenient (for UV Software at least) to isolate a subset of JCLs for separate conversion & testing.

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

2A2. 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/acerta2       <-- do not use homedir for production
 :-----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
 :     :------vars        - JSS variables to test JCL ksh scripts with joblog4
 :     :------xref        - cross-refs (JCL/script programs,parms,procs,datafiles,etc)

data subdirs for test/demo executions

 /home/acerta2       <-- do not use homedir for production
 :---testdata2        <-- data dirs (defined as $RUNDATA in JCL/scripts)
 :   :---arcdata           <-- save data1/testsets
 :   :   :-----bf001          - files to test bf001-bf007
 :   :   :-----bo206          - files to test bo206,207,215
 :   :   :-----bv4x1_demo     - files for bv4x1
 :   :   :-----sortsamples10a - files to test complex sorts (JOIN,IFTHEN,PARSE)
 :   :---data1       - datafiles for JCL/scripts
 :   :---ctl         - GDG control file
 :   :---joblog      - programmer debug log files
 :   :---jobmsgs     - status msgs from JCL/scripts
 :   :---jobtimes    - job/step times date stamped history files
 :   :---jobtmp      - temporary files for SYSIN instream data
 :   :---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 bf001-bf007, you would:

  1. Login acerta2 --> /home/acerta2

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

  3. rm -f data1/* <-- remove all old test files from data1/...

 4. cp arcdata/bf001/* data1    <-- restore testdatafiles for bf001-bf007
    ========================

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

2B1. JCL Conversion

JCL Conversion - Detailed Instructions

Script 'jcl2ksh51A' performs all steps for conversion of all files in the directories of JCLs, PROCs,& Parms. Here is an illustration of the conversions. Initial subdirs of mainframe files are jcl0, proc0, parm0,& include0. The converted JCL/scripts are in 'jcls' which may read SYSIN files from 'parms'. The intermediate subdirs (jcl1,jcl2,jcl3) may be dropped when conversion is complete & the systems are ready for production.

 proc0 -------> procs   parm0 -------> parms   include0 -------> includes
       cleanup                cleanup                   cleanup
 jcl0 -----> jcl1 --------> jcl2 --------> jcl3 ----------> jcl4 -------> jcls
    cleanup    PROC expand    convert ksh   convert Automic   copy 1 at a time
                                                              when ready to test

Script 'jcl2ksh51A' does everything. (stored at $UV/sf/IBM/jcl2kssh51A)


 #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

JCL converter control file

See the JCL converter options control file in $RUNLIBS/ctl/jclunixop51. You may need to modify the control file options dpending on your site requirements.

converting 1 at a time vs All (above)

Use script 'jcl2ksh51' for 1 at a time vs 'jcl2ksh51A' for All in directory.


 jcl2ksh51 jcl0/bf001.jcl  <-- example, convert bf001.jss
 ========================      jcl0 --> jcl2 --> jcl2 --> jcl3 --> jcl4
 jcl0 -----> jcl1 --------> jcl2 ---------> jcl3 -----------> jcl4 -------> jcls
    cleanup    PROC expand     convert ksh    convert Automic   copy 1 at a time
                                                                when ready to test

You must 1st use '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

2B2. JCL Conversion

re-run proc expansion


 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.

converting All JCL without Procs & Parms


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

You might use jclxx51/jclxx53 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.

convert JCL/scripts for Automic scheduler


 uvcopy jclautomic2,fild1=jcl3,filld2=jcl4 <-- convert ksh to Automic
 =========================================

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

reconvert all JCL except procs,parms,includes

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


 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 (bf001-7,bo206,7,15).


 cp jcl1/bf00* jt1           <-- select set of JCLs for separate conversion
 =================

 jcl1234A jt1 jt2 jt3 jt4    <-- convert demo set of JCL
 ========================

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

Part_3. JCL Conversion & Test procedures for 10 selected JCLs

Part_3 - JCL Test procedures for 10 JCLs - Contents


Part_3 - JCL Conversion & Test procedures for 10 selected JCLs
- 10 JCL's identified by Acerta for the JCL testing course
  (bf001,2,3,4,5,6,7, bo206,bo207,bo215)
- isolate the 10 JCLs into separate subdirs jt1,jt2,jt3,jt4,jts
  (vs all 500 JCLs in jcl0,jcl1,jcl2,jcl3,jcl4,jcls)
- reconvert to ksh scripts in jcl3 & Automic scripts in jcl4
- explain conversions from JCL to ksh scripts & Automic scripts
- copy jt3 to jts for execution (only jts is in $PATH)
- execute the 10 scripts, check outputs, debug as required
- students will take turns executing & checking results
- instructor may have created some intentional bugs

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

3A1. JCL Conversion Procedures

essential LIBRARY subdirs for executions

Previous pages 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 executions as shown below:

 /home/acerta2       <-- do not use homedir for production
 :-----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
 :     :------vars        - JSS variables to test JCL ksh scripts with joblog4
 :     :------xref        - cross-refs (JCL/script programs,parms,procs,datafiles)

data subdirs for test/demo executions

 /home/acerta2       <-- do not use homedir for production
 :---testdata2        <-- data dirs (defined as $RUNDATA in JCL/scripts)
 :   :---arcdata           <-- save data1/testsets
 :   :   :-----bf001          - files to test bf001-bf007
 :   :   :-----bo206          - files to test bo206,207,215
 :   :   :-----bv4x1_demo     - files for bv4x1
 :   :   :-----sortsamples10a - files to test complex sorts (JOIN,IFTHEN,PARSE)
 :   :---data1       - datafiles for JCL/scripts
 :   :---ctl         - GDG control file
 :   :---joblog      - programmer debug log files
 :   :---jobmsgs     - status msgs from JCL/scripts
 :   :---jobtimes    - job/step times date stamped history files
 :   :---jobtmp      - temporary files for SYSIN instream data
 :   :---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 bf001-bf007, you would:

  1. Login acerta2 --> /home/acerta2

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

  3. rm -f data1/* <-- remove all old test files from data1/...

 4. cp arcdata/bf001/* data1    <-- restore testdatafiles for bf001-bf007
    ========================

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

3B1. JCL/script Test/Debug Tips

run 'testdatainit' before JCL/scripts

When you are testing, it is a good idea to run 'testdatainit', before you run the JCL/script being debugged. 'testdatainit' clears several subdirs, which makes it much easier to inspect the results.

Here are the testdata subdirs flagged with '0' to indicate subdirs that are cleared with testdatainit & '*' to indicate subdirs with your data files thet you would not want to clear.

 /home/userxx               <--- userid for testing OR your homedir
 :-----testdata                - data files superdir
 :     :--*--arcdata         <-- superdir of subdir datasave sets
 :     :     :-----data1save   - save existing data1 before loading test set
 :     :     :-----bf001       - subdir/datafiles for test groups
 :     :     :-----bo206
 :     :     :-----sortsamples
 :     :--*--data1             - data files
 :     :--*--dataMF            - datafiles from MainFrame for comparison
 :     :--*--ctl               - GDG control file
 :     :--0--jobctl            - jobstop control files to debug JCL/script
 :     :--0--joblog            - programmer debug log files
 :     :--0--jobmsgs           - status msgs from JCL/scripts (step begin/end)
 :     :--0--jobtimes          - job/step times date stamped history files
 :     :--0--jobtmp            - temporary files for SYSIN data & GDG temp files
 :     :     :----jobxx        - jobtmp subdir created by jobset51 (script line 10)
 :     :     :    :-----GDG
 :     :     :    :     :-----data1 - new GDG files restored to data1/... at EOJ
 :     :--0--sysout            - SYSOUT printer files
 :     :     :----yymmdd       - date stamped subdir for print files
 :     :     :    :-----JOBXX_S0010_SYSPRINT  - named by job+step+DDname
 :     :--0--tmp               - tmp subdir for uvsort & misc use

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

3B2. JCL/script Test/Debug Tips

using 'testdatainit' & 'joblog'

1st run 'testdatainit' to clear output subdirs & make it easy to check results. Then run your JCL/script using 'joblog' which captures the log into the 'jblog' subdir for review if measages roll off he screen. Here is an example:


 #1. Login userxx --> $HOME (/home/userxx)
     ============

 #2. cdd --> $HOME/testdata
     ======================

 #3. testdatainit         <-- clear subdirs of prior run data
     ============           - also prompts to reload the GDG control file

 #4. joblog jobxx.ksh     <-- use joblog to run script to be tested
     ================       - saves console messages in joblog/...

The subdirs cleared are: jobctl, joblog, jobmsgs, jobtmp, sysout,& tmp.

  1. jobtmp/ - jobset51 sets up a subdir within jobtmp jobtmp/jobname/ - named using the JCL/script name jobtmp/jobname/... - for temp files such as SYSIN data from instream jobtmp/jobname/GDG/... - for new GDGs not restored to data1/ due to AbTerm
Note
  • new generations of GDG files are created in jobtmp/jobname/GDG/...
    and restored to data1/... at Normal job end.
  • allows you to simply rerun an AbTerm job without worrying about GDGs
  • but you will get a prompt on rerun asking to restore or clear
  • running testdatainit will avoid this prompt, which is probably not
    relevant when testing, but would be important in produciton.
  1. sysout/ - jobset51 sets up a subdir within sysout sysout/jobname/ - named using the JCL/script name in caps. sysout/jobname/... - for output files created by program DISPLAYs sysout/jobname/jobname_STEP#_SYSOUT_yymmdd_HHMMSS
Note
  • runing 'testdatainit' before the JCL/script being debugged will make it
    easier to inspect the files created from your job vs output files from
    previous jobs being debugged.

 #3. llr sysout  <-- will show only new files from your latest run, because
                   - testdatainit has cleared outputs of prior runs of all jobs

 #3a. llr sysout/jobname  <-- will always show only your latest test run files
                            - since subdir/jobname cleared by jobset51

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

3C1. JCL/script Test/Debug Tips

test/debug ITERATION for problem job


 #0. cdd                   <-- ensure we are in $RUNDATA
     ===

 #1a. rm -f arcdata/data1save       <-- clear any old save files
      =======================
 #1b. cp data1/* arcdata/data1save  <-- save existing data1 files
      ============================
Note
  • during the test phase, you probably don't need #1a & #1b
  • always store your testfile groups in an arcdata/subdir
  • consider data1/... as temp files that do not need to be saved

 #2. rm -f data1/*         <-- remove all files from data1/...
     =============

 #3. cp arcdata/savexx/* data1  <-- store data1/ files for jobxx only
     =========================

 #4. testdatainit          <-- clear files from all temporary subdirs
     ============              (jobctl,joblog,jobmsgs,jobtmp,sysout,tmp,wrk)

 #5. joblog4 jobxx.ksh jobxx.vars  <-- execute job via joblog4 script
     ============================    - to set JSS variables & execute JCL/script

See listing of 'joblog4' on page '4B4' & explanation on page '4B3'

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

3C2. JCL/script Test/Debug Tips

check results


 #6. vi joblog/jobxx.log    <-- view the joblog
     ===================

 #7a. vi data1/...          <-- check data files with 'vi'
      ============            - IF LineFeeds present (no Packed fields)

 #7b. uvhd data1/...        <-- use 'uvhd' if no LF's
      ==============          - &/or if Packed/Binary fields present

 #8a. llr jobtmp               <-- list jobtmp files created
      ==========                 - intermediate files & new GDG's
                                   (new GDGs NOT restored to data1/ if Abterm)

 #8b. vi jobtmp/JOBXX/GDG/...  <-- investigate GDG files
      =======================

 #9a. llr sysout               <-- list sysout files created
      ==========                 - from program 'DISPLAY's

 #9b. vi sysout/JOBXX/...      <-- investigate sysout files as desired
      ===================

 #9c. uvlp18 sysout/JOBXX/...  <-- print sysout files as desired
      =======================    - uvlp18 prints 18 cpi (132 cols on 8" wide)

 #9d. uvlp14L sysout/JOBXX/...   - use uvlp12L (Landscape) 14cpi 150 cols 11"
      ========================

modify JCL/scripts & repeat test


 #10. cdl --> $RUNLIBS      <-- switch to $RUNLIBS

 #11. vi jcls/jobxx.ksh    <-- modify the JCL/script if required
      =================
 -------------> repeat steps 1 - 11 as required <---------------

 #12. cp arcdata/data1save data1   <-- restore data1/* files when jobxx debugged
      ==========================
Note
  • during the test phase, you probably don't need to restore original data1/...
  • always store your testfile groups in an arcdata/subdir
  • consider data1/... as temp files that do not need to be saved

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

3D1. JCL/script Test/Debug Tips

Print-outs to help debug difficult jobs

Hard-copy listings can help you debug difficult jobs & document the problems for other team members. Vancouver Utilities provides several scripts (based on the uvlist utility documented at uvlist.htm. These scripts are great for JCL/script & program listings since the page headings capture vital information (filename, date, userid, page#, line# of 1st line on page,etc). Here are a few of the most useful scripts:

uvlp12
  • print portrait at 12 chars/inch
uvlp12D
  • print portrait & Duplex (for longer listings over 2 or 3 pages)
uvlp14
  • portrait at 14 cpi
uvlp14L
  • print Landscape at 14 cpi
etc

printing that may assist debug


 #1. uvlp14 joblog/jobxx.log  <-- print the joblog for better study
     =======================    - see 'uvlp' scripts in uvlist.htm

 #2. lslp data1     <-- print data1/... to study with jobxx.log
     ==========       - 'lslp' script does ls -l to tmp/ & uvlp12 tmp file

 #3. llr sysout     <-- display printer filenames in sysout/yyyymmdd/...
      ==========

 #4. uvlp14 sysout/yyyymmdd/JOBXX_S0010_DDname
     =========================================
     - print sysout files

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

3E1. Convert/Test/Debug 10 selected JCLs

Convert/Test/Debug 10 selected JCLs

For training purposes, we have selected 10 JCLs to be converted, tested, debugged. Here are the line counts for original JCL & converted JCL/ksh scripts.

JCLs before conversion


 llc jt1    <-- 'llc' script to count lines for all files in subdir
 =======
 File#   Lines
     1      70 jt1/bf001.jcl
     2      70 jt1/bf002.jcl
     3      70 jt1/bf003.jcl
     4      70 jt1/bf004.jcl
     5      70 jt1/bf005.jcl
     6      70 jt1/bf006.jcl
     7      50 jt1/bf007.jcl
     8     106 jt1/bo206.jcl
     9      95 jt1/bo207.jcl
    10      50 jt1/bo215.jcl
    10     721 total lines

JCL/ksh scripts after conversion


 llc jt3
 =======
 File#   Lines
     1     176 jt3/bf001.ksh
     2     176 jt3/bf002.ksh
     3     176 jt3/bf003.ksh
     4     176 jt3/bf004.ksh
     5     176 jt3/bf005.ksh
     6     177 jt3/bf006.ksh
     7     133 jt3/bf007.ksh
     8     220 jt3/bo206.ksh
     9     170 jt3/bo207.ksh
    10     101 jt3/bo215.ksh
    10    1681 total lines

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

3E2. Convert/Test/Debug 10 selected JCLs

create vars for bf001,2,3,4,5,6,7,b0206,7,15


 llc vars     <-- list existing vars/files
 ========
 File#   Lines
     1      12 vars/bf001.vars
     2      12 vars/bo206.vars
     3      22 vars/bv306a.vars
     4      19 vars/bv401a.vars
     5      18 vars/bv410a.vars
     6      22 vars/bv4x1a.vars
     7      17 vars/bv4x8a.vars
     8      21 vars/bv4x8b.vars
     9      17 vars/bv4x8c.vars
    10      18 vars/bv4xra.vars
    11      18 vars/bv4xrb.vars
    12      18 vars/bvc57a.vars
    12     214 total lines in    12 files in directory vars

We see a vars file for only the 1st of the 10 test/demo JCL/scripts, BUT, that's all we need because they are all the same for these 10 jobs as follows:


 vi vars/bf001.vars   <-- examine vars file for bf001.ksh, etc
 ==================
 # bf001.vars - JSS variables for bf001-bf007,bo206,bo207,bo215
 #            - by Owen Townsend, UV Software, Apr11/2018
 #            - specified as arg2 on joblog4 to define JSS variables
 #            - '.' executed in joblog prior to executing JCL/script
 #
 # joblog4 bf001.ksh bf001.vars    <-- usage
 # ============================
 #
 export QLB=BF0PB391
 export QLU=BF0PU391
 export PLR=P
 export RUN=00

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

3E3. Convert/Test/Debug 10 selected JCLs

Convert 10 selected JCLs

 jt1 ----------> jt2 ----------> jt3 ------------> jt4 ----------> jts
    PROC expand    convert ksh    convert Automic    copy 1 at a time
                                                     when ready to test

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

 #2. cdl --> /home/acerta2/testlibs2   (alias cdl='cd $RUNLIBS')
     ===

 #3a. cp jcl1/bf001.jcl jt1     <-- select JCLs to be reconverted separately
      =====================
        ---- etc ----
 #3g. cp jcl1/bf007.jcl jt1     <-- etc for bf002,3,4,5,6,7
      =====================
 #3h. cp jcl1/bo206.jcl jt1     <-- and for bo206,207,215
 #3i. cp jcl1/bo207.jcl jt1
 #3j. cp jcl1/bo215.jcl jt1
Note
  • Owen has already selected the 10 JCLs into $RUNLIBS/jt1

 #4. jcl1234A jt1 jt2 jt3 jt4    <-- convert demo set of JCL
     ========================
Note
  • we will be using the jt3/ Korn shell scripts for testing
  • we do not have the Automic scheduler available
  • don't need the jt4 Automic scripts, but part of the covnersion script
  • ksh scripts are better for debugging complex problems

 #5. cp jt3/* jts    <-- copy jCL/ksh scripts to execccution subdir (in $PATH)
     ============
Note
  • We previously recommended copying to jcls 1 at a time when ready to debug
  • gives us a measuure of test/debug progress
  • Also OK to copy small groups of JCL/scripts to jcls (or jts in this case)

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

3F1. Convert/Test/Debug 10 selected JCLs

sample JCL before conversion

 //*%SAI BUILD=PKT,DSC='LOAD CODE-DEF/CTT',ENV=ACE,CND=4LT
 //*%SAI RUN=00
 //*%OPC SCAN
 //*%OPC RECOVER ERRSTEP=S0030,RESTART=N,CALLEXIT=EQQARAD1
 //*
 //*===================================================================
 //* SYSTEM   : BF0
 //* PROCEDURE: BF001
 //* FUNCTIONAL DESCRIPTION OF THIS JOB :
 //*  LOAD CONTEXTS
 //********************************************************************
 //* RESTARTINFO:
 //* IF THIS JOB FAILS, PLEASE TAKE FOLLOWING ACTIONS :
 //*  NIHIL
 //********************************************************************
 //* ADDITIONAL INFO :
 //* PLEASE FILL IN ADDITIONAL INFORMATION FOR BATCH-OPERATORS IF
 //* NEEDED FOR THIS JOB.
 //*  RESTART WITH CHECKPOINT/RESTART
 //********************************************************************
 //*===================================================================
 //* DELETE OUTPUT FILES WHEN RESTART
 //*===================================================================
 //S0005    EXEC PGM=IEFBR14
 //*                                                 ==== INPUT FILES
 //DD1      DD DSN=&QLB..BCHG.BF001.ERR.CONTEXT.D&T#ED.,
 //            DISP=(MOD,DELETE,DELETE)
 //DD2      DD DSN=&QLB..BCHG.BF001.DATA.CONTEXT.D&T#ED.,
 //            DISP=(MOD,DELETE,DELETE)
 //*===================================================================
 //* PREALLOC. OF GSAM-DATASETS
 //*===================================================================
 //S0010    EXEC SPINIT,AANT=01
 //*                                                 ==== OUTPUT FILES
 //UTDD01   DD DSN=&QLB..BCHG.BF001.ERR.CONTEXT.D&T#ED.,
 //            DISP=(,CATLG,DELETE),
 //            LRECL=1000,RECFM=FB,EXPDT=&EXP10WD
 //*===================================================================
 //* SORT CODE-DEFINITION: CONTEXT-NM / CONTEXT-DESCRIPTION
 //*===================================================================
 //S0020    EXEC SPSORT
 //*                                                 ==== INPUT FILES
 //SORTIN   DD DSN=&QLU..DSNN.CONTEXT,
 //            DISP=SHR
 //*                                                 ==== OUTPUT FILES
 //SORTOUT  DD DSN=&QLB..BCHG.BF001.DATA.CONTEXT.D&T#ED.,
 //            DISP=(,CATLG,DELETE),EXPDT=&EXP10WD
 //*                                                 ==== DIVERS
 //SYSIN    DD *
  SORT FIELDS=(1,35,CH,A,37,50,CH,A)
 /*
 //*===================================================================
 //* EXECUTE LOAD CONTEXTS
 //*===================================================================
 //S0030    EXEC IPBMP,
 //*EQQARAD1= STEP=S0030
 //*        CKPTID=LAST,
 //         MBR=BFB01
 //*                                                 ==== INPUT FILES
 //INCHKPFR DD *
 001000
 /*
 //GC4SA011 DD DSN=&QLB..BCHG.BF001.DATA.CONTEXT.D&T#ED.,
 //            DISP=SHR
 //*                                                 ==== OUTPUT FILES
 //GC4SA021 DD DSN=&QLB..BCHG.BF001.ERR.CONTEXT.D&T#ED.,
 //            DISP=OLD
 //*                                                 ==== DIVERS
 //SYSOUT INCLUDE MEMBER=SISYSOUT
 //*

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

3F2. Convert/Test/Debug 10 selected JCLs

sample JCL/ksh script after conversion

 #!/bin/ksh
 ##BF001 JOB 'missing JOB card created from filename'
 scriptpath="$0"; args="$*"; typeset -l jobid2; typeset -u JOBID2;
 export jobid2=bf001${PLR}${RUN} JOBID2=BF001${PLR}${RUN};
 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 exportgen0 exportgen1 exportgen2 exportgenall exportgenx
 jobset51    # call function for JCL/script initialization
 goto
 S0000=A
 #//*%SAI BUILD=PKT,DSC='LOAD CODE-DEF/CTT',ENV=ACE,CND=4LT
 #//*%SAI RUN=00
 # *%OPC SCAN
 # *%OPC RECOVER ERRSTEP=S0030,RESTART=N,CALLEXIT=EQQARAD1
 # * SYSTEM   : BF0
 # * PROCEDURE: BF001
 # * FUNCTIONAL DESCRIPTION OF THIS JOB :
 # *  LOAD CONTEXTS
 # * RESTARTINFO:
 # * IF THIS JOB FAILS, PLEASE TAKE FOLLOWING ACTIONS :
 # *  NIHIL
 # * ADDITIONAL INFO :
 # * PLEASE FILL IN ADDITIONAL INFORMATION FOR BATCH-OPERATORS IF
 # * NEEDED FOR THIS JOB.
 # *  RESTART WITH CHECKPOINT/RESTART
 # * DELETE OUTPUT FILES WHEN RESTART
 #1======================= begin step#S0010 IEFBR14   =======================
 S0010=A
 stepctl51;
 export JSTEP=S0010; ((XSTEP+=1)); SCC=0; SMAX=0;
 logmsg2 "********** Begin Step $JSTEP/$XSTEP iefbr14   ***********"
 ##S0005    EXEC PGM=IEFBR14
 export PROGID=iefbr14
 export PARM=""
 # *                                                 ==== INPUT FILES
 exportfile  DD1 data1/${QLB}.BCHG.BF001.ERR.CONTEXT.D${T_ED} #(MOD,DELETE,DELETE)
 exportfile  DD2 data1/${QLB}.BCHG.BF001.DATA.CONTEXT.D${T_ED} #(MOD,DELETE,DELETE)
 logmsg2 "Executing--> rm -f \$DD1"
 #3----------------------------------------------------------------------
 rm -f $DD1
 rm -f $DD2
 true  #set cc 0 for step status check
 #4----------------------------------------------------------------------
 SCC=$?; S0010C=$SCC; S0010R=1; alias goto=""; ((JCC|=SCC));
 logmsg2 "SCC = $SCC"
 if ( ((SCC < 0)) || ((SCC > SMAX)) ); then
    logmsg2 "ERR: step#$JSTEP iefbr14 abterm $SCC"
    alias goto="<<S9900=\A"
 fi
 goto
 # * PREALLOC. OF GSAM-DATASETS
 #0====================== begin proc SPINIT ========================
 ##S0010    EXEC SPINIT,AANT=01                                 #<-PROC1call
 # *SPINIT   PROC AANT=01                                       #<-PROC1
 ##S0010    EXEC SPINIT,AANT=01                                 #<-PROC1exp
 AANT="01";
 #1======================= begin step#S0020 IDCAMS    =======================
 S0020=A
 AANT="01";
 AANT="01";
 stepctl51;
 export JSTEP=S0020; ((XSTEP+=1)); SCC=0; SMAX=0;
 logmsg2 "********** Begin Step $JSTEP/$XSTEP idcams    ***********"
 ##I       EXEC PGM=IDCAMS,PN=S0010
 export PROGID=idcams
 export PARM=""
 exportfile  SYSIN $RUNLIBS/parms/spinit01
 exportfile INDD /dev/null
 # *                                                 ==== OUTPUT FILES
 exportfile  UTDD01 data1/${QLB}.BCHG.BF001.ERR.CONTEXT.D${T_ED} #(,CATLG,DELETE)
 touch $UTDD01
 #2--------parms/spinit01 --------
 #= * /* SYSIN MEMBER FOR PROCEDURE SPINIT AANT=01 */
 #=  REPRO IFILE(INDD) OFILE(UTDD01)
 logmsg2 "Executing--> uvcp \"fili1=\$INDD,typ=LSTt,rcs=1000,filo1=\$UTDD01..."
 #3----------------------------------------------------------------------
 uvcp "fili1=$INDD,typ=LSTt,rcs=1000,filo1=$UTDD01,typ=LSTt,rcs=1000";
 ((SCC|=$?)); ((JCC|=SCC));
 #4----------------------------------------------------------------------
 S0020C=$SCC; S0020R=1; alias goto=""; ((JCC|=SCC));
 logmsg2 "SCC = $SCC"
 if ( ((SCC < 0)) || ((SCC > SMAX)) ); then
    logmsg2 "ERR: step#$JSTEP idcams abterm $SCC"
    alias goto="<<S9900=\A"
 fi
 goto
 # * SORT CODE-DEFINITION: CONTEXT-NM / CONTEXT-DESCRIPTION
 #0====================== begin proc SPSORT ========================
 ##S0020    EXEC SPSORT                                         #<-PROC1call
 ##S0020    EXEC SPSORT                                         #<-PROC1exp
 ##SPSORT   PROC
 #1======================= begin step#S0030 SORT      =======================
 S0030=A
 stepctl51;
 export JSTEP=S0030; ((XSTEP+=1)); SCC=0; SMAX=0;
 logmsg2 "********** Begin Step $JSTEP/$XSTEP sort      ***********"
 ##SORT     EXEC PGM=SORT,PN=S0020
 export PROGID=sort
 export PARM=""
 # *                                                 ==== INPUT FILES
 # *                                                 ==== OUTPUT FILES
 exportfile  SORTIN data1/${QLU}.DSNN.CONTEXT #SHR
 # *                                                 ==== DIVERS
 exportfile  SORTOUT data1/${QLB}.BCHG.BF001.DATA.CONTEXT.D${T_ED} #(,CATLG,DELETE)
 touch $SORTOUT
 exportfile SYSIN $JTMP/${JSTEP}_${PROGID}_SYSIN
 cat > $SYSIN <</*
  SORT FIELDS=(1,35,CH,A,37,50,CH,A)
 /*
 logmsg2 "Executing--> uvsort \"fili1=\$SORTIN,typ=LSTt,rcs=3999,filo1=\$S..."
 #3----------------------------------------------------------------------
 uvsort "fili1=$SORTIN,typ=LSTt,rcs=3999,filo1=$SORTOUT,typ=LSTt,rcs=3999,keys=(0,35,c,a,36,50,c,a)"
 #4----------------------------------------------------------------------
 SCC=$?; S0030C=$SCC; S0030R=1; alias goto=""; ((JCC|=SCC));
 logmsg2 "SCC = $SCC"
 if ( ((SCC < 0)) || ((SCC > SMAX)) ); then
    logmsg2 "ERR: step#$JSTEP sort abterm $SCC"
    alias goto="<<S9900=\A"
 fi
 goto
 # * EXECUTE LOAD CONTEXTS
 #0====================== begin proc IPBMP ========================
 ##S0030    EXEC IPBMP,                                         #<-PROC1call
 # *IPBMP    PROC  IMSID=&#DFLIMS,MBR=,PSB=&MBR                 #<-PROC1
 ##S0030    EXEC IPBMP                                          #<-PROC1exp
 # *EQQARAD1= STEP=S0030
 # *        CKPTID=LAST,
 #1======================= begin step#S0040 BFB01     JAVA    ===============
 S0040=A
 IMSID="$_DFLIMS";MBR="";PSB="BFB01";
 MBR="BFB01";
 stepctl51;
 export JSTEP=S0040; ((XSTEP+=1)); SCC=0; SMAX=0;
 logmsg2 "********** Begin Step $JSTEP/$XSTEP bfb01     JAVA    ***"
 ##I        EXEC PGM=DFSRRC00,PN=S0030,
 # PARM=(BMP,BFB01,${MBR},$_DFLIMS)
 export PROGID=bfb01  #JAVA  # PROGIK=bfb01
 export PARM="BMP,BFB01,BFB01,$_DFLIMS"
 exportfile SYSOUT $SYOT/${jobid2}_${JSTEP}_SYSOUT_$(date +%y%m%d_%H%M%S)
 # *                                                 ==== INPUT FILES
 exportfile INCHKPFR $JTMP/${JSTEP}_${PROGID}_INCHKPFR
 cat > $INCHKPFR <</*
 001000
 /*
 # *                                                 ==== OUTPUT FILES
 exportfile  GC4SA011 data1/${QLB}.BCHG.BF001.DATA.CONTEXT.D${T_ED} #SHR
 # *                                                 ==== DIVERS
 ##SYSOUT INCLUDE MEMBER=SISYSOUT
 ## -------include1---------> includes/sisysout
 # *## INCLUDE SISYSOUT - reduced 25 lines to just SYSOUT for Linux
 exportfile  GC4SA021 data1/${QLB}.BCHG.BF001.ERR.CONTEXT.D${T_ED} #OLD
 exportfile SYSOUT $SYOT/${jobid2}_${JSTEP}_SYSOUT_$(date +%y%m%d_%H%M%S)
 logmsg2 "Executing--> java -cp \$CLASS_PATH \$PKG.com.acerta.bb1.svc.bfb01..."
 #3----------------------------------------------------------------------
 java -cp $CLASS_PATH $PKG.com.acerta.bb1.svc.bfb01
 #4----------------------------------------------------------------------
 SCC=$?; S0040C=$SCC; S0040R=1; alias goto=""; ((JCC|=SCC));
 logmsg2 "SCC = $SCC"
 if ( ((SCC < 0)) || ((SCC > SMAX)) ); then
    logmsg2 "ERR: step#$JSTEP bfb01 abterm $SCC"
    alias goto="<<S9900=\A"
 fi
 goto
 # * jclproc51 version 20180406, executed on 20180411:091748
 #8======================================================================
 S9000=A
 jobend51 #move any new GDG files from jobtmp to intended outdirs
 logmsg2 "JobEnd=Normal, JCC=$JCC, StepsExecuted=$XSTEP, LastStep=$JSTEP"
 exit 0 #ver:20180406 a2b0c2d1e2f6g1h0i0j5k15l1m4n3o8p0q0r0s0t2u1v0w0x0y6z0
 #9======================================================================
 S9900=A
 jobabend51 #report GDGs NOT moved from jobtmp/subdirs to outdirs
 logmsg2 "JobEnd=AbTerm, JCC=$JCC,Steps=$XSTEP/$JSTEP"
 exit $JCC  # JCL converted to ksh by UVSW jclunix51 20180411:091800

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

3G1. Convert/Test/Debug 10 selected JCLs

prepare to Execute sample JCL/scripts


 #1. Login acerta2 --> /home/acerta2   (if not already logged in)

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

 #3. rm -f data1/*             <-- remove all old test files from data1/...

 #4. cp arcdata/bf001/* data1  <-- restore testdatafiles for bf001-bf007
     ========================

 #5. testdatainit   <-- clear temp subdirs
     ============     - joblog,jobmsgs,jobtimes,jobtmp,sysout,tmp
Note
  • we will init our temp subdirs only once before 1st job executed
  • so we can collect the joblogs for all 10 JCL/scripts

data subdirs for test/demo executions

 /home/acerta2       <-- do not use homedir for production
 :---testdata2        <-- data dirs (defined as $RUNDATA in JCL/scripts)
 :   :---arcdata           <-- save data1/testsets
 :   :   :-----bf001          - files to test bf001-bf007
 :   :   :-----bo206          - files to test bo206,207,215
 :   :---data1       - datafiles for JCL/scripts
 :   :---ctl         - GDG control file
 :   :---joblog      - programmer debug log files
 :   :---jobmsgs     - status msgs from JCL/scripts
 :   :---jobtimes    - job/step times date stamped history files
 :   :---jobtmp      - temporary files for SYSIN instream data
 :   :---sysout      - SYSOUT printer files
 :   :---tmp         - tmp subdir for uvsort & misc use

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

3G2. Convert/Test/Debug 10 selected JCLs

Execute JCL/scripts bf001-bf007


 #1. joblog4 bf001.ksh bf001.vars   <-- execute 1st demo JCL/scriopt
     ============================

 #1a. vi joblog/bf001.log      <-- investigate joblog for any errors
      ===================
 180415:203903:bf001p00: Begin Job=bf001p00
 180415:203903:bf001p00: /home/acerta1/testlibs1/jts/bf001.ksh
 180415:203903:bf001p00: Arguments: bf001.ksh bf001.vars
 180415:203903:bf001p00: ProcessID=26791 RUNDATE=20180415
 180415:203903:bf001p00: RUNLIBS=/home/acerta1/testlibs1
 180415:203903:bf001p00: RUNDATA=/home/acerta1/testdata1
 180415:203903:bf001p00: JTMP=jobtmp/bf001p00
 180415:203903:bf001p00: SYOT=sysout/BF001P00
 180415:203903:bf001p00: HOSTNAME=jclserver.fcxlocal LOGNAME=acerta1
 180415:203903:bf001p00: ********** Begin Step S0010/1 iefbr14   ***********
 180415:203903:bf001p00: file: DD1=data1/BF0PB391.BCHG.BF001.ERR.CONTEXT.D fsize=0
 180415:203903:bf001p00: file: DD2=data1/BF0PB391.BCHG.BF001.DATA.CONTEXT.D fsize=0
 180415:203903:bf001p00: Executing--> rm -f $DD1
 180415:203903:bf001p00: SCC = 0
 180415:203903:bf001p00: ********** Begin Step S0020/2 idcams    ***********
 180415:203903:bf001p00: file: SYSIN=/home/acerta1/testlibs1/parms/spinit01 fsize=86
 180415:203903:bf001p00: file: INDD=/dev/null fsize=0
 180415:203903:bf001p00: file: UTDD01=data1/BF0PB391.BCHG.BF001.ERR.CONTEXT.D fsize=0
 180415:203903:bf001p00: Executing--> uvcp "fili1=$INDD,typ=LSTt,rcs=1000,filo1=$UTDD01...
 180415:203903:BF001P00: uvcp fili1=/dev/null,filo1=data1/BF0PB391.BCHG.BF001.ERR.CONTEXT.D
 180415:203903:BF001P00: EOF fili01 0 rds, 0 size; /dev/null
 180415:203903:BF001P00: EOF filo01 0 wrts, 0 size; data1/BF0PB391.BCHG.BF001.ERR.CONTEXT.D
 180415:203903:bf001p00: SCC = 0
 180415:203903:bf001p00: ********** Begin Step S0030/3 sort      ***********
 180415:203903:bf001p00: file: SORTIN=data1/BF0PU391.DSNN.CONTEXT fsize=88
 180415:203903:bf001p00: file: SORTOUT=data1/BF0PB391.BCHG.BF001.DATA.CONTEXT.D fsize=0
 180415:203903:bf001p00: file: SYSIN=jobtmp/bf001p00/S0030_sort_SYSIN fsize=0
 180415:203903:bf001p00: Executing--> uvsort "fili1=$SORTIN,typ=LSTt,rcs=3999,filo1=$S...
 180415:203904:BF001P00: uvsort fili1=data1/BF0PU391.DSNN.CONTEXT,filo1=data1/BF0PB391.BCHG.BF001.DATA.CONTEXT.D
 180415:203904:BF001P00: EOF fili01 1 rds, 88 size; data1/BF0PU391.DSNN.CONTEXT
 180415:203904:BF001P00: sort phase complete, used 512 megabytes, sort output begin
 180415:203904:BF001P00: EOF filo01 1 wrts, 56 size; data1/BF0PB391.BCHG.BF001.DATA.CONTEXT.D
 180415:203904:bf001p00: SCC = 0
 180415:203904:BF001P00: StepTimes: S0030 sort Begun=20:39:03 End=20:39:04 Elapsed=00:00:01
 180415:203904:bf001p00: ********** Begin Step S0040/4 bfb01     JAVA    ***
 180415:203904:bf001p00: file: SYSOUT=sysout/BF001P00/bf001p00_S0040_SYSOUT_180415_203904 fsize=0
 180415:203904:bf001p00: file: INCHKPFR=jobtmp/bf001p00/S0040_bfb01_INCHKPFR fsize=0
 180415:203904:bf001p00: file: GC4SA011=data1/BF0PB391.BCHG.BF001.DATA.CONTEXT.D fsize=56
 180415:203904:bf001p00: file: GC4SA021=data1/BF0PB391.BCHG.BF001.ERR.CONTEXT.D fsize=0
 180415:203904:bf001p00: file: SYSOUT=sysout/BF001P00/bf001p00_S0040_SYSOUT_180415_203904 fsize=0
 180415:203904:bf001p00: Executing--> java -cp $CLASS_PATH $PKG.com.acerta.bb1.svc.bfb01...
 java - dummy script to disable JAVA in JCL/scripts
 180415:203904:bf001p00: SCC = 0
 180415:203904:BF001P00: Job Times: Begun=20:39:03 NormalEnd=20:39:04 Elapsed=00:00:01
 180415:203904:bf001p00: JobEnd=Normal, JCC=0, StepsExecuted=4, LastStep=S0040

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

3G3. Convert/Test/Debug 10 selected JCLs

data1 files - before any executions

 llc - list filenames in directory with file & line counts
 File#   Lines
     1      51 data1/BF0PU391.DSNN.CODE.VALUE
     2       1 data1/BF0PU391.DSNN.CONTEXT
     3       9 data1/BF0PU391.DSNN.DEFINITI
     4       9 data1/BF0PU391.DSNN.FILTER
     5      18 data1/BF0PU391.DSNN.RELATION
     6       2 data1/BF0PU391.DSNN.RELATION.DEFINITI
     6      90 total lines in     6 files in directory data1

data1 files - after executing bf001.ksh

 llc - list filenames in directory with file & line counts
 File#   Lines
     1       1 data1/BF0PB391.BCHG.BF001.DATA.CONTEXT.D
     2       0 data1/BF0PB391.BCHG.BF001.ERR.CONTEXT.D
     3      51 data1/BF0PU391.DSNN.CODE.VALUE
     4       1 data1/BF0PU391.DSNN.CONTEXT
     5       9 data1/BF0PU391.DSNN.DEFINITI
     6       9 data1/BF0PU391.DSNN.FILTER
     7      18 data1/BF0PU391.DSNN.RELATION
     8       2 data1/BF0PU391.DSNN.RELATION.DEFINITI
     8      91 total lines in     8 files in directory data1

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

3G4. Convert/Test/Debug 10 selected JCLs

Execute bf002,3,4,5,6,7

Note
  • Instructor may have created some bugs in some of these JCL/scripts

 #2. joblog4 bf002.ksh bf001.vars   <-- execute 1st demo JCL/scriopt
     ============================

 #3. joblog4 bf003.ksh bf001.vars   <-- execute 1st demo JCL/scriopt
     ============================

 #4. joblog4 bf004.ksh bf001.vars   <-- execute 1st demo JCL/scriopt
     ============================

 #5. joblog4 bf005.ksh bf001.vars   <-- execute 1st demo JCL/scriopt
     ============================

 #6. joblog4 bf006.ksh bf001.vars   <-- execute 1st demo JCL/scriopt
     ============================

 #7. joblog4 bf007.ksh bf001.vars   <-- execute 1st demo JCL/scriopt
     ============================

 #8. joblog4 bf007.ksh bf001.vars   <-- execute 1st demo JCL/scriopt
     ============================

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

3G5. Convert/Test/Debug 10 selected JCLs

data1 files - after bf001,2,3,,4,,5,6

 llc - list filenames in directory with file & line counts
 File#   Lines
     1       1 data1/BF0PB391.BCHG.BF001.DATA.CONTEXT.D
     2       0 data1/BF0PB391.BCHG.BF001.ERR.CONTEXT.D
     3       9 data1/BF0PB391.BCHG.BF002.DATA.DFTN.D
     4       0 data1/BF0PB391.BCHG.BF002.ERR.DFTN.D
     5      51 data1/BF0PB391.BCHG.BF003.DATA.CODES.D
     6       0 data1/BF0PB391.BCHG.BF003.ERR.CODES.D
     7       2 data1/BF0PB391.BCHG.BF004.DATA.CDRELDEF.D
     8       0 data1/BF0PB391.BCHG.BF004.ERR.CDRELDEF.D
     9      18 data1/BF0PB391.BCHG.BF005.DATA.CDREL.D
    10       0 data1/BF0PB391.BCHG.BF005.ERR.CDREL.D
    11       9 data1/BF0PB391.BCHG.BF006.DATA.FILTERS.D
    12       0 data1/BF0PB391.BCHG.BF006.ERR.FILTER.D
    13      51 data1/BF0PU391.DSNN.CODE.VALUE
    14       1 data1/BF0PU391.DSNN.CONTEXT
    15       9 data1/BF0PU391.DSNN.DEFINITI
    16       9 data1/BF0PU391.DSNN.FILTER
    17      18 data1/BF0PU391.DSNN.RELATION
    18       2 data1/BF0PU391.DSNN.RELATION.DEFINITI
    18     180 total lines in    18 files in directory data1

data1 files - after bf001,2,3,4,5,6,7

 llc - list filenames in directory with file & line counts
 File#   Lines
     1       1 data1/BF0PB391.BCHG.BF001.DATA.CONTEXT.D
     2       0 data1/BF0PB391.BCHG.BF001.ERR.CONTEXT.D
     3       9 data1/BF0PB391.BCHG.BF002.DATA.DFTN.D
     4       0 data1/BF0PB391.BCHG.BF002.ERR.DFTN.D
     5      51 data1/BF0PB391.BCHG.BF003.DATA.CODES.D
     6       0 data1/BF0PB391.BCHG.BF003.ERR.CODES.D
     7       2 data1/BF0PB391.BCHG.BF004.DATA.CDRELDEF.D
     8       0 data1/BF0PB391.BCHG.BF004.ERR.CDRELDEF.D
     9      18 data1/BF0PB391.BCHG.BF005.DATA.CDREL.D
    10       0 data1/BF0PB391.BCHG.BF005.ERR.CDREL.D
    11       9 data1/BF0PB391.BCHG.BF006.DATA.FILTERS.D
    12       0 data1/BF0PB391.BCHG.BF006.ERR.FILTER.D
    13       0 data1/BF0PB391.BCHG.BF007.ERR.LIST.D
    14       0 data1/BF0PU391.DSNN.CODE.VALUE
    15       0 data1/BF0PU391.DSNN.CONTEXT
    16       0 data1/BF0PU391.DSNN.DEFINITI
    17       0 data1/BF0PU391.DSNN.FILTER
    18       0 data1/BF0PU391.DSNN.RELATION
    19       0 data1/BF0PU391.DSNN.RELATION.DEFINITI
    19      90 total lines in    19 files in directory data1

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

3G6. Convert/Test/Debug 10 selected JCLs

Execute JCL/scripts bo206,bo207,bo215


 #1. joblog4 bo206.ksh bo206.vars   <-- execute 1st demo JCL/scriopt
     ============================
 #1a. vi joblog/bo206.log      <-- investigate joblog for any errors
      ===================

 #2. joblog4 bo207.ksh bo207.vars   <-- execute 1st demo JCL/scriopt
     ============================

 #3. joblog4 bo215.ksh bo215.vars   <-- execute 1st demo JCL/scriopt
     ============================

data1 files - before bo206,7,15

 llc - list filenames in directory with file & line counts
 File#   Lines
     1      45 data1/BO2PB391.BCHG.BO206.RUN00.TKEY.D
     2       2 data1/BO2PB391.BCHG.BO207.BLK.D
     3       2 data1/BO2PB391.BCHG.BO207.CRT.USER.D
     4       4 data1/BO2PB391.BCHG.BO207.ERROR.D
     5       6 data1/BO2PB391.BCHG.BO207.FEEDB.D
     6      34 data1/BO2PB391.BCHG.BO207.RDL.D
     7      45 data1/BO2PB391.BCHG.BO215.RUN00.TKEY.SORT.D
     8      45 data1/BO2PB391.BCHN.BO206.RUN00.ALL.D
     9      45 data1/BO2PB391.BCHN.BO206.RUN00.D
     9     228 total lines in     9 files in directory data1

data1 files - after bo206,7,15

 llc - list filenames in directory with file & line counts
 File#   Lines
     1      45 data1/BO2PB391.BCHG.BO206.RUN00.TKEY.D
     2       2 data1/BO2PB391.BCHG.BO207.BLK.D
     3       2 data1/BO2PB391.BCHG.BO207.CRT.USER.D
     4       4 data1/BO2PB391.BCHG.BO207.ERROR.D
     5       6 data1/BO2PB391.BCHG.BO207.FEEDB.D
     6      34 data1/BO2PB391.BCHG.BO207.RDL.D
     7      45 data1/BO2PB391.BCHG.BO215.RUN00.TKEY.SORT.D
     8      45 data1/BO2PB391.BCHN.BO206.RUN00.ALL.D
     9      45 data1/BO2PB391.BCHN.BO206.RUN00.D
     9     228 total lines in     9 files in directory data1

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

Part_4. Complex SORTs Requiring Manual Changes

Part_4 - Complex SORTs Requiring Manual Changes - Contents


Part_4 - JCL Conversion & Test procedures for complex SORTs, 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.

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

4A1. Setup, Convert, Execute, Debug 10 sort samples

Setup, Convert, Execute, Debug 10 sort samples

Documentation to Setup, Convert, Execut,& Debug 10 sort samples for various DFSORT functions, some of which require a uvcopy supplement addition to the uvsort automatically generated by the JCL converter. A uvcopy supplement is required for some complex DFSORT functions not supported directly by uvsort.

The datafiles for these 10 sorts were supplied in Acerta_E2J201802SortExamples.zip We extracted the 10 sorts from the original JCLs into single step jobs to allow testing with only the files required to test the desired DFSORT functions. See script $RUNLIBS/sf/run_sortsamples10a to execute the 10 JCL/scripts & capture joblogs. Also see $RUNLIBS/sf/sortsamples10a.doc, a text version of this HTML documentation in same directory as the script for testing convenience.


 run_sortsamples10a <-- command to run the 10 sort sample jobs
 ==================   - script listed in documentation $RUNLIBS/sf/sortsamples10a.doc
                      - but executed from $RUNLIBS/sf/run_sortsamples10a (in $PATH)
 joblog bv306a.ksh QLB=bv4tb391 PLR=T CM3=391 JSS=bv430 RUN=T7 T_ED=180205 #1 sort_complex_big bv306 step1
 joblog bv4x1a.ksh QLB=bv4tb391 JSS=bv4yg RUN=ZZ T_ED=180214 #2 sort_csv*          bv4x1 step2
 joblog bvc57a.ksh QLB=bv4tb391 JSS=bvc55 RUN=A1 T_ED=180214 #3 sort_ifthen*       bvc57 step5
 joblog bv4x8a.ksh QLB=bv4tb391 JSS=bv4x1 RUN=00 T_ED=180214 #4 sort_include       bv4x8 step2
 joblog bv4xra.ksh QLB=bv4tb391 JSS=bv4yg RUN=00 T_ED=180111 #5 sort_inrec_overlay bv4xr step3
 joblog bv4x8b.ksh QLB=bv4tb391 JSS=bv4x7 RUN=00 T_ED=180214 #6a sort_join1*       bv4x8 step2
 #===============  QLB=bv4tb391 JSS=bv4x2 RUN=00 T_ED=180214 #6b                   -2nd input-
 joblog bv4x8c.ksh QLB=bv4tb391 JSS=bv4x8 RUN=00 T_ED=180214 #7a sort_join2*       bv4x8 step4
 #===============  QLB=bv4tb391 JSS=bv4x7 RUN=00 T_ED=180214 #7b                   -2nd input-
 joblog bv4xrb.ksh QLB=bv4tb391 JSS=bv4x6 RUN=00 T_ED=180126 #8a sort_join3*       bv4xr step2
 #===============  QLB=bv4tb391 JSS=bv4x6 RUN=00 T_ED=180126 #8b                   -2nd input-
 joblog bv401a.ksh QLB=bv3tb391 PLR=T CM3=391 JSS=bv301 RUN=N7 T_ED=180214 #9 sort_omit bv401 step2
 joblog bv410a.ksh QLB=bv4tb391 JSS=bv408 RUN=B1 T_ED=180214 #10a sort_split       bv410 step1
 #===============  QLB=bv4tb391 JSS=bv409 RUN=B1 T_ED=180214 #10b                  -2nd input-

Setup, Converting, Executing,& Debugging 10 sort samples

See documentation for Setting up, Converting, Executing,& Debugging these 10 sort sample jobs at http://uvsoftware.ca/Acerta/cnvjcltest.htm#4A1 (HTML).

Or see text version provided in $RUNLIBS/sf/sortsamples10a.doc, in same directory as the script (run_sortsamples).

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

4A2. Setup, Convert, Execute, Debug 10 sort samples

Setup directories, select jobs,& edit to 1 step job


 #00. Login --> $HOME      --> /home/acerta2/... for example

 #01.  cdl ---> $RUNLIBS   --> /home/acerta2/testlibs2/... for example
       =================

 #02.  mkdir ju1 ju2 ju3      <-- make subdirs for JCL Tests (or clear existing)
       =================          (vs jcl1,jcl2,jcl3 for normal JCL conversions)

 #03.  select_sortsamples10a  <-- run script to select JCLs jcl1/... --> ju1/...
       =====================

sf/select_sortsamples10a - select 10 JCLs with desired SORT functions

 cp jcl1/bv306.jcl ju1/bv306a.jcl  #1 sort_complex_big   bv306 step1
 cp jcl1/bv4x1.jcl ju1/bv4x1a.jcl  #2 sort_csv*          bv4x1 step2
 cp jcl1/bvc57.jcl ju1/bvc57a.jcl  #3 sort_ifthen        bvc57 step5
 cp jcl1/bv4x8.jcl ju1/bv4x8a.jcl  #4 sort_include       bv4x8 step2
 cp jcl1/bv4xr.jcl ju1/bv4xra.jcl  #5 sort_inrec_overlay bv4xr step3
 cp jcl1/bv4x8.jcl ju1/bv4x8b.jcl  #6a sort_join1*       bv4x8 step2
 #===============================  #6b sort_join1*       -2nd input-
 cp jcl1/bv4x8.jcl ju1/bv4x8c.jcl  #7a sort_join2*       bv4x8 step4
 #===============================  #7a sort_join2*       -2nd input-
 cp jcl1/bv4xr.jcl ju1/bv4xrb.jcl  #8a sort_join3*       bv4xr step2
 #===============================  #8b sort_join3*       -2nd input-
 cp jcl1/bv401.jcl ju1/bv401a.jcl  #9 sort_omit          bv401 step2
 cp jcl1/bv410.jcl ju1/bv410a.jcl  #10a sort_split       bv410 step1
 #===============================  #10b sort_split       -2nd input-

This script SELECTs JCLs from jcl1/ to ju1/ & renames the 5 char jobnames, appending an 'a' (or 'b' or 'c' if multiple steps selected from same job). To be edited down to single step JCL/scripts, to allow testing with only the files required to test selected DFSORT functions


 #04.  vi ju1/*   <-- edit JCL to drop all steps except SORT with desired function
       ========

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

4A3. Setup, Convert, Execute, Debug 10 sort samples

identify uvcopy supplements for JCL converter

We must tell the JCL converter where to insert the uvcopy commands to supplement the uvsorts with functions not directly supported by uvsort. Owen has already done this for all JCL/scripts (normal & single step selections).


 #06.  vi ctl/jclunixop51  <-- edit JCL converter control-file to identify SORT steps
       ==================      that require uvcopy supplement (following the uvsort)
       - see :UVSORTUVCOPY: starting table about line 400 in ctl/jclunixop51
      # Table of uvsort jobname_step#s to be supplemented by uvcopy
      # - for complex SORT operations beyond uvsort capability
      #Feb22/2018 - for sortsamples10a test/demos
      :UVSORTUVCOPY:
      bv4x1a_S0010      #2 sort_csv
      bv4x8b_S0010      #6 sort_join1
      bv4x8c_S0010      #7 sort_join2
      bv4xrb_S0010      #8 sort_join3
      bvc57a_S0010      #3 sort_ifthen
      ~~~~~~~~~~~~~~~~~~~~

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

4A4. Setup, Convert, Execute, Debug 10 sort samples

Create uvcopy job supplements for functions not supported by uvsort

Owen has already done this for all JCL/scripts (normal & single step selections). Here is an example for demo job bvc57a.ksh, the uvcopy job is named as bvc57a.ksh_S0010 since it is now in step 1 (vs step 3 of original multi-step JCL).


 #05.  vi pfs/bvc57a_S0010  <-- create uvcopy job to supplement uvsort for some DFSORT functions
       ===================    - example for job #2 sort_csv* IFTHEN
 # bvc57a_S0010 - uvcopy supplement for bvc57a.jcl step1 demo, orig step2
 #              - by Owen Townsend, UV Software, Feb23/2018
 #              - Acerta sortsamples10a - #3 sort_ifthen
 #
 # uvcopy $RUNLIBS/pfs/bvc57a_S0010,fili1=$JTMP/bvc57a_S0010,filo1=$SORTOUT
 # ========================================================================
 # ----------------- SYSIN ------------------------
 # INREC  IFTHEN=(WHEN=(64,10,CH,NE,C'          '),
 #            BUILD=(1:1,200,201:64,10)),
 #        IFTHEN=(WHEN=(64,10,CH,EQ,C'          '),
 #            BUILD=(1:1,200,201:74,70))
 opr='$jobname - uvcopy supplement to uvsort in bvc57a.jcl step1'
 fili1=?${JTMP}/bvc57a_S0010,rcs=200,typ=LST
 filo1=?${SORTOUT},rcs=270,typ=LSTt
 @run
         opn     all
 # begin loop to get/process/put records until EOF
 man20   get     fili1,a0               get next record
         skp>    man90
         clr     b0(270),' '            clear outpuit area
         cmc     a63(10),' '
         skp!    man40
         cmc     a63(10),' '
         skp=    man50
 # no IFTHEN conditions met - output record unchanged
 man30   mvf     b0(270),a0(200)        copy inrec to outrec
         skp     man80                  goto output
 # BUILD=(1:1,200,201:64,10)),
 man40   mvc     b0(200),a0
         mvc     b200(10),a63
         skp     man80
 # BUILD=(1:1,200,201:74,70))
 man50   mvc     b0(200),a0
         mvc     b200(70),a73
         skp     man80
 # common point to output & return to get next
 man80   put     filo1,b0
         skp     man20
 # EOF - close files & end job
 man90   cls     all
         eoj

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

4A5. Setup, Convert, Execute, Debug 10 sort samples

convert the 10 sort sample demo jobs

Use 'jcl1234A' script to convert the 10 JCLs isolated in ju1/... It converts ju1-->ju2-->ju3-->ju4, and then copy ju3/* to jus/... which is in $PATH (as well as jcls & jts).

We could probably use jcls/* if we are in the training, testing, period before any JCL/scripts worth saving.


 #07a. mv jcls jcls_save  <-- save jcls/... before we clear for demos
 #07b. mkdir jcls         <-- remake empty subdir for our demos
 #07c. rm -f jcls/*       <-- OR remove all JCL/scripts from jcls/...
Note
  • do not need to save jcls, we will use jus alternate in $PATH

 #08.  jcl1234A ju1 ju2 ju3 ju4   <-- convert 10 selected SORT JCL/scripts
       ========================

 #09.  cp ju3/* jus      <-- copy to execution directory (in $PATH)
       ============

preparations to run the JCL/scripts


 #10.  cdd --> $RUNDATA    --> /home/acerta2/testdata2 for example
       ================

 #11.  rm -f data1/*            <-- remove all existing files from data1/...
       =============               - to test with ONLY FILES REQUIRED for sortsamples10
              --- OR if you need to save existing files ---

 #12a. mv data1 data1_2018mmyy  <-- save existing data1 for later restore if required
       =======================    - to test with ONLY FILES REQUIRED for sortsamples10

 #12b. mkdir data1/             <-- remake (empty) data1/ dir for sortsamples10 test
       ============

 #13.  cp arcdata1/sortsamples10a/* data1 <-- copy datafiles for sortsamples10a JCLs
       ==================================

 #14.  testdatainit             <-- run script to clear temporary subdirs
       ============                   (joblog,jobtmp,jobtimes,tmp)

 #15. run_sortsamples10a     <--*-- run script to execute sortsamples10a JCL/scripts
      ==================

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

4A6. Setup, Convert, Execute, Debug 10 sort samples

Investigate Test Results


 #16.  vi joblog/*              <-- investigate joblogs
       ===========

 #17.  vi data1/*               <-- investigate output data files
       ==========

printing JCL/script/data files to aid investigations

For example, assume we have a problem with bvc57a #3 sort_ifthen. It is a big help if you have a printe available to help debug complex problems. You can use the uvlp... scripts to print out various files at appropriate cpi.

 We usually use 'uvlp13' to print JCL/scripts if less than 1 page (60 lines)
 or 'uvlp13D' to print Duplex if more than 60 lines. uvlp13 & uvlp13D print
 100 characters on 8 1/2 inch wide paper. For various characters/line use
 uvlp13/uvlp13D 100, uvlp16/uvlp16D 120, uvlp18/uvlp18D 120, uvlp20/uvlp20D 150.
 If Landscape: uvlp13L(D) 135, uvlp16(D) 160, uvlp18L(D) 180, uvlp20(D) 200.

There are many other options such as select page begin & end (for large files), sequence numbering, setting margins, etc. See complete documentation for 'uvlist' at http://uvsoftware.ca/uvlist.htm.

Here is how you could print all the evidence you might need to debug a complex problem with bvc77a.jcl/ksh (#3 sort_ifthen in sortsamples10a).


 #00.  cdl --> $RUNLIBS (/home/acerta2/testlibs2 for example)
       ================
 #01.  uvlp13 ju1/bvc57a.ksh     <-- JCL before conversion
       =====================       - using uvlp13 since we know less than 1 page
 #02.  uvlp13D ju3/bvc57a.ksh    <-- JCL/script after conversion
       ======================      - using uvlp13D, since might be > 1 page
 #03.  uvlp13D pfs/bvc57a_S0010  <-- uvcopy job supplement to uvsort
       ========================    - for IFTHEN logic

 #04.  cdd --> $RUNDATA (/home/acerta2/testdata2 for example)
       ================

 #05a. uvlp20L data1/bv4tb391.bchg.bvc55.lagg.ra1.d180214 e1 <-- SORTIN datafile
       =====================================================   - e1 for 1 page only
       - uvlp20L provides 200 chars across Landscape (SORTIN has rcs=200)
       - Note option 'e1' to End print after 1 page

 #05b. uvlp20L data1/bv4tb391.bchg.bvc55.s.lg.ra1.d180214 e1 <-- SORTOUT datafile
       =====================================================   - e1 for 1 page only
       - SORTOUT has rcs=270, so each record prints 200 1st line & 70 2nd line.

 #06.  uvlp13D sf/run_sortsamples10a  <-- script with execution command lines
       =============================    - specifying command line variables:
       - verify that command line variables are correct (see ????? below)

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

4A7. Setup, Convert, Execute, Debug 10 sort samples

debugging JCL/script/data problems

Note that we do not want to fix problems by modifying the JCL/scripts in jcls/... We want to be able to reconvert the original JCL: jcl0-->jcl1-->jcl2-->jcl3-->jcls. Modifying the converted scripts in jcls/... is the last resort, 1st try to correct problems as follows (making notes on the printouts created above).

For this demo with selected jcl: ju1-->ju2-->ju3-->jus (jus also in $PATH).


 #00.  cdl --> $RUNLIBS (/home/acerta2/testlibs2 for example)
       ================

Record Size problems

The joblog might have error messaage "record size full without LineFeed" or the output data records might be misaligned or truncated. We need to check for recsize mismatches between the datafiles & rcs=... on uvsort/uvcopy commands.


 #01.  vi ju3/bvc57a.ksh   <-- check  datafilenames & rcs=... on uvsort/uvcopy commands.
       =================     - extract from bvc57a.log listed below
       exportfile  SORTIN data1/${QLB}.bchg.bvc55.lagg.r${RUN}.d${T_ED} #SHR
       exportfile  SORTOUT data1/${QLB}.bchg.bvc55.s.lg.r${RUN}.d${T_ED} #(,CATLG,DELETE)
       uvsort "fili1=$SORTIN,typ=LSTt,rcs=200,filo1=$JTMP/bvc57a_S0010,typ=LSTt,rcs=270,keys=(copy)"
       uvcopy $RUNLIBS/pfs/bvc57a_S0010,fili1=$JTMP/bvc57a_S0010,filo1=$SORTOUT

Then we need to check the JCL converter control file of record-sizes for datafiles in $RUNLIBS/ctl/add/masterctl51. This file was created after the 1st conversion (of all JCL/scripts by jcl2ksh54A) by copying ctl/datactl53 to ctl/add/masterctl51. See more documentation in ctl/add/masterctl51_README & ctl/add/masterctl51_INSTRUCTIONS.


 #02.  vi $RUNLIBS/ctl/add/masterctl51  <-- check record sizes for SORTIN/SORTOUT files
       ===============================
       - for bvc57a.ksh, the control file entries for SORTIN/SORTOUT are as follows:
       ${QLB}.bchg.bvc55.lagg.r${RUN}.d${T_ED}       rcs=00200 rcb=_____ typ=RSF cpy=
       ${QLB}.bchg.bvc55.s.lg.r${RUN}.d${T_ED}       rcs=00270 rcb=_____ typ=RSF cpy=

You can see that the rcs=00200 & rcs=00270 in the control file do match the rcs=200 & rcs=270 on the uvsort/uvcopy commands listed above.

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

4A8. Setup, Convert, Execute, Debug 10 sort samples

filename mismatches script vs actual datafile


 #01.  vi sf/run_sortsamples10a  <-- check run command line variables
       ========================    - extract for bvc57a.log listed below
       joblog bvc57a.ksh QLB=bv4tb391 JSS=bvc55 RUN=A1 T_ED=180214 #3 sort_ifthen

 #02.  vi ju3/bvc57a.ksh         <-- check  datafilenames for SORTIN/SORTOUT in script
       =================           - extract from bvc57a.log listed below
       exportfile  SORTIN data1/${QLB}.bchg.bvc55.lagg.r${RUN}.d${T_ED} #SHR
       exportfile  SORTOUT data1/${QLB}.bchg.bvc55.s.lg.r${RUN}.d${T_ED} #(,CATLG,DELETE)

 #03.  cdd --> $RUNDATA (/home/acerta2/testdata2 for example)
       ================

 #04.  vi joblog/bvc57a.log  <-- check datafilenames after variable substitution
       ====================    - extract from bvc57a.log listed below
       180224:094734:bvc57a: file: SORTIN=data1/bv4tb391.bchg.bvc55.lagg.ra1.d180214 fsize=615K
       180224:094734:bvc57a: file: SORTOUT=data1/bv4tb391.bchg.bvc55.s.lg.ra1.d180214 fsize=0

 #05.  l data1               <-- check datafilenames in $RUNDATA/data1
       =======                 - datafilenames for bvc57a SORTIN/SOTOUT listed below
       -rw-rw-r-- acerta1 apps 615192 Feb 24 07:43 bv4tb391.bchg.bvc55.lagg.ra1.d180214
       -rw-rw-r-- acerta1 apps 745095 Feb 24 09:47 bv4tb391.bchg.bvc55.s.lg.ra1.d180214

You can see that the filenames in data1/ here match the datafilenames in the joblog (#04. above) & would match the datafilenames in the JCL/script (bvc57a.ksh, #02 above) after variable substitution with values on the run command (#01. above).

check uvcopy supplement coding


 #06.  cdl --> $RUNLIBS     (/home/acerta2/testlibs2 for example)
       ================

 #07.  vi pfs/bvc57a_S0010  <-- check uvcopy supplement for bvc57a.ksh sort step1
       ===================      (step3 in original bvc57.ksh before extract to 1 step job)

Owen has written the uvcopy supplements, which are stored in $RUNLIBS/pfs/... Please report JCL conversion problems to Owen for resolution. When Owen reports problems fixed, rerun the jobs as documented at the top for #07. ---> #17.

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

4B1. run_bv306a - script to run 1 of sortsamples10a (vs all)

You could run a JCL/script by coding the variables on the comamnd line, for example:


 joblog bv306a.ksh QLB=bv4tb391 PLR=T CM3=391 JSS=bv430 RUN=T7 T_ED=180205
 #=========================================================================

But this is obviously rather awkward having to key so many variables. One alternative would be to create a script with the variables pre-coded. For eample, you might crate a script to run bv306a.ksh as follows:


 vi sf/run_bv306a    <-- create script to run bv306a
 ================

 run_bv306a          <-- execute script to run bv306a
 ==========

run_bv306a - script to run 1 of sortsamples10a (vs all)

 # run_bv306a - by Owen Townsend, Mar05/2018
 #            - this script stored in $RUNLIBS/sf/...
 # Isolated from script 'run_sortsamples10' to run just this 1 job vs all 10
 # Luc selected 10 sorts for Owen to verify operational
 # several using DFSORT complex functions such as JOINKEYS
 #
 # Luc selected bv306a.ksh as #1 described as 'sort_complex_big'
 # - to sort a big file, with many key fields, but no complex functions
 # - bv306a.ksh is just step1 extracted from bv306.ksh
 #
 # run_bv306a   <-- executes $RUNLIBS/jcls/bv306a.ksh & saves joblog/bv306a.log
 # ==========
 #
 joblog bv306a.ksh QLB=bv4tb391 PLR=T CM3=391 JSS=bv430 RUN=T7 T_ED=180205
 #=========================================================================
 #
 # This script saves having to specify the JSS variables on the command line
 # - handy for multiple runs of same job (as when debugging)
 #
 #       ** Documentation to Setup,Convert,Execute,Debugg 10 sort samples **
 #
 # See Documentation to Setup, Convert, Execute,& Debug these 10 sort sample jobs
 # at http://uvsoftware.ca/Acerta/cnvjcltest.htm#4A1 (HTML).
 # Or see text version provided in $RUNLIBS/sf/sortsamples10a.doc, in same directory
 # as this script (run_sortsamples).

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

4B2. setvars1 - set variables for easy command line runs

A 2nd alternative to run a JCL/script without having to specify the variables on the command line is to create a script to set the variables in the current environment ( by '.' executing or sourcing the script). For example, here is a script to set the variables required to run bv306a:

setvars1 - set variables for easy command line runs

 #!/bin/ksh
 # setvars1 - export variables to run JCL/scripts
 #          - by Owen Townsend, UV Software, Feb18/2018
 #          - easier alternative to specifying variables on command line
 # setvars1 - $RUNLIBS/sf/setvars1 - active script user access
 # setvars0 - $UV/sf/IBM/setvars0  - sample/backup
 #
 #        --- example with command line variables ---
 # joblog bv4x1.ksh QLB=bv4pb391 JSS=bv4x1 RUN=00 T_ED=180215
 # ==========================================================
 #
 # export the variables:
 export PLR=P
 export QLB=bv4pb391
 export JSS=bv4x1
 export RUN=00
 export VR1=RDY
 export VR2=00
 export T_ED=180215
 echo "PLR=$PLR, QLB=$QLB, JSS=$JSS, RUN=$RUN, VR1=$VR1, VR2=00, T_ED=$T_ED"

executing setvars1 & bv306a.ksh


 source setvars1   <-- execute setvars1 via 'source' or '.'
 ===============
 . setvars1        <-- or with '.' (same as 'source')
 ==========

 joblog bv4x1.ksh  <-- can now execute without command line variables
 ================

This would be convenient for debugging when you might need to re-run the script several times.

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

4B3. setvars1 - set variables for easy command line runs

3rd & BEST alterantive for testing JSS/JCL/scripts

A 3rd & BEST alternative to run a JCL/script without having to specify the variables on the command line is to use the 'joblog4' script, which allows you to specify a 2nd script (arg2) which defines the variables before executing the arg1 JCL/script.

For example, here is the joblog4 command to run bv306a.ksh after setting its variables.


 joblog4 bv306a.ksh bv306a.vars   <-- execute $RUNLIBS/jus/bv306a.ksh, after setting
 ==============================       variables in $RUNLIBS/vars/bv306a.vars

joblog4 will '.' execute bv306a.vars (from $RUNLIBS/vars/bv306a.vars, to set the variables for bv306a.ksh), before executing the 'bv306a.ksh' JCL/script.

Of course you must 1st have created 'bv306a.vars' (for example)


 vi vars/bv306a.vars    <-- create variables for bv306a.ksh
 ===================
 # bf001.vars - JSS variables for bf001-bf007,bo206,bo207,bo215
 #            - by Owen Townsend, UV Software, Apr11/2018
 #            - specified as arg2 on joblog4 to define JSS variables
 #            - '.' executed in joblog prior to executing JCL/script
 #
 # joblog4 bf001.ksh bf001.vars    <-- usage
 # ============================
 #
 export QLB=BF0PB391
 export QLU=BF0PU391

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

4B4. set variables for easy command line runs

joblog4 - best way to run JSS/JCL/scripts

 # joblog4 - run a JCL/script & capture a log file (via tee)
 #         - same as joblog adding arg2 to specify script in $RUNLIBS/vars/...
 #           to define JSS variables for the JCL/script
 #
 # Versions of joblog (vs console-logging)
 # joblog  - names log file same as JCL/script with .log replacing .ksh
 #         - intended for test/debug
 # joblog1 - appends date/time stamp to log file
 # joblog2 - delays execution if same jobname already running
 #         - date/time stamps at end of job (allows waiting job to run)
 # joblog3 - same as joblog2 AND appends JCL/script on end of joblog
 # joblog4 - same as joblog adding arg2 to specify script in $RUNLIBS/vars/...
 #           to define JSS variables for the JCL/script
 # console-logging - see www.uvsoftware.ca/admjobs.htm#Part_6
 # - captures everything: replies to prompts & operator commands between jobs
 # - intended for operator controlled batch shifts (vs schedulers)
 #
 jclksh="$1"   # capture arg1 script filename with extension (jclname.ksh)
 jssvars="$2"  # capture aaarg2 name of script in $RUNLIBS/vars/...
 if [[ (-f $RUNLIBS/jcls/$jclksh || -f $RUNLIBS/jts/$jclksh || -f $RUNLIBS/jus/$jclksh)\
     && -f $RUNLIBS/vars/$jssvars ]]; then :
   else echo "usage: joblog4 jclname.ksh jssvars [args]"
        echo "       =================================="
        echo " - arg1 must be a script in \$RUNLIBS/jcls or jts or jus"
        echo " - arg2 must be a script in \$RUNLIBS/vars"
        echo "   with 'export VARs=values' "
        exit; fi
 #
 # setup joblog directory pathname & make joblog subdir if not existing
 #Jan08/2014 - ensure joblog written to $RUNDATA, regardless of where run
 jld=$RUNDATA/joblog    # setup joblog directory pathname
 if [[ ! -d $jld ]]; then mkdir $jld; fi
 #
 # create logfilename by dropping .ksh & appending .log
 jf=${jclksh%\.*}         # drop extension .ksh from JCL/script filename
 jlf=$jf.log              # add extension .log to create logfilename
 #
 # if arg2 is a file in $RUNLIBS/vars - '.' execute prior to executing script
 if [[ -f $RUNLIBS/vars/$jssvars ]]; then . $RUNLIBS/vars/$jssvars; fi
 #
 $jclksh $* 2>&1 | tee $jld/$jlf
 #==============================
 # "$*" include all arguments following jobname.ksh
 echo "enter command to view, print, and/or save logfile"
 echo "logfile: $jld/$jlf"
 echo "--> vi,cat,more,uvlp12,etc, and/or 'save' to date/time stamp"
 read reply
 if [[ "$reply" == *save* ]]; then
    cp $jld/$jlf $jld/${jlf}_$(date +%y%m%d_%H%M%S); fi
 cmd=${reply%save*}
 if [[ -n "$cmd" ]]; then $cmd $jld/$jlf; fi
 exit 0

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 

4A8 Actual: filename mismatches script vs actual datafile
1C1 Advantages: Advantages of stub_profile,& common_profile
4A6 Aid: printing JCL/script/data files to aid investigations
4B3 Alterantive: 3rd & BEST alterantive for testing JSS/JCL/scripts
3D1 Assist: printing that may assist debug
2B2 Automic: convert JCL/scripts for Automic scheduler

3E2 B0206: create vars for bf001,2,3,4,5,6,7,b0206,7,15
4B3 Best: 3rd & BEST alterantive for testing JSS/JCL/scripts
4B4 Best: joblog4 - best way to run JSS/JCL/scripts
3E2 Bf001: create vars for bf001,2,3,4,5,6,7,b0206,7,15
3G5 Bf001: data1 files - after bf001,2,3,,4,,5,6
3G5 Bf001: data1 files - after bf001,2,3,4,5,6,7
3G2 Bf001-bf007: Execute JCL/scripts bf001-bf007
3G3 Bf001.ksh: data1 files - after executing bf001.ksh
3G4 Bf002: Execute bf002,3,4,5,6,7
3G6 Bo206: Execute JCL/scripts bo206,bo207,bo215
3G6 Bo206: data1 files - after bo206,7,15
3G6 Bo206: data1 files - before bo206,7,15
3G6 Bo207: Execute JCL/scripts bo206,bo207,bo215
3G6 Bo215: Execute JCL/scripts bo206,bo207,bo215
4B2 Bv306a.ksh: executing setvars1 & bv306a.ksh

3C2 Check: results
4A8 Check: uvcopy supplement coding
4A8 Coding: check uvcopy supplement coding
4B2 Command: setvars1 - set variables for easy command line runs
1C1 Common_profile: Advantages of stub_profile,& common_profile
2B1 Control: JCL converter control file
2B1 Converter: JCL converter control file
4A3 Converter: identify uvcopy supplements for JCL converter

1C1 Data: RUNLIBS & RUNDATA determine PATHs to programs/scripts & data
2A2 Data: Notes re test data files
2A2 Data: subdirs for test/demo executions
3A1 Data: Notes re test data files
3A1 Data: subdirs for test/demo executions
3G1 Data: subdirs for test/demo executions
4A6 Data: printing JCL/script/data files to aid investigations
4A7 Data: debugging JCL/script/data problems
3G3 Data1: files - after executing bf001.ksh
3G3 Data1: files - before any executions
3G5 Data1: files - after bf001,2,3,,4,,5,6
3G5 Data1: files - after bf001,2,3,4,5,6,7
3G6 Data1: files - after bo206,7,15
3G6 Data1: files - before bo206,7,15
4A8 Datafile: filename mismatches script vs actual datafile
3C1 Debug: test/debug ITERATION for problem job
3D1 Debug: Print-outs to help debug difficult jobs
3D1 Debug: printing that may assist debug
3E1 Debug: Convert/Test/Debug 10 selected JCLs
4A1 Debug: Setup, Convert, Execute, Debug 10 sort samples
4A1 Debugging: Setup, Converting, Executing,& Debugging 10 sort samples
4A7 Debugging: JCL/script/data problems
2A2 Demo: data subdirs for test/demo executions
3A1 Demo: data subdirs for test/demo executions
3G1 Demo: data subdirs for test/demo executions
4A5 Demo: convert the 10 sort sample demo jobs
4A2 Desired: sf/select_sortsamples10a - select 10 JCLs with desired SORT functions
2B1 Detailed: JCL Conversion - Detailed Instructions
3D1 Difficult: Print-outs to help debug difficult jobs
4A2 Directories: Setup directories, select jobs,& edit to 1 step job
1A1 Directory: uvadm - Vancouver Utility home directory

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 

4B2 Easy: setvars1 - set variables for easy command line runs
4A2 Edit: Setup directories, select jobs,& edit to 1 step job
1B1 Env: 'profiles' provided in /home/uvadm/env
3A1 Essential: LIBRARY subdirs for executions
2B2 Except: reconvert all JCL except procs,parms,includes
3G1 Execute: prepare to Execute sample JCL/scripts
3G2 Execute: Execute JCL/scripts bf001-bf007
3G4 Execute: Execute bf002,3,4,5,6,7
3G6 Execute: Execute JCL/scripts bo206,bo207,bo215
4A1 Execute: Setup, Convert, Execute, Debug 10 sort samples
3G3 Executing: data1 files - after executing bf001.ksh
4A1 Executing: Setup, Converting, Executing,& Debugging 10 sort samples
4B2 Executing: setvars1 & bv306a.ksh
2A2 Executions: data subdirs for test/demo executions
3A1 Executions: data subdirs for test/demo executions
3A1 Executions: essential LIBRARY subdirs for executions
3G1 Executions: data subdirs for test/demo executions
3G3 Executions: data1 files - before any executions
2B2 Expansion: re-run proc expansion

4A8 Filename: mismatches script vs actual datafile
4A2 Functions: sf/select_sortsamples10a - select 10 JCLs with desired SORT functions
4A4 Functions: Create uvcopy job supplements for functions not supported by uvsort

3D1 Help: Print-outs to help debug difficult jobs
1A1 Home: uvadm - Vancouver Utility home directory
1B1 Home: 'profiles' provided in /home/uvadm/env

4A3 Identify: uvcopy supplements for JCL converter
2B2 Includes: reconvert all JCL except procs,parms,includes
2B1 Instructions: JCL Conversion - Detailed Instructions
4A6 Investigate: Investigate Test Results
4A6 Investigations: printing JCL/script/data files to aid investigations
3C1 Iteration: test/debug ITERATION for problem job

3B2 Joblog: using 'testdatainit' & 'joblog'
4B4 Joblog4: - best way to run JSS/JCL/scripts
4B3 Jss: 3rd & BEST alterantive for testing JSS/JCL/scripts
4B4 Jss: joblog4 - best way to run JSS/JCL/scripts

3E1 Ksh: JCL/ksh scripts after conversion
3F2 Ksh: sample JCL/ksh script after conversion

2A1 Libraries: JCL conversion LIBRARIES
2A2 Library: subdirs for production (after conversion)
3A1 Library: essential LIBRARY subdirs for executions
4B2 Line: setvars1 - set variables for easy command line runs

3D1 May: printing that may assist debug
4A8 Mismatches: filename mismatches script vs actual datafile
3C2 Modify: JCL/scripts & repeat test

4B1 Of: run_bv306a - script to run 1 of sortsamples10a (vs all)

2B2 Parms: converting All JCL without Procs & Parms
2B2 Parms: reconvert all JCL except procs,parms,includes
1C1 Paths: RUNLIBS & RUNDATA determine PATHs to programs/scripts & data
4A5 Preparations: to run the JCL/scripts
3G1 Prepare: to Execute sample JCL/scripts
3D1 Print-outs: Print-outs to help debug difficult jobs
3D1 Printing: that may assist debug
4A6 Printing: JCL/script/data files to aid investigations
3C1 Problem: test/debug ITERATION for problem job
4A7 Problems: Record Size problems
4A7 Problems: debugging JCL/script/data problems
2B2 Proc: re-run proc expansion
2B2 Procs: converting All JCL without Procs & Parms
2B2 Procs: reconvert all JCL except procs,parms,includes
2A2 Production: library subdirs for production (after conversion)
1B1 Profiles: 'profiles' provided in /home/uvadm/env
1C1 Programs: RUNLIBS & RUNDATA determine PATHs to programs/scripts & data
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 

2B2 Re-run: proc expansion
2B2 Reconvert: all JCL except procs,parms,includes
4A7 Record: Record Size problems
3C2 Repeat: modify JCL/scripts & repeat test
3C2 Results: check results
4A6 Results: Investigate Test Results
3B1 Run: 'testdatainit' before JCL/scripts
4A5 Run: preparations to run the JCL/scripts
4B1 Run: run_bv306a - script to run 1 of sortsamples10a (vs all)
4B4 Run: joblog4 - best way to run JSS/JCL/scripts
4B1 Run_bv306a: - script to run 1 of sortsamples10a (vs all)
1C1 Rundata: RUNLIBS & RUNDATA determine PATHs to programs/scripts & data
1C1 Runlibs: RUNLIBS & RUNDATA determine PATHs to programs/scripts & data
4B2 Runs: setvars1 - set variables for easy command line runs

3F1 Sample: JCL before conversion
3F2 Sample: JCL/ksh script after conversion
3G1 Sample: prepare to Execute sample JCL/scripts
4A5 Sample: convert the 10 sort sample demo jobs
4A1 Samples: Setup, Convert, Execute, Debug 10 sort samples
4A1 Samples: Setup, Converting, Executing,& Debugging 10 sort samples
2B2 Scheduler: convert JCL/scripts for Automic scheduler
4A2 Select: Setup directories, select jobs,& edit to 1 step job
4A2 Select: sf/select_sortsamples10a - select 10 JCLs with desired SORT functions
4A2 Select_sortsamples10sf/select_sortsamples10a - select 10 JCLs with desired SORT functions
3E1 Selected: Convert/Test/Debug 10 selected JCLs
3E3 Selected: Convert 10 selected JCLs
4B2 Set: setvars1 - set variables for easy command line runs
4A1 Setup: Setup, Convert, Execute, Debug 10 sort samples
4A1 Setup: Setup, Converting, Executing,& Debugging 10 sort samples
4A2 Setup: Setup directories, select jobs,& edit to 1 step job
4B2 Setvars1: executing setvars1 & bv306a.ksh
4B2 Setvars1: - set variables for easy command line runs
4A7 Size: Record Size problems
4A1 Sort: Setup, Convert, Execute, Debug 10 sort samples
4A1 Sort: Setup, Converting, Executing,& Debugging 10 sort samples
4A2 Sort: sf/select_sortsamples10a - select 10 JCLs with desired SORT functions
4A5 Sort: convert the 10 sort sample demo jobs
4B1 Sortsamples10a: run_bv306a - script to run 1 of sortsamples10a (vs all)
4A2 Step: Setup directories, select jobs,& edit to 1 step job
1C1 Stub_profile: Advantages of stub_profile,& common_profile
2A2 Subdirs: data subdirs for test/demo executions
2A2 Subdirs: library subdirs for production (after conversion)
3A1 Subdirs: data subdirs for test/demo executions
3A1 Subdirs: essential LIBRARY subdirs for executions
3G1 Subdirs: data subdirs for test/demo executions
2A1 Subset: JCL subset conversions
4A8 Supplement: check uvcopy supplement coding
4A3 Supplements: identify uvcopy supplements for JCL converter
4A4 Supplements: Create uvcopy job supplements for functions not supported by uvsort
4A4 Supported: Create uvcopy job supplements for functions not supported by uvsort

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 

2A2 Test: Notes re test data files
2A2 Test: data subdirs for test/demo executions
3A1 Test: Notes re test data files
3A1 Test: data subdirs for test/demo executions
3C1 Test: test/debug ITERATION for problem job
3C2 Test: modify JCL/scripts & repeat test
3E1 Test: Convert/Test/Debug 10 selected JCLs
3G1 Test: data subdirs for test/demo executions
4A6 Test: Investigate Test Results
3B1 Testdatainit: run 'testdatainit' before JCL/scripts
3B2 Testdatainit: using 'testdatainit' & 'joblog'
4B3 Testing: 3rd & BEST alterantive for testing JSS/JCL/scripts
3D1 That: printing that may assist debug
2B1 Tim: converting 1 at a time vs All (above)

1A1 Utility: uvadm - Vancouver Utility home directory
1A1 Uvadm: - Vancouver Utility home directory
1B1 Uvadm: 'profiles' provided in /home/uvadm/env
4A3 Uvcopy: identify uvcopy supplements for JCL converter
4A4 Uvcopy: Create uvcopy job supplements for functions not supported by uvsort
4A8 Uvcopy: check uvcopy supplement coding
4A4 Uvsort: Create uvcopy job supplements for functions not supported by uvsort

1A1 Vancouver: uvadm - Vancouver Utility home directory
4B2 Variables: setvars1 - set variables for easy command line runs
3E2 Vars: create vars for bf001,2,3,4,5,6,7,b0206,7,15
4B1 Vs: run_bv306a - script to run 1 of sortsamples10a (vs all)

4B4 Way: joblog4 - best way to run JSS/JCL/scripts
2B2 Without: converting All JCL without Procs & Parms

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