Article 136754 of comp.os.vms:
Path: nntpd.lkg.dec.com!crl.dec.com!crl.dec.com!bloom-beacon.mit.edu!apollo.hp.com!lf.hp.com!news.dtc.hp.com!col.hp.com!usenet.eel.ufl.edu!news.ultranet.com!zombie.ncsc.mil!news.mathworks.com!newsfeed.internetmci.com!swrinde!ihnp4.ucsd.edu!news.cerf.net!nntp-server.caltech.edu!SOL1.GPS.CALTECH.EDU!CARL
From: carl@SOL1.GPS.CALTECH.EDU (Carl J Lydick)
Newsgroups: comp.os.vms
Subject: Re: New User Help
Date: 24 Dec 1995 01:05:22 GMT
Organization: HST Wide Field/Planetary Camera
Lines: 76
Distribution: world
Message-ID: <4bi90i$mhf@gap.cco.caltech.edu>
References: <9512201824.AA01174@uu3.psi.com>,<149089@cup.portal.com>
Reply-To: carl@SOL1.GPS.CALTECH.EDU
NNTP-Posting-Host: sol1.gps.caltech.edu

In article <149089@cup.portal.com>, Chris_F_Chiesa@cup.portal.com writes:
=>What it really comes down to is:  What would you *do* with a remote *disk*
=>access facility?  That's what determines how much you have to "fake".  The
=>fact of the matter is, when VMS was designed, no one saw any particular use
=>for such a facility.  
=
=I wasn't aware I was *ASKING* for a remote *disk* facility per se!  All I 
=want is the ability to perform, say, a $QIO "read virtual block" operation
=to a VMS disk file which happens to reside, and to have been opened, on a
=remote node over DECnet.  

Er, I've forgotten.  WHY do you want to do that?  Why aren't you willing to use
RMS block I/O instead?  THAT is supported (provided the remote system is
running VMS), and is considerably simpler than working directly with the
ACP/QIO interface if all you want to do is read and write arbitrary blocks of a
file.  Here's an example of doing the equivalent of a READVBLK
using RMS:

#include string
#include stdio
#include rms
#define ckstat(x) if(((stat = x) & 7) != 1) SYS$EXIT(stat)

main()
{	struct FAB my_fab;
	struct RAB my_rab;
	unsigned long SYS$EXIT(), SYS$OPEN(), SYS$CLOSE(), SYS$CONNECT(), stat,
		SYS$READ();
	int i, j, k;
	char buff[512], c;

	my_fab = cc$rms_fab;
	my_fab.fab$l_fna = "0::LOGIN.COM";
	my_fab.fab$b_fns = strlen(my_fab.fab$l_fna);
	my_fab.fab$b_fac = FAB$M_GET | FAB$M_BIO;
	my_rab = cc$rms_rab;
	my_rab.rab$l_rop = RAB$M_BIO;
	my_rab.rab$l_fab = &my_fab;
	ckstat(SYS$OPEN(&my_fab));
	ckstat(SYS$CONNECT(&my_rab));
	my_rab.rab$l_ubf = buff;
	my_rab.rab$w_usz = 512;
	my_rab.rab$l_bkt = 2;
	ckstat(SYS$READ(&my_rab));
	for(i = 0; i < 32; ++i)
	{	for(j = 3; j >= 0; --j)
		{	printf(" ");
			for(k = 3; k >= 0; --k)
				printf("%02X", buff[16*i+4*j+k]);
		}
		printf(" ");
		for(j = 0; j < 16; ++j)
		{	c = buff[16*i+j];
			if((c < 32) || (c > 127))
				printf(".");
			else
				printf("%c", c);
		}
		printf(" %06X\n", 16*i);
	}
}

=Again you're somewhat outside my experience (I hesitate to say "over my head,"
=as I'm sure I could understand it with about an hour or two's fierce in-person
=arguing :-) ).  I've never used or seen MSCP, I've used but never administered
=a cluster,

In that case, you've almost certainly used MSCP without realizing it.
--------------------------------------------------------------------------------
Carl J Lydick | INTERnet: CARL@SOL1.GPS.CALTECH.EDU | NSI/HEPnet: SOL1::CARL

Disclaimer:  Hey, I understand VAXen and VMS.  That's what I get paid for.  My
understanding of astronomy is purely at the amateur level (or below).  So
unless what I'm saying is directly related to VAX/VMS, don't hold me or my
organization responsible for it.  If it IS related to VAX/VMS, you can try to
hold me responsible for it, but my organization had nothing to do with it.


