This example was developed using PostgreSQL 9.3.15 for Linux (Ubuntu). If you were using a different version you would need to adapt some commands to your environment.
Prepare the environment following the following steps:
Set-up PostgreSQL environment
Start the LIXA state server
as explained in the section called “”.
Prepare the client (Application Program) using the below commands:
[Shell terminal session] |
tiian@ubuntu1404-64:/tmp$ cp /opt/lixa/share/doc/lixa-X.Y.Z/examples/cobol/EXAMPLE5_PQL.c . tiian@ubuntu1404-64:/tmp$ export PATH=$PATH:/opt/lixa/bin tiian@ubuntu1404-64:/tmp$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/lixa/lib tiian@ubuntu1404-64:/tmp$ export COB_LDFLAGS=-Wl,--no-as-needed tiian@ubuntu1404-64:/tmp$ cobc -x $(lixa-config -f -p) EXAMPLE5_PQL.cob |
Verify the executable produced by cobc:
[Shell terminal session] |
tiian@ubuntu1404-64:/tmp$ ldd EXAMPLE5_PQL linux-vdso.so.1 => (0x00007ffff21fe000) libcob.so.1 => /usr/lib/libcob.so.1 (0x00007f1a00df4000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1a00aee000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f1a00879000) libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f1a00656000) libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f1a0042d000) libdb-5.3.so => /usr/lib/x86_64-linux-gnu/libdb-5.3.so (0x00007f1a0008a000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f19ffe86000) liblixac.so.0 => /opt/lixa/lib/liblixac.so.0 (0x00007f19ffc6b000) liblixapq.so.0 => /opt/lixa/lib/liblixapq.so.0 (0x00007f19ffa63000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f19ff69e000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f19ff480000) /lib64/ld-linux-x86-64.so.2 (0x00007f1a01032000) libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f19ff27b000) libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f19fef73000) libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f19fec0c000) liblixab.so.0 => /opt/lixa/lib/liblixab.so.0 (0x00007f19fe9f2000) libpq.so.5 => /usr/lib/libpq.so.5 (0x00007f19fe7c3000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f19fe584000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f19fe36b000) liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f19fe149000) libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f19fdf44000) libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f19fdce4000) libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f19fd908000) libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f19fd63d000) libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f19fd438000) libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f19fd1f1000) libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f19fcfa0000) libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f19fcd70000) libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f19fcb65000) libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f19fc961000) libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f19fc745000) liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f19fc536000) libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f19fc31b000) libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007f19fc0dc000) libgnutls.so.26 => /usr/lib/x86_64-linux-gnu/libgnutls.so.26 (0x00007f19fbe1e000) libgcrypt.so.11 => /lib/x86_64-linux-gnu/libgcrypt.so.11 (0x00007f19fbb9e000) libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007f19fb994000) libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007f19fb70c000) libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007f19fb46b000) libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007f19fb237000) libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007f19fb022000) libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f19fae0e000) libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f19fabcb000) libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f19fa9c6000) libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007f19fa79d000) libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007f19fa58e000) libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007f19fa345000) libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f19fa08c000) libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f19f9e52000) libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f19f9c4a000) |
Set-up the LIXA_PROFILE
environment variable:
[Shell terminal session] |
tiian@ubuntu1404-64:/tmp$ echo $LIXA_PROFILE tiian@ubuntu1404-64:/tmp$ export LIXA_PROFILE=PQL_STA tiian@ubuntu1404-64:/tmp$ echo $LIXA_PROFILE PQL_STA |
See the section called “Some checks before program execution” for additional details on the profile.
It is suggested to open two different terminals: the first one
connected to “testdb” PostgreSQL database and the second
one pointing to the directory where the compiled program
EXAMPLE5_PQL
lives.
First teminal session:
[PostgreSQL terminal session] |
tiian@ubuntu1404-64:~$ psql testdb psql (9.3.15) Type "help" for help. testdb=> |
Second teminal session:
[Shell terminal session] |
tiian@ubuntu1404-64:/tmp$ ls -la EXAMPLE5_PQL* -rwxrwxr-x 1 tiian tiian 20170 gen 13 23:51 EXAMPLE5_PQL -rw-r--r-- 1 tiian tiian 6374 gen 13 23:47 EXAMPLE5_PQL.cob |
Check the content of “AUTHORS” table before program execution:
[PostgreSQL terminal session] |
testdb=> select * from AUTHORS; id | last_name | first_name ----+-----------+------------ (0 rows) |
Execute the program:
[Shell terminal session] |
tiian@ubuntu1404-64:/tmp$ ./EXAMPLE5_PQL INSERT Executing EXAMPLE5_PQL Inserting a row in the table... Status: +0000000000 PQexec INSERT Status: +0000000001 TXCOMMIT returned value +000000000 TXCLOSE returned value +000000000 |
Check the content of the table again:
[PostgreSQL terminal session] |
testdb=> select * from AUTHORS; id | last_name | first_name ----+-----------+------------ 1 | Foo | Bar (1 rows) |
The example program inserted the row with id=1. You can not insert the same row twice because there is a unique constraint on this table, but you can remove the row using
[Shell terminal session] |
tiian@ubuntu1404-64:/tmp$ ./EXAMPLE5_PQL DELETE Executing EXAMPLE5_PQL Deleting a row from the table... Status: +0000000000 PQexec DELETE Status: +0000000001 TXCOMMIT returned value +000000000 TXCLOSE returned value +000000000 |
Check the table content again:
[PostgreSQL terminal session] |
testdb=> select * from AUTHORS; id | last_name | first_name ----+-----------+------------ (0 rows) |