[Info-vax] Error Messages in Basic - %BASIC-E-PARMODNOT, mode for parameter <n> of routine <procedure-name> not as declared
John Reagan
xyzzy1959 at gmail.com
Mon Jun 10 10:46:07 EDT 2019
On Monday, June 10, 2019 at 10:35:06 AM UTC-4, Jeffrey H. Coffield wrote:
> On 06/08/2019 11:54 AM, Robert A. Brooks wrote:
> > On 6/8/2019 2:21 PM, Jeffrey H. Coffield wrote:
> >> There are other long time errors and omissions in Basic support that I
> >> have had to keep my own fixed/stable versions of some of the library
> >> files so my programs will work. Notably the files concerning XAB
> >> structures for Basic would change/break with new versions of OpenVMS.
> >
> > Can I see an example of that? It may be that the SDL back end for BASIC
> > needs some work. In any event, we can't fix it if we don't know that
> > it's a problem.
> >
>
> Robert,
>
> I tried a long time ago to get someone at DEC/Compaq/HP to listen but
> never got anywhere, even though we sell and support OpenVMS systems.
>
> Here is one example that doesn't compile with the current libraries.
> This code is not original to me and I don't know where I got it but it
> is at least 30 years old. It may only need the correct %include
> functions now. The "%include 'source:xab.bas" that is commented out is
> the version I saved off a long time ago that makes this work.
>
>
>
> FUNCTION LONG GETFID (STRING file_spec = 255% BY REF, &
> WORD returned_fid (1% TO 3%) BY REF, &
> long EBK, &
> FFB, &
> string file.name by desc)
> !
> ! This function obtains the file-ID of the file.
> !
> OPTION TYPE = EXPLICIT
>
> %INCLUDE "$rmsdef" %FROM %LIBRARY "sys$library:basic$starlet"
> %INCLUDE "$fabdef" %FROM %LIBRARY "sys$library:basic$starlet"
> %INCLUDE "$namdef" %FROM %LIBRARY "sys$library:basic$starlet"
> %INCLUDE "$xabdef" %FROM %LIBRARY "sys$library:basic$starlet"
> %INCLUDE "$xaballdef" %FROM %LIBRARY "sys$library:basic$starlet"
> ! %INCLUDE 'source:XAB.BAS'
>
> EXTERNAL LONG FUNCTION sys$open, sys$close
>
> DECLARE FABDEF FAB, &
> NAMDEF NAM, &
> LONG CALL.STATUS, &
> XABDEF XAB
>
> MAP (GETFID_MAP) STRING RES_FILE = 255%
>
> fab::fab$b_bid = fab$c_bid
> fab::fab$b_bln = fab$c_bln
> fab::fab$l_fna = LOC(file_spec)
> fab::fab$b_fns = LEN(TRM$(file_spec))
> fab::fab$l_nam = LOC(nam)
> fab::fab$l_xab = loc(xab)
>
> nam::nam$b_bid = nam$c_bid
> nam::nam$b_bln = nam$c_bln
> NAM::NAM$L_RSA = LOC(RES_FILE)
> NAM::NAM$B_RSS = -1% ! 255 unsigned
>
> xab::xab$b_bln = XAB$C_FHCLEN
> xab::xab$b_cod = XAB$C_FHC
>
> CALL.STATUS = sys$open (fab)
> IF CALL.STATUS = rms$_normal THEN
> returned_fid(1%) = nam::nam$w_fid_num
> returned_fid(2%) = nam::nam$w_fid_seq
> returned_fid(3%) = nam::nam$w_fid_rvn
> CALL.STATUS = sys$close (fab)
> EBK = xab::xab$l_EBK
> file.name = left(res_file, nam::nam$b_rsl)
> FFB = XAB::XAB$W_FFB
> ELSE
> EBK = 0%
> FFB = 0%
> END IF
> END FUNCTION CALL.STATUS
>
> Here is the output from OpenVMS V8.4-2L1:
>
> VMS3 $ basic getfid
>
> xab::xab$b_bln = XAB$C_FHCLEN
> ^
> %BASIC-E-EXPDECREQ, explicit declaration of XAB$C_FHCLEN required
> at line number 39 in file SYS$SYSDEVICE:[JEFFREY]getfid.bas;1
>
> xab::xab$b_cod = XAB$C_FHC
> ^
> %BASIC-E-EXPDECREQ, explicit declaration of XAB$C_FHC required
> at line number 40 in file SYS$SYSDEVICE:[JEFFREY]getfid.bas;1
>
> EBK = xab::xab$l_EBK
> ..........................^
> %BASIC-E-ERRRECCOM, erroneous RECORD component
> at line number 48 in file SYS$SYSDEVICE:[JEFFREY]getfid.bas;1
>
> FFB = XAB::XAB$W_FFB
> ..........................^
> %BASIC-E-ERRRECCOM, erroneous RECORD component
> at line number 50 in file SYS$SYSDEVICE:[JEFFREY]getfid.bas;1
> %BASIC-E-ENDNOOBJ, SYS$SYSDEVICE:[JEFFREY]getfid.bas;1 completed with 4
> diagnostics - object deleted
>
> Any chance of getting GET/FIND LE or LT into Basic?
You want to include "$xabfhcdef"
$ libr/extr=$xabfhcdef/out=xabfhcdef.bas XF67_RESD$:[001001]BASIC$STARLET.TLB
$ search xabfhcdef.bas xab$c_fhc
DECLARE LONG CONSTANT XAB$C_FHC = 29 ! xabfhc id code
DECLARE LONG CONSTANT XAB$C_FHCLEN = 44 ! length of xabfhc
and $xabdef is just the common portion. If you want to select a "variant", you need to typecast to the appropriate flavor.
More information about the Info-vax
mailing list