Perlで汎用機と仲良くするための
クックブック

2011-11-26 : Kansai.pm #14 Lightning Talk

守屋 雅樹 (@gardejo)

完全アウェー

Perlで汎用機と仲良くしたい

笑顔の絶えない素敵な職場です

お約束ネタ (金融商品の重要事項説明)

上有政策、則下有対策

レシピ0: 言語処理系の導入

インストーラーの攻略方法

レシピ1: JCLの自動生成

無理ゲー

ドラクエ2 FC版を今更やる part.8 ~ハーゴン&シドー戦~ © cori95.net

ドラゴンクエストII 悪霊の神々 © 1987 Square Enix Co., Ltd.

JCLをテンプレートエンジンで自動生成する

//P[% job_name %][% test_phase %]  JOB [% group_code %],[% tso_name %],TIME=(,10),CLASS=J,MSGCLASS=S,REGION=4096K,
//             NOTIFY=&SYSUID
//*=====================================================================
//* BMUD: INTEGRATION TEST (2) - IT DRIVER (BMUD PACKAGE)
//*---------------------------------------------------------------------
[%~ PROCESS _header.jcl -%]
[%~ FOREACH branch = branches %]
//NEXTJ   EXEC NEXTK,LIB=&THIS.,JOB=&BASENAME.[% branch %]
[%~ END -%]
[%~ SWITCH development_period -%]
[%~ CASE '08'                 -%]
//LINKGO  EXEC DBLGK,PSB=PVVBMUZ1,MODE=Z,
//             KLIB1=A054, <= 08 BMUD
[%~ CASE '09'                 -%]
//LINKGO  EXEC DBLGK,PSB=PVVBMUZ1,MODE=Z,VER=V2,
//             KLIB1=B005, <= 09 BMUD
//             KLIB2=B008, <= 09 商品管理
//             KLIB3=B004, <= 09 指定日編集
[%~ CASE '10'                 -%]
//LINKGO  EXEC GBLGK,PSB=PVVBMUZ1,MODE=Z,VER=V3,
//             KLIB1=H015, <= 10 BMUD
//             KLIB2=H014, <= 10 商品管理
//             KLIB3=B004, <= 09 指定日編集(10年度も09を見る)
//             KLIB4=B005, <= 09 BMUD
[%~ END                       -%]

レシピ2: 汎用機とのデータ送受信

素直にFTPで送受信する

レシピ3: 各種データの変換

データ変換はPerlの十八番

レシピ4: ジョブの遠隔実行

Internal ReaderとMainframe Connector

Internal Reader Mainframe Connector
概要 INTRDRという擬似的なファイルへ、JCLをFTPでputする
...
QUOTE FileType=JES
PUT FOOBAR.JCL
...
MFCに特定のプロトコルで会話する (JCLの送付など)
認証 (authentication) ○ (FTPアカウント = TSOアカウント)
認可 (authorization) RACF (IBM Resource Access Control Facility)により可能
同期処理 ×?
戻り値 ジョブIDのみ ジョブログ
由来 MVS標準 IBM CrossWorlds (ビジネスプロセス統合ミドルウェア製品群)

この辺り、深くは分かりかねます(ごめんなさい)

レシピ5: GUI操作の自動化

まとめ

結論

男心と女心: とにかく結論を © 織田隼人

自動化の光と闇

金融ユー子での振る舞い方

Perl = Swiss-Army chainsaw

We ♥ Perl!

ご静聴ありがとうございました

スライド
http://gardejo.github.com/presentation/kansaipm-14/