Finally, I have completely restore my old VMFPLC tapes by using a new 
version of the Pipelins REXX which has been made by Heij-san.

After some my tests, the pipelines REXX was require small changes to 
restore all files completely.  The changes has been made by Heij-san.

I really appreciate his efforts.

Here is the finel version of the Pipelines REXX to restore old VMFPLC (not 
VMFPLC2) dumped tape. 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/* MM       REXX     Decode the VMFPLC data from Minoru Massaki      */
/*                   Author: Rob van der Heij, 11 Jan 2006           */

arg outfm .                          /* Output filemode with default */
parse value outfm 'T' with outfm .

signal on error

do forever
  'peekto plch'
  if left(plch,5) <> '02'x || 'PLCH' then exit 1

  'callpipe (end \ name MM.REXX:10)',
     '\ *: ',
     '| take',
     '| spec 6.40 1',                 /* Take relevant portion       */
     '| fmtfst cdf iso',              /* .. in readable format       */
     '| dateconvert w8 iso full',     /* .. make DMSPLU happy        */
     '| var fspec | *:'

  parse var fspec fn ft fm recfm lrecl nrec blks date time

  if recfm = 'F' then fmt = 'fblock' lrecl '40'
  else fmt = 'deblock cms'

  'callpipe (end \ name MM.REXX:11)',
     '\ *:',
     '| strtolabel x02D7D3C3C8',      /* Upto PLCH again             */
     '| not chop 5',                  /* Discard prefix              */
     '|' fmt,                         /* Format as it should         */
     '| trl: take' nrec,              /* .. discard trailer          */
     '| >' fn ft outfm recfm,         /* .. and write the file       */
     '\ trl: | hole'

  address command ,
    'DMSPLU' fn ft outfm date time    /* Repair timestamp            */

end
error: return rc * ( rc <> 12 )

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

To restore the tape, command is following;

    pipe tape | mm T | cons  

 T is disk mode to restore the files.

Minoru Massaki (M*M) 

On Wed, 11 Jan 2006 11:09:31 +0100, Rob van der Heij <[EMAIL PROTECTED]> 
wrote:

>One should never challenge a plumber...
>
> RVDHEIJ  FILELIST A0  V 169  Trunc=169 Size=15 Line=1 Col=1 Alt=0
>Cmd Filename Filetype Fm Format Lrecl    Records     Blocks   Date       
Time
>    $$DISK   EXEC     T1 F         80        160          4  2/01/1980 
15:12:00
>    $UPDTE   MODULE   T1 V      13248          3          4  1/31/1980 
16:37:00
>    BYADDR   ASSEMBLE T1 F         80        210          5  5/25/1979 
22:11:00
>    BYNAME   ASSEMBLE T1 F         80        210          5  5/25/1979 
22:07:00
>    BYADDR   EXEC     T1 F         80         10          1  5/25/1979 
21:23:00
>    CARD     F5       T1 F         80       3370         66 12/18/1978 
20:42:00
>    CARD     F4       T1 F         80       2250         44 12/18/1978 
20:13:00
>    CARD     F3       T1 F         80       2210         43 12/18/1978 
19:55:00
>
>If I had left out comments (as usual) it would have been less than a
>screen, but in
>case you're interested:
>/* MM       REXX     Decode the VMFPLC data from Minoru Massaki      */
>/*                   Author: Rob van der Heij, 11 Jan 2006           */
>
>arg outfm .                          /* Output filemode with default */
>parse value outfm 'T' with outfm .
>
>signal on error
>
>do forever
>  'peekto plch'
>  if left(plch,5) <> '02'x || 'PLCH' then exit 1
>
>  'callpipe (end \ name MM.REXX:10)',
>     '\ *: ',
>     '| take',
>     '| spec 6.40 1',                 /* Take relevant portion       */
>     '| fmtfst cdf',                  /* .. in readable format       */
>     '| dateconvert 57.8 short full', /* .. make DMSPLU happy        */
>     '| var fspec | cons'
>
>  parse var fspec fn ft fm recfm lrecl nrec blks date time
>
>  if recfm = 'F' then fmt = 'fblock' lrecl
>  else fmt = 'deblock cms'
>
>  'callpipe (end \ name MM.REXX:11)',
>     '\ *:',
>     '| strtolabel x02D7D3C3C8',      /* Upto PLCH again             */
>     '| not chop 5',                  /* Discard prefix              */
>     '|' fmt,                         /* Format as it should         */
>     '| >' fn ft outfm recfm          /* .. and write the file       */
>
>  address command ,
>    'DMSPLU' fn ft outfm date time    /* Repair timestamp            */
>
>end
>error: return rc * ( rc <> 12 )
>--
>Rob van der Heij                  rvdheij @ gmail.com
>========================================================================

Reply via email to