|
#!/usr/local/bin/perl
#######################################################################
# jclsel.pl : Active Perl
# Copyright(C)2002 Sannomiya , All Rights Reserved.
#######################################################################
#
# EXEC PGM=XXXXXX & PROGRAM RUN(XXXXXXX) MEMBER=¡¡¥¿¥¤¥×ÍÑ
# STEP1 : JCL ¤È¤½¤ÎJCL Æâ¤Î¥×¥í¥°¥é¥à¤âÈ´¤½Ð¤·¤Æ¡¢ÂФǽÐÎϤ¹¤ë
# ÉÔÍ×¤Ê¥×¥í¥°¥é¥à¤Ï¥«¥Ã¥È¤·¤Þ¤¹¡ÊÄɲᢺï½ü²Äǽ¡Ë
# Ϣ³£Ð£Ç£Í¤Î½ÅÊ£¤ò¥«¥Ã¥È¤·¤Þ¤¹
# ¥³¥á¥ó¥È¤ÎJCL¡¡¤Î¥³¥á¥ó¥È¡¡//* ¤â¥«¥Ã¥È¤·¤Þ¤¹
# STEP2 : 5޶Ž×ŽÑÌܰʹߤǥ½¡¼¥È¤·¡¢½ÅÊ£JCL&PGM¤ò¥«¥Ã¥È¤¹¤ë
# STEP3 : °ìÍ÷ɽÊÔ½¸½ÐÎÏ
# (½êÍ×»þ´Ö¡§£µËü¹Ô¤Ç£³£µÉà /800mhz memory=768k)
#######################################################################
#
# ÍúÎò
# 2002.03.01 ¿·µ¬ºîÀ® Ver 1.00
#
#######################################################################
#¢£ÀßÄêÃÍ
#######################################################################
$JCPINDEX = '/usrown/make/csv/JCLPGM_INDEX.csv';
#######################################################################
$save = '%%%%%%%%'; # ½ÅÊ£¥Á¥§¥Ã¥¯Íѽé´üVALUE
$cnt = 0;
##STEP1################################################################
# jclin.out -> jclsel_sr1.out #
##STEP1################################################################
open(IN1,"< /usrown/rcv/jclin.out"); # ÆþÎÏ(HOST¤Î¥µ¡¼¥Á·ë²Ì)
open(SR1,"| sort /+5 > temp/jclsel_sr1.out"); # ½ÐÎÏ(5 byteÌܰʹßsort)
while( ) {
#################################
# 1.ÉÔÍ× line ¤Î¡¡½èÍý #
#################################
$sw = 1;
# °Ê²¼¤ÎPGM=XXXXXX¤Ï½ÐÎÏÂоݳ°¤Ç¤¹¡£
if ($_ =~ /=LINE-#/){ $sw = 0; }
if ($_ =~ /=CJ0BS/){ $sw = 0; }
if ($_ =~ /=AMBLIST/){ $sw = 0; }
if ($_ =~ /=ASMA90/){ $sw = 0; }
if ($_ =~ /=CICSPARS/){ $sw = 0; }
if ($_ =~ /=DBYGO/){ $sw = 0; }
if ($_ =~ /=DSNTIAUL/){ $sw = 0; }
if ($_ =~ /\(DSNTIAUL/){ $sw = 0; }
if ($_ =~ /=DSNTIAD/){ $sw = 0; }
if ($_ =~ /\(DSNTIAD/){ $sw = 0; }
if ($_ =~ /=FTP/){ $sw = 0; }
if ($_ =~ /=ICEMAN/){ $sw = 0; }
if ($_ =~ /=IDCAMS/){ $sw = 0; }
if ($_ =~ /=IEBCOMPR/){ $sw = 0; }
if ($_ =~ /=IEBDG/){ $sw = 0; }
if ($_ =~ /=IEFBR14/){ $sw = 0; }
if ($_ =~ /=IEHLIST/){ $sw = 0; }
if ($_ =~ /=ISRSUPC/){ $sw = 0; }
if ($_ =~ /=IKJEFT01/){ $sw = 0; }
if ($_ =~ /=IEBGENER/){ $sw = 0; }
if ($_ =~ /=IEBCOPY/){ $sw = 0; }
if ($_ =~ /=IEBPTPCH/){ $sw = 0; }
if ($_ =~ /=IEFBBR14/){ $sw = 0; }
if ($_ =~ /=IEFACTRT/){ $sw = 0; }
if ($_ =~ /=IEHINITT/){ $sw = 0; }
if ($_ =~ /=IEWL/){ $sw = 0; }
if ($_ =~ /=JDJDUMMY/){ $sw = 0; }
if ($_ =~ /=SIMPLEX/){ $sw = 0; }
if ($_ =~ /=SORT/){ $sw = 0; }
if ($_ =~ /\/\/\*/){ $sw = 0; } # ¥³¥á¥ó¥È¹Ô
#################################
# 2.JCL name line ¤Î¡¡½èÍý #
#################################
# LINE-# SOURCE SECTION SRCH DSN: BBBB.JCL.CNTL
if ($_ =~ /SRCH DSN:/){ # LIB NAME
chop($_); # ²þ¹Ô¥«¥Ã¥È
($fil1,$lib) = split(/: /,$_,2); # 2 ¤Ä¤ËʬΥ
$libname = $lib; # lib ¼èÆÀ
}
#################################
# 3.JCL member line ¤Î¡¡½èÍý #
#################################
# JCL0100 CONCAT#(03) ----------- STRING(S) FOUND -------------------
#0123456789
if ($_ =~ /STRING/){ # JCL MEMBER
$sw = 0;
$pseq = 0;
$jcl = substr($_,2,9);
$jcl2 = $jcl ;
}
#################################
# 4.PGM member line ¤Î¡¡½èÍý #
#################################
if ($sw == 1){ # ÂоÝPGM¥á¥ó¥Ð¡¼Ì¾¤Î¤È¤
# 34 RUN PROGRAM(PGM0350) PLAN(PGM0350) -
$DB2 = ' '; # NOT DB2
if ($_ =~ / PROGRAM\(/){ # DB2 ¤òPGM=XXXXXX¤Ë¤¹¤ë
$DB2 = 'D';
($dbkey, $dbvalue) = split(/PROGRAM\(/,$_,2);
($dbkey2, $dbvalue2) = split(/\) /,$dbvalue,2);
$_ = 'PGM=' . $dbkey2 . "\n";
}
# 34 MEMBER=EASY010 -
if ($_ =~ /MEMBER\=/){ # EAZY ¤òPGM=XXXXXX¤Ë¤¹¤ë
$DB2 = 'E';
($dbkey, $dbvalue) = split(/MEMBER\=/,$_,2);
$_ = 'PGM=' . $dbvalue ;
}
($key, $value) = split(/=/,$_,2);
if ($key =~ /PGM/){ # DB2,EAZY,PGM¥á¥ó¥Ð¡¼È´½Ð
if ($value =~ /,/){ # PGM=XXXXXXX,..¥«¥ó¥Þ°Ê¹ß½ü³°
($key2, $gomi) = split(/,/,$value,2);
}
elsif ($value =~ / /){ # PGM=XXXXXXX¢¤ ¤Ï¶õÇò°Ê¹ß½ü³°
($key2, $gomi) = split(/ /,$value,2);
}
else {
# PGM=XXXXXXX²þ¹Ô¤Î²þ¹Ô¤ò¥«¥Ã¥È
($key2, $gomi) = split(/\n/,$value,2);
}
#################################
# 5.½ÐÎÏÊÔ½¸¡¡½èÍý #
#################################
# ½ÐÎÏÎã¡¡¢Í nnn,JCL0100 ,BBBB.JCL.CNTL,PGM0350,D
$pgm = $jcl2 . ',' . $libname; # YZP16401 ,A
$pgm = $pgm . ',' . $key2; # ZP16401 ,A,YCBZBB3
$pgm = $pgm . ',' . $DB2; # ZP16401 ,A,YCBZBB3,D
$chkdat = $pgm; # ½ÅÊ£¥Ç¡¼¥¿¥»¡¼¥Ö
if ($key2 =~ /'/){
$dum = 1;
}else{
## JCL/PGM½ç¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢¤³¤Î½èÍý¸å¡¢SORT¤·¤Æ(ºÇ½é¤Î¥«¥ó¥Þ¤Þ¤Ç¤ÎSEQ¤ò¸«¤Ê¤¤)
## ¤Ç½Åʣʬ¤ò¥«¥Ã¥È¤·¤Þ¤¹¡£
## ¤³¤³¤Ç¤Ï¡¢Ï¢Â³¤·¤ÆÆ±°ìPG¤ò½ÐÎϤ·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤À¤±¤Ç¤¹¡£
if ("$chkdat" ne "$save") { # ½ÅÊ£¥«¥Ã¥È
$save = "$chkdat" ;
$pseq = $pseq + 1;
###---- program seq no set -----------------------------------------------#
if ($pseq < 10){ # 1 --> 001
$pgm = '00' . $pseq . ',' . $pgm ;
}
elsif ($pseq < 100){ # 10 --> 010
$pgm = '0' . $pseq . ',' . $pgm ;
}
else { # 100 --> 100
$pgm = $pseq . ',' . $pgm ;
}
###-----------------------------------------------------------------------#
$pgm = $pgm . ',' . "\n"; # ²þ¹Ô
print SR1 $pgm ;
}
}
}
}
}
close(IN1); # while ¤ÎÁàºî¸å ¤ËIN1 ¤òÊĤ¸¤ë¡£
close(SR1); # SR1 ¤âÊĤ¸¤ë¡£
##STEP2##################################################################
# jclsel_sr1.out -> | sort -> jclsel_sr2.out #
##STEP2##################################################################
#################################
# 6.½ÅÊ£¥«¥Ã¥È #
#################################
open(IN2,"< temp/jclsel_sr1.out"); # ¥½¡¼¥È¸å¤Î¥Õ¥¡¥¤¥ë¤òÆþÎÏ
open(SR2,"| sort > temp/jclsel_sr2.out") ; # > ½ÐÎÏ (csv ·Á¼°)
while( ) {
($seq, $chkdat) = split(/\,/,$_,2); # ºÇ½é¤Î¥«¥ó¥Þ¤ÇʬΥ
if ("$chkdat" ne "$save") {
$save = "$chkdat" ;
($no, $jcl, $lib, $pgm, $db2, $name) = split(/\,/,$_,6);
$rec = $jcl . ',' . $lib . ',' . $no;
$rec = $rec . ',' . $pgm . ',' . $db2 . ',' . $name;
print SR2 $rec ; # SR2¤Ë $_ ¤ò½ÐÎÏ¡£
}
}
close(IN2); # IN ¤âÊĤ¸¤ë¡£
close(SR2); # while ¤ÎÁàºî¸å ¤Ë OUT ¤òÊĤ¸¤ë¡£
##STEP3##################################################################
## jclsel_sr2.out -> $JCINDEX #
##STEP3##################################################################
#################################
# 7.ÊÔ½¸ #
#################################
open(IN3,"< temp/jclsel_sr2.out"); # ¥½¡¼¥È¸å¤Î¥Õ¥¡¥¤¥ë¤òÆþÎÏ
open(OUT,"> $JCPINDEX"); # > ½ÐÎÏ (csv ·Á¼°)
$rec = 'No' . ',JCL NAME' . ',LIB';
$rec = $rec . ',SEQ' . ',PGM-ID' . ',DB2' . ',̾¾Î'. "\n";
print OUT $rec ;
while( ) {
($jcl, $lib, $no, $pgm, $db2, $name) = split(/\,/,$_,6);
$cnt = $cnt + 1;
$rec = $cnt . ',' . $jcl . ',' . $lib;
$rec = $rec . ',' . $no . ',' . $pgm . ',' . $db2 . ',' . $name;
print OUT $rec ; # OUT ¤Ë $_ ¤ò½ÐÎÏ¡£
}
close (IN3); # IN ¤âÊĤ¸¤ë¡£
close(OUT); # while ¤ÎÁàºî¸å ¤Ë OUT ¤òÊĤ¸¤ë¡£
#--------- End of Script ------------------------------------------------#
|