[Info-vax] Any Way to Pass Character String Arguments from C to Basic?
Craig Dedo
craig.dedo at gmail.com
Mon Oct 21 13:43:22 EDT 2019
On Monday, October 21, 2019 at 11:18:10 AM UTC-5, Robert A. Brooks wrote:
> On 10/21/2019 11:31 AM, Craig Dedo wrote:
>
>
> > Everything compiles and links correctly; no errors or warnings at all.
> > When I run the program everything works fine until I try to assign character string data back into character string arguments> that are associated with character strings in the C program.
> > * Assignment of character string arguments from the C program to variables in the Basic subroutine works fine.
> > * Assignment of integer results from the Basic subroutine to the integer arguments in the C program works fine.
>
> > * BUT when I try to assign character string values to a character string argument in the C program, I get a fatal error:
> > %STR-F-FATINTERR, fatal internal error
> To be clear, you get this error not when you are calling the BASIC subroutine, but when you attempt to do the string assignment in the C source
> prior to calling the BASIC subroutine?
>
> Let's see the C actual source.
>
> I don't see this support call in our internal bug tracking system yet.
>
> --
>
> -- Rob
Bill Hall, our OpenVMS system manager, submitted the bug report at 10:07 a.m. Central Time (11:07 a.m. Eastern Time) today.
No, this error is in the Basic subroutine, NOT the C program calling it. Here are the relevant statements in the Basic subroutine:
Declare String Output_Results_lsa ( nItems_lkl )
. . .
Call Returns_Elig ( Procedure_Name_ls, Input_Data_lsa(), Output_Results_lsa(), Message_ls )
DR3_Quantity_al = Integer ( Output_Results_lsa (1), Long )
DR2_Quantity_al = Integer ( Output_Results_lsa (2), Long )
Oldest_Invoice_Number_as = Output_Results_lsa (3)
The suffixes _ls and _lsa refer to "local string" and "local string array", respectively.
The error occurs at the assignment to Oldest_Invoice_Number_as. Interestingly, the value is assigned properly before the error condition is triggered. I know that from looking at the variables in the OpenVMS debugger.
The string variables are passed from C to basic using variable-length string descriptors. The reading of the input string variables, passed the same way, works properly but not assigning to string variables.
Sincerely,
Craig T. Dedo. OpenVMS Software Development Consultant
Navistar, Inc.
2701 Navistar Drive
Lisle, IL 60532
More information about the Info-vax
mailing list