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
>========================================================================