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

Conference bulova::decw_jan-89_to_nov-90

Title:DECWINDOWS 26-JAN-89 to 29-NOV-90
Notice:See 1639.0 for VMS V5.3 kit; 2043.0 for 5.4 IFT kit
Moderator:STAR::VATNE
Created:Mon Oct 30 1989
Last Modified:Mon Dec 31 1990
Last Successful Update:Fri Jun 06 1997
Number of topics:3726
Total number of notes:19516

539.0. "Decwindows & Rdb :(in)compatibility?" by FNYFS::BAHUN () Wed Apr 05 1989 09:37

Hi,

In the note 114 of DW_EXAMPLES, there is a discussion about the incompatibilily 
of DECWINDOWS and RDB; this is something very important; if possible,
is there anybody who could give more details about that, especially : 

   1. When this incompatibility problem is expected to be solved ? 

   2. Is there any documentation which is presentating the (in)compatibility
      between DECWINDOWS and the layered products ?
                                                  
  
  
Thanks,


Adj�t�.


T.RTitleUserPersonal
Name
DateLines
539.1PSW::WINALSKIPaul S. WinalskiWed Apr 05 1989 18:5110
The problem stems from Rdb's use of the G-float version of the C RTL while
DECwindows is linked against the D-float version.  Hence, an application that
tries to do both Rdb calls and DECwindows calls can run into trouble.  This
problem with the C RTL is being fixed by an upcoming version of VAX C.  I think
also that Rdb is writing their use of the C RTL out of the product.  For
schedules on when this will be fixed, you'll have to contact the VAX C and VAX
Rdb development teams.

--PSW

539.2STAR::ORGOVANVince OrgovanWed Apr 05 1989 19:054
    I believe that the VAXCRTL fix for D-float and G-float will appear
    in VMS V5.2. The DECwindows RTLs will not take advantage of this 
    until a release after V5.2.

539.3Some relief in the form of a KludgeCSC32::MOLLERNightmare on Sesame StreetWed Jun 28 1989 18:5096
For those who want to consider using RDB & DECwindows, this short example
shows how to convert a D_FLOATING to a G_FLOATING using a program. Converting
G_FLOATING to D_FLOATING could also use the same logic & a set of it's
own subroutines; again, not complicated.
							Jens Moller

$ set verify
$ !	CONVERT_D_TO_G.COM
$ !
$ !	Sample of how to convert a D_FLOATING feild to a G_FLOATING
$ !	feild. This is a simple kludge that may cause some precision
$ !	loss because of the mulitiple translations from floating point
$ !	to character, then back to floating point again. Also be aware
$ !	that you have to compile the modules differently from each
$ !	other to make sure that each module does the proper translations.
$ !
$ !	This sort of thing is useful where someone stored data in
$ !	D_FLOATING & now wants to move the data to a place that only
$ !	supports G_FLOATING (such as RDB).
$ !
$ !	This command file creates all files and compiles & links them.
$ !	To run the program, enter RUN MAIN/NODEB from DCL.
$ !	(It's built with the DEBUGGER in case you want to see what is
$ !	actually happening).
$ !
$ !							Jens
$ !
$ create main.for
c
c	This program must be compiled as a D_FLOAT 
c
	PROGRAM MAIN
	REAL*8	D_FLOAT_DATA
	BYTE    D_BYTES(8)
	BYTE    G_FLOAT_DATA(8)

	EQUIVALENCE (D_FLOAT_DATA,D_BYTES)

	D_FLOAT_DATA = 1.234567890e20

c
c	This call could be added to a main program that needed this
c	functionality
c
	CALL CONVERT_STEP1(D_FLOAT_DATA,G_FLOAT_DATA)

	TYPE *,'Original Val : ',D_FLOAT_DATA
	TYPE *,'D_FLOAT Bytes:',D_BYTES
	TYPE *,'G_FLOAT Bytes:',G_FLOAT_DATA

	END

$ create convert_step1.for
c
c	This subroutine must be compiled as a D_FLOAT
c
	SUBROUTINE CONVERT_STEP1(D_FLOAT_DATA,G_FLOAT_DATA)
	REAL*8	D_FLOAT_DATA
	BYTE    G_FLOAT_DATA(8)
	CHARACTER*60 CHAR_FLOAT_DATA

	WRITE(CHAR_FLOAT_DATA,10)D_FLOAT_DATA
10	FORMAT(D30.25)

	CALL CONVERT_STEP2(CHAR_FLOAT_DATA,G_FLOAT_DATA)

	RETURN
	END

$ create convert_step2.for
c
c	This subroutine must be compiled /G_FLOAT
c
	SUBROUTINE CONVERT_STEP2(CHAR_FLOAT_DATA,G_FLOAT_DATA)
	CHARACTER*60 CHAR_FLOAT_DATA
	REAL*8   G_FLOAT_DATA

	READ(CHAR_FLOAT_DATA,10)G_FLOAT_DATA
10	FORMAT(G30.25)

	RETURN
	END

$ !
$ ! Compile the programs
$ !
$ FORTRAN MAIN/noopt/debug
$ FORTRAN CONVERT_STEP1/noopt/debug
$ FORTRAN/G_FLOAT CONVERT_STEP2/noopt/debug
$ !
$ ! Link the Programs
$ !
$ LINK /debug MAIN,CONVERT_STEP1,CONVERT_STEP2
$ set noverify