You are on page 1of 7

Document1 Page 1 of 7

Installing/Upgrading to ICU 52.1 for UNIX based environments

To enable the processing of UTF-8 characters in C processes, Banner has used version 36.1 of ICU (International
Components for Unicode). This document provides the steps necessary to install/upgrade to ICU 52.1 for UNIX based Job
Submission server environments only. The information in this document does not apply to Windows based
environments. The benefits of this upgrade include the additional hardware and OS support provided by 52.1.

Typically customers will upgrade from their existing ICU version in order to move to a more recent operating system
version or c compiler version which does not support the current ICU version installed. Currently Banner does not
require one to upgrade to ICU 52.1 if your current ICU installation is functioning as designed. There are Banner General
defects 1-40WK37 and 1-4EEY5P in tmcilib.cpp and umsgtm.cpp corrected though when upgrading to ICU 52.1.

The upgrade consists of two separate upgrades, one for ICU and another for Banner General. The steps are as follows:

1. Install prerequisites
2. Stop jobsub
3. Download ICU 52.1
4. Install ICU 52.1
5. Install Banner modifications to ICU objects
6. Build ICU 52.1
7. Update Banner General C for ICU 52.1
8. Update Makefile_tm for ICU 52.1
9. Compile all C processes for ICU 52.1
10. Start jobsub and test

Ensure that you have installed General The General release delivered the following objects in support of
the ICU 52.1 upgrade and loaded them into the general/c and general/misc directories.
Loaded into the general/c directory:
Loaded into the general/misc directory:

Document1 Page 2 of 7

Stop jobsub

1. Log in to the system using banjobs/xxxxxx.

2. Check whether the job sub process is running by using the ps / grep command:

ps -ef|grep gur

3. If jobsub is running, stop jobsub because you will be recompiling all C processes during this upgrade.

Download ICU 52.1

To download ICU 52.1 from the ICU site, perform the following steps:

1. Go to
2. Click Download ICU in the upper left corner.
3. From the release menu, select the ICU4C version 52.1.
4. Review the Readme for additional information that may be helpful.
5. Select the following item for download and save it to a temporary location:

icu4c-52_1-src.tgz 22.8 MB gzipped tar archive for Unix and other platforms

To place the download file on your Job Submission Server, perform the following steps:

1. Log on as root/xxxxxx.

2. If environment variables for ICU_HOME and BANNER_HOME are not present in this account, they need to be
created. The ICU_HOME reference can be found in your version of Makefile_tm located in

3. Change directory to the ICU_HOME directory and set the variable as root if it is not already set that way. The
directory values below are examples only; please use your current values:

[root=> ~]# echo $ICU_HOME

[root=> ~]# ICU_HOME="/usr/local/src"
[root=> ~]# export ICU_HOME=/usr/local/src
[root=> ~]# echo $ICU_HOME

[root=> src]# cd $ICU_HOME
[root=> src]# ls

Do the same for BANNER_HOME:

[root=> ~]# echo $BANNER_HOME

[root=> ~]# BANNER_HOME="/u01/app/sghe/banner/SMPL"
[root=> ~]# export BANNER_HOME=/u01/app/sghe/banner/SMPL
[root=> ~]# echo $BANNER_HOME

Document1 Page 3 of 7

4. Rename any existing icu directory as icu_36 to provide a backup and to ensure that you do not have to change
any other environment variables.

[root=> src]# mv icu icu_36

5. Create a new icu directory.

[root=> src]# mkdir icu
[root=> src]# ls
icu icu_36

6. Copy the ICU 52.1 download from the temporary location to the ICU_HOME directory.

[root=> src]# cd $ICU_HOME
[root=> src]# <copy / download the ICU zip file>
[root=> src]# ls
icu icu_36 icu4c-52_1-src.tgz
[root=> src]#

Install ICU 52.1
Please refer to the Readme file from the ICU site, including the How To Build And Install ICU / UNIX section, as you
work through the remainder of this document.

Do the following while you are in the $ICU_HOME directory logged in as root:
1. Decompress the icu-X.Y.tgz (or icu-X.Y.tar.gz) file. Approximately 4000 files will be unloaded to the icu/source
gunzip -d < icu4c-52_1-src.tgz | tar xvf -
2. Change directory to "icu/source".
cd icu/source
3. Run chmod +x runConfigureICU configure install-sh to ensure that the files have the correct permissions.
4. Run the runConfigureICU script for your platform. A icu_configure.log and a config.log file will be created.
[root=> source]# ./runConfigureICU AIX --with-library-bits=64 > icu_configure.log 2>&1
[root=> source]# ./runConfigureICU HP-UX/ACC --with-library-bits=64 > icu_configure.log 2>&1
[root=> source]# ./runConfigureICU Linux/gcc > icu_configure.log 2>&1
[root=> source]# ./runConfigureICU Solaris --with-library-bits=64 > icu_configure.log 2>&1

When the process is complete, you should see a message similar to the following:

ICU for C/C++ 52.1 is ready to be built.

Document1 Page 4 of 7

Install Banner modifications to ICU objects
Modifications to baseline ICU objects are to support ansi formats in tm*printf:
tmsprintf(&tmBundle,result,_TMC("{0} {1,%*.*f} {2}"), _TMC("abc"),10,5, 2.71828183, _TMC("xyz"));

These objects are delivered as <file_name>_521. The copyICU521.shl script will rename the original files as
<file_name>.orig.YYYYMMDD_HHMI and then copy the new _521 versions without the _521 extension.

1. While logged on as root, ensure that the ICU_HOME and BANNER_HOME environment variables are still

[root=> ~]# echo $ICU_HOME
[root=> ~]# echo $BANNER_HOME

2. Execute the copyICU521.shl

root /usr/local/src> $BANNER_HOME/general/misc/copyICU521.shl
---- Updated /usr/local/src/icu/source/i18n/unicode/fmtable.h
-rwxr-xr-x 1 root root 25233 Nov 11 12:12 /usr/local/src/icu/source/i18n/unicode/fmtable.h
-rw-r--r-- 1 7004 7000 24986 Oct 4 16:48 /usr/local/src/icu/source/i18n/unicode/fmtable.h.orig.20131111_1212
---- Updated /usr/local/src/icu/source/i18n/unicode/msgfmt.h
-rwxr-xr-x 1 root root 46846 Nov 11 12:12 /usr/local/src/icu/source/i18n/unicode/msgfmt.h
-rw-r--r-- 1 7004 7000 44081 Oct 4 16:48 /usr/local/src/icu/source/i18n/unicode/msgfmt.h.orig.20131111_1212
---- Updated /usr/local/src/icu/source/i18n/msgfmt.cpp
-rwxr-xr-x 1 root root 70694 Nov 11 12:12 /usr/local/src/icu/source/i18n/msgfmt.cpp
-rw-r--r-- 1 7004 7000 70157 Oct 4 16:48 /usr/local/src/icu/source/i18n/msgfmt.cpp.orig.20131111_1212
---- Updated /usr/local/src/icu/source/common/messagepattern.cpp
-rwxr-xr-x 1 root root 44459 Nov 11 12:12 /usr/local/src/icu/source/common/messagepattern.cpp
-rw-r--r-- 1 7004 7000 44094 Oct 4 16:49 /usr/local/src/icu/source/common/messagepattern.cpp.orig.20131111_1212

Document1 Page 5 of 7

Build ICU 52.1
This step uses gmake to build ICU. You can refer to the ICU README for additional details.

[root=> ~]# cd $ICU_HOME/icu/source
[root=> source]# pwd
[root=> source]# gmake > icu_make.log 2>&1
1. Type "gmake > icu_make.log 2>&1" (or "make" if GNU make is the default make on your platform) to compile
the libraries and all the data files. The proper name of the GNU make command is printed at the end of the
configuration run, as in "You must use gmake to compile ICU".
Note that the compilation command output may be simplified on your platform. If this is the case, you will see
gcc ... stubdata.c
rather than
-std=c99 -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -c -DPIC -fPIC -o
stubdata.o stubdata.c
Note: rebuild with "gmake VERBOSE=1 all-local" to show all compiler parameters.

Note: gmake clean > icu_clean.log 2>&1 will clear out all old compile files and allow you to start over.

2. Optionally, enter "gmake check > icu_check.log 2>&1" to run the test suite, which checks for ICU's functionality
[All tests passed successfully...]
Elapsed Time: 00:00:21.197
3. Enter "gmake install > icu_install.log 2>&1" to install ICU. If you used the --prefix= option on configure or
runConfigureICU, ICU will be installed to the directory that you specified.

Document1 Page 6 of 7

Update Banner General C for ICU 52.1
There are two Banner objects that are obsolete with ICU52.1 copyICU521_ban.shl will rename them as
Where needed, code moved to ICU52.1 patches

The following are modified for ICU52.1:
These objects are delivered as <file_name>_521. The copyICU521_ban.shl script will rename the original files as
<file_name>.orig.YYYYMMDD_HHMI and then copy the new _521 versions without the _521 extension.

1. Log on as banner/xxxxxx.
2. Ensure that the $BANNER_HOME variable is defined.
3. Update the modules by executing $BANNER_HOME/general/misc/copyICU521_ban.shl
banner /u01/app/sghe/banner/SMPL/general/c> $BANNER_HOME/general/misc/
ln: creating hard link `/u01/app/sghe/banner/SMPL/links/tmcilib.h': File exists
---- Updated /u01/app/sghe/banner/SMPL/general/c/tmcilib.h
-rwxrw-r-- 1 banner banner 12632 Oct 12 15:38 /u01/app/sghe/banner/SMPL/general/c/tmcilib.h
-rwxrw-r-- 1 banner banner 12632 Oct 11 13:32 /u01/app/sghe/banner/SMPL/general/c/tmcilib.h_521
-rw-r--r-- 2 banner banner 14626 Jun 17 12:13 /u01/app/sghe/banner/SMPL/general/c/tmcilib.h.orig.20131012_1538
ln: creating hard link `/u01/app/sghe/banner/SMPL/links/umsgtm.h': File exists
---- Updated /u01/app/sghe/banner/SMPL/general/c/umsgtm.h
-rwxrw-r-- 1 banner banner 1517 Oct 12 15:38 /u01/app/sghe/banner/SMPL/general/c/umsgtm.h
-rwxrw-r-- 1 banner banner 1517 Oct 11 13:32 /u01/app/sghe/banner/SMPL/general/c/umsgtm.h_521
-rw-r--r-- 2 banner banner 827 Feb 2 2010 /u01/app/sghe/banner/SMPL/general/c/umsgtm.h.orig.20131012_1538
ln: creating hard link `/u01/app/sghe/banner/SMPL/links/tmcilib.cpp': File exists
---- Updated /u01/app/sghe/banner/SMPL/general/c/tmcilib.cpp
-rwxrw-r-- 1 banner banner 31145 Oct 12 15:38 /u01/app/sghe/banner/SMPL/general/c/tmcilib.cpp
-rwxrw-r-- 1 banner banner 31145 Oct 11 13:32 /u01/app/sghe/banner/SMPL/general/c/tmcilib.cpp_521
-rw-rw-r-- 1 banner banner 29906 Feb 2 2010 /u01/app/sghe/banner/SMPL/general/c/tmcilib.cpp.orig.20131012_1538
ln: creating hard link `/u01/app/sghe/banner/SMPL/links/umsgtm.cpp': File exists
---- Updated /u01/app/sghe/banner/SMPL/general/c/umsgtm.cpp
-rwxrw-r-- 1 banner banner 8524 Oct 12 15:38 /u01/app/sghe/banner/SMPL/general/c/umsgtm.cpp
-rwxrw-r-- 1 banner banner 8524 Oct 11 13:32 /u01/app/sghe/banner/SMPL/general/c/umsgtm.cpp_521
-rw-rw-r-- 1 banner banner 10207 Feb 2 2010 /u01/app/sghe/banner/SMPL/general/c/umsgtm.cpp.orig.20131012_1538
---- Obsoleted /u01/app/sghe/banner/SMPL/general/c/msgfmttm.h
-rw-r--r-- 1 banner banner 4431 Oct 12 15:37
---- Obsoleted /u01/app/sghe/banner/SMPL/general/c/msgfmttm.cpp
-rw-r--r-- 1 banner banner 12983 Oct 12 15:37

Document1 Page 7 of 7

Update Makefile_tm and for ICU 52.1
Download the ICU52 version of Makefile_tm from

Article 000005986 Banner Example Makefiles

The HPUX platform also has an ICU 52.1 specific version. Other platforms do not.

Compile all C processes for ICU 52.1
For this step, ensure that you are logged in as banner. Please be sure to set a password for compiles if you have not
already done so. For example:

export DFLT_BANINST1_PASS="u_pick_it"

1. Compile ALL Banner C objects using the delivered compile scripts for each product. Compile General first. For

banner > $BANNER_HOME/links/gencmplc.shl > $HOME/ICU_gencmplc.log

2. Verify that all C objects compiled clean, by ensuring the compile date is todays date.

banner /u01/app/sghe/banner/SMPL/general/misc> ls -altr $EXE_HOME/g*

3. Compile all the other products that you have installed. For example:

$BANNER_HOME/links/gencmplc.shl > $HOME/ICU_gencmplc.log
$BANNER_HOME/links/rescmplc.shl > $HOME/ICU_rescmplc.log
$BANNER_HOME/links/fincmplc.shl > $HOME/ICU_fincmplc.log
$BANNER_HOME/links/stucmplc.shl > $HOME/ICU_stucmplc.log
$BANNER_HOME/links/tascmplc.shl > $HOME/ICU_tascmplc.log
$BANNER_HOME/links/paycmplc.shl > $HOME/ICU_paycmplc.log
$BANNER_HOME/links/mduucmplc.shl > $HOME/ICU_mduucmplc.log
$BANNER_HOME/links/poscmplc.shl > $HOME/ICU_poscmplc.log
$BANNER_HOME/links/alucmplc.shl > $HOME/ICU_alucmplc.log
$BANNER_HOME/links/intcmplc.shl > $HOME/ICU_intcmplc.log
$BANNER_HOME/links/xpcmplc.shl > $HOME/ICU_xpcmplc.log
$BANNER_HOME/links/bwpcmplc.shl > $HOME/ICU_bwpcmplc.log
$BANNER_HOME/links/ircmplc.shl > $HOME/ICU_ircmplc.log
$BANNER_HOME/links/iscmplc.shl > $HOME/ICU_iscmplc.log

The following command lists all the lowercase file names, which is what was just compiled:

ls -alt $EXE_HOME/[abcdefghijklmnopqrstuvwxyz]*

Using this method, you can see if any lowercase names did not compile by checking the compile dates for any
objects that are older than today. Keep in mind that you may have obsolete objects, for example financial aid
extracts, W2, 1099, etc. Typically these objects will have a year designation as the last 2 characters, rorfs06.

Start jobsub and test

Assuming that all compiles were successful, start jobsub and test your C processes to ensure that everything is working.