[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference orarep::nomahs::repository

Title:Oracle CDD/Repositorynce
Notice:Current versions are V7.0-01 and V6.1-03eld Test 3
Moderator:8292::PJACOBN
Created:Thu Jan 21 1993
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:1094
Total number of notes:4913

1064.0. "ALIGN pb with SQL$PRE+FORTRAN+INCLUDE FROM DICTIONARY" by 8292::PJACOB (Patrick JACOB-pjacob@fr.oracle.com) Tue Mar 11 1997 18:06

CDD/R 6.1-03  Rdb 6.1-1  FORTRAN 7.1  VMS 6.2 

Is there a problem with SQL$PRE/ALIGNMENT=RECORDS=NATURAL and EXEC SQL INCLUDE
FROM DICTIONARY clause with FORTRAN 7.1 ?

A customer of mine is trying to migrate from VAX to Alpha. His programs no
longer works on Alpha. He sent me everything necessary to reproduce the problem:
CDD definitions + FORTRAN source program containing the EXEC SQL INCLUDE FROM 
DICTIONARY + C source program containing the same EXEC SQL INCLUDE FROM 
DICTIONARY . The C program is called by the FORTRAN program . Under the
debugger he determined that he did not retrieve the good value of the record
passed from the FORTRAN program to the C program. However I was not able to
reproduce this symptom because I was running FORTRAN V6.3-711 and the customer 
was running FORTRAN V7.1-107 .  

Digital, connected on the customer site, noted 2 problems :
- precompiling with /ALIGNMENT=RECORDS=NATURAL/CROSS_REFERENCE should prevent
  the "FORT-W-FLDMISALN, Record contains one or more misaligned fields" message
  to occur. This was not the case.
- when we precompile /ALIGN=RECO=NATURAL/CROSS, which is the default, NJOUR 
  should be at offset 8 but with FORTRAN 7.1 we see it at the offset 6 which is
  wrong:
    00000000  CDEV    REFFINS0    CHAR               3     8        19
    00000003  CINSTR  REFFINS0    CHAR               3     9
    0000000A  DSTK    REFFINS0    STRC               8    11
    00000012  HSTK    REFFINS0    I*4                4    14
    00000006  NJOUR   REFFINS0    I*4                4    10        20
Thus the question became: Why Oracle does not take care of our compilation
directives.

I verified on my system with FORTRAN V6.3-711. The program worked correctly 
with Rdb 6.0-15 and 6.1-1. FLDMISALN is not generated with appropriate flag. 
The alignment was correct with natural ( and default ) alignment:
    00000000  CDEV    REFFINS0    CHAR               3     8        19
    00000003  CINSTR  REFFINS0    CHAR               3     9
    0000000C  DSTK    REFFINS0    STRC               8    11
    00000014  HSTK    REFFINS0    I*4                4    14
    00000008  NJOUR   REFFINS0    I*4                4    10        20
I received the FORTRAN V7.1 kit and once installed I could reproduce the
problem with both Rdb 6.0-15 and 6.1-1 ( CDD 6.1-03 ). 

Thus, is there something broken with FORTRAN 7.1 ( or > 6.3 )? How can we make
work correctly alignment ? How can we make work correctly the customer program?
Is it a CDD/Repository problem or an Rdb problem?

Patrick   
	

T.RTitleUserPersonal
Name
DateLines
1064.1bug # 4742458292::PJACOBPatrick JACOB-pjacob@fr.oracle.comThu Apr 03 1997 12:193
    bug 474245 submitted
    
    Patrick
1064.2need to specify ALIGNED ON ... BOUNDARY clause8292::PJACOBPatrick JACOB-pjacob@fr.oracle.comWed Jun 04 1997 16:1326
    To let you know the answer of the bug ...
    
    When migrating from VAX to Alpha you may need to add alignment clause
    in the record definition. Adding CDEC$ options did not fix the problem. 
    This was not necessary with FORTRAN 6.3-711; it became necessary once I 
    upgraded to FORTRAN 7.1-107. 
    This will certainly annoy a lot of customers ....
    
    Patrick.
    
    CDO definitions used in the EXEC SQL INCLUDE FROM DICTIONARY
    ------------------------------------------------------------
    define field field_c.cdev datatype text size 3.
    define field field_c.cinstr datatype text size 3.
    define field field_n.njour  datatype signed longword.
    define field field_l.linstr datatype text size 30.
    define field field_d.dstk  datatype date .
    define field field_h.hstk datatype signed longword .
    define record record.reffins0 .
    field_c.cdev.
    field_c.cinstr.
    field_n.njour align longword.
    !             ^^^^^^^^^^^^^^   clause added for Alpha
    field_d.dstk.
    field_h.hstk.
    end record.