小山です。自己レスの形にします。


> なんとオープンリールの磁気テープから
> unix ----> pc へ

捕捉として unixから大型機へ、スタンダードラベルの磁気テープを
作成する方法として perlと bashの組み合わせで
こんなスクリプトを使っています。
( ebcdic等へのコード変換は、できあいのツールをつかって
変換しています。富士通JEFコード等の問題があるからです。
unix上で ebcdicの状態にしてそのあと
磁気テープにします。)

ヘッダー作成
#!/usr/local/bin/perl
$\="n";
@wtime=localtime(time);
printf "VOL1%06s0\n",$ARGV[0] if($ARGV[4] == 1);  # ボリュウム通番
printf "HDR1%-17s",uc($ARGV[1]);    # file name
printf "%06s%04s%04s%4s%2s%3d%03d",$ARGV[0],"0001",$ARGV[4]," "," ",$wtime[5],$wtime[7]+1;
printf "%06s%01s%06s%-13s\n"," 00000","0","000000","G5CS";
printf "HDR2F%05d%05d%1s%1s%19s%1s%1s%1s\n",$ARGV[2]*$ARGV[3],$ARGV[2],"3","0","","","","B";


EOF作成
#!/usr/local/bin/perl
$\="n";
open(in,$ARGV[1]);
while(<in>){
    $cnt++;
}
close(in);
@wtime=localtime(time);
$blkcnt= ($cnt / $ARGV[3]) + 0.9;
printf "EOF1%-17s",uc($ARGV[1]);    # file name
printf "%06s%04s%04s%4s%2s%3d%03d",$ARGV[0],"0001",$ARGV[4]," "," ",$wtime[5],$wtime[7]+1;
printf "%06s%01s%06d%-13s\n"," 00000","0",$blkcnt,"G5CS";
printf "EOF2F%05d%05d%1s%1s%19s%1s%1s%1s\n",$ARGV[2]*$ARGV[3],$ARGV[2],"3","0","","","","B";

テープ作成
#!/usr/local/bin/bash

cd /tmp
mt -f /dev/tape1 rewind
# volume id
vol="000000"


function tape_proc()
{
    declare -i bl=rl*bf
    echo "filename : $dsn"
    echo "rl       : $rl"
    echo "bf       : $bf"
    echo "bl       : $bl"
    echo "pos      : $pos"
#   header eof 
    tapehd.pl $vol $dsn $rl $bf $pos      > hd.txt
    tapeeof.pl $vol $dsn $rl $bf $pos     > end.txt
#   tape output
#   ファイルラベルのみ ebcdic変換
#   データは変換ずみのファイルを使用
    dd if=hd.txt of=/dev/tape1 obs=80 cbs=80 conv=ebcdic
    dd if=$dsn of=/dev/tape1 obs=$bl cbs=$rl conv=block
    dd if=end.txt of=/dev/tape1 obs=80 cbs=80 conv=ebcdic
}



# file1
dsn=ce53
rl=512
bf=10
pos=1
tape_proc

# file2
dsn=ce15
rl=512
bf=10
pos=2
tape_proc




最近はもっと工夫していますが(初期のバージョンです。)
小山英夫 : fa8h-kym / asahi-net.or.jp