[See all pages on this site.] [Find out more about Trifox Inc.] [Find out how to contact Trifox personnel.] [Complete product documentation, FAQs, online references.] [Pricing is simple.] [Download an evaluation copy of any Trifox product.] [Descriptions of all products, including VORTEX, DesignVision, and Genesis.]

[LOGO]
[Navigation Map]

 

[Search Site]

| 

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 precision 13.

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 connect string:
net:adabasc:adabas8@tri4!4,,....
net:adabasc:adabas12@tri4!2,....
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
   db_cursor,n
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();
 
   Class.forName("vortex.sql.vortexDriver");
 
   info.put("db_cursor",20);
   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 ADABAS C.

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.

Then
   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 get.

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 data.

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 
     |
   VTXAUTH.NET disconnects
      |
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.  


© 1985-2020 Updated 26 Sep 2005.