| Title: | Alpha Developer Support |
| Notice: | [email protected], 800-332-4786 |
| Moderator: | HYDRA::SYSTEM |
| Created: | Mon Jun 06 1994 |
| Last Modified: | Fri Jun 06 1997 |
| Last Successful Update: | Fri Jun 06 1997 |
| Number of topics: | 3722 |
| Total number of notes: | 11359 |
Company Name : Software-B�ro Funke - Point 28083
Contact Name : Joachim Tr�tken
Phone : +49 (511) 61858
Fax : +49 (511) 619201
Email : [email protected]
Date/Time in : 13-MAY-1997 15:38:14
Entered by : Nick Hudson
SPE center : REO
Category : vms
OS Version : 7.1
System H/W :
Brief Description of Problem:
-----------------------------
From: RDGENG::MRGATE::"RDGMTS::PMDF::mail.dec.com::Omuiric" 13-MAY-1997 15:15:22.63
To: RDGENG::ASAP
CC:
Subj: ESCALATION: POINT , Company TO ASAP READING: 28083
From: NAME: Ciaran OMuiri <[email protected]@PMDF@INTERNET>
To: NAME: '[email protected]' <IMCEAX400-c=US+3Ba=+20+3Bp=DIGITAL+3Bo=SBUEURMFG+3Bdda+3ASMTP=asap+40reo+2Emts+2Edec+2Ecom+3B@mail.dec.com@PMDF@INTERNET>
Hello -
POINT Log Number28083
Company Name Software-B�ro Funke
Engineers name Joachim Tr�tken
Telephone Number +49 (511) 61858
Fax Number +49 (511) 619201
E-mail Address [email protected]
Operating System, Version
OpenVMS 7.1
C 5.5
Cobol 2.4
Platform
Dec Alpha Station 200 4/100
Problem Statement
We are having problems call C sub programmes from Cobol
1How do we declare the external c function in cobol whoes output is a
double?
2 How are the parameters excluding the double type to be given
3 Are there special compliers or link options which need to be
installed for this constallation
Wir haben Probleme mit dem Aufruf von C-Unterprogrammen aus Cobol
heraus:
1. Wie ist in Cobol die externe C-Funktion (liefert Double-Wert
zurueck)
zu deklarieren?
2. Wie sind die Parameter (ausschlie�lich vom Typ Double) zu
uebergeben?
3. Gibt es spezielle Compiler- oder Link-Optionen, die fuer diese
Konstellation einzustellen sind?
Regards
Ciaran
In replying, please use [email protected]
RFC-822-headers:
Received: from reoexc1.reo.dec.com by rg71rw.reo.dec.com (PMDF V5.0-7 #15552)
id <[email protected]> for [email protected]; Tue,
13 May 1997 10:41:46 +0100
Received: by reoexc1.reo.dec.com with SMTP
(Microsoft Exchange Server Internet Mail Connector Version 4.0.994.63)
id <[email protected]>; Tue, 13 May 1997 10:43:35 +0100
X-Mailer: Microsoft Exchange Server Internet Mail Connector Version 4.0.994.63
| T.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 3615.1 | KZIN::HUDSON | That's what I think | Tue May 13 1997 11:40 | 1 | |
see 3241 in cobol conf. | |||||
| 3615.2 | KZIN::HUDSON | That's what I think | Wed May 14 1997 05:22 | 98 | |
From: DEC:.REO.REOVTX::HUDSON "[email protected] - UK Software Partner Engineering 830-4121" 14-MAY-1997 10:21:10.26 To: vbormc::"[email protected]" CC: HUDSON Subj: RE: POINT 28083, COBOL/C double Guten Tag Joachim Tr�tken Sorry, my German is not very good. Here is an example which I hope will help. If this doesn't answer your question please tell me... Regards Nick Hudson Digital Software Partner Engineering ============================================================================== $ $ type prog.cob identification division. program-id. cobol_test. data division. working-storage section. 01 double-result comp-2. 01 double-param comp-2. 01 int-val1 pic 9(6) comp. 01 int-val2 pic 9(6) comp. procedure division. main section. p1. move 1 to int-val1. move 23 to int-val2. display "int-val1 is now " int-val1 with conversion. display "int-val2 is now " int-val2 with conversion. display "double-param is " double-param with conversion. display "Calling C to evaluate int-val1 / int-val2". call "routine1" using by value int-val1 by reference int-val2 by reference double-param giving double-result. display "int-val1 is now " int-val1 with conversion. display "int-val2 is now " int-val2 with conversion. display "double-param is " double-param with conversion. display "double-result is " double-result with conversion. $ type sub.c double routine1(int p1, int *p2, double *d1) { double x = ((double)p1 / (double) *p2); /* try and change the parameters */ p1 = 0; *p2 = 0; *d1 = x; return x; } $ cob prog/flo=g_flo ! default would be d_float $ cc sub ! default is g_float $ link prog,sub $ r prog int-val1 is now 1 int-val2 is now 23 double-param is 0.00000000000000E+000 Calling C to evaluate int-val1 / int-val2 int-val1 is now 1 int-val2 is now 0 double-param is 4.34782608695652E-002 double-result is 4.34782608695652E-002 $ $! Or you can use D_FLOAT.... $ cob prog ! default will be D_FLOAT $ cc sub/flo=d_flo ! force to D_FLOAT $ lin prog,sub $ r prog int-val1 is now 1 int-val2 is now 23 double-param is 0.000000000000000E+00 Calling C to evaluate int-val1 / int-val2 int-val1 is now 1 int-val2 is now 0 double-param is 4.347826086956522E-02 double-result is 4.347826086956522E-02 $ | |||||