PASE環境

5. Perl サンプル・ソース

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のソースの雰囲気でもわかって頂ければ幸いである。

 ろ