[comp.os.vms] RMS question.

dahls%vax.elab.unit.uninett@TOR.NTA.NO (J|rn Yngve Dahl-Stamnes) (05/26/88)

To all RMS GURU's and WIZARD's !!

I am trying to use a useropen routine when opening a file from fortran. The
file get open, but I can't access it. When trying to read record 1 from it,
I got the following error messages:

%FOR-E-ERRDURREA, error during read ......

If I remove the err=1000 in the read line (se below), I do not get the error
messages, but nothing is read from the file!!! Finally, if I don't use the
useropen routine, everything works - no problem.

The purpose of the useropen routine, is to get the $XABDAT, $XABPRO and
$XABRDT fields - and it work just fine. I have tried to change the content
of the fields FAB$L_FOB, FAB$B_SHR and FAB$B_RFM, but without any luck.

Is there anyone out there who can help me to fix this problem?


Open statement:
---------------
          open (unit=lun1, file=found1, recl=25, status='old',
     &        form='unformatted', access='direct', readonly,
     &        maxrec=1001, iostat=iostat, err=1000,
     &        useropen=lio$ufopen)

          read (unit=lun1,rec=1,iostat=status,err=1000) record 

User open routine LIO$UFOPEN:
-----------------------------
      function        lio$ufopen ( fab,rab,lun )
!
      implicit none

      include     '($fabdef)/nolist'
      include     '($rabdef)/nolist'
      include     '($xabdatdef)/nolist'
      include     '($xabprodef)/nolist'
      include     '($xabrdtdef)/nolist'

      external    sys$open
      integer*4   sys$open

      record  /xabdatdef/     xabdat
      record  /xabprodef1/    xabpro
      record  /xabrdtdef/     xabrdt

      common  /lio_acc/   readonly
      common  /lio_rms/   xabdat, xabpro, xabrdt

      integer*4       lio$ufopen
      integer*4       lun
      integer*4       status

      record  /fabdef/    fab
      record  /rabdef/    rab

      fab.fab$b_fac = fab$m_bio .or. fab$m_get
      fab.fab$b_org = fab$c_seq
      fab.fab$b_shr = fab$m_nil
      fab.fab$l_fop = fab$m_nam
! 
      fab.fab$l_xab = %loc(xabdat)
      xabdat.xabdatdef$$_fill_4 = %loc(xabpro)    ! = xab$l_nxt, xab chain
      xabpro.xabprodef$$_fill_4 = %loc(xabrdt)    ! link address.
      xabrdt.xabrdtdef$$_fill_4 = 0               ! End of link.
!
      xabdat.xabdatdef$$_fill_1 = xab$c_dat       ! = xab$b_cod
      xabdat.xabdatdef$$_fill_2 = xab$c_datlen    ! = xab$b_bln
!
      xabpro.xabprodef$$_fill_1 = xab$c_pro       ! = xab$b_cod
      xabpro.xabprodef$$_fill_2 = xab$c_prolen    ! = xab$b_bln
!
      xabrdt.xabrdtdef$$_fill_1 = xab$c_rdt       ! = xab$b_cod
      xabrdt.xabrdtdef$$_fill_2 = xab$c_rdtlen    ! = xab$b_bln
!
      status = sys$open (fab)
!
      lio$ufopen = status
      return
      end

Listing from the DEBUGGER before $OPEN is executed:
---------------------------------------------------
set radix hex
ex fab,rab
!LIO$UFOPEN\FAB                
!    FAB$B_BID:  03
!    FAB$B_BLN:  50
!    FAB$W_IFI:  0000
!    
!        (1):    00
!        (2):    00
!    FAB$L_FOP:  01000000
!    
!        (1):    00
!        (2):    00
!        (3):    00
!        (4):    01
!    FAB$L_STS:  00000000
!    FAB$L_STV:  00000000
!    FAB$L_ALQ:  00000000
!    FAB$W_DEQ:  0000
!    FAB$B_FAC:  22
!    
!        (1):    22
!    FAB$B_SHR:  20
!    
!        (1):    20
!    FAB$L_CTX:  00000000
!    FAB$B_RTV:  00
!    FAB$B_ORG:  00
!    
!        (1):    00
!    FAB$B_RAT:  00
!    
!        (1):    00
!    FAB$B_RFM:  01
!    FAB$B_JOURNAL:      00
!    
!        (1):    00
!    FAB$B_RU_FACILITY:  00
!    FABDEF$$_FILL_7:    0000
!    FAB$L_XAB:  00002338
!    FAB$L_NAM:  0012BA78
!    FAB$L_FNA:  00000494
!    FAB$L_DNA:  7FF25E30
!    FAB$B_FNS:  0FF
!    FAB$B_DNS:  0A
!    FAB$W_MRS:  0064
!    FAB$L_MRN:  000003E9
!    FAB$W_BLS:  0000
!    FAB$B_BKS:  00
!    FAB$B_FSZ:  00
!    FAB$L_DEV:  1C4D4108
!    FAB$L_SDC:  1C4D4108
!    FAB$W_GBC:  0000
!    FAB$B_ACMODES:      00
!    
!        (1):    00
!    FAB$B_RCF:  00
!    
!        (1):    00
!    FABDEF$$_FILL_9:    00000000
!LIO$UFOPEN\RAB
!    RAB$B_BID:  01
!    RAB$B_BLN:  44
!    RAB$W_ISI:  0000
!    
!        (1):    00
!        (2):    00
!    RAB$L_ROP:  00010612
!    
!        (1):    12
!        (2):    06
!        (3):    01
!        (4):    00
!    
!        (1):    12
!    RABDEF$$_FILL_3:    12
!    RAB$B_ROP1: 06
!    RAB$B_ROP2: 01
!    RAB$B_ROP3: 00
!    RAB$L_STS:  00000000
!    RAB$L_STV:  00000000
!    RAB$W_STV0: 0000
!    RAB$W_STV2: 0000
!    RAB$W_RFA
!        (1):    0000
!        (2):    0000
!        (3):    0000
!    RAB$L_RFA0: 00000000
!    RAB$W_RFA4: 0000
!    RABDEF$$_FILL_4:    0000
!    RAB$L_CTX:  00000000
!    RABDEF$$_FILL_5:    0000
!    RAB$B_RAC:  01
!    RAB$B_TMO:  00
!    RAB$W_USZ:  0000
!    RAB$W_RSZ:  0000
!    RAB$L_UBF:  00000000
!    RAB$L_RBF:  00000000
!    RAB$L_RHB:  00000000
!    RAB$L_KBF:  0012B9C4
!    RAB$L_PBF:  0012B9C4
!    RAB$B_KSZ:  00
!    RAB$B_PSZ:  00
!    RAB$B_KRF:  00
!    RAB$B_MBF:  00
!    RAB$B_MBC:  00
!    RAB$L_BKT:  00000000
!    RAB$L_DCT:  00000000
!    RAB$L_FAB:  0012BA28
!    RAB$L_XAB:  00000000
Step
!stepped to LIO$UFOPEN\%LINE 846

Listing from the DEBUGGER after $OPEN is executed:
--------------------------------------------------
ex fab,rab
!LIO$UFOPEN\FAB
!    FAB$B_BID:  03
!    FAB$B_BLN:  50
!    FAB$W_IFI:  0005
!    
!        (1):    05
!        (2):    00
!    FAB$L_FOP:  01200000
!    
!        (1):    00
!        (2):    00
!        (3):    20
!        (4):    01
!    FAB$L_STS:  00010001
!    FAB$L_STV:  000001E0
!    FAB$L_ALQ:  00000012
!    FAB$W_DEQ:  0009
!    FAB$B_FAC:  22
!    
!        (1):    22
!    FAB$B_SHR:  20
!    
!        (1):    20
!    FAB$L_CTX:  00000000
!    FAB$B_RTV:  00
!    FAB$B_ORG:  00
!    
!        (1):    00
!    FAB$B_RAT:  00
!    
!        (1):    00
!    FAB$B_RFM:  01
!    FAB$B_JOURNAL:      00
!    
!        (1):    00
!    FAB$B_RU_FACILITY:  00
!    FABDEF$$_FILL_7:    0000
!    FAB$L_XAB:  00002338
!    FAB$L_NAM:  0012BA78
!    FAB$L_FNA:  00000494
!    FAB$L_DNA:  7FF25E30
!    FAB$B_FNS:  0FF
!    FAB$B_DNS:  0A
!    FAB$W_MRS:  0064
!    FAB$L_MRN:  000003E9
!    FAB$W_BLS:  0200
!    FAB$B_BKS:  00
!    FAB$B_FSZ:  00
!    FAB$L_DEV:  1C4D4108
!    FAB$L_SDC:  1C4D4108
!    FAB$W_GBC:  0000
!    FAB$B_ACMODES:      00
!    
!        (1):    00
!    FAB$B_RCF:  00
!    
!        (1):    00
!    FABDEF$$_FILL_9:    00000000
!LIO$UFOPEN\RAB
!    RAB$B_BID:  01
!    RAB$B_BLN:  44
!    RAB$W_ISI:  0000
!    
!        (1):    00
!        (2):    00
!    RAB$L_ROP:  00010612
!    
!        (1):    12
!        (2):    06
!        (3):    01
!        (4):    00
!    
!        (1):    12
!    RABDEF$$_FILL_3:    12
!    RAB$B_ROP1: 06
!    RAB$B_ROP2: 01
!    RAB$B_ROP3: 00
!    RAB$L_STS:  00000000
!    RAB$L_STV:  00000000
!    RAB$W_STV0: 0000
!    RAB$W_STV2: 0000
!    RAB$W_RFA
!        (1):    0000
!        (2):    0000
!        (3):    0000
!    RAB$L_RFA0: 00000000
!    RAB$W_RFA4: 0000
!    RABDEF$$_FILL_4:    0000
!    RAB$L_CTX:  00000000
!    RABDEF$$_FILL_5:    0000
!    RAB$B_RAC:  01
!    RAB$B_TMO:  00
!    RAB$W_USZ:  0000
!    RAB$W_RSZ:  0000
!    RAB$L_UBF:  00000000
!    RAB$L_RBF:  00000000
!    RAB$L_RHB:  00000000
!    RAB$L_KBF:  0012B9C4
!    RAB$L_PBF:  0012B9C4
!    RAB$B_KSZ:  00
!    RAB$B_PSZ:  00
!    RAB$B_KRF:  00
!    RAB$B_MBF:  00
!    RAB$B_MBC:  00
!    RAB$L_BKT:  00000000
!    RAB$L_DCT:  00000000
!    RAB$L_FAB:  0012BA28
!    RAB$L_XAB:  00000000

==================

  +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
  ! The University of Trondheim           ! Joern Yngve Dahl-Stamnes  !
  ! The Norwegian Institute of Technology ! System Manager            !
  ! Division of Physical Electronics      !                           !
  ! N 7034 Trondheim, Norway              !                           !
  !---------------------------------------+---------------------------!
  !             dahls%vax.elab.unit.uninett@tor.nta.no                !
  !------->>>>>>>>  "t'nia stnatsnoc ,t'now selbairaV"  <<<<<<<<------!
  +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

carl@CITHEX.CALTECH.EDU (Carl J Lydick) (05/28/88)

 > I am trying to use a useropen routine when opening a file from fortran. The
 > file get open, but I can't access it. When trying to read record 1 from it,
 > I got the following error messages:
 > 
 > %FOR-E-ERRDURREA, error during read ......
 > 
 > If I remove the err=1000 in the read line (se below), I do not get the error
 > messages, but nothing is read from the file!!! Finally, if I don't use the
 > useropen routine, everything works - no problem.
 > 
 > The purpose of the useropen routine, is to get the $XABDAT, $XABPRO and
 > $XABRDT fields - and it work just fine. I have tried to change the content
 > of the fields FAB$L_FOB, FAB$B_SHR and FAB$B_RFM, but without any luck.
 > 
 > Is there anyone out there who can help me to fix this problem?

I don't know for sure (it's been a LONG time since I've done this sort of
thing), but I think there should be a call to SYS$CONNECT somewhere in your
useropen routine.   As it is, you've opened the file, but you haven't connected
to it (that, I think, is the reason you want the RAB block as one of the
parameters to the useropen routine).  Hope that if this doesn't help, it
at least doesn't lead you too far astray).

dahls%vax.elab.unit.uninett%TOR.nta.no%KL.SRI.COM%lbl%sfsu1.hepnet@LBL.GOV (05/29/88)

Received: from KL.SRI.COM by LBL.Gov with INTERNET ;
          Sat, 28 May 88 19:34:08 PDT
Received: from tor.nta.no by KL.SRI.COM with TCP; Thu 26 May 88 04:16:39-PDT
Posted-Date: 26 May 88 13:14 +0100
Received: by tor.nta.no (5.54/3.21)
	id AA07747; Thu, 26 May 88 13:19:03 +0200
Date: 26 May 88 13:14 +0100
From: J|rn Yngve Dahl-Stamnes <dahls%vax.elab.unit.uninett@TOR.nta.no>
To: <info-vax@kl.sri.com>
Message-Id: <127*dahls@vax.elab.unit.uninett>
Subject: RMS question.
 
To all RMS GURU's and WIZARD's !!
 
I am trying to use a useropen routine when opening a file from fortran. The
file get open, but I can't access it. When trying to read record 1 from it,
I got the following error messages:
 
%FOR-E-ERRDURREA, error during read ......
 
If I remove the err=1000 in the read line (se below), I do not get the error
messages, but nothing is read from the file!!! Finally, if I don't use the
useropen routine, everything works - no problem.
 
The purpose of the useropen routine, is to get the $XABDAT, $XABPRO and
$XABRDT fields - and it work just fine. I have tried to change the content
of the fields FAB$L_FOB, FAB$B_SHR and FAB$B_RFM, but without any luck.
 
Is there anyone out there who can help me to fix this problem?
 
 
Open statement:
---------------
          open (unit=lun1, file=found1, recl=25, status='old',
     &        form='unformatted', access='direct', readonly,
     &        maxrec=1001, iostat=iostat, err=1000,
     &        useropen=lio$ufopen)
 
          read (unit=lun1,rec=1,iostat=status,err=1000) record 
 
User open routine LIO$UFOPEN:
-----------------------------
      function        lio$ufopen ( fab,rab,lun )
!
      implicit none
 
      include     '($fabdef)/nolist'
      include     '($rabdef)/nolist'
      include     '($xabdatdef)/nolist'
      include     '($xabprodef)/nolist'
      include     '($xabrdtdef)/nolist'
 
      external    sys$open
      integer*4   sys$open
 
      record  /xabdatdef/     xabdat
      record  /xabprodef1/    xabpro
      record  /xabrdtdef/     xabrdt
 
      common  /lio_acc/   readonly
      common  /lio_rms/   xabdat, xabpro, xabrdt
 
      integer*4       lio$ufopen
      integer*4       lun
      integer*4       status
 
      record  /fabdef/    fab
      record  /rabdef/    rab
 
      fab.fab$b_fac = fab$m_bio .or. fab$m_get
      fab.fab$b_org = fab$c_seq
      fab.fab$b_shr = fab$m_nil
      fab.fab$l_fop = fab$m_nam
! 
      fab.fab$l_xab = %loc(xabdat)
      xabdat.xabdatdef$$_fill_4 = %loc(xabpro)    ! = xab$l_nxt, xab chain
      xabpro.xabprodef$$_fill_4 = %loc(xabrdt)    ! link address.
      xabrdt.xabrdtdef$$_fill_4 = 0               ! End of link.
!
      xabdat.xabdatdef$$_fill_1 = xab$c_dat       ! = xab$b_cod
      xabdat.xabdatdef$$_fill_2 = xab$c_datlen    ! = xab$b_bln
!
      xabpro.xabprodef$$_fill_1 = xab$c_pro       ! = xab$b_cod
      xabpro.xabprodef$$_fill_2 = xab$c_prolen    ! = xab$b_bln
!
      xabrdt.xabrdtdef$$_fill_1 = xab$c_rdt       ! = xab$b_cod
      xabrdt.xabrdtdef$$_fill_2 = xab$c_rdtlen    ! = xab$b_bln
!
      status = sys$open (fab)
!
      lio$ufopen = status
      return
      end
 
Listing from the DEBUGGER before $OPEN is executed:
---------------------------------------------------
set radix hex
ex fab,rab
!LIO$UFOPEN\FAB                
!    FAB$B_BID:  03
!    FAB$B_BLN:  50
!    FAB$W_IFI:  0000
!    
!        (1):    00
!        (2):    00
!    FAB$L_FOP:  01000000
!    
!        (1):    00
!        (2):    00
!        (3):    00
!        (4):    01
!    FAB$L_STS:  00000000
!    FAB$L_STV:  00000000
!    FAB$L_ALQ:  00000000
!    FAB$W_DEQ:  0000
!    FAB$B_FAC:  22
!    
!        (1):    22
!    FAB$B_SHR:  20
!    
!        (1):    20
!    FAB$L_CTX:  00000000
!    FAB$B_RTV:  00
!    FAB$B_ORG:  00
!    
!        (1):    00
!    FAB$B_RAT:  00
!    
!        (1):    00
!    FAB$B_RFM:  01
!    FAB$B_JOURNAL:      00
!    
!        (1):    00
!    FAB$B_RU_FACILITY:  00
!    FABDEF$$_FILL_7:    0000
!    FAB$L_XAB:  00002338
!    FAB$L_NAM:  0012BA78
!    FAB$L_FNA:  00000494
!    FAB$L_DNA:  7FF25E30
!    FAB$B_FNS:  0FF
!    FAB$B_DNS:  0A
!    FAB$W_MRS:  0064
!    FAB$L_MRN:  000003E9
!    FAB$W_BLS:  0000
!    FAB$B_BKS:  00
!    FAB$B_FSZ:  00
!    FAB$L_DEV:  1C4D4108
!    FAB$L_SDC:  1C4D4108
!    FAB$W_GBC:  0000
!    FAB$B_ACMODES:      00
!    
!        (1):    00
!    FAB$B_RCF:  00
!    
!        (1):    00
!    FABDEF$$_FILL_9:    00000000
!LIO$UFOPEN\RAB
!    RAB$B_BID:  01
!    RAB$B_BLN:  44
!    RAB$W_ISI:  0000
!    
!        (1):    00
!        (2):    00
!    RAB$L_ROP:  00010612
!    
!        (1):    12
!        (2):    06
!        (3):    01
!        (4):    00
!    
!        (1):    12
!    RABDEF$$_FILL_3:    12
!    RAB$B_ROP1: 06
!    RAB$B_ROP2: 01
!    RAB$B_ROP3: 00
!    RAB$L_STS:  00000000
!    RAB$L_STV:  00000000
!    RAB$W_STV0: 0000
!    RAB$W_STV2: 0000
!    RAB$W_RFA
!        (1):    0000
!        (2):    0000
!        (3):    0000
!    RAB$L_RFA0: 00000000
!    RAB$W_RFA4: 0000
!    RABDEF$$_FILL_4:    0000
!    RAB$L_CTX:  00000000
!    RABDEF$$_FILL_5:    0000
!    RAB$B_RAC:  01
!    RAB$B_TMO:  00
!    RAB$W_USZ:  0000
!    RAB$W_RSZ:  0000
!    RAB$L_UBF:  00000000
!    RAB$L_RBF:  00000000
!    RAB$L_RHB:  00000000
!    RAB$L_KBF:  0012B9C4
!    RAB$L_PBF:  0012B9C4
!    RAB$B_KSZ:  00
!    RAB$B_PSZ:  00
!    RAB$B_KRF:  00
!    RAB$B_MBF:  00
!    RAB$B_MBC:  00
!    RAB$L_BKT:  00000000
!    RAB$L_DCT:  00000000
!    RAB$L_FAB:  0012BA28
!    RAB$L_XAB:  00000000
Step
!stepped to LIO$UFOPEN\%LINE 846
 
Listing from the DEBUGGER after $OPEN is executed:
--------------------------------------------------
ex fab,rab
!LIO$UFOPEN\FAB
!    FAB$B_BID:  03
!    FAB$B_BLN:  50
!    FAB$W_IFI:  0005
!    
!        (1):    05
!        (2):    00
!    FAB$L_FOP:  01200000
!    
!        (1):    00
!        (2):    00
!        (3):    20
!        (4):    01
!    FAB$L_STS:  00010001
!    FAB$L_STV:  000001E0
!    FAB$L_ALQ:  00000012
!    FAB$W_DEQ:  0009
!    FAB$B_FAC:  22
!    
!        (1):    22
!    FAB$B_SHR:  20
!    
!        (1):    20
!    FAB$L_CTX:  00000000
!    FAB$B_RTV:  00
!    FAB$B_ORG:  00
!    
!        (1):    00
!    FAB$B_RAT:  00
!    
!        (1):    00
!    FAB$B_RFM:  01
!    FAB$B_JOURNAL:      00
!    
!        (1):    00
!    FAB$B_RU_FACILITY:  00
!    FABDEF$$_FILL_7:    0000
!    FAB$L_XAB:  00002338
!    FAB$L_NAM:  0012BA78
!    FAB$L_FNA:  00000494
!    FAB$L_DNA:  7FF25E30
!    FAB$B_FNS:  0FF
!    FAB$B_DNS:  0A
!    FAB$W_MRS:  0064
!    FAB$L_MRN:  000003E9
!    FAB$W_BLS:  0200
!    FAB$B_BKS:  00
!    FAB$B_FSZ:  00
!    FAB$L_DEV:  1C4D4108
!    FAB$L_SDC:  1C4D4108
!    FAB$W_GBC:  0000
!    FAB$B_ACMODES:      00
!    
!        (1):    00
!    FAB$B_RCF:  00
!    
!        (1):    00
!    FABDEF$$_FILL_9:    00000000
!LIO$UFOPEN\RAB
!    RAB$B_BID:  01
!    RAB$B_BLN:  44
!    RAB$W_ISI:  0000
!    
!        (1):    00
!        (2):    00
!    RAB$L_ROP:  00010612
!    
!        (1):    12
!        (2):    06
!        (3):    01
!        (4):    00
!    
!        (1):    12
!    RABDEF$$_FILL_3:    12
!    RAB$B_ROP1: 06
!    RAB$B_ROP2: 01
!    RAB$B_ROP3: 00
!    RAB$L_STS:  00000000
!    RAB$L_STV:  00000000
!    RAB$W_STV0: 0000
!    RAB$W_STV2: 0000
!    RAB$W_RFA
!        (1):    0000
!        (2):    0000
!        (3):    0000
!    RAB$L_RFA0: 00000000
!    RAB$W_RFA4: 0000
!    RABDEF$$_FILL_4:    0000
!    RAB$L_CTX:  00000000
!    RABDEF$$_FILL_5:    0000
!    RAB$B_RAC:  01
!    RAB$B_TMO:  00
!    RAB$W_USZ:  0000
!    RAB$W_RSZ:  0000
!    RAB$L_UBF:  00000000
!    RAB$L_RBF:  00000000
!    RAB$L_RHB:  00000000
!    RAB$L_KBF:  0012B9C4
!    RAB$L_PBF:  0012B9C4
!    RAB$B_KSZ:  00
!    RAB$B_PSZ:  00
!    RAB$B_KRF:  00
!    RAB$B_MBF:  00
!    RAB$B_MBC:  00
!    RAB$L_BKT:  00000000
!    RAB$L_DCT:  00000000
!    RAB$L_FAB:  0012BA28
!    RAB$L_XAB:  00000000
 
==================
 
  +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
  ! The University of Trondheim           ! Joern Yngve Dahl-Stamnes  !
  ! The Norwegian Institute of Technology ! System Manager            !
  ! Division of Physical Electronics      !                           !
  ! N 7034 Trondheim, Norway              !                           !
  !---------------------------------------+---------------------------!
  !             dahls%vax.elab.unit.uninett@tor.nta.no                !
  !------->>>>>>>>  "t'nia stnatsnoc ,t'now selbairaV"  <<<<<<<<------!
  +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+