Perl ¤ÎÎãÂê

£². £Ê£Ã£Ì¡õ¥×¥í¥°¥é¥à°ìÍ÷¤ÎºîÀ®

¡¡¥Û¥¹¥È¤«¤é£Ê£Ã£Ì¥é¥¤¥Ö¥é¥ê¤Î¥×¥í¥°¥é¥à¸¡º÷·ë²Ì¤ò£Ð£Ã¦¤ËžÁ÷¤·¡¢£Ê£Ã£ÌÊÌ¤Ë¥×¥í¥°¥é¥à°ìÍ÷¥Õ¥¡¥¤¥ë(CSV)¤òºîÀ®¤·¤Þ¤¹¡£

¡¦¥Û¥¹¥È¤Ï£É£Â£ÍÈÆÍѵ¡¤òÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£
¡¦¸¡º÷·ë²Ì¤Ï¡¢£Ô£Ó£Ï¤Î¥é¥¤¥Ö¥é¥êÊݼé¤Î¸¡º÷¥³¥Þ¥ó¥É¤Ç¥¢¥¦¥È¥×¥Ã¥È¤µ¤ì¤¿¤â¤Î¤Ç¤¹¡£

¸¡º÷¾ò·ï¤Ï¡¢



SRCHFOR 'PROGRAM'DB2 ¤ò¸¡º÷
SRCHFOR 'MEMBER'EASY ¤ò¸¡º÷
SRCHFOR 'EXEC'PGM ¤ò¸¡º÷

¡¦Å¾Á÷¤Ï£Ô£Ó£Ï¤Î¥¨¥ß¥å¥ì¡¼¥¿¤Î recieve ¥³¥Þ¥ó¥É¤« ftp ¤ÇžÁ÷¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¦Å¾Á÷»þ¡¢¥·¥Õ¥È¥¸¥£¥¹¤ËÊÑ´¹¤·¤Æ¤¯¤À¤µ¤¤¡£




¡¡1.»ÅÍÍ

¢£Æ°ºî´Ä¶­ [Windows ÈÇ] -- Windows 95/NT/98/Me/2000 Âбþ Active Perl 5.6.1.630 FreeWare (http://www2j.biglobe.ne.jp/~apollo/server/server.html)
¢£¼Â¹Ô´Ä¶­ ¡¦ºîÀ®¥â¥¸¥å¡¼¥ë: jclsel.pl ¡¦½èÍý»þ´Ö 30,000 ¹Ô¤ÎÆþÎϤǡ¡Ìó£³£°Éá¡(800mhz memory=768k) ¡¦ÆþÎÏ¥Õ¥¡¥¤¥ë rcv/jclin.out ¡¦½ÐÎÏ¥Õ¥¡¥¤¥ë csv/JCLPGM_INDEX.csv (csv ·Á¼°) ¡¦Ãæ´Ö¥Õ¥¡¥¤¥ë temp/sr1.out temp/sr2.out
¢£Æþ½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î»ÅÍÍ ¡¦ÆþÎÏ¥Õ¥¡¥¤¥ë 1 ISRSUPC - MVS/PDF FILE/LINE/WORD/BYTE/SFOR COMPARE UTILITY- ISPF FOR OS/390 2001/12/05 16.11 PAGE 1 LINE-# SOURCE SECTION SRCH DSN: BBBB.JCL.CNTL JCL0100 CONCAT#(02) ----------- STRING(S) FOUND ------------------- 6 //S010 EXEC PGM=IEFBR14,COND=(0,NE) 21 //S020 EXEC PGM=PGM0100,COND=(0,NE) 35 RUN PROGRAM(PGM350) PLAN(PGM0350) - 00210009 37 //S030 EXEC PGM=IEBGENER,REGION=4096K,COND=(0,NE) JCL0200 CONCAT#(02) ----------- STRING(S) FOUND ------------------- 1065 //UNLOAD EXEC PGM=IKJEFT01,DYNAMNBR=20 00013900 1072 //STP25130 EXEC EASYRUN,MEMBER=EASY010,SOUT=H,SUBID=BATCH, 00120000 ¡¦½ÐÎÏ¥Õ¥¡¥¤¥ë nnn jjjjjjj lib ppppppp DB 001,JCL0100 ,BBBB.JCL.CNTL,PGM0100, , 002,JCL0100 ,BBBB.JCL.CNTL,PGM0350,D, 001,JCL0200 ,BBBB.JCL.CNTL,EASY010,E,




¡¡2.¥×¥í¥°¥é¥ß¥ó¥°

»ÅÍͤˤâ¤È¤Å¤­¡¢Perl ¤Ç¥³¡¼¥Ç¥£¥ó¥°¤¹¤ë¤È¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

¥³¡¼¥Ç¥£¥ó¥°¡¡Îã
#!/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( <IN1> ) { ################################# # 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( <IN2> ) { ($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( <IN3> ) { ($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 ------------------------------------------------#




¡¡3.Ãí°Õ»ö¹à

¥Û¥¹¥È¤Î¥é¥¤¥Ö¥é¥ê¤¬£Ê£Ã£Ì¤Ç¤â£Ã£Ï£Ð£Ù¶ç¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£º÷°ú¾ðÊó¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤¬°Û¤Ê¤ë
¾ì¹ç¤Ï¡¢¤³¤ÎÆþÎÏ»ÅÍͤˤ¢¤ï¤»¤ë¤«¡¢¥«¥¹¥¿¥Þ¥¤¥º¤·¤Þ¤¹¡£

£Ê£Ã£Ì¤ÎÃæ¤Ë¤Ï¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ê¤É¡¢°ìÍ÷½ÐÎÏÂоݳ°¤Ë¤·¤¿¤¤¾ì¹ç¡¢¥½¡¼¥¹¾å¤Î
if ($_ =~ /=XXXXXX/){ $sw = 0; } ¤òÄɲä·¤Þ¤¹¡£

°ãÈ¿£Ê£Ã£Ì(PROGRAM ¥½¡¼¥¹¡¡¤Ê¤É)¤Ï¡¢¥´¥ß¤È¤·¤Æ½ÐÎϤµ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£
·ë²Ì¤«¤éºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£

º¸¥Õ¥ì¡¼¥à¤ËÈÆÍÑŪ¤Ê£Ê£Ã£Ì¡õ£Ð£Ç£Í°ìÍ÷ºîÀ®¤Î¥Ä¡¼¥ë¤¬¥À¥¦¥ó¥í¡¼¥É¤Ç¤­¤Þ¤¹¡£
°ìÅÙ¡¢¤ª»î¤·¤¯¤À¤µ¤¤¡£