From:	SMTP%"carl@SOL1.GPS.CALTECH.EDU" 23-NOV-1994 08:39:11.67
To:	EVERHART
CC:	
Subj:	Re: HELP - File Headers Fill up Disk

From: carl@SOL1.GPS.CALTECH.EDU (Carl J Lydick)
x-newsgroups: comp.os.vms
subject: Re: HELP - File Headers Fill up Disk
date: 22 Nov 1994 21:33:30 GMT
organization: HST Wide Field/Planetary Camera
lines: 67
distribution: world
message-id: <3ato3a$gip@gap.cco.caltech.edu>
Reply-To: carl@SOL1.GPS.CALTECH.EDU
nntp-posting-host: sol1.gps.caltech.edu
To: Info-VAX@Mvb.Saic.Com
x-gateway-source-info: USENET

In article <3aqjql$kqf@israel-info.datasrv.co.il>, ophir@zeus.datasrv.co.il (Ophir Polotsky (SoftLink)) writes:
=Well, that is right, but the problem is when you have only one disk
=on your system, and you use it for both System and Data...
=Then, you can not use the INIT/HEADER= command, since you are not
=the one who INIT it....

That can be dealt with if your system has enough memory.  No system need have
only one disk:  You can always create a pseudodisk (MCR SYSGEN CONNECT
PDA0/NOADAPTER), then format it (code to format a pseudodisk enclosed below),
initialize and mount it, create a standalone backup kit on it, then perform
four backup operations:
	1)  Backup of the pseudodisk to tape;
	2)  A standalone BACKUP of your system disk to tape;
	3)  A standalone BACKUP/INIT using the backup of the pseudodisk;
	4)  A standalone BACKUP/NOINIT using the backup of your system disk.
Note:  This technique will work even if you don't have a bootable tape drive. 
You can boot standalone backup from your system disk, back up the system disk
to tape, restore the backup of the pseudodisk to your system disk; then reboot
standalone backup from your system disk and then restore the actual backup of
your system disk.

/* FORMAT_PD.C -- format a pseudodisk */
#include descrip
#include iodef
#include stdio

#define ckstat(x) if(((stat = x) & 7) != 1) exit(stat)

main(int nargs, char **args)
{	long size, stat;
	char buff[32], *sptr;
	$DESCRIPTOR(dev, buff);
	short iosb[4], chan;
 
	buff[31] = '\0';
	if(--nargs > 0)
		sptr = *++args;
	else
	{	printf("Size: ");
		fgets(buff, 31, stdin);
		sptr = buff;
	}
	sscanf(sptr,"%d", &size);
	if(--nargs > 0)
		dev.dsc$a_pointer = *++args;
	else
	{	printf("Device: ");
		fgets(buff, 31, stdin);
		dev.dsc$a_pointer = buff;
	}
	dev.dsc$w_length = strlen(dev.dsc$a_pointer);
	while(dev.dsc$a_pointer[dev.dsc$w_length-1] == '\n')
		dev.dsc$w_length--;
	ckstat(SYS$ASSIGN(&dev, &chan, 0, 0));
	ckstat(SYS$QIOW(0,chan, IO$_PACKACK, iosb, 0, 0, 0, 0, 0, 0, 0, 0));
	ckstat(iosb[0]);
	ckstat(SYS$QIOW(0,chan, IO$_FORMAT, iosb, 0, 0, size, 0, 0, 0, 0, 0));
	exit(iosb[0]);
}
--------------------------------------------------------------------------------
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.