Perl では流石にIBMによるデータ・ベースへのアクセス・ツールは
与えられていないがシステム・コマンドは PASE環境のPerlからでも
実行することができるのでPerlのサンプル・ソースを紹介する。
_
[/PERL/SAMPLE.PL] サンプル・ソース
# DSPLIB を実行する。
open my $fh, "-|", ('system', 'DSPLIB QTRFIL') or die "spawn failed: $!";
while (my $line = <$fh>) {
chomp $line;
# 先頭にスペースが 4 個あり、 38 桁目から数字が続くのが明細行。
if($line = m/^ [^ ]/) {
my $size = substr($line, 38, 14);
if($size = m/^[0-9 ]*$/) {
# 配列に蓄える。
push @files, { size => 0 + $size, line => $line };
}
}
# 先頭にスペースが 4 個あり、 38 桁目から数字が続くのが明細行。
if($line = m/^ [^ ]/) {
my $size = substr($line, 38, 14);
if($size = m/^[0-9 ]*$/) {
# 配列に蓄える。
push @files, { size => 0 + $size, line => $line };
}
}
}
close $fh;
# オブジェクト・サイズでソートする。
@files = sort { $b->{size} <=> $a->{size} } @files;
# 順番に表示する。
for my $rec (@files) {
print $rec->{line}, "n";
}
[サンプルの実行]
いつもの CALL QP2TERM でPASE環境を呼び出してから
PERL /PERL/SAMPLE.PL
で実行すると次のような結果が表示される。
_
[解説]
これは
‘system’, ‘DSPLIB QTRFIL’
のシステム関数によってライブラリーQTRFILをDSPLIB QTRFILによって出力した結果を
表示している。Perlのソースの雰囲気でもわかって頂ければ幸いである。
ろ
