Searching for more information on Starlet.flush, starlet.rewind, & starlet.connect

Post Reply

Topic author
miiichael410
Visitor
Posts: 1
Joined: Wed Jul 19, 2023 9:40 am
Reputation: 0
Status: Offline

Searching for more information on Starlet.flush, starlet.rewind, & starlet.connect

Post by miiichael410 » Wed Jul 19, 2023 9:59 am

I have searched the internet for the Ada spec package for Starlet and I have not found a document that lists it or gives some information about things like Starlet.Rab_Type_Init or Starlet.Rab_C_Seq. I am not familiar with VMS and pretty new to the Ada language, but I need to work on a legacy system and more information about Starlet would help me in figuring out the current systems functionality. Also, I specifically am working with indexed, sequential, and relative files through Starlet. There are some places where people use indexed files with the Indexed_Io package, but not in this instance I am working on currently. Anyone who could point me in the right direction would be a big help.

-Thanks for the help!


sms
Master
Posts: 349
Joined: Fri Aug 21, 2020 5:18 pm
Reputation: 0
Status: Offline

Re: Searching for more information on Starlet.flush, starlet.rewind, & starlet.connect

Post by sms » Wed Jul 19, 2023 11:41 am

Code: Select all

> [...] Starlet.Rab_Type_Init or Starlet.Rab_C_Seq. [...]

   While you wait for someone who knows something, here's some
guesswork...

   In C it's common to declare various RMS structures like the FAB and
RAB, and then initialize them with some basic/popular content, so:

#include <rms.h>                /* <fabdef.h>, <namdef.h>, <rabdef.h>, ... */
[...]
struct FAB my_fab;              /* File Access Block */
struct RAB my_rab;              /* Record Access Block */
[...]
my_rab = cc$rms_rab;            /* Initialize RAB. */
my_fab = cc$rms_fab;            /* Initialize FAB. */
my_rab.rab$l_fab = &my_fab;     /* Point RAB to FAB. */

   The cc$rms_XXX things are predefined, and I don't recall ever seeing
what's in one.

   I wouldn't bet a nickel on it, but if your code were creating a
STARLET.RAB_TYPE structure, and then setting it to whatever
Starlet.Rab_Type_Init might be, then my uneducated guess would be that
you're looking at the Ada equivalent of this kind of thing.

   As for Starlet.Rab_C_Seq, depending on the invisible details, I might
guess that it corresponds to one of these constants (from <rabdef.h>):

#define RAB$C_SEQ 0                     /* sequential access                */
#define RAB$C_KEY 1                     /* keyed access                     */
#define RAB$C_RFA 2                     /* rfa access                       */
#define RAB$C_STM 3                     /* stream access (valid only for sequential org) */

(The "$" -> "_" translation looks right.)

   It may be that this kind of "documentation" is confined to the text
libraries where the C header files (or other-language equivalents) are
supplied, and might be hard to obtain without having a C (or whatever)
compiler installed on a VMS system.

   For more details on the I/O details, you might try the RMS manual:
      https://docs.vmssoftware.com/docs/vsi-openvms-record-management-services-reference-manual.pdf


Edit:

> [...] Starlet.flush, starlet.rewind, & starlet.connect

   I'd guess that these are the system services, $FLUSH, $REWIND, and
$CONNECT.  See the RMS manual.

> [...] people use indexed files [...]

   That would be tougher if your target OS doesn't do that.  Plain-old
sequential I/O on VMS requires enough learning to satisfy my desire for
confusion.  It's not UNIX stream-of-bytes.
Last edited by sms on Wed Jul 19, 2023 11:57 am, edited 1 time in total.

User avatar

imiller
Master
Posts: 147
Joined: Fri Jun 28, 2019 8:45 am
Reputation: 0
Location: South Tyneside, UK
Status: Offline
Contact:

Re: Searching for more information on Starlet.flush, starlet.rewind, & starlet.connect

Post by imiller » Fri Jul 21, 2023 6:38 am

as those ADA packages are wrappers around the Record Management Services (RMS) then you may find the RMS manual useful https://docs.vmssoftware.com/vsi-openvm ... ce-manual/
and the Guide to OpenVMS File Applications for background https://docs.vmssoftware.com/guide-to-o ... lications/

The DEC ADA Runtime Reference Manual is here https://docs.vmssoftware.com/docs/ada_rtr.pdf
Last edited by imiller on Fri Jul 21, 2023 6:40 am, edited 1 time in total.
Ian Miller
[ personal opinion only. usual disclaimers apply. Do not taunt happy fun ball ].

Post Reply