[Info-vax] 64-bit (was Re: New CEO of VMS Software)

Dave Froble davef at tsoft-inc.com
Sat Jan 13 01:18:00 EST 2024


On 1/12/2024 7:11 PM, Arne Vajhøj wrote:
> On 1/12/2024 6:46 PM, Dave Froble wrote:
>> On 1/12/2024 3:22 PM, Arne Vajhøj wrote:
>>> On 1/12/2024 2:57 PM, Dave Froble wrote:
>>>> On 1/12/2024 7:23 AM, Arne Vajhøj wrote:
>>>>> On 1/12/2024 12:08 AM, Dave Froble wrote:
>>>>>> On 1/11/2024 3:48 PM, Arne Vajhøj wrote:
>>>>>>> On 1/11/2024 1:17 PM, Simon Clubley wrote:
>>>>>>>> On 2024-01-11, Dave Froble <davef at tsoft-inc.com> wrote:
>>>>>>>>> If RMS doesn't fit your requirements, then don't use it.
>>>>>>>>
>>>>>>>> Everyone uses RMS, even if it hidden from you by the language. The RMS
>>>>>>>> references are still in the executable you create however.
>>>>>>>
>>>>>>> In practice yes.
>>>>>>>
>>>>>>> In theory one can use SYS$QIO(W) for all IO and bypass RMS. But
>>>>>>> it is very cumbersome (especially if one cannot use RMS for stuff
>>>>>>> like finding IFI).
>>>>>>
>>>>>> And if one is using a database product that has nothing to do with RMS ???
>>>>>
>>>>> I would still expect that database product to use RMS to open
>>>>> the database file even if the actual IO is done by
>>>>> SYS$QIO(W) / SYS$IO_PERFORM(W) or via memory mapped file.
>>>>
>>>> Your expectation would be wrong.
>>>
>>> It happens frequently.
>>>
>>>> File opens without RMS use QIO to open a file.
>>>
>>> How does it get the FID?
>>
>> I'll post pieces of code to keep this short, well, relatively ..
>
>> 300$:   MOVAB   WRK_QIO,R9              ; Set $QIO parameter block address
>>          MOVAQ   WRK_Q_IOSB,QIO$_IOSB(R9) ; I/O status block
>>          MOVZWL  WRK_W_VMSCHN,QIO$_CHAN(R9); Set VMS channel number
>>          MOVZWL  #<IO$_ACCESS!IO$M_ACCESS>,QIO$_FUNC(R9)
>>          MOVAQ   WRK_Q_FIBDSC,QIO$_P1(R9)        ; FIB descriptor address
>>          MOVAQ   WRK_Q_FILDSC,QIO$_P2(R9)        ; Filename specification descrip
>> tor address
>>          CLRQ    QIO$_P3(R9)             ; Clear (p3,p4)
>>          MOVAB   WRK_ATRLST,QIO$_P5(R9)  ; Attributes requested
>> ;
>> ;       Set-up the FIB
>> ;
>>          MOVAB   WRK_FIB,R6              ; Base of FIB
>>          CLRQ    (R6)+                   ; Clear (1,2)
>>          CLRQ    (R6)+                   ; (3,4)
>>          CLRQ    (R6)+                   ; (5,6)
>>          CLRQ    (R6)+                   ; (7,8)
>>          CLRQ    (R6)+                   ; (9,10)
>>          CLRQ    (R6)                    ; (11,12)
>>          MOVAB   WRK_FIB,R6              ; Base of FIB
>>          MOVL    R6,WRK_Q_FIBDSC+DSC$A_POINTER
>>          MOVW    #<12*4>,WRK_Q_FIBDSC+DSC$W_LENGTH
>>          MOVZWL  TBL_ACCTL[R4],FIB$L_ACCTL(R6)
>>          MOVL    NAM$W_DID(R8),FIB$W_DID(R6)
>>          MOVW    NAM$W_DID+4(R8),FIB$W_DID+4(R6)
>>
>> ---
>>
>> ;
>> 700$:   $QIOW_G (R9)                    ; Issue the $QIO
>
>> Ok, that's just snips.  You'd need the entire sources to actually follow the
>> details.  But, the thing is, no part of RMS was used to open the file.
>>
>>> I usually do the SYS$OPEN, grab the FID from the NAM block,
>>> SYS$CLOSE and then do SYS$QIOW with IO$_ACCESS | IO$M_ACCESS.
>
> You know something I don't.
>
> I have grabbed the FID from NAM and used that to access
> the file for like 35 years.
>
> And now I see that you just specify DID in FIB and give
> filename as P2.
>
> With the point being that SYS$PARSE return actual DID and
> a zero FID in NAM while SYS$OPEN return both DID and FID
> in NAM.
>
> Clever.
>
> Arne

Credit where credit is due.  A friend named Ben Carter did that piece.

-- 
David Froble                       Tel: 724-529-0450
Dave Froble Enterprises, Inc.      E-Mail: davef at tsoft-inc.com
DFE Ultralights, Inc.
170 Grimplin Road
Vanderbilt, PA  15486



More information about the Info-vax mailing list