Index of download.marxmeier.com/eloq/B0700/contrib/acucobol/

Parent Directory
EQ-ACU-hpux.tar 2003-09-11 00:19 50 KiB
README 2003-09-11 00:19 8 KiB
HOWTO link the Acucobol runtime with Eloquence
==============================================

Revision: 1.1, Sept. 10, 2003 (DRAFT)

This document provides instructions to link the Acucobol runtime 
(runcbl) with the Eloquence TurboIMAGE compatibility library. 
This makes the TurboIMAGE intrinsics available without requiring 
to load the image3k library in the program.
It has been tested on the Acucobol 5.2.2 and 6.0.0 version for 
HP-UX 11.22 (Itanium, 64 bit) and HP-UX 11i (PA-RISC, 32 and 64 bit).

Pre-requisites:
1. HP ANSI-C compiler
2. Eloquence B.07.00 is installed on the system
3. Eloquence Acucobol customizon files
   - eloquence.h
   - modified Makefile
   - modified direct.c

Acucobol provides a lib directory to re-link the Acucobol runtime
(runcbl). It contains a small C program (direct.c) that could be 
customized and is then compiled and linked with the Acucobol libraries.
This allows to create a customized version of the Acucobol runtime.

1. Download the Eloquence Acucobol customizon files

   These files can be obtained from the Eloquence web server at
   the following location:

   http://www.hp-eloquence.com/download/B0700/contrib/acucobol/
   ftp://ftp.hp-eloquence.com/eloq/B0700/contrib/acucobol/

   Please refer to the README file for more information.


2. Install the modified files in the Acucobol lib directory.

   You can either install the modified files in the Acucobol lib 
   directory, overwriting the default files or create a copy of the 
   Acucobol lib directory.
   The steps below demonstrate how to create a copy of the Acucobol 
   lib directory and unpack the files in there:

   $ cd /opt/acucobol/6.0.0
   $ cp -rp lib lib.eq   
   $ cd lib.eq
   $ tar -xf /tmp/EQ-ACU-hpux.tar

   This example assumes that Acucobol has been installed in the
   /opt/acucobol/6.0.0 directory and the Eloquence Acucobol
   customizon archive has been placed in the /tmp directory.

   This unpacks the following files:
   README          - These instructions
   Makefile5-IA64  - Used with Acucobol 5.2.x, 64bit, Itanium
   Makefile5-PA32  - Used with Acucobol 5.2.x, 32bit, PA-RISC
   Makefile5-PA64  - Used with Acucobol 5.2.x, 64bit, PA-RISC
   Makefile6-IA64  - Used with Acucobol 6.0.0, 64bit, Itanium
   Makefile6-PA32  - Used with Acucobol 6.0.0, 32bit, PA-RISC
   Makefile6-PA64  - Used with Acucobol 6.0.0, 64bit, PA-RISC
   direct.c        - modified direct.c file
   eloquence.h     - Eloquence include file for direct.h

   $ ln -sf Makefile6-IA64 Makefile
   
   This creates Makefile as a symbolic link from Makefile6-IA64.
   Please use the appropriate Makefile template, depending on
   your CPU architecture and Acucobol version.


3. Compile, link and install the Acucobol runtime

   This is done with the following commands:
   
   $ make

   The make command compiles the sub.o and filetbl.o object files
   and links the runcbl executable. The screen output should be
   roughly the same as shown in the section "make screen output" 
   below.

   $ cp -p ../bin/runcbl ../bin/runcbl.bkup

   This creates a backup of the previous runcbl executable with the 
   name runcbl.bkup. 
 
   $ cp runcbl ../bin/runcbl

   This installs the new runcbl.
   

----------------------------------------------------------------------

   Troubleshooting

----------------------------------------------------------------------

With a pre-linked run-time, any TurboIMAGE intrinsic should be
available. If an error message like below is output by runcbl, 
the Eloquence TurboIMAGE intrinsics have not been linked with the 
Acucobol runtime.


       *===========================================-
       |                                           |
       |  DBOPEN: Program missing or inaccessible  |
       |  COBOL error at 000029 in cust            |
       |                                           |
       |                   <Ok>                    |
       |                                           |
       ---------------------------------------------


----------------------------------------------------------------------

   make screen output

----------------------------------------------------------------------

When executing make, the screen output should be substentially
similar then shown below. To enhance readability, the output below 
has been broken into multiple lines.

$ make
  cc -Ae +DSitanium +DD64 +O2   -DNO_ACUSQL=1 -DUSE_XML=1 \
  	-DELOQUENCE=1 -c sub.c
  cc -Ae +DSitanium +DD64 +O2   -DNO_ACUSQL=1 -DUSE_XML=1 \
  	-DELOQUENCE=1 -c filetbl.c
  cc -Ae +DSitanium +DD64 -s -o runcbl amain.o sub.o filetbl.o axml.o \
	  ./libruncbl.a \
          ./libclnt.a  ./libacvt.a  ./libfsi.a  ./libacuterm.a  \
	  ./libvision.a  ./libexpat.a \
	  -L/opt/eloquence6/lib/hpux64 -limage3k \
	  ./libsocks.a  ./libmessage.a  ./libcfg.a  ./liblib.a  \
	  ./libstdlib.a  ./libmemory.a  ./libz.a  -lm


----------------------------------------------------------------------

   Explaining the changes

----------------------------------------------------------------------

The following changes were made to the default Acucobol files.
The following changes are provided in the GNU diff format. 
A leading - indicates the line was removed, a leading + indicates 
a line was added.


Changes to direct.c
-------------------

The eloquence.h include file is included if the ELOQUENCE preprocessor 
variable is nonzero. The eloquence.h include file defines the 
Eloquence_IMAGE_intrinsics macro which is then added to the LIBDIRECT 
array. This makes the Eloquence turboIMAGE intrinsics known to Acucobol.

--- direct.c.bkup       2002-09-09 16:25:23.000000000 +0200
+++ direct.c    2003-09-10 23:37:16.000000000 +0200
@@ -78,7 +78,14 @@
 /* "int".  On the other hand, S9(9) data items are "long" on some      */
 /* machines and will not match an "int" parameter.  */
 
+#if ELOQUENCE
+#include "eloquence.h"
+#endif
+
 struct DIRECTTABLE LIBDIRECT[] = {
+#if ELOQUENCE
+Eloquence_IMAGE_intrinsics
+#endif
        { NULL,                 NULL,           0 }
        };


Changes to the Makefile
-----------------------

First, the ELOQUENCE_FLAGS variable to the CFLAGS make variable. 
The CFLAGS variable is passed to the C combiler.

The ELOQUENCE_FLAGS make variable is set to the value -DELOQUENCE=1
which causes the ELOQUENCE variable to be set to a non-zero value
in the C pre-processor.

The ELOQUENCE_LIBDIR make variable is set to the directory where
the Elouence image3k shared library resides. On HP-UX, the location
depends on the architecture (PA-RISC or Itanium) and if you create a
32 or 64 bit runcbl.

Archtecture Bits Location
----------- ---- -----------------------------
PA-RISC     32   /opt/eloquence6/lib/pa11_32
PA-RISC     64   /opt/eloquence6/lib/pa20_64
Itanium     64   /opt/eloquence6/lib/pa20_64

The ELOQUENCE_LIB make variable specifies the required options to
link against the Eloquence image3k library. It is subsequently
passed to the compiler/linker.

To disable the use of Eloquence, you may simply place a comment in
front of the three lines, defining the ELOQUENCE_FLAGS, 
ELOQUENCE_LIBDIR and ELOQUENCE_LIB make variables.


--- Makefile.bkup       2003-04-23 22:39:54.000000000 +0200
+++ Makefile    2003-09-11 00:53:33.000000000 +0200
@@ -9,7 +9,7 @@
 # PMK: 146
 
 CC = cc -Ae +DSitanium +DD64
-CFLAGS = +O2 $(ACUSERVER_FLAGS) $(ACUCONNECT_FLAGS) $(ACUSQL_FLAGS) $(XML_FLAGS
)
+CFLAGS = +O2 $(ACUSERVER_FLAGS) $(ACUCONNECT_FLAGS) $(ACUSQL_FLAGS) $(XML_FLAGS
) $(ELOQUENCE_FLAGS)
 LDFLAGS = -s
 SHELL = /bin/sh
 
@@ -115,6 +115,15 @@
 #ACUSQL_LIBS = $(ACU_LIBDIR)/libesql.a $(ACUSQL_ODBC_LIB)
 
 #
+# Eloquence configuration
+#
+
+# Use the following three lines for an Eloquence-ENABLED runtime:
+ELOQUENCE_FLAGS = -DELOQUENCE=1
+ELOQUENCE_LIBDIR = /opt/eloquence6/lib/hpux64
+ELOQUENCE_LIB = -L$(ELOQUENCE_LIBDIR) -limage3k
+
+#
 # File System Interface configuration
 #
 
@@ -134,6 +143,7 @@
        $(ACUSQL_LIBS) \
        $(CICS_LIB_USE) \
        $(MQSERIES_LIB_USE) \
+       $(ELOQUENCE_LIB) \
        $(ACME_LIB)


NOTE: A TAB charcter _must_ be used for leading space in a Makefile. 
      Otherwise this results in a make syntax error.