DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦d11d5e8de⟧ TextFile

    Length: 2359 (0x937)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦67d8ed7b1⟧ 
            └─⟦this⟧ 
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦7cd974b21⟧ 
            └─⟦this⟧ 

TextFile

#include <stdio.h>

#include <rms.h>
#include <ssdef.h>

extern long SYS$OPEN();
extern long SYS$CREATE();
extern long SYS$CONNECT();
extern long SYS$CLOSE();
extern long SYS$GET();
extern long SYS$PUT();

int main( argc, argv )
     int	  argc;
     char	**argv;
{
    char	buffer[32256];
    int		i;

    long	status;
    struct FAB	exe_fab    = cc$rms_fab;
    struct FAB	backup_fab = cc$rms_fab;
    struct RAB	exe_rab    = cc$rms_rab;
    struct RAB	backup_rab = cc$rms_rab;

    exe_fab   .fab$l_fna = "rxi-backup.exe";
    backup_fab.fab$l_fna = "rxi-backup.bck";
    exe_fab   .fab$b_fns = strlen(exe_fab   .fab$l_fna);
    backup_fab.fab$b_fns = strlen(backup_fab.fab$l_fna);
    exe_fab   .fab$b_fac = FAB$M_GET;
    backup_fab.fab$b_fac = FAB$M_PUT;
    backup_fab.fab$b_rfm = FAB$C_FIX;
    backup_fab.fab$w_mrs = 32256;

    exe_rab   .rab$l_fab = &exe_fab;
    backup_rab.rab$l_fab = &backup_fab;

    status = SYS$OPEN( &exe_fab, NULL, NULL );
    if (status != RMS$_SUC) {
	fprintf( stderr, "RMS $OPEN failure for exe file.\n" );
	exit( status );
    }

    status = SYS$CREATE( &backup_fab, NULL, NULL );
    if (status != RMS$_SUC) {
	fprintf( stderr, "RMS $OPEN failure for backup file.\n" );
	exit( status );
    }

    status = SYS$CONNECT( &exe_rab, NULL, NULL );
    if (status != RMS$_SUC) {
	fprintf( stderr, "RMS $CONNECT failure for exe file.\n" );
	exit( status );
    }

    status = SYS$CONNECT( &backup_rab, NULL, NULL );
    if (status != RMS$_SUC) {
	fprintf( stderr, "RMS $CONNECT failure for backup file.\n" );
	exit( status );
    }

    fprintf( stderr, "Files open; " );
    for (;;) {
	for (i = 0; i < 32256; i += 512) {
	    exe_rab.rab$l_ubf = &buffer[i];
	    exe_rab.rab$w_usz = 512;
	    status = SYS$GET( &exe_rab, NULL, NULL );
	    if (status != RMS$_SUC) {
		if (status == RMS$_EOF) { break; }
		fprintf( stderr, "RMS $GET failure for exe file.\n" );
		exit( status );
	    }
	}
	if (status == RMS$_EOF) { break; }
	backup_rab.rab$l_rbf = &buffer[0];
	backup_rab.rab$w_rsz = 32256;
	status = SYS$PUT( &backup_rab, NULL, NULL );
	if (status != RMS$_SUC) {
	    fprintf( stderr, "RMS $PUT failure for backup file.\n" );
	    exit( status );
	}
	fprintf( stderr, "#" );
    }
    fprintf( stderr, "\n" );

    (void)SYS$CLOSE( &exe_fab, NULL, NULL );
    (void)SYS$CLOSE( &backup_fab,    NULL, NULL );

} /* main *