[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