Installation Guide for Unix/Linux - CONTENTS

A0. UV Software Copyright notice, Warranty,& Support
A1. Vancouver Utilities Distribution media & Install Guides
A2. Sub-Directories in uvadm after tar extract or unzip.
A3.  Vancouver Utilities contents & sub-directories explained
A4.  Installation Summary & Creating VU administrator account.
A5.  profiles provided in /home/uvadm/env/... (stub & common profiles)
- setup appsadm & copy profiles to /home/appsadm/env/...
B1. Installation Procedures - first time or Reinstal new version ?
B2.  Setup 'uvadm' administrator user account for the Vancouver utilities
B3.  Download zip/tar archive of Vancouver Utilities from UV Software website
B4.  Setup 'appsadm' account to hold profiles (preserved when new uvadm installed)
B5.  Modify 'common_profile' in /home/appsadm/env/... as required for your site
 (TERM, stty erase, UVLPDEST for printer, COBDIR for Micro Focus COBOL, etc)
B6.  Modify stub profile (.bash_profile or .profile) & copy to homedirs
B7. Preparations for 'UPDATE' Versions of VU (method#1 mandatory for SUN)
B8.  Preparations for 'UPDATE' Versions of VU (method#2 other machines)
B9.  Download zip/tar archive of Vancouver Utilities from UV Software website
B10.   Updating $APPSADM/sfun & $APPSADM/env when new version of VU installed
B11.   Notes re owner, group,& permissions
C1. Compiling all 'uv' programs with script 'ccuvall'
 (uvlist,uvhd,uvhdcob,uvcp,uvsort,uvcopy,uvqrpg)
- compile options for machine-type & Indexed file type
- 32/64 bit options for compile
C2. compile options for Linux, AIX, SUN
C3. compile options for HP cc & HP gcc
- PA RISC & Itanium IA64 (obsoletes PA-RISC)
C4. Compiling 'uvhd' & 'uvhdcob' data file investigation utilities
- uvhd is a free download as per www.uvsoftware.ca/libuvhd.htm
- uvhdcob shows COBOL copybook fieldnames beside data field contents
     Compiling the JCL converters with script 'ccjclall'
     - separate script since JCL converters are included only with the
       class A mainframe conversion package (not the class B utilities package).
C5. Compiling the 'ux' programs (uxcp,uxsort,uxcopy,uxqrpg)
- to support Indexed Sequential Variable length records
  compatible with Micro Focus COBOL IDXFORMAT3 files
- the 'uv' programs support only Fixed Length Indexed files
- the 'ux' programs support both Fixed & Variable Indexed files
  but the user must have Micro Focus COBOL to compile 'ux' programs
C7. Compile Errors - send console log to UV Software

Goto:   Begin this document End this document UVSI Home-Page

Installation Guide - CONTENTS (continued)

D1. D-ISAM (Fixed length Indexed files) support for Linux, AIX, HP, SUN, etc
D2.  Compiling disamNULL.c if you do not have D-ISAM support yet
D3. D-ISAM '.dat' extension options
D4.  User written subfunctions linked to uvcopy
E1. C program & uvcopy job to test 64 bit integers
F1. 'uycopy' (alternate version of uvcopy) to access SQL DataBase Tables
- compile instructions, tested in November 2008 with MySQL
G1. Install guides & Profiles for non unix/linux systems
 'http://www.uvsoftware.ca/windowsdos.htm' - Windows DOS command line
 'http://www.uvsoftware.ca/windowssfu.htm' - Windows Services For Unix
 'http://www.uvsoftware.ca/cygwinuwin.htm' - CYGWUN/UWIN
H1. Testing the Vancouver Utility programs
- Please see a separate section TestDemo.htm.
- Ensure your outputs match the illustrated outputs expected.
- Also a great way to investigate & understand these utilities
I1. Documentation Overview
I2.  HTML Documentation now on UV distribution in subdir dochtml/...
 as well as on the web site (www.uvsoftware.ca)
I3.  script 'uvlp12D' to print any 1 section of documentation
J1. Preparations for a new version of Vancouver utilities
- included here for the convenience of UV Software personnel
K1. Printing 3 volumes of documentation for Vancouver Utilities
L1. Writing the Vancouver Utility Distribution CD
M1. Mass changes to entire directories of scripts, programs, etc
- example using 'rep1d' to modify all 'uvlp' scripts

Goto:   Begin this document End this document UVSI Home-Page

Installation Guide - CONTENTS (continued)

N1. Compiling subfunctions for linking with programs
- not required if 'ccuvall' (C1 above) was successful
N2.  Compiling individual programs (script 'ccuv' vs 'ccuvall')
- not required if 'ccuvall' (C1 above) was successful
N3. ccuvall - script to compile most Vancouver Utility 'uv' programs
N4. ccjclall - script to compile the mainframe JCL converters
N5. ccuv - script to compile any 1 'uv' program (vs ccuvall)
N6. ccuvfa - script to compile all subfunctions, archive to lib/uvlib32/64.a
N7. ccuvcob - script to compile any 1 'ux' program.
N8. ccdisams - script to compile D-ISAM file handler

Goto:   Begin this document End this document UVSI Home-Page

A0. Vancouver Utilities - Installation Guide

COPYRIGHT 1993-2015 UV Software Inc. All rights reserved - Worldwide. Please see the license agreement in the price list section. The Vancouver Utility programs are encoded with a unique registration# to aid in the prevention and detection of unauthorized copying.

A generous amount of free telephone support is included in the purchase price (see more details in uvprices.htm). User comments are encouraged and any suggestions may be incorporated into future updates.

 ============================================================================
 Owen Townsend, UV Software, 4667 Hoskins Rd., North Vancouver BC, V7K2R3
         Tel:   604-980-5434          Fax: 604-980-5404
         Email: owen@uvsoftware.ca    Web: http://www.uvsoftware.ca
 Copyright(C) 1993-2015, UV Software Inc, All rights reserved
 ============================================================================

Goto:   Begin this document End this document UVSI Home-Page

A1. install.doc - Installation Overview & Recommendations

3 market versions of Vancouver Utilities

Class A
  • complete package including mainframe conversion tools
  • includes source code for compile on unix/linux/windows
  • distribution has precompiled binaries for Linux & Windows
Class B
  • Vancouver Utilities without mainframe conversion tools
  • includes source code for compile on unix/linux/windows
  • distribution has precompiled binaries for Linux & Windows
Class C
  • Vancouver Utilities without mainframe conversion tools
    and without source code
  • executables only, intended for windows

2 Distribution Files

uvadm.tar.gz
  • tar archive for Unix/Linux (relevant to AIX w/o zip utility)
uvadm.zip
  • zip archive for Linux &/or Windows (same contents as uvadm.tar)

These are alternative formats, but the contents are the same. You use whichever 1 is appropriate for your system. Both may hold 3 sets of binaries as follows:

subdirs of pre-compiled binaries

bin
  • binaries compiled on Red Hat Linux (always provided)
binDOS
  • '.exe's compiled by lcc-win32 on Windows (always provided)
binSFU
  • binaries compiled on Windows SFU by gcc (on request)
binCYGWIN
  • binaries compiled under Cygwin on Windows (on request)
binUWIN
  • binaries compiled under Uwin on Windows (on request)

4 Installation Guides

install.htm - Installation on Unix/Linux systems
- source code is provided for compiling on unix/linux
- But binaries are included for the Linux standard
WindowsSFU.htm - Installation on Windows under SFU
- SFU is available at http://www.microsoft.com/windows/sfu
- provides the Korn shell & most unix utilities on Windows
CygwinUwin.htm - Installation on Windows under Cygwin or Uwin
- unix/linux emulators, similar to SFU
- UV Software has tested 3 emulators & recommends SFU
WindowsDOS.htm - Installation on native Windows without SFU
- intended to run in a command window
- 'executables only', .exe binaries supplied in 'binDOS'
- compiled by lcc-win32
- see: http://www.cs.virginnia.edu/~lcc-win32
- or: http://www.Q-Software-Solutions.com

Goto:   Begin this document End this document UVSI Home-Page

A2. install/doc - Installation Overview & Recommendations

The media includes directories for source, documentation, installation scripts, test files, library archives, etc. After the tar extract or unzip, the home directory should contain the following sub-directories:

sub-directories in uvadm after restore

 /home/uvadm         <-- usual location of uvadm
 /opt/uvsw/uvadm     <-- alternate location of uvadm
 :-----batDOS          <-- BAT files for VU on native Windows
 :-----binDOS          <-- binaries for VU on native Windows (cc by lcc-win32)
 :-----bin             <-- binaries (uvcopy,uvsort,etc) distros are RedHat Linux
 :-----binREDHAT       <-- could save as binREDHAT & recompile under your OS
 :-----binSFU          <-- binaries for SFU (Services For Unix) on Windows
 :-----binCYGWIN/UWIN  <-- binCYGWIN & binUWIN optional on request
 :-----ctl               - control files for various purposes
 :-----dat1              - test data files
 :-----doc               - Vancouver Utilities documentation (text)
 :-----dochtml         <-- documentation in HTML (same as on www.uvsoftware.ca)
 :     :----uvhtml.zip   - zip file with all HTML files
 :-----env               - profiles for Unix/Linux, SFU, Cygwin,& Uwin
 :-----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 JCLcnv1demo.htm#Part_3
 :-----perlm           <-- Perl Modules (support JCL conversion to Perl scripts)
 :-----perls           <-- Perl Scripts (few, most scripts are ksh in sf/...)
 :-----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)
 :-----src             <-- Vancouver Utilities C source code
 :-----srcf              - C source for various sub-functions
 :-----tbls              - miscellaneous tables
 :-----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

Goto:   Begin this document End this document UVSI Home-Page

A3. install/doc - Installation Overview & Recommendations

Here is a little more info about some of the more important sub-directories included in the Vancouver utility distribution.

bin
  • directory to receive the executables from compiles & links
  • uvcopy, uvsort, uvqrpg, uvlist, uvcp, uvhd, uvhdcob, jclunix5
  • distributed with binaries compiled on Red Hat Linux Enterprise 3.0
  • the following 'bin's are optional upon request
binSFU
  • binaries compiled with 'gcc' under SFU & Windows XP
binCYGWIN
  • binaries compiled with 'gcc' under CYGWIN & Windows 2000
binUWIN
  • binaries compiled with 'gcc' under UWIN & Windows 2000
batDOS
  • scripts (batch files) for the Windows/DOS Vancouver Utilties
  • such as uvlpr12 script to run uvlist with laser printer
binDOS
  • executables compiled with 'lcc-win32'
  • to run in the DOS window under Windows 95,98,NT,2000
  • unix/linux users may may transfer to Windows PCs
    (uvhd,uvlist,uvsort,uvcp,uvcopy,uvqrpg)
ctl
  • conversion tables, etc (for data file & program conversions)
dat1
  • test data files for various pre-programmed conversion jobs
  • fixed length mainframe type files (vs text files in subdir tf)
doc
  • documentation for Vancouver Utilities (in text format)
dochtml
env
  • environment scripts & profiles for Unix/Linux, SFU, Cygwin, Uwin
hdr
  • header library for the C programs
lib
  • object code libraries (archives) for the uv subfunctions
    (srcf) & for the D-ISAM Indexed file support.
mvstest
pf
  • pre-programmed jobs (parameter files) for uvcopy applications
  • over 500 useful jobs (many suggested by end users)
sf
  • scripts to compile programs, subfunctions, etc
  • also many end user scripts (see scripts1.doc in vol 1)
sfun
  • Korn shell 'functions' (exportgen0/1, jobset, logmsg, etc)
  • mostly for running scripts converted from Mainframe JCL
src
  • C source programs (script ccuvall compiles these into bin)
srcf
  • C source for subfunctions compiled separately
    & archived to lib/uvlib32/64.a (see scripts ccuvf & ccuvfa)
tf
  • test data files for uvcopy & the pre-programmed jobs
vsetest
  • test files to demo mainframe conversions (see VSEJCL.htm)

Goto:   Begin this document End this document UVSI Home-Page

A4. Installation Overview & Recommendations

Installing Vancouver Utilities - Summary

  1. Setup user account 'uvadm' to serve as Vancouver Utilities administrator and login as uvadm, home directory /home/uvadm. See note below re common 'group' for uvadm & other users who will be working with Vancouver Utilities.

  2. Copy Vancouver Utilities media into the uvadm/ home directory. This package is distributed in compressed archives archives, uvadm.tar.gz or uvadm.zip. Please see the tar/zip extract commands on page 'B3' ahead.

  3. Modify the profiles if & as required for your site. See the details ahead on pages 'B5' & 'B6'. After media restore, these profiles are available in /home/uvadm/env/... Do NOT modify in uvadm/env/..., but rather copy to & modify in /home/appsadm/env/...

  4. Setup user 'appsadm' & copy /home/uvadm/env/* to /home/appsadm/env Then modify all .profiles or .bash_profiles to call the common_profile from /home/appsadm/env/common_profile. See '.' execution about line 70. This avoids losing your common_profile changes when a new version of Vancouver Utilities is installed.

  5. Compile the programs as explained on page 'C1' ahead.

    common 'group' ID for uvadm & other users

You should assign uvadm's group ID to match userid's of programmers who will be working with Vancouver Utilities. If you are just getting started setting up uvadm as well as other users on a new system for conversion of mainframe systems to unix/linux, I suggest 'apps' would be appropriate. See more about importance of owner, group,& permissions on page 'B11'.

setup 'appsadm' - Applications Administrator

I strongly recommend setting up a site administrator account 'appsadm' (separate from uvadm) to hold various profiles & scripts common to all users of the Vancouver Utilities.

This will save duplication of effort in setting up other users of Vancouver Utilities because these profiles & scripts will be common to all users. This makes it easier to make changes, add new users, etc.

You will also find APPSADM useful for establishing profiles, scripts,& environmental variables for your other application packages as well as Vancouver Utilities.

See ADMjobs.doc hardcopy manual or http://www.uvsoftware.ca/admjobs.htm

Goto:   Begin this document End this document UVSI Home-Page

A5. Installation Overview & Recommendations

'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)

You should setup an application administrator userid 'appsadm', copy /home/uvadm/env/* to /home/appsadm/env,& customize profiles there depending on the locations of their libraries & data. Do NOT customize profiles in /home/uvadm/env/... because they would be overwritten when a new version of Vancouver Utilities is installed.

We recommend the concept of 'stub' & 'common' profiles. The shell profile in each user's homedir is a 'stub' that calls the 'common_profile' which is stored in /home/appsadm/env/...

  1. The supplied 'stub_profile_uv' is copied to $APPSADM/env/ & renamed 'stub_profile_ABC' (your master version vs UV Software supplied version) Then copy to user homedirs, renaming as '.bash_profile' for bash shell - or '.profile' for Korn shell. - defines RUNLIBS as testlibs/prodlibs for programmers/operators - defines RUNDATA as testdata/proddata for programmers/operators

  2. 'common_profile' 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.

See profiles listed starting at: http://www.uvsoftware.ca/admjobs.htm#1C1

Goto:   Begin this document End this document UVSI Home-Page

A6. Installation Overview & Recommendations

profiles for Vancouver Utilities

See profiles listed starting at: http://www.uvsoftware.ca/admjobs.htm#1C1 Following page#s (1C1,1C2,etc) are within ADMjobs.htm. Right click for link and be sure to return to this install.doc.

 1C1. stub_profile_uv - distributed in /home/uvadm/env/...
     - copy (to user homedirs) & rename depending on the desired shell
       (.bash_profile for bash, .profile for ksh)
     - modify RUNLIBS/RUNDATA differently for programmers or operators
     - calls common_profile
 1C2. common_profile_uv - distributed in /home/uvadm/env/...
     - defines search PATHs to libraries & data based on $RUNLIBS & $RUNDATA
       defined in the stub_profiles of programmers & operators
       (see suggested directory designs in ADMjobs.doc Part 2)
     - allows updates in 1 place to affect all users
     - modify TERM & 'stty erase' character depending on most common terminal
       (distribution has TERM=linux & stty erase '^?')
 1C3. common_defines - define TESTLIBS,TESTDATA,PRODLIBS,PRODDATA for backups
                     - optional, can call common_defines at end common_profile
                     - modify depending on your site
 1C4. utilities_profile - simplified profile to access programs & scripts only
     - alternative to above 2 part profiles which are recommended for multi-user
       sites to reduce administration (by allowing updates in 1 place).
 1C5. Listing of 'root_profile', suggested profile for root
     - to access Vancouver Utility scripts & uvcopy jobs
     - includes prompt with current directory & aliases such as alias l='ls -l'
 1C6. bashrc - 'rc file' distributed in /home/uvadm/env/...
     - copy (to user homedirs) & rename depending on the desired shell
       (.bashrc for bash, .kshrc for ksh)
     - master version supplied without the '.' for visibility
     - required if you invoke another shell level (console logging script)
     - carries aliases & umask which get lost on another shell level
     - you should customize & store in /home/appsadm/env/...
 1C7. Customizing the profiles for uvadm & for other users
     - modify TERM & 'stty erase' character depending on user's terminal
     - modify UVLPDEST to define a laser printer near the user
     - modify COBDIR for Micro Focus COBOL

Goto:   Begin this document End this document UVSI Home-Page

B1. Installing the Vancouver Utilities

uvadm - Vancouver Utility homedir

Here are the most relevant subdirs in /home/uvadm, emphasizing env/profiles that must be copied to /home/uvadm/appsadm/env.

 /home/uvadm         <-- usual location of uvadm
 /opt/uvsw/uvadm     <-- alternate location of uvadm
 :--bin                <-- binaries (uvcopy,uvsort,etc) distros are RedHat Linux
 :--ctl                  - control files for various purposes
 :--dat1                 - test data files
 :--doc                  - Vancouver Utilities documentation (text)
 :--env                <-- profiles for Unix/Linux users & administrators
 :  :--stub_profile_uv   - defines RUNLIBS/RUNDATA for the common_profile
 :                         copied to homedirs, renamed .profile or .bash_profile
 :  :--common_profile_uv - common profile (called by stub_profile)
 :                         defines PATH's etc using $RUNLIBS/$RUNDATA
 :                       - env/common_profile,etc must be copied to /home/appsadm/
 :--mvstest            <-- test/demos for MVS JCL/COBOL mainframe conversions
 :  :--...               - many subdirs omitted, see jclcnv1demo.htm#Part_3
 :--pf                 <-- Parameter Files for uvcopy & uvqrpg
 :--sf                 <-- Script Files
 :--sfun                 - ksh functions used in converted JCL/scripts
 :                       - jobset51,jobend51,exportgen0,exportgen1,logmsg1,etc
 :                       - must be copied to /home/appsadm/
 :--src                <-- Vancouver Utilities C source code

appsadm - Application Administrator

We recommend you setup a login/userid 'appsadm' to serve as the applications administrator for the unix/linux site. The appsadm directory would hold profiles, functions scripts, crontabs, log files, etc used in application admin. Here are some suggested sub-directories:

 /home/appsadm       <-- usual location of appsadm
 /opt/uvsw/appsadm   <-- alternate location of appsadm
 :----bin                   - binaries for site developed/modified programs
 :UV--ctl                   - control files for converting JCL & COBOL & GDG files
 :UV--env                 <-- profiles copied from /home/uvadm/env/...
 :   :---stub_profile_ABC   - defines RUNLIBS/RUNDATA for the common_profile
 :                          - copied to homedirs, renamed .profile or .bash_profile
 :   :---common_profile_ABC - common profile (called by stub_profile)
 :                            defines PATH's etc using $RUNLIBS/$RUNDATA
 :----logs                  - console logs from nightly 'cron' scripts
 :----pf                  <-- uvcopy jobs developed/modified by site admin
 :----sf                  <-- shell scripts developed/modified by appsadm
 :UV--sfun                <-- functions for JCL/scripts (jobset51,exportgen0,etc)
 :----src                   - source for any programs developed/modified by appsadm
Note
  • 'UV' marks directories that must be copied from uvadm to appsadm
  • other subdirs are optional & may remain empty initially
  • must copy profiles from uvadm/env to appsadm/env, because new versions
    of uvadm would overwrite any customized profiles in uvadm/env
  • customize common_profile in /home/appsadm/env/... depending on your site

Goto:   Begin this document End this document UVSI Home-Page

B2. First Time Setup/Install Vancouver Utilities

If you already have an old version of uvadm, please skip to page 'B7' --->

setup uvadm Vancouver Utilities admin user


 #1. login as 'root'

 #2. groupadd apps     <-- setup group 'apps', if not already setup
     =============       - or could be uvgrp, ITgrp, etc
Note
  • 'apps' is the group suggested for the group of programmers who will be
    working on a common set of files (JCL, COBOL, DATA)

 #3. useradd -m -g apps uvadm   <-- setup user 'uvadm'
     ========================

 #3a. useradd -m -g apps -s /bin/bash -d /opt/uvsw/uvadm uvadm
      ========================================================
      - could use '-s' to specify desired shell if not default (bash or ksh)
      - could use '-d' to specify home dir (if other than default /home/uvadm)
      - may install uvadm elsewhere, such as /opt/uvsw/uvadm,
        if you change variable 'UV' in common_profile to point to it

 #4. passwd uvadm        <-- setup password desired
     ============

 #5. chmod 755 /home/uvadm   <-- allow other users to copy files from uvadm/...
     =====================     - required for many Vancouver Utility procedures

 #6. exit (logout from root)

notes re group & permissions

  1. group 'apps' is suggested for the group of programmers who will be working on a common set of files (JCL, COBOL, DATA). These users must be in same group & have umask=002 in the profile so files will be created as 664 & directories as 775 to allow common updates

  2. user 'appsadm' is suggested as an applications administrator. Use appsadm to hold customized files, such as env/common_profile_ABC, called by users stub_profiles (.profile or .bash_profile in their homedirs).

  3. The common set of directories (updated by various programmers) must have permissions 775 (files 664) achieved by umask=002 in the common_profile.

  4. You can protect non-common directories by changing permissions to 755. Programmers can do this for their $HOME directory & you the appsadm can do it for uvadm & appsadm.

  5. When setting up directories for a group of programmers (assuming off line machine), it is better to ensure umask=002 for directories 775 & files 664, amd that they are all in the same group. Otherwise it is very frustrating to the programmers to have permissions problems at every turn.

Goto:   Begin this document End this document UVSI Home-Page

B3. First Time Setup/Install Vancouver Utilities

Download/Install Vancouver Utilities

This assumes UV Software has supplied you with a userid/password to download 'uvadm.zip' from the UV Software web site.


 #1. Login as 'uvadm' --> /home/uvadm      <-- usual location of uvadm
 #1a. cd $UV  ----------> /opt/uvsw/uvadm  <-- alternate location uvadm

 #2. ftp uvsoftware.ca    <-- FTP
     =================
 #2a. user ----> uvsoft99  <-- userid could be uvsoft2-uvsoft99
 #2b. passwd --> xxxxxxx   <-- password supplied by UV Software
 #2c. binary
 #2d. get uvadm.zip
 #2e. bye

 #3. unzip uvadm.zip       <-- unzip Vancouver Utilities zip archive
     ===============         - ensure logged in user 'uvadm' (not root)

 #3a. gunzip uvadm.tar.gz  <-- OR - decompress gzip archive (AIX users)
      ===================         - ensure user 'uvadm' (not root)

 #3b. tar xvf uvadm.tar    <-- extract files from tar archive (AIX users)
      =================      - AIX does not include 'zip' utility

setup/modify uvadm profile for your site


 #1. Login 'uvadm' --> /home/uvadm      <-- login uvadm (if not already)
 #1a. cd $UV  -------> /opt/uvsw/uvadm  <-- alternate location uvadm

 #2. cp env/stub_profile_uv .bash_profile <-- copy rename for bash shell
     ====================================

 #2a. cp env/stub_profile_uv .profile     <-- OR - rename for Korn shell
      ===============================

 #3. vi .bash_profile    <-- could modify profile now, BUT recommend
     ================        after copy to appsadm, see next page -->

 #4. vi env/common_profile_uv  <-- could modify profile now, BUT recommend
     ========================      after copy/rename to appsadm, next page -->

 #5. exit               <-- logoff
     ====

 #6. Login uvadm        <-- log back in to make profiles effective
     ===========

Goto:   Begin this document End this document UVSI Home-Page

B4. First Time Setup/Install Vancouver Utilities

Create 'appsadm'


 #1. login as 'root'

 #2. groupadd apps     <-- setup group 'apps', if not already setup
     =============       - already done when uvadm setup on page 'B2'

 #3.  useradd -m -g apps appsadm   <-- setup user 'appsadm'
      ==========================

 #4. passwd appsadm     <-- setup password desired
     ==============

 #5. chmod 755 /home/appsadm <-- allow other users to copy files from appsadm/...
     =======================   - required for many Vancouver Utility procedures

 #6. exit                <-- exit from root

setup/modify appsadm profiles, etc


 #1. login as 'appsadm' --> /home/appsadm      <-- usual location appsadm
 #1a. cd $APPSADM  -------> /opt/uvsw/appsadm  <-- alternate location appsadm

 #2. mkdir ctl env logs sfun tmp <-- setup subdirs required
     ===========================

 #3a. cp /home/uvadm/ctl/* ctl     <-- copy control files from uvadm to appsadm
      ========================
 #3b. cp /home/uvadm/sfun/* sfun   <-- copy functions from uvadm to appsadm
      ==========================     - for JCL/scripts (jobset51,exportgen0,etc)
 #3c. cp /home/uvadm/env/* env     <-- copy profiles from uvadm to appsadm
      ========================

 #4a. mv env/stub_profile_uv env/stub_profile_ABC
      ===========================================
      - rename UV Software's version to identify as your company's version

 #4b. vi env/stub_profile_ABC     <-- modify stub_profile as required
      =======================       - see details on the next page -->

 #5a. mv env/common_profile_uv env/common_profile_ABC
      ===============================================
      - rename UV Software's version to identify as your company's version
      - chnage 'ABC' to whatever you wish to identify your organization

 #5b. vi env/common_profile_ABC   <-- modify common_profile as required
      =========================     - see details on the next page -->

 #6. cp env/stub_profile_ABC .bash_profile  <-- copy/rename for bash
     =====================================      (.profile for ksh)

 #6a. cp env/stub_profile_ABC /home/userxx/.bash_profile
      ==================================================
      - copy your modified stub_profile to other user's homedirs now or later

 #7. exit

Goto:   Begin this document End this document UVSI Home-Page

B5. Installing the Vancouver Utilities

Modify /home/appsadm/env/common_profile

On the previous page, we setup userid appsadm & copied the profiles from /home/uvadm/env/* to /home/appsadm/env/... We will now modify the profiles if & as required for your site. Please see listings of profiles starting at ADMjobs.htm#1C0 & discussions starting at ADMjobs.htm#1D1.

Note that the common_profile_uv is copied, renamed, modified in,& called from /home/APPSADM/env/common_profile_ABC (not /home/UVADM/env/common_profile_uv). This avoids losing your site specific modifications when new versions of Vancouver Utilities are installed. We must logout & login again to ensure any profile modifications (performed on prior page) are activated.


 #1. login 'appsadm' --> /home/appsadm      <-- usual location appsadm
 #1a. cd $APPSADM  ----> /opt/uvsw/appsadm  <-- alternate location appsadm

 #2. vi env/common_profile_ABC    <-- edit your common profile
     =========================

 #2a. Modify TERM & 'stty erase' character depending on user's terminal
      (distribution has TERM=linux & stty erase '^?')

      export TERM=linux       # TERM - modify depending on your terminal
      #================       # (vt100,xterm,at386,ansi,etc)
      stty erase '^?'         # erase char - modify depending on your terminal
      #==============         #  '^?' for linux/at386, '^H' for vt100,ansi,xterm

 #2b. Change laser printer name defined by 'UVLPDEST' environmental variable
      used by the 'uvlist' utility & scripts 'uvlp12', etc.

      export UVLPDEST="-dlp0" # change 'lp0' to site laser printer
      =======================

 #2c. Change 'COBDIR', environmental variable defining where Micro Focus COBOL
      COBOL is installed on your system

      export COBDIR=/opt/microfocus/cobol  <-- default install location
      ===================================    - change if your site different

 #2d. other changes as dsired ???

common_profile called by stub_profile's

The common_profile should be called by all stub profiles (.bash_profile or .profile in homedirs of all users who wish to use Vancouver Utilities).

The stub_profile_uv supplied in /home/UVADM/env/stub_profile_uv calls common_profile_uv from /home/UVADM/env/common_profile_uv, but ONLY for uvadm. When stub_profile_uv is copied to /home/APPSADM/env/stub_profile_ABC, it should be changed to call from /home/APPSADM/env/comon_profile_ABC, BEFORE copying to user homedirs (renaming as .bash_profile or .profile depending shell bash/ksh). See these instructions on the next page.

Goto:   Begin this document End this document UVSI Home-Page

B6. Installing the Vancouver Utilities

modify /home/appsadm/env/stub_profile_ABC

The stub_profile_ABC (copied/renamed as .bash_profile or .profile) in user homedirs calls the common_profile_ABC from /home/appsadm/env/common_profile, which has most of the profile code and is much more convenient to maintain in 1 place than having to update profiles in the various user homedirs. Please see listings of profiles starting at ADMjobs.htm#1C0 & changes starting at ADMjobs.htm#1D1.

After copying stub_profile_uv to /home/appsadm/env/stub_profile_ABC, the most important change is to call common_profile_ABC from /home/apspadm/env/... rather than from /home/uvadm/env/... which is OK only for uvadm.

If you are performing JCL conversion, you would modify the RUNLIBS & RUNDATA definitions in the stub profile depending on your directory locations of JCL,COBOL,& DATA. Initial definitions are $HOME/testlibs & $HOME/testdata, good for self-training, allows users to copy demo JCL/COBOL/DATA to their homedirs & perform the test/demo conversions documented in jclcnv1demo.htm.


 #1. login 'appsadm' --> /home/appsadm      <-- usual location appsadm
 #1a. cd $APPSADM  ----> /opt/uvsw/appsadm  <-- alternate location appsadm

 #2. vi env/stub_profile_ABC    <-- modify 'stub' profile for your site
     =======================
     - Modify the call to the common_profile. Here are lines 50-55 of the
       from the /home/uvadm/env/stub_profile. Change as directed below:

 . /home/uvadm/env/common_profile_uv    #<-- distribution calls from "uvadm"
 #=================================     #  - for initial install of uvadm
 . /home/appsadm/env/common_profile_ABC     #<-- CHANGE to "appsadm" when copied
 . /opt/uvsw/appsadm/env/common_profile_ABC #<-- alternate location appsadm
 #=========================================

 #3. cp env/stub_profile_ABC .bash_profile   <-- OR .profile for ksh vs bash
     =====================================
     - copy modified stub_profile to .bash_profile or .profile of user appsadm

 #4. Append the stub_profile to homedirs of users who are going to use the
     Vancouver Utilities. Could just copy if user has not customized profiles.

 #4a. cat env/stub_profile_ABC >>.bash_profile  <-- copy/rename for bash shell
      ========================================
 #4b. cat env/stub_profile_ABC >>.profile       <-- copy/rename for Korn shell
      ===================================

Goto:   Begin this document End this document UVSI Home-Page

B7. UPGRADING to New Versions of the Vancouver Utilities

If this is your 1st version of the Vancouver Utilities package, you have just performed initial install using procedures on pages B1-B6, and you can now skip to page 'C1' (compiling the C programs) --->

Preparations to Install Update Version

If there is any doubt about the usefulness of the old uv version, the following procedures will allow for retrieving user modified files from the old uvadm directories into the new. It will be easier to upgrade to the next version of this package if you do not make changes in the 'uvadm' directory or add your own stuff into the uvadm directories.

Note
  • Method#1 (this page) works for all machines
  • #1 is mandatory for SUN Solaris because you cannot move homedirs
  • logins would still go to the original subdir (uvadm.old)
  • Method#2 (next page) works for most machines & is a little shorter

method#1 - mandatory for Sun (OK on all machines)


 #1. login: root    - you need to be root, but ONLY for the 1st 7 steps below

 #2.  cd /home             <-- change above uvadm (usual location /home/uvadm)
 #2a. cd /opt/uvsw         <-- alternate location /opt/uvsw/uvadm

 #3. rm -rf uvadm.old        - remove any existing uvadm.old (grandfather)
     ================

 #4. cp -rp uvadm uvadm.old  - make backup copy of the uvadm directory
     ======================    'r' option copies all subdirs
                               'p' option preserves uvadm owner & permissions

 #5. rm -rf uvadm/*          - clear all contents of uvadm directory
     ==============          - before reading new uvadm.tar or uvadm.zip
                               (on the next page under uvadm login)

 #6a. cp -p uvadm.old/.bash_profile uvadm   (for Linux/bash)
      ===================================
               --- OR ---
 #6a. cp -p uvadm.old/.profile uvadm        (for Unix/ksh)
      ==============================

 #6b. cp -rp uvadm.old/env uvadm     <-- copy the common profiles (subdir)
      ==========================
      - copy existing uvadm profiles over to the now empty uvadm subdir
      - preserving any customizations made on prior version

 #7. exit (from root)

Install the new utilities as directed on the page 'B9' --->

Goto:   Begin this document End this document UVSI Home-Page

B8. UPGRADING to New Versions of the Vancouver Utilities

method#2 - most machines (except SUN)

Note
  • Method#1 (prior page) is mandatory for SUN Solaris
  • because you cannot move home directories on SUN
  • logins would still go to the original subdir (uvadm.old)
  • Method#2 (this page) works for most machines & is a little shorter

Preparations to Install Update Version


 #1. login: root    - you need to be root, but ONLY for the 1st 8 steps below

 #2.  cd /home             <-- change above uvadm (usual location /home/uvadm)
 #2a. cd /opt/uvsw         <-- alternate location /opt/uvsw/uvadm

 #3. rm -rf uvadm.old        - remove any existing uvadm.old (grandfather)
     ================

 #4. mv uvadm uvadm.old      - rename existing 'uvadm' as 'uvadm.old'
     ==================

 #5. mkdir uvadm             - make new dir for new version of VU
     ===========
 #5a. chmod 775 uvadm        - set desired permissions
      ===============
 #5b. chown uvadm uvadm      - ensure owned by user 'uvadm'
      =================
 #5c. chown ???? uvadm:apps  - ensure group matches desired group ????
      =====================
Note
  • group ID should match the programmers who will be working with VU
  • now copy existing uvadm profiles over to the now empty uvadm subdir
  • preserving any customizations made on prior version

 #6. cp -p uvadm.old/.bash_profile uvadm  <-- copy existing profile to new
     ===================================
               --- OR ---
 #6a. cp -p uvadm.old/.profile uvadm      <-- OR - copy .profile if Korn shell
      ==============================

 #7. cp -r uvadm.old/env uvadm/   <-- copy env/ directory of common_profiles etc
     ==========================     - called by .profile &/or .bash_profile

 #8. exit (from root)

Install the new utilities as directed on the next page --->

Step #4 above allows you to retrieve any modified/customized pf/sf files at any time from uvadm.old into the new uvadm directory. This also allows you to quickly revert to your former versions if you encounter a problem.

Goto:   Begin this document End this document UVSI Home-Page

B9. UPGRADING to New Versions of the Vancouver Utilities

Download/Install new version of Vancouver Utilities

This assumes UV Software has supplied you with a userid/password to download 'uvadm.zip' from the UV Software web site.


 #1. Login 'uvadm' --> /home/uvadm      <-- login uvadm (if not already)
 #1a. cd $UV  -------> /opt/uvsw/uvadm  <-- alternate location uvadm

 #2. ftp uvsoftware.ca    <-- FTP
     =================
 #2a. user ----> uvsoft99  <-- userid could be uvsoft2-uvsoft99
 #2b. passwd --> xxxxxxx   <-- password supplied by UV Software
 #2c. binary
 #2d. get uvadm.zip
 #2e. bye
Note
  • Before unzipping the uvadm.zip archive, ensure:
  • logged in as uvadm & in the uvadm homedir $UV (usually /home/uvadm)
  • $UV homedir is empty (old contents previously saved in /home/uvadm.old)
  • empty except for new uvadm.zip just downloaded

 #3. unzip uvadm.zip       <-- unzip Vancouver Utilities zip archive
     ===============         - ensure logged in user 'uvadm' (not root)
        --- OR ---

 #3a. gunzip uvadm.tar.gz  <-- OR - decompress gzip archive (AIX users)
      ===================         - ensure user 'uvadm' (not root)
 #3b. tar xvf uvadm.tar    <-- extract files from tar archive (AIX users)
      =================      - AIX does not include 'zip' utility

Updating profiles in $APPSADM/env/

  1. The initial install instructions on pages B1-B6 copied the profiles from /home/uvadm/env/... to /home/appsadm/env/... and any site-specific changes were made in /home/appsadm/env/...

  2. All user stub profiles (.bash_profile or .profile) in user homedirs call the commmon_profile from /home/appsadm/env/... (except for uvadm).

  3. So, when new versions of uvadm are installed, you do NOT have to worry about overwriting any of your profile customizations (in /home/appsadm/...).

Goto:   Begin this document End this document UVSI Home-Page

B10. INSTALLATION - Creating uvadm Directory & Copying the Media

Updating functions in $APPSADM/sfun/

This applies only to users who are migrating mainframe JCL to unix/linux.

The 1st time UV install instructions setup user appsadm and copied the JCL/script functions from $UV/sfun/* to $APPSADM/sfun/ (see #3B on page 'B4'). This is done because users may need to modify the functions (jobset51, etc) and they would not want to overwrite their modifications when a new version of Vanouver Utilities is installed in /home/uvadm (/home/appsadm/ unchanged).

BUT, if you have not yet made any customizations in $APPSADM/sfun & know that the new version of $UV does contain desired uppdates (in /home/uvadm/sfun/.) then you should copy $UV/sfun/* to $APPSADM/sfun/. (#3B on page 'B4').


 #1.  Login appsadm --> /home/appsadm
      ===============================
 #3b. cp /home/uvadm/sfun/* sfun/
      ===========================

Updating common_profiles in $APPSADM/env/

The 1st time UV install instructions setup user appsadm and copied the common_profiles from $UV/env/* to $APPSADM/env/ (see #3C on page 'B4').

It is less likely that you want to copy new common_profiles from new $UV/env to $APPSADM/env/ since you must have had this working on 1st version, but if desired you could.


 #1.  Login appsadm --> /home/appsadm
      ===============================
 #3c. cp /home/uvadm/env/* env/
      =========================

You will then need to repeat the customization of your common_profile as per #4a - #6a on page 'B4'.

Goto:   Begin this document End this document UVSI Home-Page

B11. INSTALLATION - Creating uvadm Directory & Copying the Media

Notes re owner, group,& permissions

You must be uvadm when you copy the media (on the previous page) in order that the new files will be owned by uvadm & have desired permissions & group. If you forgot to exit root & login uvadm, you could correct as follows:


 #1a.  Login as root              - login as root
 #1b.  cd /home/uvadm             - change to uvadm home dir

 #2.  chown -R uvadm uvadm        - change owner of all dirs & files in uvadm

 #3.  chgrp -R group? uvadm       - change group of all dirs & files in uvadm

 #4.  chmod -R 775 uvadm        <-- DON'T do this, not all same

 #4a. chmod    775 uvadm/*        - all directories should be 775 or 755
 #4b. chmod    775 uvadm/sf/*/*   - all scripts should be 775
 #4c. chmod    775 uvadm/bin/*    - all executable programs should be 775
                                    (not yet compiled see page C1 ahead)
 #4d. chmod    664 uvadm/dat1/*   - files in other subdirs should be 664
 #4e. chmod    664 uvadm/.../*    ------------- etc ------------

 #5a. chown uvadm .bash_profile   - ensure .bash_profile owner is uvadm
 #5b. chmod 664 .bash_profile     - ensure read/write .bash_profile
       ---- OR ----
 #5a. chown uvadm .profile       - ensure .profile owner is uvadm
 #5b. chmod 664 .profile         - ensure you can read/write uvadm .profile

 #6. exit                        - exit root

Reverting to old version if problems occur

Since we have saved the old '/home/uvadm' (as /home/uvadm.old), we can quickly revert to the previous version if you encounter a problem. UV Software will help you resolve the problem as soon as possible, but you may need to run your production jobs with no waiting.


 #1. login as root

 #2. mv /home/uvadm /home/uvadm.new   <-- rename just installed version

 #3. mv /home/uvadm.old /home/uvadm   <-- rename old version as current
Note
  • on some systems (such as SUN) 'mv' (rename) does not work
  • logins go the originally setup login directory
  • use the following procedure:

 #2. rm -rf /home/uvadm/*    <-- remove new version

 #3. cp -rf /home/uvadm.old/* /home/uvadm  <-- copy old version back

Goto:   Begin this document End this document UVSI Home-Page

C1. Compiling Vancouver Utility C Programs

Compile 'C' programs

The Vancouver Utilities are distributed with the 'C' utility programs already compiled (into /home/uvadm/bin) using Red Hat Enterprise 5.1 (64 bit AMD Opteron). You must recompile for other systems.

The following script will compile all 'uv' programs assuming you have restored the distribution media to your 'uvadm' directory & set your path to include the 'sf' directory of scripts. Please see page 'C5' ahead to compile the 'ux' programs that support Indexed Sequential Variable length records compatible with Micro Focus COBOL IDXFORMAT3 file types.

You can modify the 'C' compiler called by the compile scripts by exporting an alternate value for 'UVCC' as shown below. Might be used on machines that do not have the ANSI C 'cc' compiler, but do have 'gcc'. (see more info at the bottom of the next page)

 Login 'uvadm' --> /home/uvadm      <-- login uvadm (if not already)
 cd $UV -------->  /opt/uvsw/uvadm  <-- alternate location uvadm
 export UVCC=gcc        - causes compile scripts to use 'gcc' vs 'cc'

 ccuvall OStype H32/H64 uvlib32/64.a disamTYP32/64.a [options]  <-- format
 ===================================================
H32/H64
  • bits in a 'long' (C programming long integer)
  • On 32 bit hardware, we still have 64 bit integer accumulators
    using 'long long' (software implementation for 64 bit integers)
H32/H64
  • bits in a 'pointer' (C program address pointer)
  • 64 bit hardware would always have 64 bit pointers
  • DEC alpha, Itanium, 64 bit x86 chips, 64 bit AMD opteron, etc

Most computers now have 64 bit hardware & operating systems, and the compilers have options to compile C programs in 32 bit mode or 64 bit mode. The 64 bit mode causes 'long' integers & 'pointers' to be defined as 64 bits vs 32 bits.

The Vancouver Utilities do not necessarily need to be compiled in 64 bit mode. 64 bit accumulators are available via software on 32 bit hardware by using 'long long'.

Note
  • compile arguments changed in January 2009 to H32/H64
  • replacing prior arguments L32/L64 + P32/P64 (Longs + Pointers)
  • LF64 Large Files (> 2 gig) option no longer required (always provided)

Goto:   Begin this document End this document UVSI Home-Page

C2. Vancouver Utilities Compile script Options

LNX (linux)


 ccuvall LNX H32 uvlib32.a disamLNX32.a - compile on Linux Intel 32 bit machine
 ======================================   with 64 bit int acums via SoftWare
                                        - DISAM COBOL compatible Indexed files
 ccuvall LNX H64 uvlib64.a disamLNX64.a - compile on Linux Intel 64 bit machine
 ======================================   64 bit Hardware integers & pointers
                                          64 bit DISAM Indexed file handler
Note
  • there is no great advantage to compiling in 64 bit mode
  • since 64 bit accumulators are provided by software (long long)
  • since Large Files (> 2 gig) are provided by software (open64 & lseek64)
  • BUT some systems might only provide 64 bit (64 bit longs & pointers)

AIX compile


 export UVCC=xlc                       <-- specify AIX C compiler (vs default cc)
 ===============
 ccuvall AIX H32 uvlib32.a disamAIX32.a -q32   <-- for IBM AIX 32 bit & DISAM
 ===========================================
 ccuvall AIX H64 uvlib64.a disamAIX64.a -q64   <-- AIX 64 bit compile
 ===========================================
 ccuvall AIX H64 uvlib64.a disamAIXnull.a -q64 <-- if disamAIX64.a missing
 =============================================   - see 'D1' create disamAIXnull.a

SUN


 ccuvall SUN H32 uvlib32.a disamSUN32.a       <-- SUN Solaris defaults to 32 bit
 ======================================
 ccuvall SUN H64 uvlib64.a disamSUN64.a -m64  <-- 64 bit option on newer SUNs
 ===========================================
 ccuvall SUN H64 uvlib64.a disamSUN64.a -xarch=v9 <-- 64 bit on older SUNs
 ================================================
Note
  • '-m64' or '-xarch=v9' is the SUN option for 64 bit longs & pointers
  • 32 bit versions probably work just as well
  • since software 'long long's are used to get 64 bit accumulators

CentOS


 ccuvall LNX H32 uvlib32.a disamCentos32.a - compile on CentOS 32 bit
 =========================================   (64 bit int acums via SoftWare)
                                           - DISAM COBOL compatible Indexed files
 ccuvall LNX H64 uvlib64.a disamCentos64.a - compile on CeentOS 64 bit machine
 =========================================
Note
  • disamCentos64.a NOT working as of August 2015, use disamCentos32.a

Goto:   Begin this document End this document UVSI Home-Page

C3. Vancouver Utilities Compile script Options

HPUX 'cc' compiler

Note
  • also see below HPUX 'gcc' (Gnu open source, free download)

 ccuvall HP H32 uvlib32.a disamHP32.a -Ae <-- 32 bit hardware
 ========================================   - 64 bit integer via long long
 -Ae ANSI C compiler option no longer required as of HPUX 10.20

 ccuvall HP H64 uvlib64.a disamHP64.a "-Ae +DD64"  <-- 64 bit on HPUX cc
 ================================================
 ccuvall HP H32 uvlib32.a disamHP32.a "-Ae +DD32"   <-- 32 bit on HPUX cc
 ================================================

HPUX IA64 'gcc' compiler


 export UVCC=gcc    <-- causes ccuvall to execute 'gcc' vs 'cc
 ===============
 ccuvall HP H32 uvlib32.a disamHPIA32.a -milp32
 ==============================================
 ccuvall HP H64 uvlib64.a disamHPIA64.a -mlp64   <-- 'mlp64' vs 'milp32'
 =============================================     - 64 bit recommended

test your hardware/compiler 32bit/64bit

See page 'E1' test program 'test64c' to determine if your hardware/compiler is 64 bit capable & if BIG-end or little-end. May compile & execute as follows but see sample output on page 'E1'.


 cc src/test64c.c -obin/test64c   <-- compile program (cc or gcc)
 ==============================
 bin/test64c                      <-- execute
 ===========                        - expected results on page 'E1'

Goto:   Begin this document End this document UVSI Home-Page

C4. Vancouver Utilities Compile script Options

compiling uvhd & uvhdcob

The 'ccuvall' script does compile uvhd & uvhdcob, but if you need to run ccuvall in 32 bit mode, you should compile these in 64 bit mode as follows.

Note
  • These are the only 2 programs that are self-contained (do not require
    linking with archives of subfunctions). You can therefore compile these
    directly with 'cc' or 'gcc' (vs the scripts ccuvall, etc).
Note
  • uvhd & uvhdcob must have 64 bit integers to handle files > 2 gigs
  • best achieved by 64 bit options -DH64, -m64, -q64, -mlp64 (HP gcc)
  • possible (not HP) with -DH32 which uses 'long long' for 64 bit integers

 cc -DH64 -DAIX -q64 -obin/uvhd src/uvhd.c
 =========================================
 cc -DH64 -DAIX  -q64 -obin/uvhdcob src/uvhdcob.c
 ================================================
Note
  • change 'AIX' as appropriate to 'LNX','SUN', or 'HP'
  • change '-q64' to '-m64' for other machines (not HP)

compile uvhd/uvhdcob on HP IA64 gcc


 gcc -DH64 -DHP -mlp64 -obin/uvhd src/uvhd.c
 ===========================================
 gcc -DH64 -DHP -mlp64 -obin/uvhdcob src/uvhdcob.c
 =================================================

compiling JCL converters

'ccjclall' is provided to compile the JCL converters, a separate script (from ccuvall above), since the JCL converters are included only in the class A mainframe conversion package (not in the class B utilities package).


 ccjclall LNX H64 uvlib64.a disamLNX64.a      <-- example for Linux 64 bit
 =======================================
 ccjclall AIX H64 uvlib64.a disamAIX64.a -q64 <-- example for AIX 64 bit
 ============================================

disamNULL if 64 bit version missing

If 64 bit version of 'disam___' is missing (from /home/uvadm/lib/...), for your computer, see page 'D1' to compile a 'NULL' version, until UV Software can supply the required functional version.

Goto:   Begin this document End this document UVSI Home-Page

C5. Compiling 'ux' programs to access IDXFORMAT3/8 files

The previous pages have documented the Instructions to compile most of the Vancouver Utility programs (uvhd,uvlist,uvcp,uvsort,uvcopy,uvqrpg,etc).

This page documents the instructions required to compile the 'ux' versions (uxcp,uxsort,uxcopy.uxqrpg) that support Indexed Sequential Variable length records compatible with Micro Focus COBOL IDXFORMAT3 & IDXFORMAT8 file types.

For more info on these file types, please see the 'File Handling' documentation for Micro Focus Object or Server Express COBOL. The Micro Focus COBOL 'EXTFH' file handler is compiled into the 'ux' versions using the 'ccuvcob' script supplied with the Vancouver Utilities.

Two versions of the programs are required since only Micro Focus COBOL users (server express 2.2+) could compile 'ux' versions whereas any user can compile 'uv' versions which use D-ISAM to support Indexed Sequential FIXED record length files.

The Micro Focus IDXFORMAT3,8 files are identified to the Vancouver Utility programs as file typ=IDXf3 & typ=IDXf8. Please see uvcp.doc, uvsort.doc, or uvcopy1.doc for more info.

compile uvlib32.a for Micro Focus on 64 bits

On 64 bit systems (such as AMD 64), the Micro Focus compiler & script ccuvcob requires option '-m32' on any libraries linked with the ux____ programs.

Before you run ccuvcob to compile uxcopy,uxsort,uxcp,uxqrpg, you must create the 'uvlib32.a' archive as follows:


 ccuvfa LNX H32 uvlib32.a -m32  <-- create 32 bit archive on a 64 bit machine
 =============================

Note that the preceding 'ccuvall' script generated uvlib32.a/uvlib64.a for linking with 'uv' & 'ux' programs. You only need to generate 'uvlib32.a' to link with the 'ux' programs on 64 bit systems using script ccuvcob to include the Micro Focus variable length Indexed file handler.

Micro Focus provides cobmode=64 but I have had problems with it. I get errmsg: ld: lib/uvlib64.a(errmsg.0) relocatin R_X86_64_32 local symbol cant be used making shared object; recompile with -fPIC. Without cobmode=64 I can compile with H64, uvlib64.a,& disamLNX64.a, but execution gives signal 11.

Goto:   Begin this document End this document UVSI Home-Page

C6. Compiling 'ux' programs to access IDXFORMAT3/8 files

compiling 'ux' programs


 ccuvcob ux____ AIX/HP/LNX/SUN H32 uvlib___32/64.a disam___32/64.a <-- format
 =================================================================

 export COBMODE=32   <-- set 32 bit mode for Micro Focus 'cob' compiler
 =================     - called by 'ccuvcob' script to compile C programs

Example for Linux:


 #1. ccuvcob uxcp LNX H32 uvlib32.a disamLNX32.a
     ===========================================
 #2. ccuvcob uxsort LNX H32 uvlib32.a disamLNX32.a
     =============================================
 #3. ccuvcob uxcopy LNX H32 uvlib32.a disamLNX32.a
     =============================================
 #4. ccuvcob uxqrpg LNX H32 uvlib32.a disamLNX32.a
     =============================================

Example for AIX:


 #1. ccuvcob uxcp AIX H32 uvlib32.a disamAIX32.a   -q32
     ===========================================
 #2. ccuvcob uxsort AIX H32 uvlib32.a disamAIX32.a -q32
     =============================================
 #3. ccuvcob uxcopy AIX H32 uvlib32.a disamAIX32.a -q32
     =============================================
 #4. ccuvcob uxqrpg AIX H32 uvlib32.a disamAIX.32a -q32
     =============================================

always specify H32 for ccuvcob

  1. Script 'ccuvcob' calls Micro Focus 'cob' to compile the 'ux' utilities.

  2. 'cob' defaults to 32 bit compiles, so we must specify H32

  3. Archives linked with 'ux' utilities must also be 32 bits

  4. Note 'uvlib32.a compiled on prior page with option '-m32'

  5. Micro Focus does provide 'cobmode=64' but I have had problems with it (see problem described on previous page).

Goto:   Begin this document End this document UVSI Home-Page

C7. Compiling Vancouver Utility C Programs

Compile Problems

If you have 'error' messages during the compiles, please capture the error messages and email them to me (owen@uvsoftware.ca). Note that some systems may generate some 'warning' messages which can be ignored if there are no 'error' messages.


 ccuvall OStype H32/H64 uvlib32/64.a disam___32/64.a >ccerrs 2>&1
 ===================================================
lp ccerrs
  • OR print the error log & fax to UV Software Inc.

using alternate C compilers

export UVCC=gcc <-- causes compile scripts to use gcc vs cc

export UVCC=xlc <-- causes compile scripts to use xlc for AIX

Goto:   Begin this document End this document UVSI Home-Page

D1. Compiling Vancouver Utility C Programs

D-ISAM libraries available

Here are the contents of /home/uvadm/lib/... as of January 2015. You should see a disam___32/64.a matching your machine (to link with uvcopy,uvsort,etc).

Directory: /home/uvadm/lib

         disamAIX32.a  disamAIX64.a  disamDEC64.a  disamDOS.a   disamDWIN.lib
         disamHP64.a   disamHPIA32.a disamHPIA64.a disamINT32.a
         disamSCO32.a  disamSFU32.a  disamSUN32.a  disamSUN64.a
         disaamLNX32.a disamLNX64.a  disamCentos32.a Centos64.a
         disamSUSE32.a

compiling D-ISAM

D-ISAM is proprietary to Byte Designs & UV Software is licensed to distribute only the linkable archive (disamAIX64.a, disamHP64.a, disamLNX64.a, etc).

UV Software has compiled their copy of the D-ISAM source modules on the various machines & distributes only the compiled linkable archives listed above. The script to compile the source modules is listed on page 'N8'.

dcheck - utility to verify D-ISAM files

'dcheck' is a Byte Designs utility to validate D-ISAM files. You should copy the dcheck___ program matching your machine to /home/uvadm/bin & rename to just 'dcheck'. For example, if you are running on AIX:


 cp lib/dcheckAIX bin/dcheck   <-- change AIX as req'd (HP,LNX,SUN,etc)
 ===========================

if disam___ NOT available for your machine

If you do not see the version you require, you need to compile src/disamNULL.c dummy program to lib/disamNULL.a, so you can compile uvcopy, uvsort, etc.

Please see the listing of 'disamNULL.c' on the next page which includes the instructions for compiling & archiving into lib.

Goto:   Begin this document End this document UVSI Home-Page

D2. Compiling Vancouver Utility programs

/home/uvadm/src/disamNULL.c

 /* disamNULL.c - null program used when no DISAM library required   */
 /*             - to compile Vancouver Utility programs (uvcopy,etc) */
 /* disamNULL allows compiling Vancouver Utilitie programs on 64 bit */
 /* machines when the 64 bit version of D-ISAM is not yet available  */
 /* - examples below assume that disamAIX64.a is missing for your AIX*/
 /* D-ISAM file handler for Indexed files from www.bytedesigns.com  */
 /* - compatible with C-ISAM and Micro Focus COBOL IDXFORMAT1       */
 /* UV Software is allowed to provide only 'object code' for D-ISAM */
 /* Since UVSI has only Linux at their development site, UVSI must  */
 /* get time on other machines to create 64 bit versions of D-ISAM  */

 /* ls -l /home/uvadm/lib   <-- see if a 64 bit version available   */
 /* =====================       for your machine & operating system */
 /* - disamAIX32.a,disamLNX32.a,disamLNX64.a,disamSUN64.a,etc       */
 /* - disamAIX64.a missing, you could compile & archive as follows: */

 /* 1. cc -c -Ihdr src/disamNULL.c       <-- compile to object (.o) */
 /*    ===========================                                  */
 /* 2. ar r lib/disamAIX64null.a disamNULL.o <-- create archive to  */
 /*    =====================================     link with utilities*/
 /* 3. rm disamNULL.o                   <-- remove object          */
 /*    ==============                                              */
 /* then compile Vancouver Utility programs as follows:                */
 /*                                                                    */
 /* ccuvall AIX H64 uvlib64.a disamAIX64null.a <-- compile all programs*/
 /* ==========================================                         */
 /* ccc uvcopy AIX H64 uvlib64.a disamAIX64null.a <-- compile 1 program*/
 /* =============================================                      */
 /* declare structures referenced by DISAM functions */
 /* - see original in srcf/iswrap.c                  */
 struct keypart
   { short kp_start;
     short kp_leng;
     short kp_type;
   };
 struct keydesc
   { short k_flags;
     short k_nparts;
     struct keypart k_part[5];
     short k_len;
     int   k_rootnode;
   };

Goto:   Begin this document End this document UVSI Home-Page

 /* dummy DISAM functions called by uvcopy,uvsort,uvcp,uvqrpg */
 int isbuild (char *name, int len, struct keydesc *kdsc, int mode)
 { return(0); }
 int isaddindex (int isfd, struct keydesc *kdsc)
 { return(0); }
 int iserase (char *name)
 { return(0); }
 int isindexinfo (int isfd, struct keydesc *dest, int idx)
 { return(0); }
 int islock (int isfd)
 { return(0); }
 int isunlock (int isfd)
 { return(0); }
 int isopen (char *name, int mode)
 { return(0); }
 int isclose (int isfd)
 { return(0); }
 int isstart (int isfd, struct keydesc *key, int len, char *data, int mode)
 { return(0); }
 int isread (int isfd, char *data, int mode)
 { return(0); }
 int iswrite (int isfd, char *data)
 { return(0); }
 int isdelete (int isfd, char *data)
 { return(0); }
 int isrewrite (int isfd, char *data)
 { return(0); }
 /*-------------------------- end disamNULL.c -------------------------*/

Goto:   Begin this document End this document UVSI Home-Page

D3. Compiling Vancouver Utility programs

Indexed file .dat for Micro Focus COBOL & Vancouver Utilities

The Micro Focus COBOL default is NO '.dat' extension. We highly recommend the Micro Focus COBOL option 'IDXNAMETYPE=2' to read/write Indexed files with the '.dat' extension. You can code this in the 'extfh.cfg' file defined by env-var $EXTFH, which is defined in the common_profile.


 export EXTFH=$RUNLIBS/ctl/extfh.cfg  <-- define location of extfh.cfg
 ===================================    - EXTFH defined in common_profile

 IDXNAMETYPE=2    <-- option within extfh.cfg
 =============

Early versions of Vancouver Utilities (uvcopy,uvsort,uvcp) used only the D-ISAM file handler for Indexed files (compatible with Micro Focus IDXFORMAT1). The early versions of D-ISAM read either .dat or no extension, but always created files without the '.dat' extension (compatible with Micro Focus COBOL if not using IDXNAMETYPE=2 in EXTFH=extfh.cfg.

In 1998 environmental variable 'DISAMEXT' was provided for sites that wanted to use '.dat' extensions (compatible with MF COBOL IDXNAMETYPE=2).


 export DISAMEXT="dat"   <-- cause uvsort, etc to read/write .dat extensions
 =====================     - defined in common_profile

ISDATEXT=".dat" D-ISAM update 2010

In April 2010, Byte Designs enhanced D-ISAM with env-var ISDATEXT to allow the option of writing Indexed files without the '.dat' extension.


 export ISDATEXT=".dat"  <-- cause uvsort, etc to read/write .dat extensions
 ======================    - defined in common_profile

You could drop the older DISAMEXT, but it will not do any harm as long as you also define ISDATEXT=".dat".

Indexed file capability UNIX vs mainframe

Note that I have recoded the 'keydesc' structure to allow 9 keys, each of which may have up to 3 parts. The OS/3 mainframe allowed only 5 single part keys. Key duplicates & changes are not allowed on the 1st key, but are allowed on keys 2-9. These defaults may be over-ridden if desired.

Goto:   Begin this document End this document UVSI Home-Page

D4. Compiling Vancouver Utility C Programs

user written subfunctions linked to uvcopy

xxa,xxb,& xxc instructions are provided to call user subfunctions. These sub functions must have been compiled & archived to /home/uvadm/lib/uvlib32/64.a so they can be linked to uvcopy & uvqrpg.

uvsubxxa.c, uvsubxxb.c,& uvsubxxc.c are 3 dummy subfunctions provided in subdir /home/uvadm/srcf/... that you may modify with your desired C code.


 #1. cd /home/uvadm
 #2. vi srcf/uvsubxxa.c                 <-- modify dummy instrn with yours
 #3. ccuvf uvsubxxa LNX H32             <-- compile & archive to lib/uvlib32.a
 #4. ccuv uvcopy LNX H32 uvlib32.a disamLNX32.a <-- compile&link uvcopy w subrtns
 uvcopy instructions xxa, xxb, xxc have no operands
   - areas i,j,k must be stored for subrtn arg1,2,3 (see area1,2,3 below)
   - instrn ctrs 21,22,23 must be stored for arg4,5,6 (see ctr1,2,3 below)
   - counters are defined here as long, but in uvcopy/uvqrpg as UVi64
     which is long if H64 but long long if H32
   - counters are pointers so you can store them as well as reference them

See more documentation for 'xxa' & 'uvsubxxa.c' in uvcopy3.htm in volume 2. Look up 'xxa' in the instructions index on pages 3 & 4.

Goto:   Begin this document End this document UVSI Home-Page

E1. TESTING the Vancouver Utility programs

C program to test 64 bit integers

A C program & a uvcopy job are supplied to test 64 bit integers. Please see program listings, operating instructions, & expected outputs on pages Q1 to Q4 of TestDemo.htm#Q1. Here are the operating instructions & expected output for the C program.


 cc src/test64c.c -o bin/test64c   <-- compile test64c.c program
 ===============================

 bin/test64c                       <-- execute
 ===========                         - expected results below
  00. 0000000000004096 * 04 = 0000000000016384 = 00 40 00 00 00 00 00 00
  01. 0000000000016384 * 04 = 0000000000065536 = 00 00 01 00 00 00 00 00
  02. 0000000000065536 * 04 = 0000000000262144 = 00 00 04 00 00 00 00 00
  03. 0000000000262144 * 04 = 0000000001048576 = 00 00 10 00 00 00 00 00
  04. 0000000001048576 * 04 = 0000000004194304 = 00 00 40 00 00 00 00 00
  05. 0000000004194304 * 04 = 0000000016777216 = 00 00 00 01 00 00 00 00
  06. 0000000016777216 * 04 = 0000000067108864 = 00 00 00 04 00 00 00 00
  07. 0000000067108864 * 04 = 0000000268435456 = 00 00 00 10 00 00 00 00
  08. 0000000268435456 * 04 = 0000001073741824 = 00 00 00 40 00 00 00 00
  09. 0000001073741824 * 04 = 0000004294967296 = 00 00 00 00 01 00 00 00
  10. 0000004294967296 * 04 = 0000017179869184 = 00 00 00 00 04 00 00 00
  11. 0000017179869184 * 04 = 0000068719476736 = 00 00 00 00 10 00 00 00
  12. 0000068719476736 * 04 = 0000274877906944 = 00 00 00 00 40 00 00 00
  13. 0000274877906944 * 04 = 0001099511627776 = 00 00 00 00 00 01 00 00
  14. 0001099511627776 * 04 = 0004398046511104 = 00 00 00 00 00 04 00 00
  15. 0004398046511104 * 04 = 0017592186044416 = 00 00 00 00 00 10 00 00
Note
  • the 32 bit limit is at #09 above 1,073,741,824 is OK in 32 bits
  • following entries zeros or garbage if 64 bit software not working

recompile with various options for 32/64 bits


 gcc src/test64c.c -o bin/test64c        <-- use 'gcc' vs 'cc'
 ================================
 xlc -q64 src/test64c.c -o bin/test64c   <-- xlc & -q64 for AIX
 =====================================
 cc -m64 src/test64c.c -o bin/test64c    <-- '-m64' for some machines/OSs
 ====================================      - SUN, Micro Focus cc
 cc +DD64 src/test64c.c -o bin/test64c   <-- '+DD64' for 'cc' on HPUX IA64
 =====================================
 gcc -mlp64 src/test64c.c -o bin/test64c <-- '-mlp64' for 'gcc' on HPUX IA64
 =======================================

Some OS's have a symbolic link or any alias from 'cc' to 'gcc'. You can look for this with following commands:

      which cc     <-- should show path location of cc
      which gcc    <-- should show path location of gcc
      ls -l /bin/*cc*      <-- list all cc programs in /bin
      ls -l /usr/bin/*cc*  <-- or might be in /usr/bin

Goto:   Begin this document End this document UVSI Home-Page

E2. TESTING the Vancouver Utility programs

uvcopy job to test 64 bit integers

Page 'E1' above compiled & executed a very small 'C program' to test 64 bit integers. Now we will run similar tests using a 'uvcopy job'.

'testint2' is uvcopy job to test uvcopy processing of 32 & 64 bit integers. You have already compiled the uvcopy interpreter with 'ccuvall' on 'C1' - 'C3'. We will give the instructions here to recompile just uvcopy for Linux on both 32 bit & 64 bit hardware/software. You should change 'LNX' to the proper code for your system (SUN,HP,AIX,SFU,etc).


 #1. ccuv uvcopy LNX H32 uvlib32.a disamLNX32.a
     ==========================================
     - compile on 32 bit hardware (long = 32 bits)
     - 64 bit integers achieved via Software (long long = 64 bits)

 #2. uvcopy testint2    <-- execute uvcopy job 'testint2'
     ===============      - displays output via 'more'

 #3. ccuv uvcopy LNX H64 uvlib64.a disamLNX64.a
     ==========================================
     - compile on 64 bit hardware (long = 64 bits)
     - option 'H64' tells uvcopy to expect long 64 bits & not use 'long long'

 #4. uvcopy testint2    <-- execute uvcopy job 'testint2'
     ===============      - displays output via 'more'
Note
  • Please see the expected outputs for both 32 & 64 bits
  • listed on pages Q1 & Q2 of TestDemo.htm#Q1.

Goto:   Begin this document End this document UVSI Home-Page

F1. 'uycopy' to access SQL DataBase Tables

In November 2008, a new version of uvcopy, 'uycopy' was created to provide access to SQL DataBase tables. It had to be a separate version (from uvcopy) because it requires the SQL C-API libraries for compilation at sites with an SQL DataBase installed.

'uycopy' uses file 'typ=DBT' to define a DataBase Table & environmental variables (DBhost1, DBuser1, DBpass1) for connection to the DataBase. Please see documentation for uycopy in SQLdemo.htm#Part_2.

compiling 'uycopy' with SQL DataBase libraries

  1. You must download & install MySQL as instructed at SQLdemo.htm#Part_1.


 #2. ccmysqlLNX64 uycopy   <-- execute script to compile 'uycopy'
     ===================

script to compile 'uycopy'

 # ccmysqlLNX64 - script to compile Vancouver Utility C program
 #              - provides access to MySQL DataBase libraries
 # - by Owen Townsend, UV Software, Nov 05/2008
 # - for Linux on 64 bit system, with option for debug
 #
 pgm="$1";
 if [[ ! -f src/$pgm.c ]]; then
    echo "usage: ccmysqlLNX64 program"
    echo "       ===================="
    echo "example: ccmysqlLNX64 uycopy"
    echo "         ==================="
    echo "compile with MySQL libraries on Linux 64 bit with debug option"
    exit 99; fi;
 #
 sqlinclude="-I/usr/include/mysql"
 sqllibs="-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto"
 syms="-DLNX -DH64 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
 #
 cc $syms -Ihdr src/${pgm}.c $sqlinclude $sqllibs \
           lib/uvlib64.a lib/disamLNX64.a -o bin/${pgm}
 #=====================================================
 exit 0

Goto:   Begin this document End this document UVSI Home-Page

G1. Vancouver Utilities for non-Unix/Linux systems

http://www.uvsoftware.ca/windowsdos.htm - Windows DOS command line

http://www.uvsoftware.ca/windowssfu.htm - Windows Services For Unix

http://www.uvsoftware.ca/cygwinuwin.htm - CYGWUN/UWIN

Or see the documentation text files in the doc/ directory

/home/uvadm/doc/WindowsDOS.doc

/home/uvadm/doc/WindowsSFU.doc

/home/uvadm/doc/CygwinUwin.doc

profiles for Windows DOS, SFU, UWIN,& CYGWIN

The profiles for unix/linux have been split into a 'stub_profile' and a 'common profile' (test or prod). This is highly recommended but has not been done for the following profiles:

 /home/uvadm/env/other_profiles/profile_DOS
 /home/uvadm/env/other_profiles/profile_SFU
 /home/uvadm/env/other_profiles/profile_UWIN
 /home/uvadm/env/other_profiles/profile_CYGWIN

If the 'other_profiles' subdir is omitted, please see the profiles listed in the documentation for the relevant system.

Goto:   Begin this document End this document UVSI Home-Page

H1. TESTING the Vancouver Utility programs

Please see the separate section TestDemo.htm. Run these tests & ensure your outputs match the expected outputs illustrated following each test/demo. Please call/email UV Software if you find any discrepancies or need any help running these tests.

Running these 'test/demo's is also a great way to investigate the Vancouver Utilities & find out which utilities will be the most useful to you.

Contents of 'TestDemo.doc'

 uvhd - binary file investigation & display in vertical hexadecimal
 uvcp - file copy with record selection & reformatting
 uvsort - file sort utility with record selection & much more
 uvlist - list text files, inserting laser printer control codes
 uvcopy - the most powerful Vancouver Utility (data manipulation, etc)
 uvqrpg - Quick Report Generator

table1 - pre-programmed table analysis of any field by any argument cobmap1 - pre-programmed job to create record layouts from COBOL copybooks

D-ISAM
  • test uvcp/uvsort processing Indexed Sequential Fixed length records
  • compatible with Micro Focus COBOL IDXFORMAT1 files

scan1d - scan all files in a directory for matches to qualified patterns rep2 - copy files replacing patterns, qualified by other patterns prodfix1 - uvcopy equivalent of the rep2 pre-programmed job above

testint2
  • test conversion of decimal to integer & back (32/64 bit tests)
  • Be sure to run this test if you have compiled with the 64 bit option.
  • see page 'E2' or even better at TestDemo.htm#Q1
testIDXL
  • test uxcp processing Indexed Sequential Variable length records
  • compatible with Micro Focus COBOL IDXFORMAT3 files
tabfix1
  • converting tabs to blanks
 More pre-programmed jobs for various useful file conversions
          - UPPER/lower case, EBCDIC/ASCII, etc

Goto:   Begin this document End this document UVSI Home-Page

I1. Documentation Overview

The following are some of the documentation files are included on the distribution media in subdirectory 'doc'.

install.doc
  • installation guide for UNIX systems
WindowsSFU.doc
  • installation for Windows with SFU (Services For Unix)
WindowsDOS.doc
  • installation & demonstration for Windows/DOS versions
  • see spearate install guides for these versions of VU
TestDemo.doc
  • Testing & Demonstrating the Vancouver Utilties
  • a great way to get started using these utilities
  • see summary on the previous page
uvtrain.doc
  • training guide for the Vancouver Utilities
uvlist.doc
  • documentation listing utility
uvhd.doc
  • hexdump utility for any file
uvcp.doc
  • a mini-version of uvcopy that allows all parameters
    on the command line (replaces mainframe DATA utility)
uvsort.doc
  • parameter driven sort for UNIX systems
    compatible with the uvcp utility (replaces SORT & SORT3)
uvqrpg.doc
  • report generator
uvcopy_.doc
  • documentation for the uvcopy program
    (uvcopy1.doc, uvcopy2.doc, etc thru uvcopy7.doc)
  • uvcopy is a powerful data manipulation program
    that is the basis for many applications in the pkg
 JCLcnv1demo.doc - converting JCL & COBOL illustrated with demo files
 JCLcnv2real.doc - comprehensive instructions to convert your JCL,COBOL,& DATA
 MVSCOBOL.doc    - converting MVS mainframe COBOL to Micro Focus on Unix/Linux
 DATAcnv1.doc   - Converting EBCDIC to ASCII with or without copybooks
                - preserving packed fields & correcting zoned signs
                - convert mainframe data files to '|' delimited text files
                  for loading databases (SQL Server or Oracle)
VSEJCL.doc
  • Converting VSE JCL to Korn shell scripts for Unix/Linux
VSECOBOL.doc
  • Converting VSE mainframe COBOL to Micro Focus on Unix/Linux
VSEDATA.doc
  • Converting VSE EBCDIC DATA files to ASCII for Unix/Linux
  • preserving packed fields & correcting zoned signs
COBaids.doc
  • COBOL programming aids, such as 'cobmap' which generates
    record layouts from COBOL copybooks
UVjobs.doc
  • Pre-Programmed jobs for the uvcopy interpreter
    TABLEjobs, HTMLjobs,
    SCANjobs, REPjobs, INSERTjobs, LABELjobs,
    LISTjobs, COPYjobs, FIXjobs, DROPjobs, UVjobs1, UVjobs2,
    REFORMjobs, CMPjobs,
    COBaids, COBscans, ADMjobs, AIDjobs,
    VTOCjobs, XREFjobs, TAPEjobs,

Goto:   Begin this document End this document UVSI Home-Page

I2. Documentation available on distribution archive & on web site

Vancouver Utilities Documentation on the WEB site


 http://www.uvsoftware.ca     <-- UV doc on the web site
 ========================

Documentation Also on Distribution archive

The Vancouver Utilities distribution archive now contains subdir 'dochtml'. If you install as directed in install.doc, you can point your web browser to the dochtml subdir as follows: (replace 'httpd://' with 'file:/') Also see dochtml/uvhtml.zip which contains all the HTML documentation files.


 file:/home/uvadm/dochtml
 ========================

Vancouver Utilities Doc HTML Home-Page

    summary - Description of the Vancouver Utilties
    uvintro - Detailed Description, Customer References,
            - Price List
    Mainframe Conversion Library
      - JCLcnv1demo,JClcnv2real,JCLcnv3aids,MVSCOBOL,VSEJCL,VSECOBOL,VSEDATA
    Vancouver Utility Program User Guides
      - uvhd,uvlist,uvsort,uvcopy,uvcp,uvqrpg,uvhdcob
    uvhd documentation - file investigation utility
    uvhd program (free download) - free sample of Vancouver Utilities
    Installation  - Vancouver Utilities Installation Guide
    Install & Demonstrate - Windows/DOS Vancouver Utilties
    Testing & Demonstrating - Unix/Linux Vancouver Utilties
    uvtrain       - Training Guide: uvhd, uvlist, uvcp, uvsort, uvcopy
    Photo Gallery - Vancouver Map and City, Owen Townsend, etc
    Pre-Programmed jobs (for the uvcopy interpreter)
      - HTMLjobs, TABLEjobs, SCANjobs, REPjobs, COBOLaids
    Unix & Linux shell scripts - 200+ scripts for conversions and everyday use
    UVprofile - UV Software, Company Profile and Products
    uvprices  - price lists and license agreements

Over 99.8% of the HTML you see here on the UV Software web site was generated automatically. Only a few small files such as index.htm were coded manually. The voluminous documentation (99.8%) continues to be maintained via the UNIX 'vi' editor. When website updates are made (monthly or whatever) the 99.8% is reconverted & merged with the few small hand coded files. The result is 'tar'd, compressed,& FTP'd to the webserver.

This may be of interest to other sites with legacy documentation. If your legacy documentation has a clear set of rules for page headings & section/chapter references, then you (or UV Software) could write a uvcopy job to automatically convert your legacy documentation to HTML.

Goto:   Begin this document End this document UVSI Home-Page

I3. Printing any 1 section of Documentation

Customers receive 1 pre-printed (duplex) copy of the documentation mounted in a standard 3 ring 8 1/2 x 11 binder with tabs for each section. The documentation is also on the distribution media & you may print additional copies as follows:

Assuming you are in /home/uvadm, using recommended profiles (listed at ADMjobs.htm#1C1), have set UVLPDEST to a PCL5 compatible Duplex laser printer and have loaded the laser printer with 3 hole punched 20 pound copy paper.


 export UVLPDEST=-dlaserxx  <-- specify your laser printer
 =========================    - if not set in your profile

 uvlp12D doc/install.doc    <-- use uvlp12D to print any 1 document (Duplex)
 =======================      - see script listed on the next page

Goto:   Begin this document End this document UVSI Home-Page

I4. Printing any 1 section of Documentation

script uvlp12D - print Duplex at 12 cpi

 #!/bin/ksh
 # uvlp12D - Korn shell script from UVSI stored in: /home/uvadm/sf/util/
 # uvlp12D - print a file at 12 cpi (90 chars on 8 1/2 x 11)
 #        - DUPLEX mode (new option April 98)
 #        - pg hdngs with: filename, mod-date, today-date, page#s
 #        - for HP laserjet 4 printers & compatibles
 #
 #usage: uvlp12D filename [group1] [group2]  <-- may override default options
 #       ==================================
 #
 # - 1 of several: uvlp12,uvlp14,uvlp16,uvlp12L,uvlp14L,uvlp12D,uvlp14LD,etc
 # - these scripts invokes uvlist & pipe to the spooler
 # - see uvlist.doc for many group1(file) & group2(laser printer) options
 # - these scripts convert group2 options into HP PCL5 escape sequences
 # - scriptnames reflect commonly used uvlist options, for example:
 #   group1:  p60  = 60 lines per page
 #            b50e60 = Begin print at page 50 & End print at page 60
 #   group2:  d1   = duplex mode
 #            c12  = 12 cpi = 90 chars across on 8 1/2 " paper
 #            m280 = default margin offset by 280/720 inch (for 3 hole punches)
 #
 # .profile should specify environmental variables for 'lp', for example:
 # export UVLPDEST="-dlp0"       #<-- destination 'lp0' ("-dLPT1" for SFU)
 # export UVLPDEST=""            #<-- null to use lpadmin default
 # export UVLPOPTN="-onobanner"  #<-- 'nobanner' option for lp
 # export UVLPOPTN=""            #<-- null disable for Windows SFU
 #
 if [ -f "$1" ]; then :
    else echo "ERROR - $1 is not a file"; exit 1; fi
 uvlist $1 p60$2 t4d1c12n-240$3 | lp $UVLPOPTN $UVLPDEST
 #======================================================
 #note - option 't4' for alternate tray on my Lexmark t642
 #     - option 't1' for main tray #1 (t2 & t3 are manual & envelope)
 # - I use t4 for script 'uvlp12D' for my Duplex paper  <-- this script
 # - I use t1 for script 'uvlp12'  for my Simplex paper <-- alternate
 uvln=$(basename $0)
 linesbf=$(wc -l $1); linesb=${linesbf% *}; lines=${linesb##* };
 echo "$uvln printing $1 on $UVLPDEST, lines=$lines"
 exit 0

See uvlist.htm for complete details on the Laser printer options and the various scripts available.

Goto:   Begin this document End this document UVSI Home-Page

J1. Installation Guide for Vancouver Utilities

Preparations for new version of VU

This section is mostly for the benefit of UV Software personnel. This is a list of things to do in preparation for shipping the Vancouver Utilities package to a new customer or sending an update to an existing customer.

The Vancouver Utilities (programs, scripts, documentation) is continuously being enhanced. When we get a new order, we try to complete the current round of updates, especially any resulting from test conversions of the new customer's JCL.

A. update versions.doc

Update versions.htm with brief descriptions of recent updates. This allows existing customers to see what has changed since their last update.


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

 #2. vi doc/versions.doc   <-- update summary of recent changes
     ===================

Goto:   Begin this document End this document UVSI Home-Page

J2. Preparations for new version of VU

B. update common page 1 - if contents changed

Run 'repage1' if the common (documentation overview) contents page has changed. The first page of most documents is a list of all documents in the package to show how the current document relates to other documents.

Updating this common page 1 used to be a laborious manual editing job. As of April 2008, we use uvcopy job 'repage1' to automatically update all documents with the common page 1 (about 60 of 100). See repage1 details at uvcopy7.htm.


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

 #2. mkdir new  <-- make temp subdir for new page1
     =========

 #3. head -58 doc/MVSJCL.doc >new/page1
     ===================================
     - extract page 1 from an existing document for update

 #4. vi new/page1    <-- update common page 1 as required
     ============

 #4a. mv doc doc.old  <-- change name of existing doc subdir
      ==============

 #4b. mkdir doc       <-- make new doc subdir
      =========

 #5. uvcopy repage1,fild1=doc.old,fild2=doc,fili3=new/page1
     ======================================================
      - copy all from doc.old to new doc/... replacing page 1's

 #5a. uvcopy repage1  <-- same as above, files default as shown above
      ==============

Goto:   Begin this document End this document UVSI Home-Page

J3. Preparations for new version of VU

C. update mvstest & vsetest

UV Software tests MVS & VSE conversions using login/homedirs /home/mvstest & /home/vsetest. Before a new version of /home/uvadm is sent to new customers, /home/mvstest & /home/vsetest are copied to /home/uvadm/mvstest & /home/uvadm/vsetest, to ensure the customer gets the latest version of the test/demo libraries & data.

The mvstest & vsetest JCL, COBOL,& DATA files are a vital part of the 'test/demo's documented in part 1 of JCLcnv1demo.htm & VSEJCL.htm.

After copying mvstest & vsetest to /home/uvadm, the Op. Instrns. below will clear our conversion results to allow the new customer to run the test/demos & see if he gets the same results as listed in part 1 of JCLcnv1demo.htm & VSEJCL.htm

Before giving the Operating Instructions, we will illustrate the directories:

Goto:   Begin this document End this document UVSI Home-Page

J4. Preparations for new version of VU

homedirs: mvstest, vsetest,& uvadm

 /home
 :-----mvstest            mvstest to be copied to /home/uvadm/mvstest ----->
 :     :-----cmpdata
 :     :-----cnvdata
 :     :-----testdata
 :     :     :-----ar
 :     :     :-----gl
 :     :     :--etc--          <-- several subdirs omitted
 :     :     :-----wrk
 :     :-----testlibs          <-- see all subdirs at JCLcnv1demo.htm#3B2
 :     :     :-----cbl0
 :     :     :-----cbl1
 :     :     :-----cbl2
 :     :     :-----cbls
 :     :     :-----jcl0
 :     :     :-----jcl1
 :     :     :-----jcl2
 :     :     :-----jcl3
 :     :     :-----jcls
 :     :     :--etc--
 :     :     :-----xref
 :     :-----tmp
 /home
 :-----vsetest            vsetest to be copied to /home/uvadm/vsetest ----->
 :     :-----cmpdata
 :     :-----cnvdata           <-- vsetest contents same as mvstest
 :     :-----testdata
 :     :-----testlibs          <-- see all subdirs at VSEJCL.htm#1A1
 /home
 :-----uvadm              Vancouver Utilities homedir
 :     :-----bin               <-- see all subdirs at install.htm#A2
 :     :-----doc
 :     :-------etc--           <-- several uvadm subdirs omitted
 :     :-----lib
 :     :-----mvstest        <----- /home/uvadm/mvstest copied from /home/mvstest
 :     :     :-----cmpdata
 :     :     :-----cnvdata
 :     :     :-----testdata
 :     :     :-------etc--     <-- contents same as for /home/mvstest
 :     :     :-----testlibs
 :     :-----pf
 :     :-----sf
 :     :-----sfun
 :     :-------etc--
 :     :-----src
 :     :-----vsetest        <----- /home/uvadm/vsetest copied from /home/vsetest
 :     :     :-----cmpdata
 :     :     :-----cnvdata
 :     :     :-----testdata
 :     :     :-------etc--     <-- contents same as for /home/mvstest
 :     :     :-----testlibs

Goto:   Begin this document End this document UVSI Home-Page

J5. Preparations for new version of VU

D. Clean-up /home/mvstest & /home/vsetest

  1. Login as mvstest --> /home/mvstest

  2. Clean up temporary & output results from recent tests


 2a. testdatainit  <-- clear tmp/* wrk/* jobtmp/* joblog/* rpts/* etc
     ============
  1. clear any extra GDG generation files created by recent testing


 #3a. cdd (alias for cd $HOME/testdata) --> /home/mvstest/testdata

 #3b. l gl          <-- list gl/... test data files
      ====
      -rw-rw-r-- mvstest apps 3394 Jun 18  2007 account.acntlist_000001
      -rw-rw-r-- mvstest apps 3394 Jun 18  2007 account.acntlist_000002
      -rw-rw-r-- mvstest apps 3394 Jun 18  2007 account.acntlist_000003
      -rw-rw-r-- mvstest apps 8720 Jun 10  2007 account.master_000001
      -rw-rw-r-- mvstest apps 8720 Jun 10  2007 account.master_000002
      -rw-rw-r-- mvstest apps 8720 Jun 10  2007 account.master_000003
      -rw-rw-r-- mvstest apps 1600 Jun 10  2007 account.tran1
      -rw-rw-r-- mvstest apps 1600 Jun 10  2007 account.trans_000001
      -rw-rw-r-- mvstest apps 1600 Jun 10  2007 account.trans_000002
      -rw-rw-r-- mvstest apps 1600 Jun 10  2007 account.trans_000003
      -rw-rw-r-- mvstest apps 1600 Jul 29  2007 account.trans_000004
      -rw-rw-r-- mvstest apps 1600 Jul 29  2007 account.trans_000005
      -rw-rw-r-- mvstest apps 1600 Oct 21 15:16 acnt.trans_000001
      -rw-rw-r-- mvstest apps 1600 Oct 21 15:17 acnt.trans_000002
      -rw-rw-r-- mvstest apps 1600 Oct 21 15:17 acnt.trans_000003

 #3c. Remove any generation files beyond those shown above

 #4. Repeat above for 'vsetest'

Goto:   Begin this document End this document UVSI Home-Page

J6. Preparations for new version of VU

E. Refresh /home/uvadm/mvstest & /home/uvadm/vsetest

 We will copy the latest test/demo files from /home/mvstest/* & /home/vsetest/*
 to /home/uvadm/mvstest/... & /home/uvadm/vsetest/...
  1. Login as uvadm --> /home/uvadm


 #2a. rm -rf mvstest/*    <-- clear all subdirs in /home/uvadm/mvstest
      ================

 #2b. cp -r /home/mvstest/* mvstest  <-- refresh with latest test/demo files
      =============================

 #3a. rm -rf vsetest/*    <-- clear all subdirs in /home/uvadm/vsetest
      ================

 #3b. cp -r /home/vsetest/* vsetest  <-- refresh with latest test/demo files
      =============================

Clear UV Software conversion results

We will clear the JCL & COBOL conversion output subdirs, so the user can recreate as per part 1 of JCLcnv1demo.doc & VSEJCL.doc.

  1. we are still logged in as uvadm --> /home/uvadm


 #2a. cd mvstest/testlibs  <-- change to /home/uvadm/mvstest/testlibs
      ===================

 #2b. mvstestlibsinit      <-- script to clear MVS JCL/COBOL conversions
      ===============

 #3a. cd vsetest/testlibs  <-- change to /home/uvadm/vsetest/testlibs
      ===================

 #3b. vsetestlibsinit      <-- script to clear VSE JCL/COBOL conversions
      ===============

Goto:   Begin this document End this document UVSI Home-Page

J7. Preparations for new version of VU

F. sort all files & subdirs in uvadm

Note that the 'ls' command sorts before displaying, so files appear to be in alpha sequence. Most other unix commands do not sort. It is a lot nicer when the results of commands (such as find) appear in alpha sequence.

So, every few months, we sort all files & subdirs in /home/uvadm/... using script 'sortcpio' (see /home/uvadm/sf/adm/sortcpio). We will use root to rename uvadm as uvadm.old & make new uvadm for sorted files.


 #1. Login as root
     =============

 #2. cd /home

 #3a. mv uvadm uvadm.old      <-- change name of existing uvadm
 #3b. mkdir uvadm             <-- make new uvadm to receive sorted files
 #3c. chown uvadm:apps uvadm  <-- restore owner & group
 #3d. chmod 775 uvadm         <-- restore permissions

 #4a. cp -p uvadm.old/.bash_profile uvadm   <-- restore profile
      ===================================
 #4b. cp -pr uvadm.old/env uvadm            <-- restore 'env' subdir
      ==========================
      - 'env' subdir contains the common_profile called by .bash_profile

 #34. /home/uvadm/sf/adm/newuvadm  <-- easy alternative to #3a-#4b above
      ===========================

 #5a. mkdir /home/tmp         <-- sortcpio requires /home/tmp/ subdir
 #5b. chmod 777 tmp           <-- set permissions
 #5c. rm -f /home/tmp/*       <-- OR remove files if already present

 #6. Login as uvadm

 #7. cd /home

 #8x. sortcpio uvadm.old uvadm  <-- will NOT work, since PATH set for uvadm
      ========================    - use command below to call from uvadm.old

 #8. uvadm.old/sf/adm/sortcpio  uvadm.old  uvadm
     ===========================================
     - sortcpio sorts all files & subdirs from uvadm.old to uvadm

Goto:   Begin this document End this document UVSI Home-Page

K1. Installation Guide for Vancouver Utilities

printing Vancouver Utility manuals

Here are the procedures that UV Software follows to update files & print the documentation for new customers or update requests. The documentation is organized in three 3-ring 2-inch binders with clear covers to insert volume titles & UV Software identification.

Volume 1
  • Installation, administration, test/demos, etc
Volume 2
  • Program reference manuals
  • uvlist, uvhd, uvcp, uvsort, uvcopy, uvqrpg, etc
Volume 3
  • Mainframe conversion manuals
  • JCLcnv1demo,JClcnv2real,JCLcnv3aids,MVSCOBOL,DATAcnv1
  • OR VSEJCL, VSECOBOL, VSEDATA, DATAcnv1, CNVaids,

1. update 'Dates' in cover & spine files

The files to print covers & spines are stored in /home/uvadm/doc/... (coverV1,coverV2,coverV3MVS,coverV3VSE,spineV1,spineV2,spineV3MVS,spineV3VSE).

These files contain 'MONTH & YEAR' to be updated for each new customer.

Here are a few lines from 'doc/coverV1'. The '!codes' are PCL5 laser printer pseudo codes that will be converted to 'escape' codes by the 'escape2' job used to print the covers & spines. The PCL5 sequences are coded with '!'s because the true 'escape's would make the files difficult to edit.

 !E!&l01X!&l40C!&k2G!(s1P!(s60V!(s3B!(s0S!(s4101T  <-- PCL5 laser codes
   Vancouver Utilities Volume 1
    Installation Guide !&l28C!(s32V
    versions UVprices April 2008        <-- Month & Year to be updated
    Owen Townsend, UV Software...etc...

 #1a. vi doc/coverV*    <-- update Month & Year in all covers
      ==============

 #1b. vi doc/spineV*    <-- update Month & Year in all spines
      ==============

Goto:   Begin this document End this document UVSI Home-Page

K2. printing Vancouver Utility manuals

2. Print Covers & Spines

The following assumes we are logged in as uvadm in homedir /home/uvadm/... & environmental variable 'UVLPDEST' in our profile has been set to a laser printer (for example 'export UVLPDEST=-dlaserxxx').

We will use uvcopy job 'escape2' (/home/uvadm/pf/adm/escape2) to print the cover & spine files (updated above). 'escape2' converts the '!' codes to true escapes required for the PCL5 codes used to set FONT sizes as desired.


 #2. Load the laser printer with light blue 67 pound stock. See the UV Software
     web site background color for the light blue shade.

 #2a. uvcopy escape2,fili1=doc/coverV1
      ================================

 #2b. uvcopy escape2,fili1=doc/coverV2
      ================================

 #2c. uvcopy escape2,fili1=doc/coverV3MVS  - OR coverV3VSE
      ===================================

 #2d. uvcopy escape2,fili1=doc/spineV1
      ================================

 #2e. uvcopy escape2,fili1=doc/spineV2
      ================================

 #2f. uvcopy escape2,fili1=doc/spineV3MVS  - OR spineV3VSE
      ===================================

Goto:   Begin this document End this document UVSI Home-Page

K3. printing Vancouver Utility manuals

3. Print Tabs for Dividers

We use Avery 'Big Tab' Dividers (product# 11121) to separate & identify our documentation sections. These have 5 tabs per set & include white stock 8 1/2 x 11 with perforations for laser printing the Big Tab Inserts.

The files of tab descriptions are stored in /home/uvadm/doc/... (UVtabs1, UVtabs2, UVtabsV3). These are similar to the cover & spine files with PCL5 codes to position printing & set FONT sizes.


 #3. Load laser printer with Big Tab Insert pages.

 #3a. uvcopy escape2,fili1=doc/UVtabsV1
      =================================

 #3b. uvcopy escape2,fili1=doc/UVtabsV2
      =================================

 #3c. uvcopy escape2,fili1=doc/UVtabsV3
      =================================

There are 18 tabs on each sheet of tab insert blanks. The files contain some extra tabs (both MVS & VSE titles in doc/UVtabsV3), but the tabs we will use are:

Volume 1
  • Install ADMjobs TestDemo scripts1 UVjobs1
  • XREFjobs TABLEjobs CMPjobs versions UVprices
Volume 2
  • uvlist uvhd uvhdcob uvsort uvcp
  • uvcopy1 uvcopy2 uvcopy3 uvcopy4 uvcopy5
  • uvcopy6 uvcopy7 uvqrpg LISTjobs UVoverlay
Volume 3
  • JCLcnv1demo,JClcnv2real,JCLcnv3aids,MVSCOBOL,DATAcnv1
  • CNVaids VSEJCL VSECOBOL VSEDATA DATAcnv1 <-- OR if VSE

Goto:   Begin this document End this document UVSI Home-Page

K4. printing Vancouver Utility manuals

Op. Instrns. to print 3 volumes of documentation


 UVdoc?? page-options laser-options  <-- print doc script format
 ==================================

 UVdoc?? p60 [c12d1m300n-240]  <-- option defaults (2 groups: format & laser)
 ============================    - must specify 'p60', may default laser options
         p60                 - specifies the lines per page
              c12            - 12 characters per inch
                 d1          - duplex option (append to m300)
                   m300      - offsets the left margin 300/720 inch (decipts)
                               to the right for 3 hole punching
                       n-240 - backside margin offset (right 200 decipts)

 #4a. UVdocV1 p60          <-- Volume 1 (Installation,ADMjobs,TestDemo,etc)
      ===========

 #4a. UVdocV2 p60          <-- Volume 2 (program references)
      ===========            - uvlist,uvhd,uvcp,uvsort,uvcopy1-7,uvqrpg

 #4a. UVdocMVS p60         <-- 'MVS' Conversions
      ============           - JCLcnv1demo,JClcnv2real,JCLcnv3aids,MVSCOBOL,DATAcnv1
      - - - OR for VSE - - -

 #4a. UVdocVSE p60         <-- 'VSE' Conversions
      ============           - CNVaids,VSEJCL,VSECOBOL,VSEDATA,DATAcnv1
Note
  • use laser printer option 'd0' if your printer does not have Duplex

 UVdocV1 p60 d0    <-- print Volume 1 Simplex (Duplex option off)
 ==============      - ONLY if you do NOT have a DUPLEX printer

script to print any 1 document


 uvlp12D doc/install.doc
 =======================
 example: print this install.htm Duplex 12cpi

Goto:   Begin this document End this document UVSI Home-Page

K5. printing Vancouver Utility manuals

scripts to print 3 volumes of documentation

 #!/bin/ksh
 # UVdocV1 - Korn shell script from UVSI stored in: /home/uvadm/sf/adm/
 # UVdocV1 - print volume 1 for the Vancouver Utilities
 #         - install,uvtrain,uvhelp,scripts1,ADMjobs,CNVaids,CMPjobs
 #         - by Owen Townsend - UV Software Inc.
 #
 #usage: UVdocV1 format-options [HP compatible printer options]
 #ex:    UVdocV1 p60      <-- recommended options (must enter at least 1 arg)
 #       ===========
 # - must enter at least 1 arg (see uvlist.doc for option details)
 # - defaults shown below, over-ride if desired
 #
 echo "UVdocV1 - print volume #1 doc for the Vancouver Utilities"
 echo "export UVLPDEST=-dlaser?  <-- change default dest to laser printer"
 echo "                              (script uses UVLPDEST if defined)"
 echo "UVdocV1 page-format-options [laser-printer-options]"
 echo "                           <-- enter 'p60' if other defaults OK"
 echo "UVdocV1 p60 d1c12m300n-240 <-- default options"
 echo "        p60                   60 lines per page"
 echo "            d1                DUPLEX option (append d1 to arg#2)"
 echo "              c12             11 chars/inch & margins for 3 hole punch"
 echo "                 m300         front margin offset right 300/720 inch"
 echo "                     n-240    back margin offset right 240/720 inch"
 echo "                              (Duplex back margin sign reversed)"
 if [[ -z "$1" ]]
 then echo "UVdocV1 requires at least 1 arg (laser options will default)"
      echo "UVdocV1 p60          <-- enter 'p60' if other defaults OK"
      exit 99; fi
 #
 uvlp12D doc/install.doc    $1 $2
 uvlp12D doc/uvtrain.doc    $1 $2
 uvlp12D doc/uvhelp.doc     $1 $2
 uvlp12D doc/scripts1.doc   $1 $2
 uvlp12D doc/ADMjobs.doc    $1 $2
 #
 uvlp12D doc/CNVaids.doc    $1 $2
 uvlp12D doc/CMPjobs.doc    $1 $2
 exit 0

Goto:   Begin this document End this document UVSI Home-Page

K6. printing Vancouver Utility manuals

scripts to print 3 volumes of documentation

 # UVdocV2 - print volume 2 Vancouver Utilities - Program References
 #   --- 25 lines omitted, similar to UVdocV1 on prior page ---
 uvlp12D doc/uvlist.doc     $1 $2
 uvlp12D doc/uvhd.doc       $1 $2
 uvlp12D doc/uvhdcob.doc    $1 $2
 uvlp12D doc/uvsort.doc     $1 $2
 uvlp12D doc/uvcp.doc       $1 $2
 #
 uvlp12D doc/uvcopy1.doc    $1 $2
 uvlp12D doc/uvcopy2.doc    $1 $2
 uvlp12D doc/uvcopy3.doc    $1 $2
 uvlp12D doc/uvcopy4.doc    $1 $2
 uvlp12D doc/uvcopy5.doc    $1 $2
 #
 uvlp12D doc/uvqrpg.doc     $1 $2
 exit 0

# UVdocMVS - print MVS Mainframe conversions for the Vancouver Utilities # --- 25 lines omitted, similar to UVdocV1 on prior page --- uvlp12D doc/JCLcnv1demo.doc $1 $2 uvlp12D doc/MVSCOBOL.doc $1 $2 uvlp12D doc/DATAcnv1.doc $1 $2 exit 0

 # UVdocVSE - print VSE Mainframe Conversions for Vancouver Utilities
 #          - VSE may be OBSOLETE ?
 #   --- 25 lines omitted, similar to UVdocV1 on prior page ---
 uvlp12D doc/VSEJCL.doc     $1 $2
 uvlp12D doc/VSECOBOL.doc   $1 $2
 uvlp12D doc/DATAcnv1.doc   $1 $2
 uvlp12D doc/VSEDATA.doc    $1 $2
 exit 0

summary of printed documentation

Volume1
  • install.doc uvtrain.doc uvhelp.doc scripts1.doc ADMjobs.doc
  • CNVaids.doc CMPjobs.doc
Volume2
  • uvlist.doc uvhd.doc uvhdcob.doc uvsort.doc uvcp.doc
  • uvcopy1.doc uvcopy2.doc uvcopy3.doc uvcopy4.doc uvcopy5.doc
  • uvcopy6.doc uvcopy7.doc uvqrpg.doc
Volume3
  • JCLcnv1demo.doc,JClcnv2real.doc,JCLcnv3aids.doc,MVSCOBOL.doc,DATAcnv1.doc

Goto:   Begin this document End this document UVSI Home-Page

K7. printing Vancouver Utility manuals

print Selected Documentation

The scripts above print the documents most relevant to mainframe conversions and general purpose use of Vancouver Utilitites. There are many other documents which may be of interest to some users, and they can be printed individually using the 'uvlp12D' script. You might 1st view on the website or with editor.


 "http://www.uvsoftware.ca/sqldemo.htm"  <-- see topic of interest on website
 ======================================

 vi doc/SQLdemo.doc        <-- or view with the editor
 ==================

 uvlp12D doc/SQLdemo.doc   <-- print desired topic of interest
 =======================
AIDjobs.doc
  • misc data file aids (similar to CNVaids.doc)
COBaids1.doc
  • COBOL aids (some already in MVSCOBOL)
COBscan.doc
  • COBOL scans for patterns & search/replace
DataUtilities.doc
  • summary of all Vancouver Data utilities
DROPjobs.doc
  • drop records by patterns for text & fixed length files
EZTRVetc.doc
  • convert Easytrieve to uvcopy
HTMLjobs.doc
  • convert VU documentation to HTML for the website
ISAMjobs.doc
  • list,load,reorganize Indexed files (Micro Focus compatible)
LABELjobs.doc
  • print labels 3 up etc
LISTjobs.doc
  • list various file types (text, fixed-length, ISAM)
MultiClient.doc
  • multiple clients on 1 computer
QuikJob.doc
  • convert mainframe QuikJob to uvcopy for unix
REFORMjobs.doc
  • reformat data files based on 2 COBOL copybooks
REPjobs.doc
  • search/replace for 1 file or all files in directory
SCANjobs.doc
  • select records by patterns from 1 file or all in directory
SELECTjobs.doc
  • select records by patterns from 1 file or all in directory
SQLcnvrt.doc
  • convert data files to pipe delimited text for loading DB tables
SQLconvert.doc
  • generate scripts to create & load Database tables for SQL server
SQLdemo.doc
  • demo conversion utilities for MySQL, Oracle, DB2, (best SQL doc)
TABLEjobs.doc
  • create summary tables of counts & summations by any argument
TestDemo.doc
  • samples of various Vancouver Utilities
UNIXtips.doc
  • misc unix tips
uvintro.doc
  • Introduction to Vancouver Utilities, customer lists & references
UVjobs1.doc
  • misc demos using VU utilities on data files
uvlocks.doc
  • demo file locking for VU utilities & COBOL on unix systems
uvprices.doc
  • Vancouver Utilities prices, user & partner agreements
versions.doc
  • Vancouver Utility version history
WindowsDOS.doc
  • VU Installation guide for Windows systems
WindowsSFU.doc
  • VU Installation for Windows with SFU (Services for Unix)
XREFjobs.doc
  • cross-references for JCL, scripts,& COBOL

Goto:   Begin this document End this document UVSI Home-Page

L1. Installation Guide for Vancouver Utilities

Creating Vancouver Utility distribution CD

Here is the procedure I was using in 2007 on my HP Kayak workstation (RHEL 3.0). It did not have a CD writer so I FTP'd the tar/zip files to my windows PC before writing the CD. I may change this on my new HP xw9400 with RHEL 5.1.

uvadm - vital subdirs

 /home/uvadm
 :-----bin             <-- binaries (uvcopy,uvsort,etc) distros are RedHat Linux
 :-----doc               - Vancouver Utilities documentation (text)
 :-----env               - profiles for Unix/Linux, SFU, Cygwin,& Uwin
 :-----hdr               - hdr files for C compiles
 :-----lib               - libraries for C compiles (subfunctions,DISAM,etc)
 :-----mvstest         <-- test/demos for MVS JCL/COBOL mainframe conversions
 :-----pf              <-- Parameter Files for uvcopy & uvqrpg
 :-----sf              <-- Script Files
 :-----src             <-- Vancouver Utilities C source code
 :-----tf                - test files for various examples in doc
 :-----tmp               - tmp subdir (test/demo outputs)
 :-----vsetest         <-- test/demos for VSE JCL/COBOL mainframe conversions

The above are the most vital subdirs in the Vancouver Utilities (see page 'A2' for the complee list). Before customizing & creating the distribution CD, I copy the uvadm subdirs over to a backup subdir.

In /home2/uvbak/b1,b2,...b9 I maintain the last 9 daily backups (as well as on DAT tape). For customizing for a new customer I simply use the next available (oldest) backup subdir.

backup subdirs

 /home2/uvbak
 :-----b1            <-- backup dirs for uvadm/...
 :-----b2
 :-----b3
  --etc--
 :-----b9            <-- for example, we will use b9 for customizing
 :-----uvadm.tar       - create tar file for FTP to windows & write to CD
 :-----uvadm.zip       - also create zip file for FTP to windows & write to CD
Note
  • to allow us to copy files from uvadm/... to uvbak/b9/...
  • our profiles have umask 002 (permissions 775 on dirs & 664 on files)
  • uvadm & uvbak must also be in the same group ('apps' suggested)

Goto:   Begin this document End this document UVSI Home-Page

L2. Creating Vancouver Utility distribution CD

customizing prior to writing VU CD


 #1. Login as uvadm --> /home/uvadm

 #2. clear the oldest backup subdir (using b9 for example)

 #2a. rm -rf /home2/uvbak/b9/*    <-- clear all old subdirs & files
      ========================
 #2b. rm -rf /home2/uvbak/b9/.*   <-- clear old .profile etc
      ========================

 #3. cp -r * /home2/uvbak/b9      <-- copy all /home/uvadm/* to b9
     =======================

 #4. cd /home2/uvbak/b9           <-- change over to backup subdir
     ==================

 #5. update license & registration site & name in selected programs
     (such as uvcopy & uvsort). Relevant lines are as follows:
      sncopy(Y.version,"20090909",8,3);
      sncopy(Y.license,"090909_00V_930630",19,3);
      sncopy(Y.sitename,"UV Software",30,3);
      sncopy(Y.regname,"Owen Townsend",30,3);

We will update the version/license,& change sitename/regname to the new customer info.


 #5a. vi src/uvcopy.c     <-- update version,license,site,name in uvcopy
      ===============
 #5b. vi src/uvsort.c     <-- same for uvsort, etc
      ===============

 #6. Recompile to ensure we did not create any errors in our updates

 #6a. ccuvall LNX H32 uvlib32.a disamLNX32.a
      ======================================
      - for any Linux 32 machine with 32 bit longs & pointers

 #6b. ccuvall LNX H64 uvlib64.a disamLNX64.a
      ======================================
      - for my AMD Opteron 64 bit HP xw9400 at UV Software

 #7. Create tar & zip files in /home2/uvbak/... in the uvbak homedir
     above our current working dir /home2/uvbak/b9/...

 #7a. tar cvf ../uvadm.tar .
      ======================

 #7b. zip -r ../uvadm.zip .
      =====================

Goto:   Begin this document End this document UVSI Home-Page

L3. Creating Vancouver Utility distribution CD

Write VU to CD on Linux

  1. cd .. <-- change back up to /home2/uvbak


 9. mkisofs -o uvadm.iso uvadm.tar uvadm.zip
    ========================================
    - create an ISO9660 CD image containing uvadm.tar & uvadm.zip

10a. Login as root (must be root to run 'cdrecord')

10b. cd /home2/uvbak


 10c. cdrecord -v uvadm.iso    <-- write the ISO9660 image to CD
      =====================
      - the CD device is determined by CDR-DEVICE in /etc/cdrecord.conf
  1. Verify the write by reading back (into /home2/uvbak/b10)


 11a. mount -r -t iso9660 /dev/cdrom /mnt
      ===================================
      - mount the CD (to verify write OK)

 #12a. logoff root
 #12a. login uvadm --> /home/uvadm
 #12c. cd /home2/uvbak/b10     <-- change into b10 subdir to read CD
 #12d. rm -rf *                <-- clear all files from b10 subdir

 #13. tar xvf /mnt/uvadm.tar   <-- read back (with tar) to verify CD write OK
      ======================

 #13a. unzip /mnt/uvadm.zip    <-- OR read back with UNZIP to verify CD write OK
       ====================
 14a. Print a label for the CD. I use windows program 'Click N Design' and
      blank white labels for CD Stomper. The file for ClickNDesign is in
      /home/uvadm/tf/UnixLinux.cnd

 #14b. Apply the label using CD Stomper.

 #15a. Box up the Manuals (printed on page 'K4') & CD (written here)
 #15b. Prepare Waybill & Commercial Invoice.
 #15c. Ship the box via Fedex

Goto:   Begin this document End this document UVSI Home-Page

L4. Creating Vancouver Utility distribution CD

alternate FTP & write CD on Windows


 #1. open a DOS command window for FTP

 #2. cd C:\UVftp          <-- change into subdir reserved for FTP
     ===========

 #3. ftp 192.168.0.4      <-- FTP to RHEL 5.1 on HP xw9400 workstation
     ===============
 #3a. enter userid/passwd (uvbak/...)
 #3b. binary               <-- ensure binary mode
 #3c. get uvadm.tar        <-- get the tar file
 #3d. get uvadm.zip        <-- get the zip file

 #4. write the files to CD, using Windows XP drag & drop

Goto:   Begin this document End this document UVSI Home-Page

M1. Mass Changes to entire directories of scripts

rep1d - search/replace on all files

The Vancouver Utilities includes several pre-programmed jobs that allow you to make mass changes to entire directories of scripts, programs, etc. Better than 'sed' because they are easier to understand, provide qualifiers, and audit reports.

Our example is based on the 'uvlp' scripts (see uvlp12 listed on prior page). These scripts execute the 'uvlist' utility & pipe the output to the 'lp' print spooler. This worked on Unix/Linux, but did not work on SFU, UWIN, or CYGWIN. But I could simply redirect the output to '/dev/lp0' for UWIN & 'LPT1' for CYGWIN & SFU.

Since there were about 50 of these scripts, I used 'rep1d' (mass change job) to change all '| lp -onobanner $dest' to '/dev/lp0' or 'LPT1'.


 #1. rm -f tmp/*         <-- clear the tmp subdir (for rep1d output)

 #2. uvcopy rep1d,fild1=sf/util,fild2=tmp   <-- run rep1d mass change utility
     ====================================       (fild1=input,fild2=output)
     - rep1d prompts for options & search/replace/qualifiers as follows:
 uop=q1a1b99999c0d256e0p1 - option defaults
       a1                 - begin scan at line #1 (default) of input file
       a0                 - causes prompt for search pattern to BEGIN scan
         b99999           - end scan at line #99999 (dflt) of input file
         b0               - causes prompt for search pattern to END scan
               c0         - begin scan at col #1 (zero rel) of input lines
                 d256     - length of scan area default 256 bytes
                     e0   - do not erase any output files
                     e1   - erase output files with no replacements
                       p1 - 1 present qual(31-60) & 1 absence qual(61-80)
                       p2 - 2 present quals(31-60+61-80) & NO absent quals
 User OPtion (uop) defaults  = q1a1b99999c0d256e0p1
  null to accept or re-specify         -->                       <-- null OK
 did you create outdir/remove files ?  --> y                     <-- ENTER
 enter search pattern (max 64 bytes)   --> | lp -onobanner $dest <-- ENTER
 enter replacement pattern (max 64)    --> > /dev/lp0            <-- ENTER
 enter qualifier present (null disable)--> uvlist                <-- ENTER
 enter absent qualifier, or 2nd present-->                       <-- null
 enter match options: p,s,q1/q2/q3,n   -->                       <-- null
 rep1d:031223:183823: EOF fili01 19 rds, 0 wrts, 827 size; sf/util/allcancel
 rep1d:031223:183823: EOF filo02 0 rds, 19 wrts, 827 size; tmp/allcancel
                       ... many lines omitted ...
 rep1d:031223:183824: EOF fili01 32 rds, 0 wrts, 1426 size; sf/util/uvlp12 1 hits
 rep1d:031223:183824: EOF filo02 0 rds, 32 wrts, 1415 size; tmp/uvlp12 1 hits
 rep1d:031223:183824: EOF fild01 194 rds, 0 wrts, 4096 size; sf/util 47 hits
 display/edit/print/none ? (more/vi/lp/null)--> more   <-- display audit report

See the audit report on the next page --->

Goto:   Begin this document End this document UVSI Home-Page

M2. Mass Changes to entire directories of scripts

rep1d - search/replace on all files

Here is a sample report from 'rep1d' the mass change utility, we ran on the previous page to change all occurrences of 'lp -onobanner' with '/dev/lp0' in the entire directory of /home/uvadm/sf/util while copying to subdir tmp.

rep1d - sample audit report

 Job: $jobname  InDir: sf/util  OutDir: tmp  Search: | lp -onobanner $dest
 Replacement: /dev/lp0  QualPresent: uvlist
 MatchOptions:   UserOptions: q1a1b99999c0d256e0p1
 ====================================================== 2003/12/23_18:38:23
 00026 uvlist $1 p60z2$2 a2t1c12$3 > /dev/lp0
 00031                   1 reps @EOF: tmp/uvlp12
 00029 uvlist $1 p41$2 a2t1o1m150j-200c16$3 > /dev/lp0
 00034                   1 reps @EOF: tmp/uvlp16L
          ............. many lines omitted ...............
 00036 uvlist tmp/wrtbig.$JOBID hp20$2 a2o3b3m-150j150c5v24$3 > /dev/lp0
 00042                   1 reps @EOF: tmp/wrtbig
 ====================================================== 2003/12/23_18:38:24
  EOD: 00047 reps in 0043 files of 0192 total (06476 lines)

Note that the audit report shows just the resulting lines where changes have been made. After inspecting the audit report & a few of the modified scripts in the 'tmp' output subdir, we will copy the tmp subdir contents back to the original input subdir sf/util.


 #3. vi rep1d.aud         <-- inspect audit report
     ============

 #4. vi tmp/uvlp12        <-- inspect some output files (optional)
     =============

 #5. cp -f tmp/* sf/util  <-- copy rep1d output back to input
     ===================

See REPjobs.htm for other mass change jobs, such as 'rep2d' which uses a table of search/replace patterns. This provides an unlimited number of search/replacements vs the 1 search/replace of 'rep1d'.

See uvtrain.htm#5B1 for operating instructions to change all uvlp scripts for A4 size 8 x 12 paper (vs letter size 8 1/2 x 11).

Goto:   Begin this document End this document UVSI Home-Page

N1. Compiling Subfunctions & Archiving

The procedures on this page are not required if you successfully ran the 'ccuvall' script (see page 'C1') which compiles & archives all subfunctions, and then compiles most programs (linking with subfunctions).

These instructions to compile & archive individual subfunctions would only be needed if you had some problems with the ccuvall. If interested you can see the subfunction compile scripts (ccuvf & ccuvfa) in the 'sf' subdir.

compiling subfunctions & archiving to link with programs

Example: compile & archive the UVstring.c subroutine


 #1. cc -c -DLNX -DH64 srcf/UVstring.c <-- compile 1 subfunction (on Linux)
     =================================   - writes UVstring.o to current dir

 #2. ar -r lib/uvlib64.a UVstring.o    <-- archive to lib/uvlib64.a
     ==============================
            --- or ---

 #1. ccuvf UVstring LNX H64 uvlib64.a  <-- compile & archive any subfunctn
     ================================
        -- or much better --

 #1. rm lib/uvlib64.a           <-- remove existing archive before recompile
     ================

 #2. ccuvfa LNX H64 uvlib64.a   <-- compile & archive all subfunctions on Linux64
     ========================       from dir srcf to archive lib/uvlib64.a

 #2a. ccuvfa AIX H64 uvlib64.a -q64 <-- example for AIX 64 bit machine
      =============================

Goto:   Begin this document End this document UVSI Home-Page

N2. scripts to COMPILE 'uv' Programs

The procedures on this page are not required if you successfully ran the 'ccuvall' script (see page 'C1') which compiles & archives all subfunctions, and then compiles most programs (linking with subfunctions).

Compiling Programs Individually (uvcopy example)

 cc -Ihdr src/uvcopy.c lib/uvlib32.a lib/disamLNX32.a -obin/uvcopy
    -DLNX -DH32 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
 =================================================================
        --- OR easier, using script 'ccuv' ---

 ccuv uvcopy LNX H32 uvlib32.a disamLNX32.a  <-- see script 'ccuv' listed on 'N5'
 ==========================================

 ccuv uvcopy AIX H64 uvlib64.a disamAIX64.a -q64  <-- example for AIX 64 bit
 ===============================================
        --- choices for ccuv script above ---

 ccuv uvcopy INT/HP/SUN/AIX/LNX/SFU H32/H64 uvlib32/64.a disam___32/64.a [optns]
 =======================================================================
Note
  • '___' could be AIX,HP,LNX,SUN,etc
  • options could be '-g' for debugging, '-Ae' for HP ANSI C compiler,
    '-m32' compile 32 bit mode on 64 bit machine
    '-q32' or '-q64' compile 32/64 bit mode on AIX

compile for debugging


 ccuv uvcopy LNX H64 uvlib64.a disamLNX64.a -g   <-- arg6 '-g' for debugging
 =============================================
        --- OR easier (if Linux) ---

 ccdebugLNX64 uvcopy    <-- script similar to above with hard-coded options
 ===================        for debugging on Linux 64 bit

Compiling 'ux' programs for Variable Length Indexed files

See instructions on page 'C5' for script 'ccuvcob' (listed on page 'N7')


 ccuvcob uxcopy SUN H64 uvlib64.a disamSUN64.a  <-- example for uxcopy
 =============================================      (or uxcp,uxsort,uxqrpg)

Goto:   Begin this document End this document UVSI Home-Page

N3. scripts to Compile ALL 'uv' Programs

 #!/bin/ksh
 # ccuvall - Korn shell script from UVSI stored in: /home/uvadm/sf/adm/
 # ccuvall  - script to compile all Vancouver Utility programs
 #          - by Owen Townsend, UV Software, Mar1993 - Jan2009
 #          - see more details in the 'ccuv' script called by this ccuvall
 # see 'ccjclall' to compile the JCL conversion utilities
 # - separate since JCL converters only in class A pkg (not class B)
 #
 echo "compile all Vancouver Utility programs"
 os="$1"; hw="$2"; uvlib="$3"; disam="$4"; opts="$5";  # capture args
 if [[ -d src && -d srcf && -d lib && -d bin && -d hdr && $# -gt 3 ]]; then :
 else
  echo " "
  echo "ERROR - must be in \$UV, usually /home/uvadm/ OR /opt/uvs/uvadm/"
  echo "- with subdirs src,srcf,hdr,lib,bin & must specify arguments as follows:"
  echo " "
  echo "usage: ccuvall OStype H32/H64 uvlib32/64.a disam___32/64.a [options]"
  echo "       ============================================================"
  echo "       ccuvall LNX H32 uvlib32.a disamLNX32.a -m32  # Linux 32 bit"
  echo "       ccuvall LNX H64 uvlib64.a disamLNX64.a       # Linux 64 bit"
  echo "       ccuvall AIX H64 uvlib64.a disamAIX64.a -q64  # AIX 64 bit"
  echo "       ccuvall SUN H64 uvlib64.a disamSUN64.a       # SUN "
  echo "       ccuvall HP  H64 uvlib64.a disamHP64.a  -Ae   # -Ae ANSI C reqd"
  echo "arg1 must be LNX,AIX,HP,SUN,etc"
  echo "arg2 must be H32 or H64 for longs & pointers 32 bits or 64 bits"
  echo "    (programs use software long long for 64 bit integer acums)"
  echo "arg3 must be subfunctions archive lib/uvlib32/64.a"
  echo "arg4 must be D-ISAM archive lib/disam___32/64.a (___=LNX,AIX,SUN,HP)"
  echo "arg5 options: -q64 AIX 64bit, -Ae HP ANSI, -g debug, -m32 compile on 64"
  exit 91; fi;
 #
 rm -f lib/$uvlib                           # remove old archive (for linker)
 ccuvfa        $os $hw $uvlib $opts         # compile all subfunctions & archive
 echo "subfunctions compiled, now compile Vancouver Utility programs"
 ccuv uvcopy    $os $hw $uvlib $disam $opts  # compile programs
 ccuv uvcp      $os $hw $uvlib $disam $opts
 ccuv uvhd      $os $hw $uvlib $disam $opts
 ccuv uvhdcob   $os $hw $uvlib $disam $opts
 ccuv uvlist    $os $hw $uvlib $disam $opts
 ccuv uvqrpg    $os $hw $uvlib $disam $opts
 ccuv uvsort    $os $hw $uvlib $disam $opts
 ccuv uvtime    $os $hw $uvlib $disam $opts
 echo "Vancouver utility compiles completed on $(date)"
 echo "ls -l bin should show: uvcopy,uvcp,uvhd,uvhdcob,uvlist,uvqrpg,uvsort"
 echo " - use 'ccjclall' to compile: jclproc41/51,jclunix41/51"
 echo " - use 'ccuvcob' to compile: uxcopy,uxcp,uxqrpg,uxsort"
 echo " - see install.doc page C4 to compile ux.... (requires Micro Focus COBOL)"
 exit

Goto:   Begin this document End this document UVSI Home-Page

N4. scripts to Compile each 'uv' Program

 #!/bin/ksh
 # ccjclall - Korn shell script from UVSI stored in: /home/uvadm/sf/adm/
 # ccjclall - script to compile Vancouver Utility JCL converters
 #          - separate script since converters only in class A pkg (not class B)
 #          - by Owen Townsend, UV Software, Mar1993 - Jan2009
 #
 echo "compile all Vancouver Utility JCL converters"
 echo "- must have compiled subfunctions (part of prior ccuvall)"
 os="$1"; hw="$2"; uvlib="$3"; disam="$4"; opts="$5";  # capture args
 if [[ -d src && -d srcf && -d lib && -d bin && -d hdr && $# -gt 3 ]]; then :
 else
  echo " "
  echo "ERROR - must be in \$UV, usually /home/uvadm/ OR /opt/uvs/uvadm/"
  echo "- with subdirs src,srcf,hdr,lib,bin & must specify arguments as follows:"
  echo " "
  echo "usage: ccjclall OStype H32/H64 uvlib32/64.a disam___32/64.a [options]"
  echo "       ============================================================"
  echo "       ccjclall LNX H32 uvlib32.a disamLNX32.a       # Linux 32 bit"
  echo "       ccjclall LNX H64 uvlib64.a disamLNX64.a       # Linux 64 bit"
  echo "       ccjclall AIX H64 uvlib64.a disamAIX64.a -q64  # AIX 64 bit"
  echo "       ccjclall SUN H64 uvlib64.a disamSUN64.a       # SUN "
  echo "       ccjclall HP  H64 uvlib64.a disamHP64.a  -Ae   # -Ae ANSI C reqd"
  echo "- arg1 must be LNX,AIX,HP,SUN,etc"
  echo "- arg2 must be H32 or H64 for longs & pointers 32 bits or 64 bits"
  echo "      (programs use software long long for 64 bit integer acums)"
  echo "- arg3 must be subfunctions archive lib/uvlib32/64.a"
  echo "- arg4 must be D-ISAM archive lib/disam___32/64.a (___=LNX,AIX,SUN,HP)"
  echo "- arg5 options (-q64 AIX 64 bit, -Ae HP ANSI, -g debug, etc"
  exit 91; fi;
 #
 ccuv jclproc41 $os $hw $uvlib $disam $opts
 ccuv jclproc51 $os $hw $uvlib $disam $opts
 ccuv jclunix41 $os $hw $uvlib $disam $opts
 ccuv jclunix51 $os $hw $uvlib $disam $opts
 ccuv jclunix53 $os $hw $uvlib $disam $opts
 ccuv uvtime    $os $hw $uvlib $disam $opts
 echo "Vancouver JCL converter compiles completed on $(date)"
 echo "ls -l bin should show: jclproc41/51,jclunix41/51/53,uvtime"
 exit

Goto:   Begin this document End this document UVSI Home-Page

N5. scripts to Compile each 'uv' Program

 #!/bin/ksh
 # ccuv - script to compile C prgm & link functions (/home/uvadm/sf/adm/ccuv)
 #     - by Owen Townsend - UV Software, Aug1992 - Jan2009
 # Must execute in /home/uvadm/... with following subdirs:
 #   src/...             - C source programs
 #   lib/uvlib32/64.a    - archive of subfunctions to be linked in
 #   lib/disam___32/64.a - archive library for D-ISAM (___=LNX,SUN,HP,AIX,etc)
 #   bin/...             - subdir to receive executable program
 # Specify options arg#6: -g debug, -Ae ANSI HP-UX, -q64 AIX 64bit, -m32 on 64
 #
 echo "----->compile C program, script ccuv $*"
 # set compiler - symbol UVCC if defined, else gcc if OS Windows*, else cc
 if [[ -n "$UVCC" ]]; then UVCC=$UVCC; else UVCC=cc; fi
 pgm="$1"; os="$2"; hw="$3"; uvlib="$4"; disam="$5"; opts="$6"  #capture args
 if [[ -f src/$pgm.c && -d src && -d srcf && -d lib && -d bin && -d hdr && $# -gt 4 ]]
  then :
  else echo " "
  echo "ERROR - must be in \$UV (usually /home/uvadm/ or /opt/uvs/uvadm)"
  echo "- with subdirs src,srcf,hdr,lib,bin - specify arguments as follows:"
  echo "  arg1 must be a program in src/... to be compiled (omit '.c')"
  echo " "
  echo "ccuv program OStype H32/H64 uvlib32/64.a disam___32/64.a [options]"
  echo "     ================================================================="
  echo "     ccuv uvcopy LNX H32 uvlib32.a disamLNX32.a -m32   #Linux 32 bit"
  echo "     ccuv uvcopy LNX H64 uvlib64.a disamLNX64.a        #Linux 64 bit"
  echo "     ccuv uvcopy AIX H64 uvlib64.a disamAIX64   -q64   # AIX"
  echo "     ccuv uvcopy HP  H64 uvlib64.a disamHP64    -Ae    # -Ae ANSI C req'd"
  echo "     ccuv uvcopy SUN H64 uvlib64.a disamSUN64          # SUN on 64 bit"
  echo "arg1 program to be compiled in subdir src/... (do not specify .c ext)"
  echo "arg2 must be LNX,AIX,HP,SUN,etc"
  echo "arg3 must be H32 or H64 for longs & pointers 32 bits or 64 bits"
  echo "     (H32 uses software long long for 64 bit integer acums)"
  echo "arg4 must be subfunctions archive lib/uvlib32/64.a"
  echo "arg5 must be D-ISAM archive lib/disam___32/64.a (___=LNX,AIX,SUN,HP)"
  echo "arg6 options: -q64 AIX 64bit, -Ae HP ANSI, -g debug, -m32 compile on 64"
  exit 91; fi;
 if [[ "$os" = "HP" || "$os" = "SUN" || "$os" = "AIX" || "$os" = "DEC" ||\
       "$os" = "INT" || "$os" = "LNX" || "$os" = "SCO" ||\
       "$os" = "CWIN" || "$os" = "UWIN" || "$os" = "SFU" ]]; then :
 else echo "arg2 OS types: HP,SUN,AIX,DEC,INT,LNX,UWIN,CWIN,SFU"; exit 92; fi
 if [[ "$hw" = "H32" || "$hw" = "H64" ]]; then :
 else echo "arg3 must be H32/H64, 32/64 bits in C longs&pointers"; exit 93; fi
 # verify that arg4 is the subfunctions archive lib/uvlib32/64.a
 if [[ ! -f lib/$uvlib ]]; then
    echo "arg4 must be the subfunctions archive uvlib32/64.a"; exit 94; fi
 # verify that arg5 is the D-ISAM archive lib/disam___32/64.a
 if [[ ! -f lib/$disam ]]; then
    echo "arg5 must be the D-ISAM archive lib/disam___32/64.a"; exit 95; fi
 # combine -Dsymbols to shorten command line
 syms="-D$os -D$hw"
 # setup Large File options (always as of Jan 2008)
 LFS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
 #
 $UVCC $opts $syms $LFS -Ihdr src/${pgm}.c lib/$uvlib lib/$disam -o bin/${pgm}
 #============================================================================
 exit 0

Goto:   Begin this document End this document UVSI Home-Page

N6. Compile subfunctions to link with programs

 #!/bin/ksh
 # ccuvfa - Korn shell script from UVSI stored in: /home/uvadm/sf/adm/
 # ccuvfa - compile All C subfunctions in /home/uvadm/srcf/...
 #        & add to the archive (lib/uvlib32/64.a)
 #      - by Owen Townsend, UV Software, Aug1992 - Jan2009
 # May export alternative compiler: export UVCC=gcc (GNU), UVCC=xlc (AIX)
 # Must execute in /home/uvadm/... which includes following subdirs:
 #   srcf/...         - subdir of C subfunction source (.c extensions)
 #   lib/uvlib32/64.a - archive to receive objects (to link with main programs)
 # May specify options as arg #6 (-g debug, -Ae for ANSI HP-UX, -q64 AIX 64 bit)
 # Also see ccuvfa    - compiles & archives ALL subfunctions
 # Also see ccuvall   - compiles & links everything
 #
 # set compiler from $UVCC if defined, else gcc if OS Windows*, else cc
 if [[ -n "$UVCC" ]]; then UVCC=$UVCC
 else UVCC=cc; fi
 os="$1"; hw="$2"; uvlib="$3" opts="$4"
 if [[ -d srcf && -d hdr && -d lib && $# -gt 2 ]]; then :
 else
  echo " "
  echo "ERROR - must be in \$UV, usually /home/uvadm/ OR /opt/uvs/uvadm/"
  echo "- with subdirs srcf,hdr,lib & must specify arguments as follows:"
  echo " "
  echo "ccuvfa OStype H32/H64 uvlib32/64.a [options]"
  echo "    =========================================="
  echo "    ccuvfa LNX H32 uvlib32.a -m32 # Linux 32 bit"
  echo "    ccuvfa LNX H64 uvlib64.a      # Linux 64 bit"
  echo "    ccuvfa LNX H64 uvlib64.a -m32 # Linux 64 for cobccuv"
  echo "    ccuvfa AIX H64 uvlib64.a -q64 # AIX 64 bit"
  echo "    ccuvfa HP  H64 uvlib64.a -Ae  # HP -Ae ANSI C compiler reqd"
  echo "    ccuvfa SUN H64 uvlib64.a      # SUN "
  echo "arg1 must be LNX,AIX,HP,SUN,etc"
  echo "arg2 must be H32 or H64 for longs & pointers 32 bits or 64 bits"
  echo "     (programs use software long long for 64 bit integer acums)"
  echo "arg3 must be subfunctions archive lib/uvlib32/64.a"
  echo "arg4 options: -q64 AIX 64bit, -Ae HP ANSI, -g debug, -m32 compile on 64"
  exit 91; fi;
 #
 if [[ "$os" = "HP" || "$os" = "SUN" || "$os" = "AIX" || "$os" = "DEC" ||\
       "$os" = "INT" || "$os" = "LNX" || "$os" = "SCO" ||\
       "$os" = "CWIN" || "$os" = "UWIN" || "$os" = "SFU" ]]; then :
 else echo "OS types: HP,SUN,AIX,DEC,INT,LNX,UWIN,CWIN,SFU"; exit 92; fi
 #
 if [[ "$hw" = "H32" || "$hw" = "H64" ]]; then :
 else echo "arg2 must be H32/H64, 32/64 bits in C longs&pointers"; exit 93; fi
 #
 # if AIX 64 bit option (-q64), set 'ar' option -X64
 if [[ ("$opts" == *-q64*) || ("$opts" == *aix64*) ]]; then X64="-X64"; fi
 #
 # setup Large File options (always as of Jan2008)
 LFS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
 x=0
 rm -f lib/$uvlib;  # remove old lib/uvlib__.a
 for i in srcf/*
 do
    f=${i##*/}
       $UVCC -D$os -D$hw $opts $LFS -c -Ihdr srcf/$f
    ar $X64 r lib/$uvlib ${f%.c}.o
    let x=x+1
 done
 rm -f *.o                # remove all objects from current directory
 echo "$x files compiled from srcf & archived to lib/$uvlib"
 echo "ar tv lib/$uvlib  - to display archive table of contents"
 exit

Goto:   Begin this document End this document UVSI Home-Page

N7. scripts to COMPILE 'ux' Programs

 #!/bin/ksh
 # ccuvcob - Korn shell script from UVSI stored in: /home/uvadm/sf/adm/
 # ccuvcob - compile UV program with Micro Focus COBOL to use EXTFH
 #           for variable length Indexed files IDXFORMAT3 & IDXFORMAT8
 #         - by Owen Townsend, UV Software, Dec2002 - Jan2009
 # Jan2009 - Micro Focus compile tested with uvlib32.a & disam___32.a
 #           (specify option '-m32' to compile uvlib & disam on 64 bit machines)
 #
 pgm="$1"; os="$2"; hw="$3"; uvlib="$4"; disam="$5"; opts="$6"  #capture args
 if [[ -f src/$pgm.c && $# -gt 4 ]]; then :
  else
  echo "ccuvcob program OStype H32/H64 uvlib32/64.a disam___32/64.a [options]"
  echo "====================================================================="
  echo "ccuvcob uxcopy LNX H32 uvlib32.a disamLNX32.a -m32 # LNX 32 bit"
  echo "--> use 32 bits for ux COBOL versions 64 bits not working yet"
  echo "ccuvcob uxcopy LNX H64 uvlib64.a disamLNX64.a      # LNX 64 bit"
  echo "ccuvcob uxcopy AIX H64 uvlib64.a disamAIX64.a -q64 # AIX 64 bit"
  echo "ccuvcob uxcopy HP  H64 uvlib64.a disamHP64.a  -Ae  # HP -Ae ANSI C"
  echo "ccuvcob uxcopy SUN H64 uvlib64.a disamSUN64.a      # SUN 64 bit"
  echo "- arg1 program to be compiled in subdir src/... (no .c ext)"
  echo "- arg2 must be LNX,AIX,HP,SUN,etc"
  echo "- arg3 must be H32 or H64 for longs & pointers 32 bits or 64 bits"
  echo "       (H32 uses software long long for 64 bit integer acums)"
  echo "- arg4 must be subfunctions archive lib/uvlib32/64.a"
  echo "- arg5 must be D-ISAM archive lib/disam___32/64.a (___=LNX,AIX,SUN,HP)"
  echo "- arg6 options: -q64 AIX 64, -Ae HP ANSI, -g debug, -m32 compile on 64"
  echo "--> Must specify -m32 compiling uvlib32.a/disamXXX32.a on 64 bit machine"
  echo "--> Must have Micro Focus COBOL installed"
  exit 91; fi;
 #
 if [[ "$os" = "HP" || "$os" = "SUN" || "$os" = "AIX" || "$os" = "DEC" ||\
       "$os" = "INT" || "$os" = "LNX" || "$os" = "SCO" ||\
       "$os" = "CWIN" || "$os" = "UWIN" || "$os" = "SFU" ]]; then :
 else echo "arg2 OS types: HP,SUN,AIX,DEC,INT,LNX,UWIN,CWIN,SFU"; exit 92; fi
 if [[ "$hw" = "H32" || "$hw" = "H64" ]]; then :
 else echo "arg3 must be H32/H64, 32/64 bits in C longs&pointers"; exit 93; fi
 # verify that arg4 is the subfunctions archive lib/uvlib32/64.a
 if [[ ! -f lib/$uvlib ]]; then
    echo "arg4 must be the subfunctions archive uvlib32/64.a"; exit 94; fi
 # verify that arg5 is the D-ISAM archive lib/disam___32/64.a
 if [[ ! -f lib/$disam ]]; then
    echo "arg5 must be the D-ISAM archive lib/disam___32/64.a"; exit 95; fi
 isam=${disam%.*}      # remove the .a to pass as a -Dvariable
 #
 # establish COBOL options for Micro Focus COBOL compile
 export COBOPT=$UV/ctl/cobdirectives # Micro Focus COBOL directives (-C options)
 export EXTFH=$UV/ctl/extfh.cfg      # COBOL File Handler Configuration
 #
 cob -x $opts -N LITLINK\"2\" -CC -Ihdr -CC -I$COBDIR/include -CC -D$os \
 -CC -D$hw -CC -D$isam src/$pgm.c lib/$uvlib lib/$disam -o bin/$pgm
 #=======================================================================
 rm -f $pgm.o
 exit 0

Goto:   Begin this document End this document UVSI Home-Page

N8. scripts to COMPILE 'ux' Programs

 #!/bin/ksh
 # ccdisams - script to compile all DISAM subfunctions in a directory
 #            & add the objects to a library archive
 # by Owen Townsend, UV Software, 1993, update DISAM96 1998, DISAM06 1996
 #Sep21/2015 - added '-D_FILE_OFFSET_BITS=64' at James' suggestion
 # compile in disam06 superdir with subdirs: base, head, wrap, sf, lib
 # base - I copied all base functions into wrap (will compile all in wrap)
 # wrap - originally just 'std' functions, I added 'is' functions from base
 # head - disam06 headers - isconfig.h modified for UV Software
 #      - header files from base & wrap moved to head
 # sf   - my compile scripts (added to disam06 superdir by OT)
 # lib  - for the output archive (added to disam06 superdir by OT)
 #usage:   sf/ccdisams sourcedir archive  [options]
 # 1a. sf/ccdisams wrap lib/disamLNX32.a  -m32      <-- Linux 32 bit
 # 1b. sf/ccdisams wrap lib/disamLNX64.a  -m64      <-- Linux 64 bit
 # 2a. sf/ccdisams wrap lib/disamAIX64.a  -q64      <-- AIX 64 bit
 # 2b. sf/ccdisams wrap lib/disamAIX32.a  -q32      <-- AIX default 32 bit
 # 3.  sf/ccdisams wrap lib/disamSUN64.a  -m64      <-- SUN 64 bit
 # 4a. sf/ccdisams wrap lib/disamHPIA32.a -milp64   <-- HPUX Itanium 32 bit
 # 4b. sf/ccdisams wrap lib/disamHPIA64.a -mlp64    <-- HPUX Itanium 64 bit
 # lib names reflect UNIX system (INT,HP,SUN,DEC,LNX,UWIN,CWIN)
 # See disam compile instrns for DWIN (lcc-win32) in windos.doc
 # - creates lib/disamDWIN.lib (vs .a for unix/linux/UWIN/CWIN)
 # default to 'cc' but allow user to: export UVCC=gcc
 if [[ -z "$UVCC" ]]; then UVCC=cc; fi
 lib="$1"; disama="$2"; opts="$3";  # capture args in symbols
 echo "compiling all programs in $lib and archiving to $disama"
 if [[ ! -d "$lib" ]]; then
    echo "usage: ccdisams srcdir archive [options]"
    echo "       ================================="
    echo "example: ccdisams wrap lib/disamLNX64.a -m64"
    echo "         ==================================="
    echo " - arg1 must be a directory & arg2(output) must not exist"
    exit 1; fi
 if [[ -f "$disama" ]]; then
    echo "- arg2 output archive must not exist, remove before regen"
    exit 1; fi
 # set ar option -X64 if AIX 64 bit
 if [[ ("$opts" == *-q64*) || ("$opts" == *aix64*) ]]; then X64="-X64"; fi
 x=0
 # compile all subfunctions in directory & archive to library
 for i in $lib/*
 do
    f=${i##*/}                          # remove the directory
    b=${f%.c}                           # remove the .c to get basename
    if [[ "$f" = *.c ]]                 # if current file is C source
    then                                # compile current .c to object .o
 $UVCC $opts -c -DLF64 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Ihead  $lib/$f
    ar $X64 r $disama $b.o              # add .o to archive
    rm $b.o                             # remove .o
    let x=x+1
    fi
 done
 ar $X64 tv $disama          # display archive table of contents
 echo "$x files compiled from $lib & archived to $disama $opts"
 exit

Goto:   Begin this document End this document UVSI Home-Page

Visitor Counters for ThisYear and LastYear