; $Id: vax_call_ext.pro,v 1.2 1998/03/04 17:18:35 ali Exp $ ; ;+ ; NAME: VAX_CALL_EXT ; ; PURPOSE: ; The VAX_FLOAT keyword to CALL_EXTERNAL can be used to make the ; IEEE versions of VMS IDL properly pass floating point data to ; external code compiled for the VAX floating point format. However, ; IDL 5.0.x and earlier did not accept this keyword. This makes it ; difficult to write a CALL_EXTERNAL statement that can be used ; under both versions at the same time. ; ; The VAX_CALL_EXT routine can be used to solve this problem. ; If you call it instead of CALL_EXTERNAL, your program will be ; able to specify the VAX_FLOAT keyword in all cases, and the ; older IDL versions will simply ignore it as a side effect of ; keyword inheritance. ; ; CALLING SEQUENCE: ; See the documentation on the CALL_EXTERNAL function for ; allowed arguments and usage. ; ; MODIFICATION HISTORY: Written by: Tom Fredian, MIT, February 1998 ;- function VAX_CALL_EXT,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10, $ a11,a12,a13,a14,a15,a16,_extra=e case n_params() of 1: message, 'Incorrect number of arguments.' 2: ans = call_external(a1,a2,_extra=e) 3: ans = call_external(a1,a2,a3,_extra=e) 4: ans = call_external(a1,a2,a3,a4,_extra=e) 5: ans = call_external(a1,a2,a3,a4,a5,_extra=e) 6: ans = call_external(a1,a2,a3,a4,a5,a6,_extra=e) 7: ans = call_external(a1,a2,a3,a4,a5,a6,a7,_extra=e) 8: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,_extra=e) 9: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,a9,_extra=e) 10: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,_extra=e) 11: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,_extra=e) 12: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10, $ a11,a12,_extra=e) 13: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,$ a11,a12,a13,_ex,tra=e) 14: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10, $ a11,a12,a13,a14,_extra=e) 15: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10, $ a11,a12,a13,a14,a15,_extra=e) 16: ans = call_external(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10, $ a11,a12,a13,a14,a15,a16,_extra=e) endcase return,ans end