CALL_EXTERNAL Problem [message #1299] |
Mon, 09 August 1993 15:01  |
dean
Messages: 55 Registered: March 1993
|
Member |
|
|
I am attempting to use IDL to call a FORTRAN subroutine with IDL's
CALL_EXTERNAL to read an raster image on a VAX/VMS system. However, I
continue to get a "writable shareable images must be installed" error.
Could you tell me what I maybe doing wrong?
********************************************************** \ *****
Kelly Dean \
Cooperative Institute for Research in the Atmosphere ___\
Foothills Campus /|
Colorado State University / |\
Fort Collins, CO 80523 / | \
E-MAIL: DEAN%SOL.DNET@SIRIUS.CIRA.COLOSTATE.EDU | \
ph: 301-491-8408 | \
************************************************************ **************
========================= IDL error =======================================
%LIB-E-ACTIMAGE, error activating image $15$DIA2:[DEAN.IDL.EXTERNAL]IMX_IO.EXE;2
-SYSTEM-F-NOTINSTALL, writable shareable images must be installed
% CALL_EXTERNAL: Error in called routine.
%
========================= FORTRAN code IMX_IO ===========================
SUBROUTINE IMAGE_I(FILENAME,IMX,IXI,IYI,STATUS)
C
C This routine uses IMX IPL routines ( C code ) to read an IMX formatted
C raster image and passes it out as a 2x2 byte array.
C
INCLUDE 'IPL.INC'
CHARACTER*(*) FILENAME
CHARACTER*1 NULL
INTEGER I,IXI,IYI,STATUS
BYTE IMAGE(IPL_RASTER)
BYTE BUFFI(1024),IMX(1024,1024)
NULL = CHAR(0)
C
C----CONVERT IMAGE
C
CALL IPL_READ_IMAGE (%REF(FILENAME//NULL), IMAGE, STATUS)
IF (STATUS .NE. 0) RETURN
C
C Open IMX image file
C
CALL IPL_GET_IMAGE_SIZE(IMAGE,IXI,IYI)
C
C Move data into another binary array.
C
DO I = 1, IYI
CALL IPL_READ_IMAGE_REC(IMAGE, (I - 1), 1, BUFFI, STATUS)
IF (STATUS .NE. 0) RETURN
CALL LIB$MOVC3(IXI,BUFFI,IMX(1,I)) ! VAX/VMS Call !
ENDDO
C
C
RETURN
END
===============================Command file to compile and link ==========
$ for imx_io
$ link/map imx_io, ipl_lib, sys$input/opt/share
universal = image_i
============================== Procedure that calls the FORTRAN Code =====
PRO display_imx, filename, colorname
iostat = CALL_EXTERNAL('imx_io', $
DEFAULT='ud2:[dean.idl.external].exe', $
'IMAGE_I',filename,image,imx_x,imx_y,ISTATUS)
PRINT, ISTATUS
PRINT, imx_x,imx_y
window, 0, xsize = imx_x, ysize = imx_y, TITLE = filename
TV, image, /ORDER
END
|
|
|