Connecting with GENESISsql
How do I define date and time fields in GENESIS ADABAS C so that NATURAL
programs will understand them?
Set the datatype as TDT_DATETIME (12) in the GENESIS_COLUMNS definitions. The
length is 7. Historically NATURAL programmers have stored dates in a
Packed 4 and times in a Packed 7. These datatypes convert to precision 7 and
Why can we retrieve normal packed decimal fields from an ADABAS
file, yet cannot retrieve *ISN (ROWID), defined in NATURAL as P8.
NATURAL converts the value to a P8. The GENESIS SQL drivers all return
"rowid" as an internal ROWID type. Since these vary from integers to character
arrays, the GENESIS SQL engine leaves them untouched and simply marks them as
binary as it passes them back up. This approach prevents problems stemming from
byte ordering on different architectures when passing rowids across the network.
You can use ROWID in your queries and updates/deletes but you must send it back
down exactly as it arrived. MSquery probably has the correct rowid stored, it
just does not know how to display it.
How can we read from different ADABASC databases in parallel, like db id 8 and 12?
Open a new connection and reference a different configuration file in the
Just create two configuration files.
Is it possible to retrieve the isn, and if so how?
Yes. Specify the ROWID column.
What is the ADABASC C NQCID parameter and what do we do with it?
NQCID is the number of Active Command IDs per user. Each SQL statement becomes
a cid in the driver (a method of emulating cursors). The default through
jdbc is 128 db cursors which translates into a required NQCID value of
128 + 6 (GENESIS catalog cids). You can limit this by specifying
in your Properties passed into DriverManger.getConnection().
The following example limits the number of dbms cursors (cids) to
20 (plus the 6 for GENESIS tables).
Properties info = new Properties();
Connection conn = DriverManager.getConnection(url,info);
If you are using VORTEXaccelerator, you can set the number of dbCursors in the
vtxmux command line to NQCID - 6. If this is insufficient for your needs, then
increase NQCID to dbCurors + 6 in the ADABAS C configuration and restart
Can you give me some details on HP's Allbase in relation to security for
users/groups to views/tables as I havn't used that product before so
I don't know how it's accessed.
Users can belong to groups, groups can be placed in other groups. Access to
objects can be granted to users and groups.
Would you explain your views implementation?
We have two tables
GENESIS_VIEWS - The view definition
GENESIS_DEPENDS - The view dependencies
create view moose(A,B,C) as select id,name,deptname from staff,org
where dept = deptnumb;
The statement above creates an entry in GENESIS_VIEWS and two dependency entries in
GENESIS_DEPENDS, one against the staff table and one against the org.
select * from moose
returns column names A,B,C with the values from id,name,deptname.
select * from moose where A > 42
returns data with A (id) > 42.
Why am I not able to set "fixed # occurences" to return via the
GENESIS catalog when the #occurences depends on another fields
value (or even a complicated formula).?
This is what ESQ does via the CREATE CLUSTER command. You specify the
maximum number of PEs or MUs during the CREATE CLUSTER and that's all you will
Is there a way to access a row id? I have a customer who stores in one file
the row id# that they use in a relative file. They would like to query
their relative file by accessing this known row id...do you know of a way in
the current driver. Is there a call they could be doing like %rowid????
Just use the ROWID pseudo-column name in your SQL statements.
We found during his testing that the database name in the connect string
is ignored. Apparently, the VTX job gets the ESQ server name from the
VOPRM module, which must then be included as one of the load libraries
in the STEPLIB list. Can you add some type of validation?
This has nothing to do with VORTEX. The ESQ implemntation of MVS
is ignoring this! We issue the following EXEC SQL CONNECT statements
when connecting to ESQ:
If no ESQ Server is specified in the connect string:
EXEC SQL CONNECT TO DEFAULT AS connection identifier USER user identifier
PASSWORD password identifier
If an ESQ Server is specified in the connect string:
EXEX SQL CONNECT TO server specification AS connection identifier USER
user identifier PASSWORD password identifier
NATURAL correctly uses TDT_BINARY (a 99 I believe), the data is stored
correctly, but when the data is returned, the null indicator flag (-1)
is set. We do not expect the null indicator at this point and NATURAL
assumes that no data is present (but it is present!). Help!
The problem is that the host variable being used to receive the binary is too
small. ADABAS D always tells me that the binary is 65535 long and since the
host variable is too small, truncation occurs. The actual length (65535) is
returned in the indicator variable which, being a short, turns into (-1).
You should always use a host variable of 65535 length to receive BINARY
Does vtxauth.net work with host RAC-F?
No. vtxauth.net does not use RAC-F. It connect to the GENESIS server on
MVS and verifies that the uid/pwd match a valid uid/pwd in the
GENESIS_USERS table. vtxauth.net is used only by the VORTEXaccelerator.
Here is the flow of actions:
Connection request Client /vtxhost.mux
received by VTXNETD Port 1958 Solaris
passed to VTXHOST.MUX
passed to VTXMUX
passed to VTXAUTH.NET -> connects to VTXNETD OS/390
VTXNETD OS/390 calls VTXOPER
VTXOPER starts VTX4STC
VTX4STC starts VTX4
VTXAUTH.NET sends connect string userid/passwd
VTX4 translates SQL -> connects to Adabas-C -> checks GENESIS USER table
if GENESIS user table okay, connect succeeds, else failure
At this point, the client is either connected to VTXMUX or failed.
When I perform a create a table in SDMS,
sqlp = "CREATE TABLE ORG1 (DEPTNUM int NOT NULL, DEPTNAME char(6)
" NOT NULL, MANAGER int NOT NULL, DIVISION char(15) NOT"
" NULL, HRDATE char(10), SALARY number(8,2)) "
the int columns are defined as
c_type - 0
c_length - 22
c_precision - 10
taking up 10 spaces in the file.
c_precision is the numeric precision, the number of digits, not the space the
value takes up in the record.
However it really should be an on disk integer 4 bytes long, not a decimal
of 10 digits.
It is stored as a machine independent base 100 encoded string with a maximum
length of 22 bytes. We do not store integers except for the GENESIS catalogs.
Updated 26 Sep 2005.