In article <5828839252973544.wa.prf51videotron...@listserv.ua.edu> you wrote: > I have 64-bit C code that attempts to fetch() IGGCSI00. > I've used pragma linkage on IGGCSI00 but got nowhere. > I am getting the following: > EDC5256S An AMODE64 application is attempting to fetch() an AMODE31 > executable. (errno2=0xC4070068) > The C program was compiled with : > langlvl(LIBEXT),ARCH(5),TUNE(7),GONUMBER,FLAG(I),XPLINK(STOREARGS),EXPORTALL,SPILL(448),LP64,GOFF > Reading the doc on fetch() and XPLINK in the C/C++ and LE bookshleves doesn't > shed nay light on this. > I think I am forced to write a64-bit assembler program that then calls > IGGCSI00 with parameters in 31-bit memory. > Any suggestions ? > Thanks in advance, Pierre.
You can call any 31-bit assembler API from a 64-bit C program, but you have to jump through the hoops. Move all the parms (and anything the parms point to) below the bar and then SAM31/BASR/SAM64. If the API expects R13 to point to a save area, then you need to set that up too. You won't be using XPLINK parms, so setup the R1 parm area as well. Make sure to save and restore all the caller registers. -- Don Poitras - SAS Development - SAS Institute Inc. - SAS Campus Drive sas...@sas.com (919) 531-5637 Cary, NC 27513 ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN