From 640932b6453fb73fc8bbbdb914d78a0fffea3c47 Mon Sep 17 00:00:00 2001 From: qiuqiuqiu Date: Thu, 25 Jun 2026 23:36:31 +0800 Subject: [PATCH] Add Subsystem A (KIN01INP/KIN02UPD/KIN03EXP) to production/ --- production/.gitignore | 11 + production/README.md | 56 ++ production/bin/KIN01INP.exe | Bin 0 -> 162871 bytes production/bin/KIN02UPD.exe | Bin 0 -> 157545 bytes production/bin/KIN03EXP.exe | Bin 0 -> 164890 bytes production/bin/SUB01DAT.dll | Bin 0 -> 106354 bytes production/bin/SUB02MSG.dll | Bin 0 -> 107595 bytes production/bin/SUB03END.dll | Bin 0 -> 106324 bytes production/bin/SUB04CHK.dll | Bin 0 -> 116489 bytes production/bin/SUB05TIM.dll | Bin 0 -> 110532 bytes production/bin/ZAN01CHK.exe | Bin 0 -> 163870 bytes production/bin/ZAN02CHK.exe | Bin 0 -> 154048 bytes production/bin/ZAN03CHK.exe | Bin 0 -> 156654 bytes production/bin/ZAN04MAT.exe | Bin 0 -> 157352 bytes production/bin/ZAN05CAL.exe | Bin 0 -> 157206 bytes production/bin/ZAN06UPD.exe | Bin 0 -> 171482 bytes production/cpy/ZAN01REC.cpy | 11 + production/cpy/ZAN02REC.cpy | 12 + production/cpy/ZAN03REC.cpy | 11 + production/cpy/ZAN04REC.cpy | 5 + production/cpy/ZAN05REC.cpy | 5 + production/cpy/ZANCHKAC.cpy | 5 + production/cpy/ZANDATAC.cpy | 4 + production/cpy/ZANENDAC.cpy | 3 + production/cpy/ZANMSGAC.cpy | 13 + production/cpy/ZANTIMAC.cpy | 5 + production/ddl/schema_kin.sql | 97 +++ production/ddl/schema_zan.sql | 31 + ...暇管理システム_設計書(サブシステムA).md | 787 +++++++++++++++++ ...計管理システム_設計書(サブシステムB).md | 817 ++++++++++++++++++ production/src/KIN01INP.cbl | 594 +++++++++++++ production/src/KIN02UPD.cbl | 439 ++++++++++ production/src/KIN03EXP.cbl | 511 +++++++++++ production/src/ZAN01CHK.cbl | 499 +++++++++++ production/src/ZAN02CHK.cbl | 360 ++++++++ production/src/ZAN03CHK.cbl | 466 ++++++++++ production/src/ZAN04MAT.cbl | 403 +++++++++ production/src/ZAN05CAL.cbl | 390 +++++++++ production/src/ZAN06UPD.cbl | 683 +++++++++++++++ production/sub/SUB01DAT.cbl | 57 ++ production/sub/SUB02MSG.cbl | 76 ++ production/sub/SUB03END.cbl | 55 ++ production/sub/SUB04CHK.cbl | 213 +++++ production/sub/SUB05TIM.cbl | 153 ++++ .../使用資源一覧/KIN01INP_使用資源一覧.md | 51 ++ .../使用資源一覧/KIN02UPD_使用資源一覧.md | 59 ++ .../使用資源一覧/KIN03EXP_使用資源一覧.md | 61 ++ .../使用資源一覧/ZAN01CHK_使用資源一覧.md | 48 + .../使用資源一覧/ZAN02CHK_使用資源一覧.md | 45 + .../使用資源一覧/ZAN03CHK_使用資源一覧.md | 49 ++ .../使用資源一覧/ZAN04MAT_使用資源一覧.md | 48 + .../使用資源一覧/ZAN05CAL_使用資源一覧.md | 50 ++ .../使用資源一覧/ZAN06UPD_使用資源一覧.md | 72 ++ production/詳細設計書/COPY句定義書.md | 542 ++++++++++++ production/詳細設計書/DB定義書.md | 232 +++++ production/詳細設計書/詳細設計書_KIN01INP.md | 153 ++++ production/詳細設計書/詳細設計書_KIN02UPD.md | 155 ++++ production/詳細設計書/詳細設計書_KIN03EXP.md | 170 ++++ production/詳細設計書/詳細設計書_SUB01DAT.md | 52 ++ production/詳細設計書/詳細設計書_SUB02MSG.md | 72 ++ production/詳細設計書/詳細設計書_SUB03END.md | 51 ++ production/詳細設計書/詳細設計書_SUB04CHK.md | 115 +++ production/詳細設計書/詳細設計書_SUB05TIM.md | 107 +++ production/詳細設計書/詳細設計書_ZAN01CHK.md | 144 +++ production/詳細設計書/詳細設計書_ZAN02CHK.md | 123 +++ production/詳細設計書/詳細設計書_ZAN03CHK.md | 122 +++ production/詳細設計書/詳細設計書_ZAN04MAT.md | 144 +++ production/詳細設計書/詳細設計書_ZAN05CAL.md | 169 ++++ production/詳細設計書/詳細設計書_ZAN06UPD.md | 238 +++++ 69 files changed, 9844 insertions(+) create mode 100644 production/.gitignore create mode 100644 production/README.md create mode 100644 production/bin/KIN01INP.exe create mode 100644 production/bin/KIN02UPD.exe create mode 100644 production/bin/KIN03EXP.exe create mode 100644 production/bin/SUB01DAT.dll create mode 100644 production/bin/SUB02MSG.dll create mode 100644 production/bin/SUB03END.dll create mode 100644 production/bin/SUB04CHK.dll create mode 100644 production/bin/SUB05TIM.dll create mode 100644 production/bin/ZAN01CHK.exe create mode 100644 production/bin/ZAN02CHK.exe create mode 100644 production/bin/ZAN03CHK.exe create mode 100644 production/bin/ZAN04MAT.exe create mode 100644 production/bin/ZAN05CAL.exe create mode 100644 production/bin/ZAN06UPD.exe create mode 100644 production/cpy/ZAN01REC.cpy create mode 100644 production/cpy/ZAN02REC.cpy create mode 100644 production/cpy/ZAN03REC.cpy create mode 100644 production/cpy/ZAN04REC.cpy create mode 100644 production/cpy/ZAN05REC.cpy create mode 100644 production/cpy/ZANCHKAC.cpy create mode 100644 production/cpy/ZANDATAC.cpy create mode 100644 production/cpy/ZANENDAC.cpy create mode 100644 production/cpy/ZANMSGAC.cpy create mode 100644 production/cpy/ZANTIMAC.cpy create mode 100644 production/ddl/schema_kin.sql create mode 100644 production/ddl/schema_zan.sql create mode 100644 production/design/01_勤怠休暇管理システム_設計書(サブシステムA).md create mode 100644 production/design/02_残業統計管理システム_設計書(サブシステムB).md create mode 100644 production/src/KIN01INP.cbl create mode 100644 production/src/KIN02UPD.cbl create mode 100644 production/src/KIN03EXP.cbl create mode 100644 production/src/ZAN01CHK.cbl create mode 100644 production/src/ZAN02CHK.cbl create mode 100644 production/src/ZAN03CHK.cbl create mode 100644 production/src/ZAN04MAT.cbl create mode 100644 production/src/ZAN05CAL.cbl create mode 100644 production/src/ZAN06UPD.cbl create mode 100644 production/sub/SUB01DAT.cbl create mode 100644 production/sub/SUB02MSG.cbl create mode 100644 production/sub/SUB03END.cbl create mode 100644 production/sub/SUB04CHK.cbl create mode 100644 production/sub/SUB05TIM.cbl create mode 100644 production/使用資源一覧/KIN01INP_使用資源一覧.md create mode 100644 production/使用資源一覧/KIN02UPD_使用資源一覧.md create mode 100644 production/使用資源一覧/KIN03EXP_使用資源一覧.md create mode 100644 production/使用資源一覧/ZAN01CHK_使用資源一覧.md create mode 100644 production/使用資源一覧/ZAN02CHK_使用資源一覧.md create mode 100644 production/使用資源一覧/ZAN03CHK_使用資源一覧.md create mode 100644 production/使用資源一覧/ZAN04MAT_使用資源一覧.md create mode 100644 production/使用資源一覧/ZAN05CAL_使用資源一覧.md create mode 100644 production/使用資源一覧/ZAN06UPD_使用資源一覧.md create mode 100644 production/詳細設計書/COPY句定義書.md create mode 100644 production/詳細設計書/DB定義書.md create mode 100644 production/詳細設計書/詳細設計書_KIN01INP.md create mode 100644 production/詳細設計書/詳細設計書_KIN02UPD.md create mode 100644 production/詳細設計書/詳細設計書_KIN03EXP.md create mode 100644 production/詳細設計書/詳細設計書_SUB01DAT.md create mode 100644 production/詳細設計書/詳細設計書_SUB02MSG.md create mode 100644 production/詳細設計書/詳細設計書_SUB03END.md create mode 100644 production/詳細設計書/詳細設計書_SUB04CHK.md create mode 100644 production/詳細設計書/詳細設計書_SUB05TIM.md create mode 100644 production/詳細設計書/詳細設計書_ZAN01CHK.md create mode 100644 production/詳細設計書/詳細設計書_ZAN02CHK.md create mode 100644 production/詳細設計書/詳細設計書_ZAN03CHK.md create mode 100644 production/詳細設計書/詳細設計書_ZAN04MAT.md create mode 100644 production/詳細設計書/詳細設計書_ZAN05CAL.md create mode 100644 production/詳細設計書/詳細設計書_ZAN06UPD.md diff --git a/production/.gitignore b/production/.gitignore new file mode 100644 index 0000000..f51d212 --- /dev/null +++ b/production/.gitignore @@ -0,0 +1,11 @@ +# バックアップディレクトリ(push対象外) +old/ + +# コンパイル中間ファイル +*.o +*.obj + +# データ・ログファイル +*.log +*.DAT +*.dat \ No newline at end of file diff --git a/production/README.md b/production/README.md new file mode 100644 index 0000000..4293c0f --- /dev/null +++ b/production/README.md @@ -0,0 +1,56 @@ +# 勤怠管理システム - 生产环境资源 + +本リポジトリは勤怠管理システム(サブシステムA:勤怠休暇管理、サブシステムB:残業統計管理、サブシステムC:給与計算)の生产环境リソースを管理する。 + +## 目录结构 + +``` +production/ +├── src/ # 主プログラムソース(COBOL) +├── sub/ # 共通サブプログラム +├── cpy/ # COPY書式ファイル(レコード定義・連絡領域) +├── bin/ # 実行ファイル(.exe)+サブプログラムDLL(.dll) +├── ddl/ # DB2スキーマ定義(DDL) +├── design/ # サブシステム全体設計書 +├── 詳細設計書/ # 詳細設計ドキュメント +└── 使用資源一覧/ # 使用資源一覧(COPY・CALL・I/Oファイル・DBテーブル) +``` + +## サブシステム構成 + +| サブシステム | 役割 | COBOLプログラム | +|-------------|------|----------------| +| A: 勤怠休暇管理 | 休暇申請取込・打刻照合・DB更新・エクスポート | KIN01INP/KIN02UPD/KIN03EXP(3本) | +| B: 残業統計管理 | 加班申請取込・重複チェック・照合・集計・DB更新 | ZAN01CHK~ZAN06UPD(6本) | +| C: 給与計算 | 欠勤統計取込・給与計算・明細出力 | 後続追加予定 | + +## 构建与运行 + +### 编译 + +ソースコードはCOBOL + DB2向けに実装されている。 +開発環境(Windows + GnuCOBOL 3.2.0)にはDB2がないため、プリプロセッサ`convert-sql.mjs`が`EXEC SQL`をSQLite3用の`CALL 'br_exec'`に変換し、SQLite3で動作させる。 + +```batch +rem プロジェクトルートで実行 +tools\build.bat src\.cbl +``` + +### 実行 + +```batch +set COB_CONFIG_DIR=C:\mingw64\share\gnucobol\config +set COB_LIBRARY_PATH=bin +cd +bin\.exe +``` + +### サブシステムB テスト実行順序 + +```batch +ZAN01CHK → ZAN02CHK → ZAN03CHK → ZAN04MAT → ZAN05CAL → ZAN06UPD +``` + +## 编码 + +源文件使用 ASCII/JIS 编码保存。COPYファイルは元の命名を維持する。 \ No newline at end of file diff --git a/production/bin/KIN01INP.exe b/production/bin/KIN01INP.exe new file mode 100644 index 0000000000000000000000000000000000000000..2a966902a9add1cf3b1bb46336b09dc6ef8eb73d GIT binary patch literal 162871 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%0A!@8&=Zf}zSs65 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 Z>8ZW1N&#m#k5pe&ufMVtmvZs&KLF`@x*Grh literal 0 HcmV?d00001 diff --git a/production/bin/KIN02UPD.exe b/production/bin/KIN02UPD.exe new file mode 100644 index 0000000000000000000000000000000000000000..d5f9fff6da7fe038474d73306b6ab475340ad691 GIT binary patch literal 157545 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 SENsKH4d3{iMVTlrru`o#Ctc0} literal 0 HcmV?d00001 diff --git a/production/bin/KIN03EXP.exe b/production/bin/KIN03EXP.exe new file mode 100644 index 0000000000000000000000000000000000000000..9b1fc6405e71cba6284a46e1189dff7671e67bf0 GIT binary patch literal 164890 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%0A-nO`*0=%|2}BdIy(54!3+msRz_& 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഼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 literal 0 HcmV?d00001 diff --git a/production/bin/SUB01DAT.dll b/production/bin/SUB01DAT.dll new file mode 100644 index 0000000000000000000000000000000000000000..b1a6de74a2dcb8abdbc4725416d48617ba7ee12f GIT binary patch literal 106354 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 O-QrHV_9K7N@qYnRSasw8 literal 0 HcmV?d00001 diff --git a/production/bin/SUB03END.dll b/production/bin/SUB03END.dll new file mode 100644 index 0000000000000000000000000000000000000000..8db214357dda1a8b698cae67cfe96b7d89ef0b02 GIT binary patch literal 106324 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 HWa0k;eabt> literal 0 HcmV?d00001 diff --git a/production/bin/SUB04CHK.dll b/production/bin/SUB04CHK.dll new file mode 100644 index 0000000000000000000000000000000000000000..bff4aaa4aa273ffbd20700f3de4997f726df641f GIT binary patch literal 116489 zcmeEv31C#!x&OJdPqvvr0$~YEAc25@N!S8{CM1E0W+Mrk+ax3t63J#VVQ~!xlsLvl zZLPM{hMkr!*j7clMX-Xkw&<&ts;$v#n~1GgtEJYO|L;4?oyjGp@AWdb0TM$Up5M$4ovJ!@lQyHtDEV@N80fZC$IU zxut1COJ#$nsZIxy5CkhNf!&oapF?WGT8NkFo08N3+(frPr|% zjoo5p>>Qisi8PsJu{1EH!kK`Jh3}?F@Bc|7kHWx{-t<@rpeGH!jj^c>CgiIEtR9XQ zaVf}!=$?-0Va!Xw5ysBgDIlL_uu9P!bDFU&Tmi*k@Ye~I4On*mVa5)P5N}Svza@Z3 z&2#WWDyG39AK{OOv5Gm>m4QkiVJcBbq}u|xuqTVL-Z?FTv7cm>z>R{-gbRDJAYo3k z;Ny9029XSUc^DIdS;V(R@C7K{b~sA62rlf&BEI#lt%N#4eBBhf@M$Og{6ZeLc@KC< z9_bnOWRbi&!N<$w2#5~2(l90jvxqNH&(n1isTYpqT?rTVWO2Lr>zk@%8J-4__^u9P zLNJT5Wf#vAxGZ`(`rybe*TRK8S;UvVh+}Fx;GKip4!548^q(x^o14zzdE?==!#ES+ z|DL1tpDdp4d=AG<7ji@`)zx0m$u5(I;aix-`97xK)1Xs+rwzlG zDfEk?deR4a9Q@Q__!fzDe@yQq2_ya`!|c*_?Nis=o9ezV`gx4DbRZb`Yu9$5o-6}hBx-4jjH*M!NASlpf#3r zFyuQBTM&e0y+PRc7;y}q?yx?HbhLqqgM)*v$ytcgW=-$)-eJa%$}Qo4OsWm!gR4g5 zE13AVd?;^*0o#(G?j@w|{WFm^wNz~2nU4ntxuAiqi1hem;QHSIxm&~+#hvEue5RoD zDHt=b$s1gH2PAfmrGkGJ>_O|`&6Les%1|b2)1U7@I-Rjx=)N|;^IUG{PraSL?*GX@ z1_!e{kLPxtK50iXgU~q*C3K>jXRrSN$YkAv5a*iAYHH@VCR4-6SYG<`XP*WN_R)|k z5|4m)jBpF0;iEACsLwm&;yC0Txu56&nj={n|QxG-mdrw80vVttO@Y4`7q1d`2@^x+e1_z zx?w@jH76uH%BRrnJ(+i&Oah);IFC1&<)GRW2TVQ31ha1Hv{piyvk@n)tKgIEg4SY$ zP=0tj^W5Ifyz}tS;|+YAr1jIAMa6~0P#KQybW{CF0dB^V-mY&Xw}af-l?JT0bJbC# z^raP~LV~yRE9YH|rN129LBuEeC%Yc)g));nen{{KuI=OE(M)jQZP$)C00YhV34Vdg z>dNbdseW`LWSz`S_8<{h_&H^V<4EVFuaF%eG2$p}IXIAs$Up}vO4lmrU*hm~_Io?? zP9Zy|PG(Vu2L^y$@he6n*y#>h{oqE$`+P4~&b4C+2;Gp92Yj%kqT{&MSyF*WN4=fa zY~VoS;n~#ibj4qK33=AB1o6W8<1V3;YsYR%tt0Q0o03H8_E73KP_Wb8jRNcARfuGE z^hQC~en@+8F_H7mdAsuZgw$8LR0?-lpTWCHtz*zSAh2E5UI@(Qg_X^lzhgA^5HbBq zpPkhx>Vbv$@pd$vat|aRG}tF|<0F|}@!gbgmo=ZKKviwBjNLXnJSP#MoRCeClYtmy zL&)tFM6#DtNWD@>eQyS_lGLZaENs*^GhAx)g;FhOp}5qu4N}oZNk~`xbRn`w7rALz zk*H>>z?GtHRwZ&ga(e4ldbP+}$7oar_4*6&D)Yp;O4bIg*MgzbH1G=5?k?+EVt*Wr zh!jPULU#Vgmqea!K@%IlIh(U55j&Sog3scW8KCCUQ0g%#YAW@;7;GaLR_X&>CfTgZ z`U2VxQR?prY?t+?TSD5PFvGQJlGbK9)wAK#r0?gQ-rTmFYNdZ;PTZy7__qXi$xH8?PeILVd0J=rs$zLm zu{02^%X&a(xk<6yC|RucV%b2oVuo^G$a&DEQXT&O5-#d0V%OiOlq6Y)b9J;{hhst0 z>u_|a4u9cqybfC*{{qqRAH#&M%iY;Wy}SY+??2_CPB=hK=M^H+-(zkbO7sZm1D8co zY-?bM5J&b=(Xt=!@8Cjch#PMcLUs=kvXO**h`tNvxlgC)%9n#otppdR*J|EoIp=~T zTjsE;odHdFy%UGYbVvCCRV?=r8qgP)fyV-(9b1o2MD@t;pja{l z%SN5$wR@!%&Wk`-{KbOBtF!z_vAm#IW(gL04~4p4RxIC9EHea)NoU!jSU#s%rU{l; zsnYXIuTm`aie;)``GL-op;+=2i$}0LsI#~f%QVH3C|EY>EN|Z5YozHpTKc!ScM$;#Dj@#qxn*`L@oIqF9zFmiGk9T{??N zv5ZqJ=LAcg&hqN#q+LD`fv)&J3YO(M%MTRGzbTft1j|&NyE<&0oi zsk59^EWZ_juJ{)O%N(6$pJMsGVtHP$MCvTt6w3pOMZYf$xKHnmJ@>IYMteI#WElQUGcqwWs%PEZN>7G zV)>z98Kbk@rC9bVmSckDy$LGQb&923u{<$HqVn>x!>#j;qjJSnC0I7-EWf!++T|}I&=r4Ju;l72#}vzRisg`CNzz%qs93(GSoRB+kH@P_ z2NX+CvFs5nFY7ET6-$X^v2M8Tf-ZN~SV$bc%YBVc$HfdbY@8IK#Kx+WPmP0&E~}=e z{Hvg}!iyr%Wqr4f6wf>34PJBR#|+Pp=m%@HkD8aHZL*WMXj62@Q<}Hqgtq9fxBlU* z)-6~jb)J8s&!nB#dOMGU4eL4`eXg!0Cdu3JvH6zYbbg5BUxyZIJ&7h!Q&ig5i?lH% zx#skzly;3F?E`mm19VycQ46IWr@V@hZP;Y}OPogz&Znkx6aI+U^}+ehcsV#fsH63v zQUEl4aPAHb&d>i*49?3DC74wK@mR33E++`fUvG)!FY5xpqWh@lS_G|Yff@LThV^nY zltmOXCt$8>bqePGUw{hm!wv9GW@S>Q0G<_KmIPlBpjU#=aTKz?8!# z2Z5o5-H8Z)8DUXyF^|LGWa2G5MWRPQq6dk#Q4FrpmnCt7Byy>IJ@GZFQ^7}Q)z*7a zTEN;*`^ufCz1yCoHDA7;!k3$AshJjvyW;oEA*m$_+$F#SN%aZPBf$a=cAq1KMD)uB zuo2K%k}AQk2r!LVortpC`1INGG!@6y;=Ab?o%{n!wi9HkrBPlUem4hGt=t zJoi&sH*xAySvSw22v23*k}UjNXK}y19kIBqr`orLg13c&9S8~;?b}1a9iiauq2L{% zAYKd=4Yff9&m$x>Z%4bxA5z16vb|e^-Pd4qU@#>DqR9Uc(#d~I`Y%cUr_w(r{jW>^ zOVYnn`Zq}bI_Y02{mZ4lSo$-iKVJF~+*kWC*qcCkS$~51OLKWt!kIPQVf!6?MtqQ{ zU08po4T#S82M9zB{vEavQcn!s-{HH7kQo1OR6T;G&L=v~4+a+Pcsk(eJk>FvdAlYa z_s+nYec@0@Gg33{*lm_7Ba0$Q{oI>?g#2*g(+E!uNNS z{#G;e@5nR-Y$y5FHTIDLqiMgaNazRY?NqMbuEYoVz<&O{ep#@m&fy!LSulB8W)Y}FPd*V3lxS}(xV{_WAE zOMJsc@UWIUpI-W4AUT!C=&vDa=S$e*BH~&Q`_1_2uIU#0fhFFm`7f>~o@aJ^;JSM( z?1f5k3Yfg~r?Hih0A=|r!U}?{V9|+|(cWN*BUtLl*G>a;-A3<3cE=OwzI#)%7rond zhPKg~9VGE2^6%RId$Lu~+D3_VO?=e*#P7^r4P0A1CqaQe9Zs}+YofCG-mbSR3XPC; z1?MhL_F#89Az?7S7&>riHzNjiRCBvZKI(Y=?*T_wNpHvNKW-bdc55~WNMgdj((ZTpT5ki%` zZzdYepNa!yD7win21-Smp0Co?ppR2Oh zWUtO%m0d0j@AY=oCuarcuY#~09|U5(U492N&%QeQn(S+{vEzNxx&S1NEVLVS#QT7^ z%hC?_6BHjdQ~J*JzXZc!8?}Q6botMF7yZ5Erh!se zf$aOC!?k@fm^wamyLN0vAlvnry=F)6R+|@U+Y-D>>7beG za}^|dDQkzEyUGzR==@t@=bQc4VY?ywC}1F72d;lxlu!Zbx;kzGJ~wC%Ug5|M-e@V* z&bc0at}y5*)c)G>p~tm-Hge&*o%VY>KFo6M7yy_bv|pfulWI}ttDqtQ${r>BF4pG7 zC`~5ppoEdx&xN&zSd;fr4RPJQlFB-`^t;<=Q&fLHP%-WS1L}5ekmcdckH(vVy6kln zb`A{wN{m`lFPUEprkkE0h~m`>?Nn|sGH=JzZPB?X14MIe9}netjt5{5SpU8mWc>!- zXol&N8?3URi9y?vW427YqAO}1Y}`MMXT`#8_!c4imqd!Z{9=H1yhHo(*+DzXDmwrB z;6-U6Dd(9B%r*XTqIegba((VF*idLV!{oZ_tMFu@J@R+5ok)-u+Rq};;x6a8YX=)@ z#iRD^qEb*I#!3-`N&&80i%~7xZ_1ZaeOxLGp{l|rl6npXLHX}^+O=aff>eA1nH1=X zUOpY#$!+ugCq4uYjiaX!)xInGO3?bhNw}_P+HdLKjc~U-|ALLR=-6vvf%uMFAtIRg z#x?MEyd0Q|V{{_V`5^=^=}JD)~$mpJc%rV4Ev9%|CPeBgI10bnkg`K*2)z2c}# z`E&{+i_VgGd8?0vu7;%CPDep!mSZsfp0juI zE%viJYH;k}?bM+41oSIGZ4qpc?QT0;2+Xwn&MbHTBh&?SML){LR6vYOA@sgHZ$DghO;-vKiJbF%A zpOB%!_?(+jHS18fMLGB9fF9CN&u@PaHFY4M^Fio?kTDoPm*P(be(3p;mwz{OJdoa7 zvu#n~m2EC>)ygGa?YV7>=mc%Rp~fRb-eLGsoof3X1}FOa()o*i zM&{`_@7NpzW4@P+D!whV@XA13`pe!<^fEMzqcdCL+)`C7^!UlPn;Gfb_DapRo1taf zFKaq(wz0souE+A?(m(KaU2RPm+Fz;-p$}<5@kJZegTQWZ+hj|+=&6=h&fXo;AJxAO znvfY5!%Xgis%1+sNXg!oIn+)y+1s{|0`KH;)1d7Qyn&u8E6zLPx$Lf$Xe8q9&6oB$ zeSv+B7c6=L_Q8mF(Q_@|2)7R`LHok#Pjg#PF_j?Sr)Bca&QsDJH8OchT_DB#Ul6o@ zjpFx0K^U{ml@9?0+VO3R4f=1pfz&^T@?2)Cp^oNFgyPWKn-a3SO1S>suJY5VhVx4w zWKH)3(EU9fc*IN907dIvbiAz}MJvyjS!YoC&+Gboq5l)InmN6lrv;y=WnNeAX+jOL z|G!1%>D;V?=VbC%d^d)IfJEjugMb+i@ zd^bqT=v2x60LxxZmVG+#3K==>@~(1ILS9$)U@=BuMP22`xoLBQmt*j73a>|tGuOP# zQLv~NgX50lQ0V!#*O9E0U!a{i8$shGZu2<2X4K8M*@GofXybmhjO9H?bLbOTpidxGl&8&AiJ<6eV&BFPDSm2B|z zb}U{Q`-`Jvpc}O<@;y@N{~Qge8+jOve`zxqf{8Da*A;IEj`aOE5a#x@9$qvaUqqeD;UN{0*i&ZRM5_Wk!c-J)O_=(>Zy} zDZ1kFy-&PuK?{HcJy)IRrZ;a?jq9CWWb9-%3KrwlSnUMwkEtGp=6kRwhB(`4!1XwK zQP#hRMuZ)gu)tM($Pp}adl#Lit^E=QXTSso1Cg};ap2=-!hN^ak()2I9uNq?`I&Zzqj)%G_sn2$jAC z7J7L?@4pyW+@|+;Vw&UecK$-d2$0a=Lb8B2=yP~auHZJ{L|3f6A6+u^`yh}kmj!61 z$yIoVX3%`4p!JU^#(wH}c`iLP(-X$W?_kQ}O;jBJuYEP18%+69o6zS@>E9sz>!g3B z^e>nGV(HJ6{&?v}NdH5akgpp_|0U`FRQkubuhOUbnC0zQy0;AW3fNE!v#vs=h>yeD zO>N2&e(-wmd4B2|B|X}E^qn7l^S9*irZghf*=JBwmPlUf)xZ$9wG07_1DAN8=<|4; z=mo6V#Qcz65+X40@-K%BX`sbt&wnEe;H4h&D0t^u@tsv#iTvJ5a#8az9&o+k0C{+=?>u@}N0MejGzv3WX#?pP_xS?NF5KuLk4=Lfqu$BUu2;78|c{vx}$Vx{+Ai(sRnwEf$lZX zsqE-c_OCV2RV7mNod)`H5nYde$Ut9Vpr10(y#{)}fu3)mJIaRU|8fI8)j+?(K=&Hx z1qOPpfi7x)$UZv_^ddw2Lk4=Wfqu$BSM9E{Z@+=Q(h%QKJ~aQO270Q2j=rBiO1{@X zFE`L@4fIt8`c4BKLva2m`G*YjH3s@A1AVQ5-fy6kRZ-1AU`` zzSBUjH_#6m=nV$?DFeOHK<_uun+$ZvnxXk`HqcWI^y>|DuYulTpw}Actp@r|1092U z{^<4JK*!`@2>q0Sj!DrFdcT2=S?>_KLyrGc|A*QB5PGVCzSThY8t69|=(PsAhs~Xn z!CKqaUtP9pS=ziD?-g^Z*4MMNw6t{k$)KOP^fQks2Dadr$2}SIJsD{k3p^Pai|3~= z&QRT;Obz3g*`geEgfY-7=nm=stXsgnhH<1Znt}`K8aHg7y?Mbry5t~G*WmZmRMyqE zwfGlfs{&7Ub#;rswbhf-?5VA6^)xnl>KZCH_-D8Js{(aRjm+a&UDpz5tE^wy=5N`` zBm1j8HBBv^lxolVtpR_lr!wHF)TO9&^>`&MO##SKF*nx*YCToBWWkfRB?X1%@vLgx z*x0nW(bL@OZ>w(dw9xnOm6SGJ)DUQ@YO42a^0%}SBBgqc(0b%}>+1rZ*18+~;ryg6 z&=)2G?UDDUwt%Op#?w;SxWPZm6R2$2;19rZAkFe@t@GDc6A-BNdp1?pw?S~TQe@`L znV!}_Wz|McYeQvgEwNSmDZ{W5Xp21oe@jDMV>8(KG2wFKr=*Vi*7UhQjT zm8_a=!f!LHV{=&sn*+EW{}?OV+8XdTEN^S%MUys{#$@NRhSr~o3+lzlbR&PCtoKUE z)3UxP_zgpPM-23%2Dtm4q3J(h(67e;A2Ps44DgDaoW-8hQvasRS)OHWb@jNvW2>jI zY+YFfRhR2v_!*w``ExSn$N~3f{GZw9v-q|9)=PPE^y3oEpXJC>40W6Xqb8vM)PCL){#zW~mIa0&dCaLEW) z!2cXvD#GM{1UC<1@;{z|cnFiT-F4(=%7;eQNwitzKW zF9UZP;coc%VqxYC!aeZ!!u2711pX^d3H|IS++P zWq6!@$2fDW7HbNVVKG^Ws#!E%YFbC6AXFAGl-XXaSGUg{EWK)p;TRr^lJ!q8CGt^$GfM>y_!BP8u8GOu=)cl<0R0<%%XV3pY3zQrQ zDLv~k#_uWY55sK%uKPQT)jk~J`x$WV?}p&;P>;kPmHsK|zass9>3<}B_xD8XROv5~ ze!28(rQa_7&rAQ1^nW1zGtz%s`sbyubc=dKgp#GdMEWJtuaJH~`nOAekMw^e{THSG zd+Gm4`ld&Pe7E$cNMEI&A>l0P7fJt0>93c5z4SLp{}$=*l>WWa|C03gN&j2YKPvs> z(*K$CUzEPm=d*GWmiX^pPK@OgFY}d^Was3S`LYX2yxGh0%JXw@J!4hVdLPyWeRYii zWMvMAt7`pK8+~#)kEID*Lo?{}RM^+p)=*v7O1O<2SAz>h>wW%~mL^)GzK7$mI_KL^ z-?Sct<^W&1?&bKp#@1#m0r@J?^fUJ45L``NV_hrXCU|NH9%v|dY6!00Ur8%|kn!{o zJXZQz0&I*%c|*QhNLj21g0Gz8aC>Z9z28^U;-~$NRpB_PuD=lrf}pJqry;pbh_FWD zD11K;w<4dornbsYNwDc!uD>3Oi#aWIfx4>7`Z8pd)@Td0Jd$cevrN+pe;}u=r3Hy% z8MX@Rylf}o3MyLzdBUI%5nRaC_G109-k;6bON65ca&Z{inDb$!y2^U2sv46yX3lSw z(wkbA`zr%jTrR_-B)dh9yTPj<&u3_wJ*0OrPznML5EmzB> zN@4b_wYq}F)HJuC$ZOaU zizwc|TN?ZgRaALD;-TiPn8i^Dg~nK{wZ$)@W>{MTE%knE@XV)BBSl$j-K4}(!BT(r zU*PKN)}vz1p2t^{AuEy=PjAoZ9=6-P+p{}ucjoS_-4IoRE2J^GA+9Z9d}n(4dd`D4 z0ldVyc6Y_@ExX%yKd`%J_tD+GyU*4Rq^LyCdguR})_gh6$iH*Y(MzG!JdOh5B45BbFlB=`Gf3G!XeM0%tKj+)*h-jwB=Cyp}s@xYmTqE zzn1Vd&*8MgS%*swR~&9W+pR1<^J}h6tQ)7PrF;XQkoTPwMOW*% zdkuUFoQQylZO7{0@bU!xVypxXPZ#O^T&MTQ{ox9$N@1uk_`ibVMN-~eVV`@2(S|Yu z66t@lROdHv2zfbWirzC{$om9yOL>3L`3>S|Nfq{ZvRuhKBIW)569fwWc{r{i^3%6S zq>m%@tGn=-eXq6{t(IUCQ z>zUnvV-2&h?cT7oG7vy0(AMZ*y20P*Z>g&yLQ7Tc(ng#hXsq8mL~n zp|K4@X4f<}&0bGi$aRe@iforgKf|;yR?SvbTiL>_4tsqQHu(8ZTVre8hDPl2)BMKj zu!blcVY0W@Vg%_K%4V^0qD63vuzd*2gg)qCwTOgRPmpyPcGVVo?w7e}<{$`pX-{YymH2ZSn3uG)vU5UMLMTptBMyr+@Bg z+a%)kSX{aO^=%szdb2ybR}Vs%p!dD4{KaawMFxyrrpuXj=vCsG#ZZmWX(R zAod!FD(;Pfe9FR{Yx0Yh6&DvU%dOGRLS?4_I$Q!+htuko;J6697tS^GGF$E%kJU`( z%oR{q;`@NC7E4WiQ)PfT3rbcOeJ%C@xyzD=9B! z*7P}d=`t70W7gvwju5g&XM^#8V_V4deHOwY*7 zW^T9Xj5YOAptXXg&Ft6K*aM*AYK^)Lwd^IU`wM^^Y>Hrh*=l!#a}2Rx4d6(vN4)4aDcHxHzNSW6H}D0REo0o>AlUB1&wR>&)nTb_YFl6LXI8g`xBU{dJqnfu zdI^Q`nJm8LRBGu9m=$5)`Wl3id}|8}eP!9J^L*K*dD(L_FkDKqkGc#U9&e>kjn`0P zJVmq}Oe+gug{76_rV5-%E3e$Z5y|!l%7R5J#qvwbCVzE0OA#om#@Bm_o9XBsnrQY&ZcCkIO0LJx1u5D-tVbko9RHi*HmFamb z-5x>3+M}^4M(bwSt$iRZ?9tq&3j3G^ z4ra2A0`zcj5vvzq8VAwDHV8ON!0D_}z}R_&Ff_DH0wGLzeMjXjRq*s06w17);Yd99u5C_vO`j_`5BqBX#}g$U~F`KvaL zjm^jV_$vj+u*A1w{{|?wi2kb7+1NBXP8r+W;@`yH7Jy-3vm(E&yfiy}l;a+VjiXqT zNGh8&7eNQJk0?#Cm26dna}xH8-)fe0{S8f2xbaEKwV^gZP%$VGKi6nVCj8 zs5y#VEzX-V^C$-&GEMXqmHW!`m$A%`Vy7lX!X|q2Uw|Hn{Ude`KMzVTXVu1Km92jE zaV#GqIRvVpt^v!Bg97K)%G%b8vz+C1*a9BKITI$4(jG0l1?N<0S#%X%;gTja-Kd&Y z!IO%CM12jjjT%czq%j-mA0c(KkFs;HM8b|y@!8oyXc|rDyGS&wxnl6qTm4KnJX(aZ%qU>ep3bYZK3bWVxmZ8sBlb>7eWu_5% zbIWo{eC63Im}Nw^)!7C4xl&m>`icC)>=k*w@`5s7PIf`Tvh18ISZUJuMNoe+<-v9- zel97)kLY5kAbE%_2~=*#Db6p-FJG2jmdETC%DVjvF+uQ}LIhvos)F+TaxYrt+`L?{ zB(FvbP2YhLze6+G;$4Way4;6vzslE%V9~0A0+Ibelf`oc#EuadgvL^c4>A%c z1ap+ZE^HhDG?*AqfwJu7dD*3<+3VN@0&_%oB869#<(1~_WCogo{g2H&{-H zke4f~Kg(4dAygirNR;APPKcc4Yz6lV$}qz6QgC%%X&EM3h$)lHkEWOageHS7f>+}$ zLxC|j0m2f@!x`6=<}JsuC;@0);j>7zPz)mt6r4A+>y6Ngg2p zvZYg~#`1dW+~&TDs-X{?7__w^_Gqd(Mu%xDO9P9J@K<9|CWWLpJFHZVCyo)m)e4neWnS5-AICosMVOTQXHF4fP?hJ-+p~yIQ(NI~}=)(p`D|V-xJ3Z$pAz#Vr z<*Qjldcwo#Mgip$lrffuRhLo|o)D4g9`9ysvahDD1&!(=0sz%xjLsGl;F#?5H&(Mt zDC}mor=e2{#f(^DeiPxbzrxP~(58_xTk3q3OdB6_5fB2rfoT&sIF@4ibjB)ToETFs z8LNC?OjKa?)|NG$m15Li7gGHa!wGB#@~&3m;{#%4&X=aiOXlz>lanwfU5M)p4! zD@rpRZxKD(u8naJjf0fz-U(DLOA)#Vj#6Xy&L(B=N2nccR34!&r84^)Lhr(jZt(~B zDF5@3B>iGYr5iU^U?GiZN3=^viPY?=GEfGUZyL?jHnl?em0FrvTWi7|ru`DhLi&6u zj73nd45L2GsVlV%X5STtJ|)rV%zh*+xwB!iR%+=gxu?TeVvr;ZY1HV&FyZOLv-~+s z$`zbtrR5&S=Pk@LP8Jg7I3znmCeLR0P&Vj$^2=FdCx0{4V&GeP$=DNQ$;_BSC4<2- zyA6()%#3+dGCu?OB%!EeX5>-Hd`PE4BP2kiI^Kv6&?Z%%hq6JS^AGfg4>z zgVDNbHb0usD}gE`bfX^&9o1|>R3D187MKdcqNLfvNUG5H0lWh)AsPxkBG)iYDu7WU zf95Cch(}fWbr_Gu$P@D}s82%FakyEGRAvdS!1YV1nhFS+j4hh*G^CE(4W5`s@bgPV z{5f3AQvm*qz*}%^_6$IG$*Qg`0Op$aC|U_c^WkSKb_7P#u7F)7K(A{Q%!INsNA#Q7 z9G8sl0l_{&0`H?VGX+=ZwPW@SNv0;K1my8r>3D4=v*$}ZHCMGE{G1|*r?&0#EfTn2 zrhX5z(ThP<#e5Hz5nG+`&ChKld= zh~I{cPN@(eEY$*mpJVz0V=*{z@v)Key@y99nM>V5LRNI zpGun&8F9i$I5zGp&s)X{i_~$Ja{qc}x+`^3GAfSQMsMZCzI>W0(U8Pnjp-R?dmH>} z{`8iOilh;2apnBmKK7PvE(gV_lDBMG#K3Gck{Kc?r>UX2vc+!{_$n7jFH&4CUQPPI zk51yeYFo^u=55L0=>t(ng5yYxpFZ#d<{F+V+t*EUJH+&f+aV_7c8CS1w5scB zYOs=KT|4yv1%klk*3RHcKv6{GG^Bs&=hJTv8&njh)jmr^@zNo+4YEQ zLuc2~#wjxCZ~j8eS4sU5rpPumMJ9d=rpPnU{b`ur$SE=f#T1!BG)3kz~AB$QHEO5DDxM;#T!sp8wQLmy-JIy`aV*Kn5n=KG!A0ot3LTr?p6D`nA z%jQ$<=4-qD4Q!*|k!S)i74}s(sne{q;zPmZk~r1$1=(LWlD&cQ3Zn$mGATk8wI|k+6KIoA_6{no#V2 z(#hCI>NP|sL#k`&WUioAdL;J$9-T~tv6JDZ|3XX$sXsy|V^^IF@te`fM5AI-+w)l` z^I0duySqUbbqAk*Clh%kYM|Xh_0Y1-T}IXLf^}G6^lpT&!-gaHI&2h4v2<9e8rw(+ z_J)UDhuv|JZ&)f{hP{1UG#aB&RKqIlPEQ}DqD$UXRaK9(?rM>?lasAqh5X2|PP4k@ z!}=p2qJZd=y@0hEi0CO!v%2TQdK(ZiZl_tl2;}E>(L)?X4>9Uf>>=9G+Z};3p2)li z3TbkRqJ82N1>a{5J+WnO!)ycnE2b!>D`wGDOdEEJqKPRAJbjAd*iPJrc?#eQ=P8G-kkhPAAP z^g|&w))(5q%+1Hp9;457IE<5OEl-N0(VUGh6U!ra#WkgsoB1B~s-)N-QG8ooWAz2Z z)q?1->6HA&YX26tM&R8cd=9oUmSHQSm8})D1X~$C?kTRh(%;gwybik!>yn~LTaOJ( z87-B#(5MAl-E~#1>`FmMW|rY|a8;6>GCUlWH6~4^yhS-MtTT%pAzOL^{TUR;3>xXl zy%y5hW2dESr&-;2C1`wSicK3w6HKfS^@_o`pwZ^g^h7~X_hn(%YfC*gcxGJ0tCaa@ zg^EG=8`w;VKds|wx2LTYE%WRN$xsQ2tP@e9A*vdpmXfAU^BEaKpl@K83Ur@DC-Bwe z!g8Dy;4=p(GW=eWe}V%RK@%%)UJ@Etu^OpaudW$sT+I$j{HYLL>>^P&Qy*xp#)nZp zoVl#>v#(ploaL09vq1DvR%~tw&cl-P$xq;HZEKR8-;kWWl5?DriJkb+{#d+wDGF~g zO%}e5fT;J?2(j@YJJ1w_X}4>t1;=tQf3#h9Az}p1M6(1Q8}`=VB4|1^lPcv{K%)tB zJ201!Trz$NT#Qv7n12V|0Gr@Lg~A@0NNJ-+=IE9TFgkyeobOX zO|mP~uF$kN^lXv3R*||kk-8SHW-g{MVj-lsnp;^>^kbCBBuYYE1w#_((RSH?3-o1R zC3bs1fDH)v2>3IA&mnLJockk+?L_L6Nluo!GEN2N3VEdC2{3V~-$lG{lOU4%Bm&0? zAgQz|^fS0vlKMLYUL}B}zmLGXa4aSmZbWvFN)U6t9vtnle~LZ&^+X^qDm`H|%wb8uj{_*$#m*QzjZhci$N58;&r17km%-U?qLQH(nl_`Ibn$}I ztZq0H=o?ssK&y++tTu4nG$b-@P)9cK$m;quicA~TQ39>sqV{D<9z_+6eR1tmEUGNL zU7O*0P*i%W657UgSicBGuy`OF39}e9@$CRo?-HnY(Wj^$o%fms)r?=yyab%h=fej8 zRlZG?zIr;mWlBgStIcxYM5g!}Kqq|{c)J`*&L+U7N18l-JHd3#AV!Slsk5kQv47%l z({3DY+CnSh=CxC4@76x-aMLa<2TvbvMsT$Z!%h2e!%e$!xH-o$x}B<)7;{<@60amk zjX7~7IfLM3@)U9tC(2XE6A92yAyYiN8jadYM2zm(H-L`VPn-o3cMr$eN@UD0jxY>5o;|^^vW8=*U*jSr|vynAWb3X+0wiQN@_{a>^=3w0qFs{0~@^ z8S5*|E5t|?r}xV8bFj?3ytuTGAG~B~-x*Vl*4a$w8`YN}-yIX(3L`UfHhm_|H^KPv z$L|TeBMh%T*nVV8G!?(wjL${_IIz^zm|x8v8x!>%Amhw*uD7X?hNA58F)`JUonXd5 z7^jeqiFh8f67+q6NH&+#(U~6zD3!TBF#|swW2aJZm5jiVbP!pLAhram$3Flxj=$Ra zfIYXk%;%*ufu$_#&lBlfx!I3HFdOQs*n1OsE(lSzzP_3LMZhM4o7wvUvJli#U&THU zu#HnITWYIY*k1+80Tf*t%0E3nFK`irtK1@Re-pSU;P6fVhXRTrsG0p;KyE-)t!)kL zBLR;BjIS8}A)q);WgiP@450d&N>XZ2U=o07+SJ&D)3iKG;{oHFejJR7q8v{ovcCc6 z6ikAiED`wFhnWRxnuwCYEQwJb#7PB=L>m2@nKdzL8%lNwOQ1q0BDb+wz-bD0GMAWP zgqhryXs0qsv)FE(WWNQRNhP&gTj@3gRVCXeQT0la*97pIw2hp2 zqF&E(@CU(oDsBb_%GZ)siR=eW)X5$p@P9ZWG?}D(f!6d;+iQk4vBFMn$#${S+(QsV$Z7__qOzTn0w8T%xW$BM2 zezr_Y7WiMgOdEsDhwlXvtS{3Np!NbequdLmaM)fTfuX&?Fi77EBwYAjUg1<_HkH!>*@Hub2=xwt-cz3B*~nqoSFcz4hK1% zGdMUAQL#2cqMb82#)If>H5e2!=S3WmZ1n{inrj-VX>rctGE`%234R^=8WuLZ?9YI8C@nnrsgGUXNJViz+*G3L|#-MkZ?JC2&t363SZDASeI z)wDpOEp<}+$gJX$Yo=YwVGFaV6O`hPY;lm%hwD%pe4Emlb{YOIHH1a2c%Ou|Zf(G~ zRt8D=LXwqChOXjr4&tMX5d>#o(rSK!3ofLy`c~eNBDo?do5SELma^5|L0ZX((l;T> zO7nO~oO=&4o2q@y{W^(ns;{OayZq)D?XXOPN}R4LLI(%6zu}}2jRW_$&`89G!t^uk zn-Me=aa(aMx;Pxov~M}-98ZE3*QVDp?c3w15Am>hl$>_N+=|rVaACL)F z5U1ljesq3uGfu?Zi9~;ZxF-)p3O=@>8-MabRYyA*L%EApi#s4oRhKuls9sPz zz&p-YRq`yBZp6VoI8hm+Xs~UHfqXh1=}4pGXq$x17Z>Y9Pt{VV=y%}!S)Uq5SpT{&N<7YRTHxwZ7S(pS=AB<-2vqEk0k-O6Cd?O$gNxk z3*{=O3Af`jZ9gxC1tXj(eofPwFBa>8-Esv<+qDqKOc!ph6sN?Q_B(BiD9k=tn3)YQ z9;()xnwT3F_#ZPn_e&!&82X4~s0L=Fs zx;6TK1a1JP0xtS600-W78(j1;0OJv$p<48l0K5of!6nYZ8e3L|TmroYDgIK6n(xNq z#WD~Yz_Ag|QVd`-0&N6b1z;Njx5CAT$G1>?i>C3ov|@KBu~Xdp5%@d-6ql9=9)fdT zA=BLlWE|2o;dt+@SW&xL;;9}9oJm`0x*6fM+B_tY{Ac8#7J*w3Df&GC^aa7!;G!K6 z^*RDHuaA6B%8AC&LdbENy;sVN;y5!BVkxA3Fij#=fNsQ~=Q(W!4j%H%jK-@R3&%5) zh`9MF96fTo>G;J^&AZGU+u0 zsBUuwUyuT|y&yGfmQhqkxnkc$q{DDrvBwa21a3$iGsQusLUE3RrB}uI83I3rbG{Uo znTMelN+9wk7DcyxkH3XYVUceS%~d#YXf2i1>wfieser0pKi3Z6&E_@ZS4jBx3 zxO50}z8dx>{X|4`niJ&P#3GrzV@7|``s5A?>Ub>_NRu{O3t9ANA86(oDB0*Bh-0DI zXt+tA2S8;V*(BL7oTrUdFuvlE1ETqoX;X%ersNB>iIi4U z3tOlqO`#CJ&uqng5N_&AE}^z5s)^NV)24%#8inaCT?p8q@ii{OpqIzDSz-Z;9oOP{ zikRJFWI^|buoD7>a-#uI1P!kuXuyV#i}-DHK6I*0En88W$+m9F48mi1Hd|Y&5S~G+ zWNx}*&Z5odz3dVUWw5z|6@w-myRGx%?}~`K0?`TmUeoB+ol(d7d2ciWVmn0 zT8ev9HY$Fu0{`?!dsJg{M2oW?8K+0vMKxe1*XYs7Gys{4f}IW*x1JrH$QO(5Idbdd zTJ|^}9W{Yc1vj~l9pg#UhQgQNF71<&ON3yy69>#E!<711?U&JaAW`}&tdGGt<7Dli zD&qsMNn3|6Mc9~05B4+)^vo)Oz)` z(hl0LnYg@=l_%1;=O@Vd6L3@GaD=^?-5c2pF4H}0oj;SiH8c{c7o8tI#BshX(Rn}z zIeMkjoTc=0z7-a0Pbk)TiH=6BUJ(o0Ql0~_&&QHVLpxM_nhG$@F^Gzr@F_0mFGSN; z3#S?$b-7g=(p4Kp78~MR@rf~gJfFx zg&yX+#y>@Xe$2yyYOWutu!N3z%q0BKb?_m_JS==kUmf!x3)t0CcRvB4QywJAC8n2o zMdhXIn0vcv)E|K~Ew8U@+{kvA#u3C!%Q$$u03FQnIIwnpW>&D{4Ou(o+a-<0AWXOn2hLa&9@`g@^jL0_hWQfaGT3&!7 z0QtBKH@m>6*4J|LmaW3ADl<~zX#3j4SFUHKL@nV4&%p;FXtn8BMmbJg_{G_civ-zZ zGTx#(D<$P&n!%Z{AWnC?7U0vDR(>DB?37V|hD5gs_rkVp6?2<8Dbe}Bc})E7Bm5~a zx)zEiJr@f?GK!z3?P&r`MRLPv!>?CK7aGknmC>g$ydGx=)Ev~T;quK=b5r6-SrfmA zhwg-8c_~vL1%{bOZ=uTal&G&jM~4YFP_^+t`6cix1U|}Cycr)kZz!*&FK3uHCFbiq zmn5Lf-%#0%8@K!{U!W79U7gJ0(A2MVU;(v#TPP0Su;JhC{@IfLr`nRHa)DkEE7-B~6#*dl@ODapyJdTfn zj|D4Ba#D3+vHa-7l!zkW9kI9$C%~poA|^L;93zj!5|7wSoj#RlI5Q&^NF1_^5s^ND zgvNzm=G_<%=|QMI!AuI`M+*fgMk3u_V$%l)Io5|KVQ( z@DIGh&&J#^3yj_KItk zlJ_%`<)RBEPz8X0k*De&_E$*XXJs;)3Sh3lAMHUq4F%)Bjvw1AN*Ty!Qz%}a%Kb55 zwA<}IowrSt_5#1#LDtUu4Q^Tq`78`k0r#gwzZk47z1?gjW=KZ|pCXc}g z9al*=#E{Lf#^S?Bd%?WWo6>>-H!eX?HJfEqf6b)MofO7{LrPQvU}D*+R48{tE(qRl6#P9GW*@Af?~C zK@PrRijcem^3nNw1MY{AiImIF8QLi7OE? zXL^PxL*`8Sg?mnM@W|X9dm~~*(#Trfl8Dpt)Jgw4Z%M>yc`|`WMog@JJpC}@+rlSS z;{1`i`B2#G6K)37Rs3gn0=h}*EG(zQk~}+$mPf_IjzQq$34N!pg`GU%V<#Zg$rFN2 z1oM+81X&1@Cr=2rajJgugisEk!cU$ME`o4jCr=0$1)Ml}LQo7r{NxEiZb0hf3BjWP zi<2h=#c?W~JRxWdpwP(^!XyBrPM#1v9x#SEbn=99Jdw!iM60Wl+qtjdbEc+~-u zxXQ#m78F(?E(yZ94z@m#=N+4z{DenwjlK(5B`Btty(swV#OT#f(xU07Ny@f1tZ%9> z=j(BPL3M9c(f;)z`(`p4UO64|O>AFPw+sKs4 z55B?9#=T_nI|b%=DDeYiDdt5;`Km||S5wkfX^+%e$uvaVEza+_DfU$K@!b3_J(*&D zlQAaD;%pAShd6g8u>>6pj7KM|eyvPbSb1Gj3(mT1^tY(n`d&)p^JtS+Sl4Kzy)0;E zX%v1T@+(qPi3?35s`-Z&zY%2I;K%K_D*Spa&hT5o5T#{{t>fYvKHcV}#ad0jAjG<=NV521f2(8;g|3{Xs$ zO3)vw7S{#R%Ks>}irFv7 zxJ#MJ-~#f1AZKW6>Kf-}$Vl=E4v{fjyUfka6J=)w5|=M?q^QHK>}`QwqUF%v6Dq?Y zw?7I@7G13G^)Y3JhVwL4DLf=~b?JeC@ncY}T*=%L+3t~OLOEtHygEJ3p@h+C(WprrP zm`QPQ7(gMP8}N}L{?-q3P2%ko<26+_Gww;_sL8WvhUO=B(qwv@6LcMih#xg+LKELZJ>jw%jrtK^4d1658s?b6y2ctg(bzfHY+!;4C`7Ybn#)_4N19}b0zPE zG{$?fTa&mZ77d3-HdnUbEx-$jTjRC~Jo+#?A9b66qEL_Y#5x2HxBZF!_`=k-C)r7D zRb4J**pZaB1L{PQPANWLsO{Av#!-i#p#CV+HLlm7Fdar375X_06pN$*J@L^VTh=JT z{Z_Hj<$@S7;TAtSuu0pDw4;MR#YA_w;yd03ywH!4yuM7a0S+%wQ%-l06gxb?>ZtLM(|kte3VZUC>!C%3Hi8lsEU1mVl^;ba6vfxm%#jkaa5Zn zQ!ARamO$z1Z1zJZ71>w7^#!=mIasDq+Bn-m>HP~fQY;lfn>NzV&GfSqKMrF3vs9el zcIMJTd}iW%1rpD|nTh`$1kS=?*!C`V)5k9oS=Lk_mq>V?j`w|IQZrb@|kAo_>ki6E;U6eUUQmmU0&m3m$D(9A=2z3=eWM@M2e7mdg<3%g#^CpGW1d zc)0u(LXUh>jH<`A2wcq-gJ#R?8mmk4iaK+n&<)D{1IoGlMNMq$ z#KS<=LqIJY*Z0QIi*gfxQEmq1MmSz@H}it)1h|7xZzA?BZrVsX2yj0f&!|e#k&Fy% z`{a!7mYU(%z%T{*J&2>-WS-HVAaDW>kKQ~O51Vax4b&1Tb0O!YqWBIDIq|I3g|c=X z&)Rbk_zO6$w2EkTLYan7R=PqdP4njqYTs`l?$>Z!=|3UxHXNQ|lny)hw~or`^a4>% z?K}c${v#X)ay7Gc)2K;dcqPt57|+U8`pbplr`L+VLrQ|}cVPF?t#6-L$NFSq>^-nv zkc;U^YbqSiMJ57t8c@DNn#{lXV_>Qxc(W6FhjPKVjABxAQ-VMN0rU7EM{(Kl%@~bJ;^^`BW01*akXCBFY!(poXuBq2#V(He!@t4~?~!4s zUv$zs8l0hle_U=%u;&ohrSW))U>i%U6p#0l3jxiA<0j5UU>O`v&rpr&lM>YN7c|J! zJ(hr@0PZ4c^KqP+I>;)(J~&=uZ%3e=0IIQ1An-#twC@ag|E(4Ar&dg2^{^}P91NzPR4~Z{7Z1jcL1h~0yoF63 zs4(MCqHtdQTSCJv8M^F$b_&8SF9>FqoulaMVxv{HUFNXuL2Dv?^^S{Ct2dX5twEcM z`Y%+IdcJ!~fBpj-1d9o`7RM#=Do~vmK%I#A6zjx93}4FOjDLr%Bdku?w!`M?ybeB{ z?V%$0#7}20xT$5t^E&_edJH}9pkw%6N^Wc-&*C;chHd(q7>HLoUdi+FL=vF>v z`Dy|UI7X^U(XuL8QI!g)xb$R0b!ymiGmdiOAIr6+Cl*1%M{uSu(@zV2SPX_9hCc&r zo1;x62InXL?Ot1kHj0GhqBSvHOLCmzujAS`YJ8?dcUhWV1Kv~*s)@469CDK6$QpGI zz;S-!~ok#v?qpW{JTBE)SrZE^s(IInGddW`eCV;~CO_e}qjgw@`<`O}sdwy|L zF2plQ@{9#fndDi)Mqez^WbU|2CGblCh;EDR+}YlK6M7`dIOSqY4+688jdC~EhwQfo zxCu-xrX}VCeq%R+<=l)o0wZ46rRa!0%_f|N=kws`iU;*99K-7?ecJRNc`Z%){YjTj z-2+*}zosUCOG{%D4x(Hi-A_yx-lp`g9kBc7Z|z90pf$W=ZfL_21=Aw!_rWMmbGO{a zvpMW^fv*pDq&H|2Xv6Z`pgZV?IURq;Z-lrhWL$io;g3pcyCU1_@Ye_2#AUjtKFV>a z7(CP0J0HN&=JP%EEP6p0UgE^n;nZ}~QDfVu*mRG>IHwrS_$Myk_}A*g@a6wsR^WDV z_l7BBEOmRP8TfHLOGQCH%gCns4>M5@9f6D38k)szY`Dy*0e^x(8|T^x3XUsfi}End z0T>znR|-txuM`+KW-;Leca9&<;U$54*R&Bz|hC-VUYfD zJK@4VZg>6#HEEn3C*Sdr@e21ud2H8KIfiCZXSe$@CX8uC@NJ60YOj^ z5+2G+4T2JpdI`w|QbTf0E{L{jd{lA9)@W_@^8xATwD_n}r?x&iEk0^#b=s(-GTP3U zS|8N<>riW}W2g1||M%lO?!E~~YiEAn_nrK5?m6qMz1G_6wb$AAo_(@yr>5J_M7`31 z2ep%<*8%|*ttw?)dTZg&fw`FtIlXLQ9XAe-s>HF&E50n6l&O)?U60ctxRE%mqh(WD zTK-72-ul{V1j=J1@&<_r=hB@gYUM8NT zQOYVx%Q3o=QtnbC)CD-^X5Y>y--`I4)##~|{&EbQ7vg`6T*Ylng@ZBlZUFAY|JWTk zd0LT3aPdTYT*c=>VCYKZD_)|3|<_GTN%ZEzkH&lvXQ5nhUVgJN{9Q9O`p;n8IA-!LK z*3a=@b-U69bVPcPoe$<#>o306r?aVzU7PvPHQsvBf&~&1MWbj?$Kp*FYnd;grtm(& zT4p}PyafNbuTOs*Q=XsXRFuQf|KRRee7!0~qPpl#XgeWRr8uIvpY}+IMJbLHm0>a= z*Q7W~Tq;Y*B`GF~Yn3?TiWHv`XJgS!El6>+092u=T#w=yaXtYHW$NW9juqr4TCP}) zA~9LKjW@L}_vv}NbT@=^{sp@N{#1qkNzTk#a0O%$RaNIab8io=;EfS}?W^(!tM87r zvMf%lA5AL7xvUcDQH1B((7wF{Uln0RP`hv<8QbNS^+(ux$ZF;0g>W)_b?8Y~I~OJ& z`U$$)Sg_|Cq%w;8N{B4@<5fx8)e5@sLk^b0f8B@C{_@E!+%@qne2FQQ$3bj&CU#}+ zZ0yVV1My+M!LBkfvuq0>N&Ox^p5RQrhfiEd%J=Z`xXf}{K3A|M<}v2sxFC3Co0XV7 z>I6WBC-;AQUP1wW0^|gDmU{{I+POF)_tmJOZ~4PGOhxVnKrFL^IOADRC(eTlgvNNvq5 zIlQbVWo-8CeMrh!cAqaJoH31hJ{*qBch>ppor@*3>1+UI5hzT4!f?VC;`|i+k9y0+ zms*Oj{T!~?v%N2XY$ca3KNA=Y_{Zup3WZ%@F^$;_d^6$&h7a3`Q!r^`I#u<;sJo}#eea8syXeA89(oaMt{l#bo~JZ zXVV(Ftpu>aKnJp|lz6ga5f3eiGp%PpnRy`N7I&Bd{*P8;gQQb4JfX>K`J+0>M(xno^M%^_{sWd4|SXlU-RgWStBW<*`f1 zy`JTio>*;5K~(z+!6yee9GFmvBUOSK<{Ep>Xf4iBqZd`o8qMyGwCzO|>?Kb|@q`DJ zPH#ifawsnHX1*RM4m5z(p0*NL}T{qDx1EhB8O>kVV>_ z$K+@)aZdFYpTp|vc<|_0ymlV)ObRg08YQ(`E#$0OXweVxgpA@U?1z=oVXvxchh3>H zw~t6x6g%U`jHe`J@SiF0W2kj1^}E$BrUM-}!e$#bm?o`*3!y%ykFah5(q8?ytZjBXnW5(3HDC$w8udxwnq&h! z0ZuInJf<9@!NTwqzf>x=&l*Jzi`jq&O9;W&@D(6RkxmPwRIICDpVM>YA@B^oiyBd7Q(L#RQ~ewyM00E;??DgDr5>uhCrB#x-L|Li40N=b4o>hPH3?x zL?;cEa*!8ty|6^O(vW;^P^uHlP)1%^t|Fwp%4LEc7F zGnO3YN@R!+2}P@(AYG<3Vu_*QWe|gTWsWQ7hax>J)SFIP6;gM@rPqvzsSy2RRE^ZB zWt19Vf_z>nSgPSz8gg{pZS?qdNE{qZ0b}Bq;`ssPQ6xXW7USaBRYJl;YcNjgXu-f1 zq;Z>tZv2>UdRusA9ub%Z1TEv ztUy=7uR^zrM2rq1NBWZ=7E>sl0#kb8sv<{c^W#oh5YkRc|16YaJ1tri^s86`b&-Uw zE2oCD1-wdi;u|V>R4b9-V!}FMqw=_MwDD0bakQOwXf8w>{`rBOUMl*yd9hl>6~xbZQ{ zDv+x3=cVeJkcaq;aMC zs>I4_42DP5pvYqXKpLY(RkaucCl=$ikc?sBi>0i=m;IZm9NZs}@>*y*$MwuvfwL(auLJs4@uafl#~1DOuS$3>OV3h&V7 zua1XfFt!{Pz>&iO=;2Xkkv@i?$Bj@pU|kHRN77q0hofi{+y(JN6|qoBHdNWhx5R8s?(3eYq{9jI}El~h#W<3baY z0?mA=O!?zwfK>^7dEwn^bv*qa7M`j*RZa!)_Fk0`6ZAyG5uyV@>BBHPGE6+e-+8Y$ zQRrTwVGN7L2t)YjC;&gS7E0zg8qK@X%~;lnBG`%B6WFfVZ{EN~Dkvp>L68ZQHKIWi z21G)-!hq>L?5Ho*i*-QM?P4;QgUmMiK2Rt!bb}&O@M0-A?hi1frG^zHeQ6Nz0O))- zG|n(GdWHF3>7R93dECc>tS0I?<%i;4kk%77f;~_g;=pW zT`F28<(Tfnd)%16jfpvuEKkPF4UKAoM{UP0>!uC@cyxka9)l{Q>-wMNo;# z2T|u4qO0OqZ*ntk&=)WC2VV%36K1(F6{|@9rmD;2EJC@SMHmLv$L44&5Pp#d?iO)(CU)+pdDOw(McjF|h2NHx$#2n}PuafhIsTPcKdRjGw|fQt zRo)nYiq?4vK+DC|o4lkm!}bcWzH7oe)amWBY_D**>v*>F)I*m+;BCI`+L&rfU`)96 zVqp49hI_96S#OAQQ5FZY0kQG#w@~y81JTE6(f@G>MF+2OzVk|_?Uh_dsfW}AQoH_E zp+wi;u-YpUJ%3D*S*p&HlQkeYd6hse@LR>T0{=|!aI`7f2JWl8g5+>-r09c_eOEPJ zD*F8eAqF+r2w5P(d!009p|cGAcV5QJHHJFhxor2lymX>X;k=?Auh>7&b01S2H~5WU z;;gm@BeHa zjl0=|oxPdU+PTIcK=&%?Mh-|FqaI=Dv};ENI;5jm4pJtS3;wt0oXa70wjLat@Pvb|6FN6X8L!Sy@_ zg_FGkhYoUFp_64OQkdX%&m*KP6+{_nCmh&e4)jku%oxZH4&OESBL2BPv(T7>dd9N3 zeo|sOkGO^gNz@EPBGCi1yNS;+DbdG9{oLJ*9b2{!)Y6%Q-w8M3|1$iG)}^=M$i9cW zM+kd@yJxxE!`*A#z0KYG+*$acFrMGRjxVlG@U=CG8tz04=~oRn|7uCaI47?Yx|s{} zIJa?S?AMW8MPi~g8vQqr0RZR8Hvd&La>iUCoMKZ22842HGTZNvhxK03 z>j;GRM2>>}&N#=Lk@bpadDTEn_+OA%i#_Knz_Mq-wpS|i-$avV7kk4QvrBY36Q5Ir zBwlj1SHq(gZ!|v^d&$l6=xnrDB@%(p3y4YNGUkV47RweVd&jKQM@Yj%8#lo(Djq`V1P*LnO>5F1`0@-+sFiV7K-pf+-y(xWp}ru8vwxQ#n%*%@(# zO!DHSxCdFBfxT4Hw_&aku>Eb9WhKCQ&035KqI@@qCMRM%hvd*kAwH9k)^~=X%Ofki zGT&+CC1=<=aSnBz>=n)NhBl+OODjaM7yHLoRCuMnodj`|1000^N%X_B%RJ{0-x)Q_ zX`O|SMjxFA@duCuraS+187c_M4@th{9qEtq%ALYl-qB9yEU)YgZ!}NJoGr7w;m*ag zz^=aH5Wk1AjCdVtp>&XD{eaT+P#6p;wsT)Z7;n1o{HFyaIomE<9GB|bLaO_;R5nF} zwM7ItZ(b_Tp$7kI3CrN{elZ}7+{RRfVoOHBQ}X&OK>$N~f%7)%#zT2}1+bhEyI~IJ z&>mJG>0}R-cNDyE;u3Gj(cZ+ZIbO*UXm2RWai?=Pu8F&eM&_37 z&1aB<7?&t5sMjFM!$z^X?v(!XFQ$k(^0qx%PPdEq*{#ICX5=kCn|ebZOD7bHM4|?IA9Dp z2c{F(O1^{Qt=IH9{nuR4ufbA010Z@jaZF_f$uSck~&#~~o6`V(+VMN8Vw zKjcceM@YG2FezbQ=M^dCj>~#Nt)cM6ts``9FRAhWQ5Xt#l6=0H%jX@z=O)D`uT9A3 zKP8`Ql{SQR_L7hG9-)Epi+kAhErNRjiIk;R0x5i`bMfN9g-ZP8pjcMpx3T-|{d;1V zi`eLD+^zb~hnEgwBTDso41h4ppDso3i+tyDoZ8#{pXn|O&AyRK`^$p%uLq+|``;pI zzkO-M{yq3L3@*K|N#=Bal+$es59o$-@7D$XY{3VnLH=>WJxn&t!i1H7trlIG>!+Gi zg&2iOoO^}vFJ204MBRYqdP)lay-Ty9TYTMyxj0>dYFZ6~r=c^iY8E-28IR!-eHa;a z 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

08!k408Nbh@c?)x8DcF{W^ntrNKR8aIZ7C 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 literal 0 HcmV?d00001 diff --git a/production/bin/SUB05TIM.dll b/production/bin/SUB05TIM.dll new file mode 100644 index 0000000000000000000000000000000000000000..0bde1dc30a3cc6be93897a080b2141c916f12cb9 GIT binary patch literal 110532 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�uj8fAKaUc+M&rj5dKsd~eik`52*)obA?JPq;A3Dn2($b+fZO3S;}tkq zwxxh}T`r6};MHl^Cb5i4!M=(>_rgfQ9)ROMm@#3j41+{P!aM?!VKdAR;CKqg9T!z5 zzYe*O1M%001m2cC?K*Lmh|d^XIHNtsmQr239@q31(_t2`9~yU|X3LWCQ^fpZib5s7 z0>{e)sN|DyoPd$V%j94)9VRQuZQ8nrNDxll?Lai!qB0ew5TUN9o(@U(_1_3tflCTlH_!#dP*15>p!~u9t zfn+H#Gd>Q0c^&_GO@6+t|C>SMUP5Efsu*OUbPuiU`%Ci(&+xOlLL@N$k;hBsawR647pfz>*4EX zZW9m6(NPC{8ewL(h=*j<+)(%o%xbUB?Ha{c?8gD~nNVeTtoD53O^B3V5qki}U8?C> zWCEbI7@P3!ikMub@$-O>zf=R^{$N+Qn7R+>q#Op}kYvD@U&Q3^YCH!??pHLx@zoC` z(ON6ggMP{4$`kGzqWGUwJa9bFj3fTGC~sLyeAFvY2j}6^LQ$W|anJXW@`qt&rQ!&Cr?@SC7&Mk!H@e@~tK1w3wW`h!FXFi4wfJQ~ z4@mS{?3kMJxu^1svg2e2dD`TK z9@d+uJx(Be%)^Fa9zIfGiyZTqNBr1z@G-|cY;sB8Jmx_SIL)Q*5dx7@9^~Xv)624| z`r1vxyVo-5w?JCfw6?Tw7yB$z2?_kPK`xv{59!^FS zMbs*Kf-2O^v?D z*Ii;{YzA^Yrf_x{<%|F(__)9Z!lvdVjDOYf!hIxPgt$aPdHAjN*c#G#ZdCQBcEZiZ0uPreBtU+|7T z8*|ls5FVRrPEA3K$2hp3J<$ z9MnJ~0Qp9qS@y8MLU|LlzhOEsSCEhKX(xw*XlBf}I1{KZ)e=hGO=L%!=&$6})_>MWBO?KT?5+ttO1tcv2>@W0>ko166P@phxNSe z7MTDh;bI6NlQ1ubNq8CHPl=M1eqKH+y#-^u_koM!aGa@{pTYYo3hN{&j}YULMczeM7aGpEMI_9=&D#T@fp5f*w1OVzoEdkM_!`vG)n8D?sl z=MmQwP84_n&MFv3NK>2(#W{9s;4A=h1~dSi5>okJ-@z!ZV=YCmxkCO%BHiYMR zcoVJ$_#jW;>_XC5XPk(~5z~c%|kasTB@5qV5$BJiOxX*j=eIrNJ<%Q z)7_3(0^^`~QOo!((tdz530`6KIhapT7ZdHgs7)2;T~edQ4XU-an#al~3K$33`z+#};OV@vjN4=LHzAthMh zLrS>9)LisXH>8etKIyb8O=r5o_akDO^a=%%M~kcjQ+cLNU5SV})6?`BGiM54xaU>} zkE{ohuSSS?j;zgF5^-9do%Fx+mPDMErwUXwYGU=hIrk#GBYI+`&L5dKA1a-l;by?F zh=1=+Kre+Z#Bxe9`8h?RJ}Mq{3<4)l_@2HIb@GG_I1%Q_6T%k4^5h928zFu2gs?;U zhEJXl81v)_;c0*|%;CusrZ|J%=E)QKXKRE$c|z1|6-1sqxf5Y>0Y^@r{0I~)g_nf% zlsdL5_**9I7LM^wo-j`w`ou(3W;imZ{stlA>22l}w|LD1CaDdXU$7x>Dsf2=&UJ__ znKJFzl5_|1vMDohJ%qFw;nO5_yW6&OwARb@xS;ZNMVLs>Zqckf z5{x=5h*URM%Nu|jTJ$tjEPPb)liILaJ&W1jqfNEYU!4EyF>jX_r{7Pvl zS83u5M88%<^Asm3k{SNrl-GO}evH>|l-EKP3Kto6%a1ynAxD%q?owtRoaTK(c^4QP zTG|&C=s@}k4wW!myDZf$BNZnV5|=Maq$ZH+zu^n2yEM)So1!^Z8kYAz*CsVwnF`{DWyUf}qq@~Vl5(`knKgYw!K<)s6? zrF=Hyo?2crs#aOvR`PBO*WTJ44MpuuOlG(Eqw;K(cd3@PbjgcYcZ+v2Gg44vI?bAO zdR_TbrjvEbY@)^^@ZE~a6h8r#u+5m=2^yd7bZ`})s*81~j4s2TG$S zH-3a?hHR&VEUCJg@y?jaCeLQXG(X8RX0kS?hh-eYe$tHTdEgy?A4tqZL#+`yO%agnosy%;eW=Gi|UR6tv!&;C^-4wr1>aNv(@ z%tqBb)`tUsMB@VTaSr^^CpF3^>eL<%{LvQ|m7C$BkL}^WAAK_-g(E5`4*ap}@`XL4 zL*l?6J~tf|JeS*2xlSl6oI#fPa^WtC#im3;@e3E7ifpCu)+88|$$ zv!M&M02LCq#_dsf^kF<7b%TNuP>#Zp^(h=~`&0e#>9Ot2a#C!wxSUR~FDq{!#EGX& zIe|c=?KR@2vcpd|KgM*K=M@Od!$^}NfA<0<;yIuv9rxG@ClU8clZ=-OV#I`7{CHrK z+l<`N!6%q_hb!LWZ9|2Afc$(5)gQdCtj4~Qr$s!F%XlvZ$wnCG(*PcH^SzF^ zufzFJ+7jeX2Yj}}OjZ1G=TM{gc19C0gD?Xy&d-4OJ5yPjHBmR3wXRU@`XcdNH?!=Y zK=lcjloBk{n9{g=;WPX;Hd1VxfwpYt-?jYPk3Sbl3$)wePXF%DjZ4J%J)y}JDAjvT7@7`Xia zMr!`ehcil zn=BLheK;P4!4qyCVh@{beFeS;G|zJ-EwkbqIOHUg))GnD6*6hhg5i%~q|jzSyBor^ zomuE1Q)tegPb+=D0J|4qq|m>E;|&-*;|Lvf?r#(G$*URn$^ex7UvL=6(~76&Igy4g}A zvKyNtHQ}TNa-{~q5wnCA9NGy+`fm?g`p=qNJ=4iGtrPQdJqArqdj{RRXLVlJgJ*URPu!N)k5ffc({_J@Ch9^Rs2*e|-djs_Fc!2elqOo(R@)?>(U znIM}&QihZLJ z1;N6$e-hs=j@7Dh&>FQpXwT$Z@3{bRWQ54(MHPD zxaVeE^|2qxb>wGOfy4VSme2C93x6UBLywrx|2h^L86-UGZrrv#(A?01 zE6tPU$Cec1;BJ&vFVDRhp0s|r-PXKUd3JCE`)CfWatxF&rbM3XU$ z;vsWkFVy4|Hyu85-_&F%?Dg84$y}+tdCxD7%0*}{*ECZ=Q>SSz5GfrRO?9VUr-A1I zAh;vBe}8Z9HRzF;aHeAN5FGQd`v~`x0FvJwk}9xtSyo!p<&E8N)=M?w2#l((tI!dB zkWDy;=Zj%@#e?~rJ6V=jzS{I3sg{=T{Yk55eF412ucnq@S66!n4x(I{I6|V+Z&Uim z4%q$uT02n{v_}`rtvy(x5JtT7V^9k2Pt@CZ4wsV`_y%xCdYdtw8y?`gr;2fU=R+}fJpU!(?(e0%2|7;Zk_+A0!vMBz0~T^-J*n@5cu zA7Ilx72}+0m|k6y3n46@U;Sg{Vf_66FUxSJx_iS?FooToWiI|)&p=u?|B9*8@Sm`- zhmONVZ1^O7^d|_6sh;idaa)h;>&+|+0mes@SkzYvVs&C1w8^hjsIQA>F{%Y%aBN#NU!iH2|=}TgU(4 zjnCoEGIFKn*z>59%)8cb?}ZncU^VZ#$N^vz_?zgmXsdbSu6yqK=U3SM#Z6F^8xB4rqOV?H4Ba1&t zW4I}?FSk=!c)6WB!xO#So?yP*PI|uFzR-aHc<=bbJ4pY}zT9p{_D8?mPB{E>I|1|M zc1fsTZl^oy<#vLRm)oPD@XPJQMZetcej6pQ7^Tm#5e^5}qeXgWZK(BvV0$gbD;;=I z+ck9y2;9~}J(RJrw7P!*${h^I2&do`LztTwgy9iw(cE#=^9_XXu<^vmbfX*P^;jii({EVj4A9N;8>;WX0V9ZCm866glz7nI9H;DaC9#GIUwgofLDVm)D}M zq{x+i>4116#aszxAeg?8VxC0!5LDeqakhlBaZ#pu9mRafE?3y(Z4{Psh#pnPymN1OQaCZf`({O|>T>kmu|*AwEnBCOOMGlp zmf#fPWAo5Bn1HP!+z4v8a~ZLbEW}@s*NF#pX1h_yuytrxMePz~x#t5cY8i;0UywSi zW8VOgW&HS5l3CQ8-8jg>q40n0%V_`k#VyR5_!T}&e)=MaZCi#vuWdE{lX*aV((mw> zZdvBt1&qu54j%zP>N|YW$ECi*N4HnlIDAfFNUUR&!0ilwvQ1c4PgxF3s_XAh&l4!X z4?%3Ab$Y78Erw!u~By!X$7ojnxe74B4O8XsY7dVRZaoHTrs>x$Y4Hi>WyFd4`W0T8d=) zj_DeBl!?P*9HekMeUq0leOn;R#V~PlU@*CyrJ)b-)iBe1I@UZDTqbX@Hj@5(Ef$mhd9c(;pAwaHzWAom z0gYxE_*aFtxO{wpVws4)Au5cb$4=OpYJ;UvYQ@MvMr5c=HazFb+LTGfm;cPpD4uw!z8=NPq9pSpcq3Q&zR7R&YJ~U&jE|%F+_VU(vZl?0{`pd&rg$WN&?jugiy8{r%)q>=~u}l%>xge9a)LxW`3R>qdm)}tXrPN?dlkA&c|ox zAr_cJ>71!I8K`OGS{lZq6fn8bIfrjNnUx`&Z);cxZ!o4Z11^XQmzZSq2L1?$lS=W% zx+#p|LI$AYB4V%&p8}>7sWL33j@pO(sfv|{$ZDN**>E9!hS_deBJGsbY&2|RTOph> z(CwFF{9^Bn6!EO&@)Xqsxgtnp6?N^_g2@&n3)!g@b&b?wT!frFbd!U2A+{9$f9-t< zd{x!8_dWLvxd|a8BtRIH3!Y;(urjlBd<7H5z<~IGC>dbuOiuMS!B4CGCY)l%0k8( zp>zCx)F->*$mA)t;ZBd8TzbL;moVzWlPN7Pw?Y#^w;6c&sRskEAXk@%0BCqV-cuUR zLoq8bay-y8%rbX0g|Vadmga}7%2`~gFi$2z1!jW98)p5%CE+_szILqwJ%~)W+~Rnq zZR&%cipgQFP=@%>K(q;yq{|eAEHNy&3}P^^%yA|BP^5>TIdcSzLGdIU$U;v3D?k>iPyfZ>xDD3eZz)yE4CDspr-FY2Uu0qunJ&wM$y)1n1_zlKPl zE|So7<jG^|gs61Iu^3HJ4Y5d@kk4l0{NX^PG>Qj@GMN+iP|<$~ zH$FmH1yVA1UYZb?Oct~gl|m-uL$4Et(KBR{Jq(m%lZL=;L$B?@QNiK7AsB~v=-(aZ+6 zsKt+wNvA^Qhbc!u-bz#=q3UI7Bw2tm#hvEo2n9GcyULgzO};aHqrmf2*?@w`_ap(8 zu`NfRnWAqZ2gxKjD*}+UJcOZYQ65o!DhQ-+h{8heTXMEaL>8hEUl2B~QevyQG3WR!_wS1W`hO64$K7PY1h zf)R3r8X4h(=}##2l$$;}T6*M|i1(?XYOEfr^jt`omy#UfyBT^T;}Ag}1u`9skBTaz z72cuEKOq{9{@60nha-pi(8I#cB7F=&kBLw)U|j&FN6=d}hfmQam<91e6mCh)x@5e}bn6!gxS|X~7O0JErFNp)v;}8`HZTGMgBwqLchAw`NTo%%CxRhV>^W zy5@90(ngm{{#fQayU6&4FAfbmxEx1{5Ty_z)R$qoVysvXHzj(w!HC8&zSIy}4m6nb z`-3N(JQPJ3*Yx;4Do7D>uqfBT>ahwA#){Dq3aZ;T$+_o{@Lq;E7FE;`_sJ`A%Xg2W^I zopZg(LiY*{V^}yw7{W(}0r;V{P%_8SaNd<}#0oiVD!qSIpL7|amle9e<;2@L3~fZf#PFp(I<1>qbW*my{oF11k@SkfOq zBSQOjh0~ERlAw(I3HhPvos?IMm%)JTnYNX6fFBKFdO@oB!7U{@_WN-~A&2;?jyUb- z5ptm^M&P~KQ(M0euCDn#*_k|Tf`p7Pe-03qM|W5RpU%(H>kD&N%tMvDD3Cc33%tEZ zSVgLdP;D4maG10NDwMz^C8h?4OE)MTq3))ZK|iq(Y7`J!Be9Vp4J#$Gq!|?{EYKBV zMP|BGv`oqo-3N2rh`)`EIFc++$N7;Jt`-hqcQE9WA*QtI2Ad)lR={|Lh;RFOgxj?h zeh^Su46lf5%ArPOMRwBm4ISLfnjq$_uBk{bTW5KJ59(+NcTz@SfuDhtD>Cm7;GZml z3ROM`JI_#E6-RoLopJrXxPd=-LZGZL%Z{l)E&2v{ex#Y|NKUtwtRQxv3*VU?PRU9l z&Mb^6tK=eGh7U7UT`cb+l<2z%!=d`fJ=#))U+5M(o(1L56@058yhV;9BYhWA29PfF zdEsB9a(WA+XoWAe z<82j6biAfDZh`3egNn>Db)J}_0f{NA1#+I(EUx8wr@M!tO~E#BU+v~4%G{Bn4|e8V z)p(ic_m_nj)L<=Sfdub&(3tu5a`fMR5ii#mX8-WwUGMVJ2^NKO3wqok-sfEBLB+Aj zs|6E#jWr-a*RdOGLGEXG>oW-0URN1hWtaxW^spSrs@u zYm^&bO%ZXN7=e~$?${G>ydH<8wMjSMv)g97rRV|<&k~3Q_U1&b>w5nnx;=KITWaTL z+>v%yE!s6Hj_b?efNbYCv%OQu^j#p$5#q#`dAr~RPuiJn;@tMGBZA8h`vMZ1GfG{s zFL*6zYuUpRvw`P&ly{h0IM=nh+`^JtL}obxh=IG5@s}%bZT>Rh4g3}1mk%Of^Nz%k zHJ!VY2>T3oE4W+3T_blQBr7MVkSv3;5IzO4Y2q$70a5b2DdMx>HaBq!eBe9?cD9$8 z=GyDsdAMGZL2u3~6TKNhD|ly%{SxkLxyyjYSKVy%l))>q`bTYTtCO4 zurrt9&_<5Sw=)by3e%^B86jmUCCW%EZo>|9p?}(8=0J9^`L4ki@W=I;g~n{uGck+n zC&g#*h-+w&M8!ZP;ypmSjrbgs;=9?XpS$a^W6RcoTH15*GvZqOU5r1`y67exS+{d{ zKVc7Z_cV7earX*$Z*lhlcQO1>7|-uu#}`+}`P!Oz1$QEb^s5H!=VMYa_MAqcn|Uy= zebQ{Va5ZvS6@uSB=`|!*k(g+WTJP7$0D$vkoA(Pevd3O3oT94~144;3ndP;~!)mwS zH3Y)@B1ge~r=8`_%(z2lyAyyI_r5H#mbmtHz_Mn;wwEdMUrUo`mbhh%*`+$2iO;D* z5;t*@Tfw6ScQikixQUJO=uEU&EfRsp3y4YNGUkV)mdF-!+@n_MBc$PBwO#OwQb=H* zcW0?P0*8mqbtj(Xj#vrU8^U{&%nVC$SmKVKBMzyP0!crPoLYcZ@pK}If%S7@lqt#B zn-bf+ccmxl_eR+_$D!iH(y|dCf}m)G0*ldq&+bSJ?-g#26vb{+AdYf?gYZ9zez;b#Ymf2lQM2vl z+4!jS(0LI59+JQe`=2gG1wr{C$=BQ?yisn6oj=<>((ah;7N6#h=1H-=X|`KtUoac& zs!PXsJ(Oj{YfuZNgEZ?0l%|KmU`Vm-J43>_Gd%mhVo;L3?cya-seT}&x>HMKQ8ZXv zM1cMJMe-bK@Gh6Ib{yU%285B@n95LW$tZYKUY{)pU`Wri-$LDZC{Hg1mOWw@%wZqe z!wMvw=z;P+1uvYu)E#=HJNZ+_vb=|U zNBMjk1m95y;5~b2FO2<`{ewZ--pLWfv#+=qIcH;Oldj!0U#;{SK z<6Ab%`U*x}rsmXusreG*(Hrsi5c4S$`;dRbk@W_5?-0fn*W-D3pdwzv-DvKP;BG2+ zCvbNvcOn<-HLek3u-euqMO+H&W5moulKT|wG_nFBp2hUwRWf#H(51qeiVzMmLobm& z^ z-56v$yLp?p#LIY1a$vW;jqY#@0u-Li84F}8MXl9odG!C2L^my87>A>J~`SN;UpF%R0E?}{-3%#VCmGI#Uda1X^HrfQtEQ4p47wp|WIppk9Y!OuN= zEJU`KpxBAoh1f^C8}LX1P3XBziH5@+2y1?_@obw!BQEs2KNOX50pEdYB$1%8cLO z$a;@E{Wq6tgmq=T+?5xJDqOge37c!zvq1pmu;_<#msVzd6HXH>K=|W1lxpF z?)V4jrEdyPD#*A;oaH*RVem6Vv=n)Z5d$gLn&KTHNL>b6oFUnqHP3fNNx~p&X6>|? ziWPz~oV*N%MEe-}TXDrU&;HTHm?oMsqw!aTykZi0j8#VQCZG^6fp|<5nDO}437l(~ zw+Pagxb9N7cs8=fV$d&=!68^9bBh7Pm!r^rGL}JJ{=vl+18WX59{VY#EDy8iONBg~ z4%m;!P{Lbwwd$D=PUx=IosdSZIj(lLJKkQx7)n$PtV3k?V-b+kyh)f+(UO+^t!yb@ z5>oCMOiI|-epyPn%HCe10eRT&wuxvB?EE$lvf|GpUJLN>Y_ zvsKUj=%PVvM5(@j0T5>S(?#fgfoETWQ)|2TOWkFm*L19I8`8kghmyQD=<`A^`;dYQZ562|pK;YxI z9Gth~?{P{%nVnZ~WWCRwR|HrwcTzFOs+%99!SO8NDKKXFHpbL>tSFRh3EsxDF_U5; z0FgEVkmTVqH+d!i8>hH)ak?<$&RyazTmndMJPu*Mt%M!;HbfI-xdeY)7*GgnKZYag zIqv?0Fd?U2qy)o-5MVt9u!&R}e9tSAhv%TKKtW0WE1Zqv)gs;G-{ayOd0iQG-)j*F(?zB%vVD9=Q(FFLl=U5QWLn~T@F!}*cHm&;f)qZZEq#T_@} zuEa+kf@O+0@?K!lu!r6$TCXpI|BS*SKCW8^A3}mCvH&T>EHZ=hQZ%*fl17+E-FbGs zv)##PYHfEXr=hbOOKDc3?Q%!qBmRI})JZxU6B)q)$qzM0VF}(~Wp(b?xYwbd-^1Ta z_>;zcA4ishXUwcJ?4)t^Q?c5(XMsnFTQtQTLqU*Z__58k=F|#XJ*#XraC&F~=`Y~# zyJR8K!xK2NUgGWz!v2dp8|%eM0rcZzvbb{5LEcYsQP(nAVj@v_j9Yps0GNK_VmakG z#I-)_og&b98@t3!tOvqZy;}GkTNl}=$PZ;C;MR>mvkPHS9xZi;uX0E5(j0lmkZ#DL zxFd;Mf4rGJ$DIg@3+K3FdT=I@^1U^%O{qI-l|W$h5pld{J%9td)pD8LXf*3JafM#b zMu(%($W9zC712A?Ten?y0duK65Zz9)T5|P0eRpmxIP#7p`&;VSXJB$+QtxOBS6pumziukc zBxMA`m;OK7u;x{aZ)3)!V^gv)FVPFX=C($D;0GHrH@~Ie)kVdZ$E%CVzhGAvCAT=$ zMUyXc7Zk0Hf3u)ya`huc$?8Xo%BvqMDz1LKC^3IX{EZyog%}(0h7h^!Es^w@`?!Jr z7f62#>0jn7D5{CCECAU@K=x6PeXJbsJnSj4+TK zgx8|4NrjI!sKmBR!K)NpFV7s|zc#}D{LtCSLly**k)Y<&r*F>-E)t&0-ji^BFXYm< zt@Rsn!~AQ2L%R_#`(4F`-P+^NX4#Dk#0$S-dwsLE2Va+PL;K6)^NPx^w&xWkzv9d* zn*3#VUQy*$UUku|FXUAhRc%RB7cIIhe?d`?wXo2uIj!K4>PM>|oA>m*f0_5Qc|Wgy z96$B027`h0z5qOSAX?GO~duV z@mET)57+DQ{~!d<6$hmAp#wdrk_cb)h>h@E_{=N#6|AuyE9^XIJL-Kc+GQ_g2)$kw zN7g&F09oddq6B@K+d%wDX9wu$+O&$u*gz-9TjvM4VIVs6!@Z!ROF_MA4f?T8IN)Mt zNtq{!m%U_Agx|(cW?CXUK)!63y~xgB@^nM_x-8RqRq3a)R;p(}y^wAn+Uu%HKa@XR z!FOk^Z4j2fCVq0L1JVM_d!(1W<^$SA$E&LNn&@zahX0K>e|cknQ4y|Qfu&WNQ>m78 z-Ntk*g~dql4kWy=6Kl(MWV+hA2t%8t}p(9N7MpDI4%^Da{|B&8_th2GnVOWz)>d} zH?PA%ecJ{?>)M-fa(-rWd%6<`Ad&9CD}4k4-YtbyyHwx+(k@>mj-$@at@TZ^=>bSi z8?3Ld-+;IJ{Jo42un&&3+Hz~69}vmencnB_9|We&9V3A%vLoOCJ6z9Ic(5?k->b_Z{;IE` zC=Ojb!0rg2PBo=l@It}PPqI(hjIz%UP~P^=bXP;$F&%s{+9xS4#2GN_XUULtx)C)% zBlGQnyJD_vjm*^C1}YoyPV$b;G9P0JWwFj8-Z~}$Sacu9(LClSAEDs^hE2pvrm3Uh z@1?O!{=#2nw)?_jX;RREq6zQc{3KO7XpYg`eK8I+ zKKz{Um)K|nUW7RXrKn%m`B~*-`#4DrRw%~;Ho=h$a#`T&Av-8h55R(*o$XUlkcD13 z@<~||oCfWlA%y{uuaO*Z#K`J@B(I4f;;&-ysKUgnF#f`rJaENmZh>YrByf5^y&r(_ zh4+SD=I}|Ge!s3Al_7ejx)!S54xnd9Nf^+k$n~5*scuOoA7|b=SSIsj^$+Bd(F6K> zFrn3+pL-UExo(Siv$7oGLq$O_sq@p;K*f+Kv!>KxDEF5s{>0SEif+(Uku65{xvmKh zz)?g9w6&%;VM%qdB3?yomDmZ{Yq#SQf~~|aOQIr4fb)U9 z!--Gb4taj=SgWynS)9J?yy93j5aSyzuYSY*o{Q6ea(D4#7o>_`vj#o?NL>BMy}<+c z8<5H3cdFsdiJb=JoYrf_uZcN#Sqd>#_l{YbB>*$*ERxDps6|6{liHaw?8l_~sLj@!o4ekVmv&aP_*x6QKE5RKNA9L@)^Xta{Lvu-`O-E4i!!pFC)o%ETV z*8M!Y-+EX+4hgLF?SQwR50~S*tYI=vtPGdRM!-!}oD;HKLR8EUQY#^~p(sk$qh2jxUcfM%dNai;4Rm9;iv>&t-?br3cOm42fo6*HDR6rIW=Fj z;?shQ0Rf3$e-YBoMO!Vqa}%_Qz;gL?;-OfjyZ};BzaJDCLdpiHQyzfVByLX>bvoBNh5XWa%tf(@aFxV8fPFp!yC-pf0t&xB z@zX@%=VKw{pC+E-g{KmGvM%gNTwee_*B9JT06upVJcly~NAc;~V~zsirBnW8b;Qe(4H!M={?>I0_U+s5yy*4g2b4It zJij;J6P-s?=l=n0_mQ3aCmRfjb;||?+w@@9E!w$NODBz2&GNg2l)pt+q?F=FNXaAm z7$j1c_0bv)<7M=$ANrE5#gS;uBdP#x)Mb4nTI<5(#e zmwpb+HX&HUsZCtZ+BrS;-IVlh`!OZyWA-ly_=Wu|1^AWyHUV$j&#H>%S?8CmXnyIu zp#X0SQnN*n>}xf9WLd$!RqZ0TAqKHG2RA`&!K&0KvXi zvqz@p20!g~u4j_F-sz>bzUkb7I<84vl&~6H2*JAJx5R;WOZ-Yv*@(C3c6P@5h%3M~&QtMMc=iEWif6I}kC@YrhcQlfw(4Y7;2SfwG-L z_;ztkrwHdZYd76>xAg&9G&vtwf5a&oI^)(#&yG1WX8~c>N(9M$aM`f$p^|-sioZS9Ia*Yn?=LQX+Z8g~;!``e5F#k^PlmIDg%{i=)9^dH3cO zN3aj;LDiG@ATK@$>c&Mu!g<1bhRj|-oU~AgPYrmE951AiHyTTvH0bc17ovT^mOVA9G%8;$cFTtMZNr^)IZK z!xZX7=!m%A$-6DjK5z1N=e9iPW;q_hhbUJuSIIv2y00+|UvqC$(-t^kuXl^Cw4EQi zeJ+OXhumlIK@WY%{ex?7Lf;b{#Qs1i9<5^+c~-PZ@!urb|H0kP+P&B7CB=N%#Ap72 zvyX0mnR^{%AaNeq9U#ul>9;XyI31IQU*LnexyRXo`3zDwF7h~AF?VBn0X9hOJZ z&*nqBo713602Ow{(GG`JCC%OT9%NC;@Q3zKm{A|LcM}A89>ztxUCAS4>eW&7P+X?* zhvKg>kY0=T%3P=@5e;gKKf|O;wZ;Ds_tl1Dr8ego92-iDZzq3h3s-eF1p995Y6j@l ztXj`N)q0PrB=51V!vG=r!=p2$j&@tGSVbF^MK(%{yu#}%g6kmf2pC5#ys-!Yd?p3n z1w4DBHbtx$T#JvEnVK%`L?EKmF(+SOl}p8pR@g%B;&QYfeYCXl=%WK0SDuIqCw7PG zUuWiW*kF0LH5|jjVZLwU1VJxHMxYe6t8TT+ZY@7^Yy^E%i~%!|tr!Mp{(~?mymaQ7 z?D3hI+3m4N1A(b%j*DF3*|^TG zDX9vNZw_F~oszlMN@p%FVB`_*jP((LdXmVJ4%Pv!iFIdDBSq-Fss@NP7oq({-E@U+ z>k{PymsodW8b>77?9I4Z<6MHP;^S_sz}7!jRN>WUJx&6TTR#nJKQ-;xEcb0itt7{Drs>(YZSQJlznwyE?v| zuB$gEc>)@r&f;s* zkGj=3*IGAQaX$L;mu_=FKr6(V+G{yGF(HjPU$w5c#H^E({e5v~E2hIvuf5a8g!nC7 z=k!?2jbqJW0{`fI-@&bvo;>Hxy#9iibG7?5SCsmyY-hzTs%}xHV~+G3kovt>Ju%B* z<$HO;=}q(_7566oF(FD|+y=qKM-;rV(lE1r)M(CLr`wG^8wTf>JISL^z*^t7ocj>{ zAQitg?%ak1=IlcHiiyHO9X=EPkGS)@_|522uYIfS+=hhd>_WN(R&dyFzhOJSLDF@$ zBIU-McY?!y7KFb++Q)Qhs~dwn{$a0stLxl`;RZK=p24M^!QnIRf4I)?+?zc>y&rnG z*Y=F(yaeSSL;Hu}&gKQb6Xuf+zQsQC8E5gCF|Ly7gRY2wDGndJKJI)2j)*IRZWZG7 zhFEkRSbyFZi>qN0;h66I32*@vk#^Y z$B5o>w*}X0_Cx0m;8YEQgWt;H`v}MbwVS*os|w%%MQk7k>&ylA;R+%@DjMoCbqYdj z*+|3LTgAFgKMe`%So}qNbgS4D5aLhAZ7Uf?z*$9mfP=09XA<_J5R2eGr9>zcIK!|m zrO)2Sdr{%wQB%-)lH`o-*9r%Z-vQ??I;gSzUg7W;?6y^jz4qAv)lnb@t8G;W7eYs6 z3I`980_T44B6f63Dx6|~ZEJP(qB=WD;c%?BEqaQ%od}%WzHc05A^^g5-?%Z8*w$|B zX}Mt2Ibj(rjMPZQDRNNsmX~WQM4aQI+TaKi*`-> zA$3F1?dWAeNc&+DXVMP^II`1zNF3>hdY%`cX+Na*(Q#}`XS4u^N7OTk&~a?b)U(#% zZ*X1dux;JcV`o&(O7V9@{>C>lCUF*IwyOb|>_h5OQ+-^)D^{19CLqF7aAX5=tbioN znS@LikjfBbhJaLsAoAInnh-=jeY4hw)GO}YA&BJO8-hsgeIbbC-XDTU?li3IMSV(g zPlh0pdzBA4SFvX=q<$I{WRVX6ju42w@NopB$%g<(h}iB!Ku18f`VimwWq0vMQQljj5@#DyB}2RfZwQ zS4^#p)r26^Dl3l1NbN(`rKZlTn1vAy5Xl{skF9_adqOzVDukUOcpxFx28>NY@)7!p zfzI>_XffgA0CH>vbYC2XOsjy!xag&%1DvT9uyZmDsjNV-Ob$Vguc(A9l|Dpg8)+T* zqBR|Z#1p^?HZ$AYfQ!_Au$kG0l0~*z$^FG+4GbgS$7XV2&4^ZKEHWtf8kE}&%KZlAVuNy(L0QMWFVAsn49agBlnV{Y zvkb~ThRh2L%6kpUTx&F{jY@;^R)cb-LHR?2vSU!5Y*6ktD33EJ^EOh{g1A4MC3DiC zyvd;K7?cwRQFZZatU(x6;!P=4Q_oG>V_ zH7M^gC?^fddkxAlgL17w`TGXt$p+=$8I(VSi6feyUSm-14JfNS3|t;wR>HyaV`%1Y zqtK#KaL>NO@V3Bd7h^eQ^f*J;#5jjn4xv?d&Q|aGlurZ>?T-H#g(*3GRBoh{O7ZvC zI2g_=+1wQ(K59Xr3QeI9<|ySqQf5;APr%{sp-tBkzRX$NiK=S}pRxt#&)RgIuo7@t zCzNMl1T*LsTp@+QX3(5Bvx2a#OVAmpFKgorn)7BkgPt3xD}=`xH0RAw8t9xHx)L06 z23?8M!Di5$9dk}BXUF5vg4ofGGhfbkDXDG!HhNK=v9?(|NNqzj&U|;{Q_g(1;)u2k zHa%-Q9K58jh91>ZXxi>c;VqOWXs?g7-TMFlOW@G!qMNpR4cZHjvZ6Je#^xQ5p7GjV z6M>4=8nZUqD<4;+y}p-qRi4roYjG%Tk;D-ISsQJ^<+!CS&cs!dR}wh9KT(W7IXliG zf>YY74S&*J{JD|2(Ox}+*h||Yh1Sv*cyLEP1Q{XL0N;_e$c|jThC*(gz^Td^-BWy= zOM%mmKm1qr@-GP+rc#?4QgyM|4Z6lg-T>r+SghBFklX(Pfxeu)q%5ZY+=2^?>R{9U zLtllOa{HLN^R^aZO8=onqMObe%n34YltmG6rso$uI36f(RN$GUNwv!saPiVy`XNz; zGrxN<95pBEh0K!9BDBovyWq88wXfA&u_JM+eOnBOvut%wL>@{SY)aCeF-_x%c-_pv=7^aAu-0 z-n-Fsf4LVg?QSFk#$v`QqQ|_xIaDj`g%SA*rrU>a}`98dZy*fje1Uk&i?e= z=j%EAWM^>S`a2*X<13jJUtdE@xp8h$St={)XbfKO<2(r*)^+q6JCWDNBO;#x~M+%i2r?@vwMTh6n^G=_|HehV&9As z!WljMMBl?7rC7$s(W(H#$kFQYoH&evy=W<;pb|&uWY)&-+NuGAQ$gn3S&J3y%YLNX z1g^x6ZXD6B0f-v5EeM}uV>B@%$!Izm(wQ5hsb-L9VhfIFd(m2sX#IfD*Mm)Gw%-89 zuX5Fz0RdJlmVu$FFzGYDQ+V8$?ONdU;Y>yoTYn3X-Ux(u3U?|x(eLq}@ag;uaCSsm z^#f9cIinea%z|ozwsz;lk=J#k$X-zMUxjWC*R93p$B7ibUlwb~=%%A!C%_O3ye3Bx zaHgZ+B^;xBz@gWfb1?SsW=wD8e7P77x)6BLjZv@<2r|#FM!(FBQLr0hu8e}u=fq(Y zB=NVuD7XvcWfUMNb8L))F32OtW$Ky!7v1RLGf{y`59hZg=0*?iJ^&BjtvJ{gwTVuK zHtpem0tes2)uIj>P5Vaw82T7(p|1p=rf<+{(M`{(nLI=k`BkA#H&dNGn?mJa(s`Hff7(Q9;xhZLxC@TWCFx1)kJ13QxUm zg`$De4y<^Pk$TRaFU#kn6iO^NjwEE-%S`IpUj1kSk#gHq|9S)n1KCT*GCfPiat^zz zUymf9ei_RmTG1l9(eCqCXuE$K7s)lc(e79Hc0VS1QJpbPIWHJ2PHFdQ-|oDZV)__k z@K3(oznPO4?cP6#-Pwqv3|9dKJC(-(2yNOorT{E`gBS76`_QIsy7vHLupjNnA!nQ# zHjT=nS<)77__p{rfOFg8`@SuhpUsW7==E)p1OiU7HrnEP-xdSM;5HNkG6sK?MM0j@ z7X0Rj-ago`K6vj->e*jcBtnlXhDtqW$KbKPvQ7j}a%`?KcZQF%1UT(Eac25BDc}_2 zM_K0BeY}tJdEoTq#9@!+b}evr=fs)gywyy{;w7;CeFuwBQm9leN+3AH_|4k)5n| z%xYMJM>pmlF5xf7ov-;i31hLAScc>yYl$D32@%MQi$44fmZMlvKL%V`OY8}=@Q)cg z&-k&k2r3}O=#~V|jR47t8Xe5BG1sle?PM8WZ|1;|_lT+ni7z%{uH%Zt5DB(OqKDK% zuxa1u7yd(>X~9Kx^jGr@^&L2gfUE5(0$L*glAUbe{hb@MQi8*80%| z7qqmT!mqoe%-Q)zVrd-){W5d&$LSZpr`}(D6+(A1zD#%4@zo6+8D9gB@6(%ge9?1F zxfx&Q!)0WAb!fFjJ{dclwG9?Kq&|9tuItW0`)K|lLHazGtCv3ia)gIIp-p=Su_^KB z^IVl$`aH)$079F#`<(zwy9aChG}bjU8Hw!=P;jO2)!cU9(79fG%eofvh5z`|o*-M% z!%qbq;)b@rwkH%r^U@QdGYPWPo^Ta#2J!@bpTzHlmAi^#HePhD_LlFV!_iDae)N{# z_};P-XXeIioIvVhYukcLbWBjc)X)ad3X=QRc7Ch)s{$eE=TC zDnxqJEVM$S(55}=X8>n=6jzNRDsR2>GkKUCsdHvOl_9(TN*OZ9B&KgrmOKQ!l!vxB z4-hj0i~xw58_35F5RV3kA*Fy|K!eEI!6UQR;8QzpJt9?zoYumcMqx{ z54|R*KdWaMl4vUZha*vR(>dzfz!}JY*n+-c!$rkdW^ue>G)6c2#=E|6+!?*7&X|7= z@$(P!v$@fKy3wz}{D;2rn(rGsKqQ*yNtM1a8n>0CZwx%5RUUwE>^K15D20Pb-|*Kp zi*%0f@a|J1TGU?eKvKCa1CDP~0a{J-CUa%2_e3kn3mQ{6(L1Grgg-J$?(~+Q;sW&> zY})Jg0z|^uzdj2>tX=%(+191SZeG4>?|X=F<=eD$d&IncFa0ag4%mpKxYw^vrX8&)fn86OEp^6UrIPGnv`$0iMik z+?yM{_bS{Dg>yol8NjBGMmKuzd%pKBH-!N@Guzq&@Lqm9AV<$0w4y@=o6c-geeaE~ zF{d#b(X1ya{ctcJlQ`@b?GP1P`xwCxeNZ3c2trAtkpciV?PCi-NBUR}KUDYGo(InU zGTTos)c$iWxSGEsqW^pu_LBbdGbu#Yp8oTnzW+?jx++iUKmFh^nE%i>9zw`S-#8x) zb7!^%;3YE~?>3qneWT|9e4`smmcCI1B4`xav~T>(_l>Nz`V{U)(Ab&GpKHpb&pcPI+oA!<3i8AY8KByjQsf6rcfKkM-yZ_8c4}y$-1RVJk$qec+0-4?f zIuXcmCqM)RQFDj#gW`Uz!M)tz-fnPTWN=R&6!#kp?n#6DCWHH#2KUJa#r+!w_sItL zZiD+egL~ycaql&_R~p>68r;t@xX(H$?%y`J&oa387~C@k_o{>9zQf>NWpL-bGV1de z8Qd2g6!$v~?u!iWy$1Ko4em7u#eJv2y~g0a!{FXyaIZZm?%y}K^Y{7@Jx||haKF*u zzV@KF-)C@NYjD5M;QlRxd(%O2|B=DH$>82+aKF>w-hNQr`wZ^w2KQYC_a7MCHysrB zM-A?q4DP!P?i}@^qfGZfao=Td?>4xsxIb-h-)eC0H@H73pZzC=s;*w)s9))gzF#G_Z28{2kN`7zW#>&n!Z=- zIoB`hRTX!Gw(`I@GoRPKVXaH8QedNXLGMHxR)E;cODe?jKO`c!F`dzy};mp-$8M2H@LrPaIZ4B^E;<#oc0|Q z_ZEYDzrlT$!ToK6`>uoH-ehop$>3gTaQ~ITefL3eZ!oy;Hn>kVxIb=if9asOuQj;u zGPoxV?zbD<`wxoy8iRYE!M)tz{uP7!n+L_c*5H1h!M)hv&fn8SeSYsjabIb0-)V49 z7~Go-?jIf$_Zoxy4ugBl;9hHRj~#X}cMp~s+%{RV?O z@4G~~A8l|iJ}B-B4DLM!_csmh{5_wNM^zVfgH#u~vI^+v$|}T5|Gq`{0@lvn{@Rrl z>nYKTK`N_2W_@QVB(v&!+aP_{6-e++adxk8KRo+RSFXMvc*Qt3%cp}kcW!9Id&-+4IDZC? zuF!x=He`zpVkDwK z`!;2(YXFH#_)S1`RViCN1V{phlt4mW1cVzu;(TLkefwr;bz)dQui#?0Z$V=J5s;)0 zN%5hGQ&x&6E=g5Vo`|m}^^8nHDge>5Bng?TzQPRbehMH_E4LFTV$-dF>;QqF7dHXI zJQmQo7Z81~Qu68pWNoC?9zePyklz9_IRc4es$J#xlzkry2)$17s&8ADVyNgfxFoOX zz|pH1NyrjFc1#RM^uUgC5Erw<%>CLuQf63sR{0C{O**g6jbqE{`Gt)2yBZNxYB0-`H?i8BOW z()Pg<&{@T6EFdj@Gyxnt0ubJ73SxN8xBHjz%G)#ZTnPYmn17m!N774kfuSc4}BoTTdM4}jC_ z_mq8q3=n<)8I7?$4+uIDlIJ&o=n75Zd;mzf&x@^wf$A>7OKWu;Al#(AL{$LK)a!~c zM`55;If{6a@)WevYZ6LG6(Da$D4zz%BHvrs_H00EfgbqAMnIAgD}Nmjy*iv2yPH|1 zM5Ew4!0C_Bxf_t(K6g=7qE+ClYMnIDILqpZ-a-4nWw-VN=hi68#dJ}Ni zH2_ts9fbI;0FLzm!j1)+e-4mj1oA2%4PYI_`yWXsf-@99BDvPBliYCdVG11Xty|ZT-l)%7np@NQxUqxZmMIEQi9RF_-hdpOx7G7)@ILj9*7fpSl*fxt zUAz)WjV}UE)n)K@@1}G^O#XCqQbk9)u|3mKkxF4@wC0VZTGx^3YL_#${UHGvHI7`L zUcN8aq$|dKgAkx~IdC~MHgO@g32oTiDke32Y9YlkZXI4*9#c<4VOFq0cEoI`I;x(e zN?}y(Y-=^q+3Op5SKgK#835OdMWFa zsgK|ZB=MH#%fuusGf>kydHC;@>b)YQO zq9fgo*-a|l(E$P*>N?KlvNf6Jw$>Dj__}p1X+Srvkg(2Jsy*F&?5yKb9bK)N<_&2W z11YAC%+Igu6nd;8VV4ei#10mVCvlTW~t)}7(D~QLf7j%WBPK6`2yEc=N~scAW+xP;1h^8 zlieWtCWx}gDUBEU+r8=;Hy+hDLPN((oo!5#!^7KV5)?mV@vRoi}X>-?^c zj&y5AAoz6Ctz8>Z%^QU0;GOCnbsd|LLpLDBrxtX16#z1`svl+t zr{Xu*{%PounV3vL>fwd<(=#n6r&~|2Yi(%TAR-{8uB1|tU!%ta2^k)#@Nbc0LE2E@ z#;#W3=dn~8dg#ieqxjKul44-SCo*=btxi-7QGBq%-OHNVLt!5jx(5 zW|T%%BG-jVcpx~l86j2Ivb-zZu^Dou1c&A<4k?Uv>*3*ex-meJQ#>ic;?5e>Mo1cM z9iK_pWx6`jHSCk{FM4KJ7^FmbGgb5gSzC*Ra~1Q_Fu|3<68XxOPFN7>uPYr}neKq* zVP+)_q{a79q0S5vY;p_kzq6}Nu@5Udh$UrcXeNVU*tcVYnyPENwuiLE zUMyqU$o8!Rv5eNI^r&{lhO(i0hMkpPLlE=}9^clfL2&hjtq8P%xvJV%IgVeEP+ob{ z5N1^M2ZqJ19g1Y6BN-eHl=_`!v)IIkD$>Km2U(1B@ zcsPefGPzI_$YX?TXzpxR9wiK$BYEpc499iY2}Hz2vv)9p#NgDYh#Gbg2F8|jHJCAI zG*P9pjrH{{$S}z5qS)7ps#kaeCjbi4h#{s$RfmD^D9R!Y==qY2mz?G&p-2#M9N;js z2@+?~0!@+YrSsKiSu;nPpe>;Y=8d5INre>}$gQho23|04l9CTxAcVwMg*%)QLu8O4 z8U`3B4Fd(DgeoqPb0iat^OCB%2av*WiWy8a6xid%{wyFn)?|BqzjS|iWUHm$(A6SF zWh1lc8vu}PgBar?5idha_=1R3iWeqZkNTw}7A*y|OA~Lp7-MDs#e_`OJBCfo>V|FB zBMmF7U@ot;C(5Z@RbW^yc2_D(eqoR^UuKOe;o)9-XeQ*L!O)K(KRobKCE?KyeN%OH zFx(L*cPSe9nF^vDUZ}r2VFz)SJ}dp0BM2i<=ZS2Cg{!-)B0~tt=z;%lpgZ7AYUc}W za~#E7G(3z#Zb+lbrU61PM2ocH_Tozh*=3`+SMGQW~{Yig|`F8Th?Ip@wsLe=;6``-8adEw4E z&vKsgoagM@P2q|Tre};9@b>jFwht~ncK&U2}t5-`oi>%^Oe*Mb+SDfCNzozR;=l>mB0m4qhjpC4Vu)rFbJAJ7Znbn+4;VR1li*4#K+=fuN8yqkBOW_r3(uR8#W7uD;aHH^bKounf5c-a zzL~Q)MsI~$@THO44_{W+3{cn;MCt|~{*(L#Kb*3*h!USoZar)JhHRLeo<}PoNBdcpa6`QPQ`?`abPR0uS>Pm$1Cs*UQzz4?kQuu;X zP&xg{bK%|mta;NX2;)zmNYG2>O;bp2`!nU2ean4$&dQw2bH0`1J`|DOUy=qrOZ)oz z%wzJPm4mAkd}bbk1(NT*5Q$2^Q?F25$4R$9^0S}!^*MdI-~nh9d~G4=tKJS$*0V== zSb%o`3;}mX0i9Qy=w)_(zAa58{Y@Y))Hb4a6S`PP_H?81sdOpHA{mI#Ig7u4d(9N?1 z>&?Iw1k@+*1xFx#A9s?Ug5zhtym18(HWeIsev>mmAaK^;ON&Xw`gH}B<8J|HPM~0% z;;ekudEl@5-~_0j@B0;%hD#lr-!k8PH&iU}FZdQ1dB&Zvn#Z&O$MXH9ADzngopSmP z1ZljGKlcOg70&j+7rL_^dAHcl14%h2W=1GVD8)$vRfq z-DrOqlHjoB@W9Amq$lt>>ScEiRc^l{^P^)vNAHQr#J!y5 z@)!0xD-SqpyK1VdtDOgeR^Pz`r**!g2TqNdbkNs*;J8ldR=Oq~@I99kFj#z!5Bv@U z=yuk=Bm%r^^}TrDW8K}pqm#NJ*zfpYVCqSK8K?&%BRhbwhy{@yK%9u|sM6(oQ2++t zLFfrn#CLDeJKIkv&La+L0$9&bB&7Y?ldxy|wY|)|X*6JwB=Zy9A*Fe6VNB(q-*GZ8 zV9i8ClrwCmNgv9QxE{<;L9wXPknF1ULjzJEic^uRJ3xd&+-jj*K!GV+J&9?*Sc^N@T!eli+fpT(~xgB@MUZCzYD^X8o(bT|Wr#~`B{;g9C~p3V1lJADVA!l-~E zc=I&b4xZ=kgto3#?FSW~YZYwiIBt;Qixa_qNC%HMN{l0F*!2pIl?s6l%$ zjqxIl`8>zePcYUBr}1q&ga*_eAYq1EmJc1iqp4K^e*DF5(YXH+BwC>C7?WqCCm_% zYj}F81Kp38hZ!a)Rh$wPYu`m&+8j!e&#?xX*>%KzjY8qb+x9Stz(bJVzJ5GQWNZQb zXa(1sD8j54Txts9z^FkZw+`hY+d4p|A+9X$-tkD>LuHgWic3=zro8bKH>FSg6%q*e zm*fP}e@Kq+#lCKz`WVNkw{wgm2>C(tlkC88lMj`X`>PKGP4V5;KF2Se=BM$4v6Dsf zneV3xcS7Y=7o(dYP^5rFp@a3QZMRWlK5yQY$EDFHav21v@WK5q#&6?xF$E%H4|@ z8lPWnqw>U?ThXBH=Q+*e{Om*7x>UvTP*Dg4=n!buPA;{g!m`O^pPnHYd_*EivMZYfL}J@>q9{!@`y%D9rB+lSxJx`v-SQGW&@b~+vEKC0_@+?-Z9E7Ioxxs#Zj{X(_9sSqQI!nrV{4rupm?G0Gz!X~ zGbv?)LMvxE`wWrNE)bM=Z#jc97L>#4%OIdn`3*UU^(g0?9x37Dxm=$|(HWf4AUpmg zS}Ap=E2^O$rQx^oP!Jc{j1SeQ_w`5p_%Q=Nww$SilwxHy2%HhZ`BL(H(oKhZ1(Fw{7)IeFJC^Doi7(AbJOaH6r z?_OP?rMSCSWL)|kF0Onh7b>d5f#8EYl=?h{`fnLbY=ihOIG9L*LT8lSxxHLnpIT0W z{OVG20_jv!n+*F;9+vk;i2ZjQLTtkeHHLi}YTbMdwM(G<>cg7n%>cAzY41n@M}E#V>mgQyUAi779Pb(;8KF4$tD0k2r-lM>dh{;KQ7f zzKc>6P=9#=96rFf?H{u2G%n$kDjrlTI}JkKE!+@zVm&H5!Vy|6<%IP=2*Z^Zd|HveVZ?_P}N5YRUa&%g#M!2$yANHfgVw zone1R*?Adb4@A9y3P3=8g}NB7t1j?@#YaSoAs}RWw2pZTrD<$`rwazsu z5H78gL8@xj`Q!ww^8^x%s4oHmNjXL>F;}wTgsdecTR6oDM>Ni$2kqJ1I$NZ5&Y{8( zP%lO@!qyoF9w0q1c!YJTxm?XUP8o|jCSQwqnm}P4L-SlI@@GB-4Q!nYCHI%L&bN{g zv9!)tRlN|M5U=tNB-*;44%k-`+OXo+Y_EZnY`yEFS zd<041#(g#tJq~DXS%>P=ZGsp`_ETmA(#MHd?>#ftTP3HukrYQkmEv!R6z?D@Jk}Bo zjb)wmh7fwbL}Rsw^yI8IiA(>>W`qu*<0B;`g(RE~%2Z;_D1BB4{iZ~h9fJfcAW`D} zpy47S^J~G$NJ9`j(i%4kB33y_lR)}xAJMg1y6?QGS}HT>;CF~e>k_wu2f6k-dd3JF z{h7;siW|+Zc4@J^gEe%a=`N|2`mpAC^G2@0V-PfOIebELf7x>QN&5imuOEm<9MUMih%}1*orr1R;P5av z^`sc)TE9ajz=Yi0Zxz)dc<(gGLchf+8AQ1Ng6D@0}*dgTM#LLJ2_AT z0A??uk`PFz{lJ0C;$#uSmp1#wFq~%gIK&Vti_g9tVfGuz#39J846RrF^DU7Ls*U;{ zo-=X7(=dc*Zp_R!Ub+l0nRh&`ZQ$th7QtYw^%eoGr?SR4w9;ug#jv|Fch+9!56 zybz8RN(R#B2+AYmaEeh-A{MU3P`;y}pomiYMVk_L>fp*k^~!Z;=z1s<uC0F+btwHNL2+b}64ZBJCMaju^@I}Eb#f@eP;)R; z=sNgJT|b*hN~X^fy1sX$PV=Vqh=cFhe1C0(aUn$YMw7ircTrRh3TPy(Scp#LJeexHTy`qDL; zaYDL2J%Ow8Gfs)pbr+|k{}D<;*E>T&N!N`;>)%GG9#r;XSA<7~TdrMb(K^sC-3-ZF z)N3Iaz(x+-3;=nVfX)0nGJa! z*{9t1XReY@T|k2T>TGfX>5bne1^GVDuPHHF%RMF{{cnm+?-ok=la^{czF1 zNka|tbgs_RAYjYmDL7>MpK?AIfc;jfcAQ9a52sj&Vw04UU_qE!$Wl3`27xE_B|#a* zDJCF8VfG2iBV1b4faX3yxrbAtI*3hzQh0U9q?!g-2ud!jn6s~(MQH63l#QHXAc_`d zHm9V&Bc_rjE|gTHEE*(2eZoV1WR8%>M5w=tP%rs3b5f|+#&A3QiX)>!J;y2Oe-fd# z-W?h00TJpJj*JR*n+WxL5vqDmWT++)YB@(nh5DAD93lHXh4jE8^t+#aL}?g#Of+Tc z4)CBZ70e+DHI}yu#A$>OhjP^S;EkCmeKs1@BaYra*ag}CoAt!(I0f&yd_L}=Hp$5) zmGwdl37#ti>n3r*8Nf^=%n`eltL0ZS1n6>+mN zUV-=b+}l9d=eW0#yiap)6L}xw-fPIahkMtP{tv)AfT8~NiZs*>;DMp0QBH6}T_q5| zf07V%dP#i_-WWr@JPOn!4vRF@uI~`DBLmE*`K*r)DXJ5>q%w;%RE7}zF^$c9E;3Xc zVZw&`$jd>^P(cA|hWeubHA6iIP#WrK?&XGhjC;AE_HZvZ)P3B`4fTEQ<%ZhAz1&cn z;T^zG&;4E+sscPPRLX2ppEBMh5PP2>1UJ+!cw-Fp&`3&?!zK-N%^k$-m;*z-$j8YJ zJK2FtDnl>IOVmd#U<#!7(!fv{>TSY=4fTouHA5W{pk}Cj0@Mt(2cR_6eca0p^?mN; zhT6it+)&qYFE>;(_i{tka4$Dh6}$r&YTL`wP&1HbyQTY z2LxCy!8--08EOkaX{c+tmm8{?d%2-%xR)DhCHHbeE#+Qrs72h%4K=ulbW+EW<5x#< zh~{s(zmrx2Q9o-G$NYOf{R0MlXrmZAQPbg9dw|EN%_uNs2=QBB zFdp@eg#QryVq}=YkFo=0k^&zFi5{SCrx2pQeTnOFM7>T@xmY?irIybjUVfg^ImP5v zgEd2O;IiAf@fkXaDNkzBVNe_ZMGB5)lT0eO9MsL=AgVV9rwFQ5f@vJ==;i8g2E!{@ zlkvIe$TCSw7NCuTN9-=4I4A9G;F8OUbi}?&qa3kUrB0lMR+6x5yp4J&Pu{vPLzCt` zY^Qv3SPt8-oi5z##tHZOsoZUA11pzxxNT$DdqddU4zG~WwkeF=9QNKAWo(C zBw0XJ0~K@376Eq4z{BC+Dgzf#;3KLJAU&X59l_Ngxt0j7%OqE{XgdzFBi6DE)MiQ_ z37JI!{pbk-g}8E1FwPp;hLDD@VVp!~ihVlhoZ&}7_tL2+em`L^XcUD#bVwKtrHsO_ zzVQe`f}K+F3i%=JMv`_!Jp@oH@EB17$&ZsmdT5J|I9Hp)PybP{^ZQZah`L!yIk6fs zcu4?Q^T6s;8@M>tEs^i(xb#pW+D}#SsZ_=huEvS6B5m!bJQ}(RgcAvbK7#9{s0i)P z*g~lc8M45~yVFy9Azq}^VIdRYAR{u^kMqNCgEaTxHCDh@qFiSrnTJUohgHPhLq$~Z zBOMQuETn^9Euaxj`?aT7Ya&|P73UEJ7-{{}=}0LKpmWJMvQJ0ougmtA(XsWp2hB?k z`W!gle$rWa6o#cx8Dc{&xCa4wsIrq-!k|P-O`@{W%Cpk1ju46ChOr1^oG65%da3C5 z6_QqF;ROV#*K7-3dbn*lTG$rokZq+nd7NAxW|z@!{fV$cRY<%n%<`T_-}ozjLl-*w z#;=g>#nPQ8-O17&F5Lv_o_;}udsn)zO7}VG?w9U^(!EEz-<9sw(!D~uE2Mj|bmvKT zvUG<_H$l3me=Xye?yJ&$PP+T0`=E61k?wb;d$n}0knRfUUM$^t($)P|#PhyP_Z!lE zNxBE6`>1rcOZQgk-XPs(?#lZ$vuGTS%^sBY$<-YZ_wD$R_n|}$&|Mfi4*sW`2t?2L zCUTfx(uv^bxAM@pq_^8hqRw}q{ZyZK?&fE`R^QR~9=bzw&^ZZvp5B9}=xSfzVBCr@ zIp_YX_1|bN8bp=MyzE;&=l+^*ys@k<{6xsl3)mIkfdXIG#qIMCvew=cyQ1lSb;XaU z+xEuc_D~)+JJdyhQP@~d1%!8GbwxGr9qp&}-o(u>d5wp}eWacrVDTm*J}o`!_fbvT z=jgm~NBH%q_R~7=;P%sscL^EcvTq@_HmVoSz^Facod;%ZCui=zynl(Zr_-+|BkN$- z_Cq|~f0qKZ`%omUCmmYIdtK4`a(&jDQ@!Kt=G1G(x$?}ZdE-{K&y6#G2j!6YVc_(K zry}M`!wtB+hg$$4y*eGv-;3*T=cc0gnJpB*1@UKfK_WCjBG$tS9Y}vX;yH0gINs$1-x!7`0q$u* zW>Efv-$!s|7+y+n36+Gvs2${AOc^I1p8h#b-}7`subiu1fID%k3ed^n@<-{oa=Nvb z8T`OZnUMYqgr{b=9;tKsz2h=PVqYPu@6~)?FA?toF*pT39n~G;TB*xfIqSxUi066S z{k)m(Gofi*4~zphUfR1dkXf53yK&i%70f-a@r5z%1>8j z&fI^t9&`Hs7;HnPI(&j_?QeYIH3eKLS&yIlnTtS{Wugj?)bvwo2yTp|5`=irWV(Cj?i6~Ij zpXf_JjX^xB=$n(#Jsk{sarl<blt z0vEgpU`KR)Ez>Ua3d1}3%{>1s6~Z=u=uLG7JSJ$aU5vf_&=K`-dqjN>J`xXw?s5hU zZFql$9L1{s@!sIOFdQxbpG%d%KWZvDlb$)E{uIIJp>l)ajQS8@C+=fTI_7LYWxVbV z{3e=j*^Hd_55~2{&2$IdpKE}1H*;i(3ANq4`L{IWXg`!x;Ggx#6eKg?Ipv)DN%J*5 z#k>Hs_R}WwrZHe@KW#B@-T+UI`AK8-=B^EK&ScC0`U)m>6(~nH{Y6W%=a75&>@~mk?${{A_9_45&shx zF~yRpjF=KYiM=JFee|o}+D#?IeDhMuYyW~N7$0Q)DO5jDFmk|vvYqFr%fH@a)D)Cu zr>W4_)At8lfJJnf7tG24(={*k(DhN??&bLtagn$+IS+Y2cZN3&hjKi{J+KF?KZ6Qc zpq_Uk5&Go$D-CF3(YEI54HGU2B+Z14gA;gC46s#!?_EL$uSpVV`EAcU7$@Sswcm)m zO3wcoc=-siApY1H<{HlL!aC<3HQ$2zOPPjm7npClACAnl$8kwj9N3YzOG11-i+JkV zz=l%sgmIH76o~(f7*bFuz;%5Qie=k1`BJKzONAj24KE5$pse@w!XU_hT)W=93|`8< zo;lAVGU7hr*=Yu(}nemH9@RP+lMwV#S#cO@F{Riu4P zKbG~9xDfqo$cJrk3;aSV7*tIa^7z%$yEyE1pvgtUXT8kXcRZZG3sl5o-UJ@DZpH%C zvbNUe#e9TV4|ROF(12P_73M^cw{Kls2AWRM-Y+mAy!V9#qu{iD5863N6R>W&WiorO#kk{5R( zy7V^>l9fm81mN8KC+`e=M8S55Pz(MDN{2tO@AppM;l4jO(R?SP=ZJUub1`WACk-So zvmi+8Yml{>g7bls`*LUB_`?V)(u?9U$FD8{Imh=bf}3%%z5SUvA^TIwbMgh3{TWDp z9*U$rcs(+ON^5=|x;8tyo^eh-3P407At}#iD)8A&ed!aq?&-lDq%TGZpnpn!T1@e& zFT&fGegSw+e3uuA6Pr<8Fh z?}^u|vCQ=bN0~R@fFOSLWk4uqt+X!H1wSc2A)xoD6zhP3B~gmKlWmhpR}j(c}kM+;y@nDC{;g?Zhq~=&0+m9 zGyC`)DrVIi=fO;tg35*SF=)*ZU-<~zsXAxldQ#v$2R9A+V((iR$=K7JlU~dTEJdf0 zc5A-0Pxl%2Iao0F0PKSqPnVGsaB=-Hl}Zyd6;u!4~N?0nR6QVaq7BvoRbbXfh=Dh5tgLz^^ZXE zENpZJ+jRIW4PFRK9|r_J^bkxU9G2r*@F09hw~=$aFsU#7uV{kz#~WA|+Qh!}bAQeU zJaWAN^Hbj|DEuuGV#=4C|Hsj#CM^GnHGt+G(d=Uajq>#@qQ+W`P!#Z<7}ysD)Av!3 z2NS`#_g(~qiX-+Lpm1OJCY)M{?N9a%q4c5ck@ZZ|_cv&0o3O6amp&ZHLI*#BoIrXF zt@R*%zazoJ(T}5}yo<)py!pb=O6!*b$+2jYJnbJV-o$;BNur+djyfVw`FPX!d~h5%F#ZdqNQ>E0^c8>HJT z-PO`9mhM97W=r=R=?;>vPP*^!6Y;&lU9zv;*}h=L4`5(#9IR@;423p*6OCt42j}yt zLElTXzL1F`GuXNBylajP>Pt)}`S zG2a&|8N$;u0y!RmgBIUB{~ucb%?N*#N5pqEtxfX#ni7v<#~<6H0&k0#1H^u0$(SI`lT`ONNNqR?2c#Zz@0CY|MD+9>a$`AII?PTlD z82K7~?*Md7{ys?`D1AR4fUf0Vr=;6r;@9l^`vL5$=~w>P+4WyF0A166jie8xf879d zO@Ei952XLA9|-+iG3nFvx5)IzmOriixom*;>pWROj?4UwjbAUz@7@9Q)AZNcpV;^{ zx|Tl!(Y5r)(vQZ}pIEwOqp*u)<4dL(=k;kYmKj2R!fEAQqet=*Zf|+Cyxtg?Esv&K zV&GLVaIXfh5aBG+)#A6sz#9G=_kV^3ETY6%G;PKTPb{pF`NCHSfG3rIPY!5Z%K0!xAj`N;jTRd{UnfgN1+KIs~%Wwy>XkT6y2AwHwmSEh=>77dY~w zxy9$Q33p8LS)^N1w$PT9ms2_rzv(Jjz9s)u$*A?eb7JU@Lf5qXJgcL)xTttugivhp z@TWY6A5lBbA?I)`{&ONOBOy&{;B@?aTYN8(fBi4qRYpO z=|c3)AY*KbtG9ZXV1#c zo|QGzX0uJP&9T|6+QU$+U_`5xQF)z-zzj*|Wk*A17nUsM)ESi1S{%5akcBrJ?<~Bt z@t)6YGiETDIDg5KMfn8`#w#i-6~63{Z-(^Ee)*s^dzO{dvu0<{o0TNhNUruvPYrUtzYprUmufX3J@H96!Hd{0EiVAb` zmrP136bFFuSHM1mtF=+fLTI*@9u4`OpZLVmj@o2$|mN|+S6%<`MiMcA8 zy|oo}*1E=)7Hea*wWYSEp|-jff7_taW6g9G6qS^4Nu`b60l7*;T=-P~8vHo~PfKf^ z*NQ)tfbw8%sjsN3gOC5A1P{tW3zFlhvSyYo$j^x1#b&Dkm*#D4Hq{84OkiZJyQZX|Atrr~s@b zJxWA<%i79j@ARs=ItJyd+%2pE2MO2Ww~5uV87!Mk2V94LjFoI?@p|ePwKnjqwau6f zT(>8>{vMBo+oI_R!t1l9#PJwI_saG|<3APyzZ?U1 z$H2A^qxI>Gq3@1?yJPq>V%jZh44fGQ+hXA3G4l7uz}A@fx{9Lpwd6;`T`}Po=jP6{ zW)^$a&Y5am*jkHbX!QnbVaf86Y^qLIpkPh1X3d(OJzci$-|&B9pKr>;H}&P4_CfS0 z-?WGSyV^rq|DtEgP|+`TTqa!0%IJPla1A^T)5a6At~S3}^`GWBu>t?5z!t35;ANdy zgn|3&VElaT=4DU$z>2ExZ!aE;+E8OvTSHf>29Nty%+u`Qmt%BbL_XF&MuYsRj z*q(XeCwB$jHu%YH#(NX|H2)8Kc(Ey0@s zKk}8e;vES;@|t~u*9t$&XH1WGD*PC8G1JA6L4LRmc%AS!!F}lx%=zFy4!5ZY@(2(2 z$9UJnzZdS$@wUN_u^hX0DPx=9Z-e_T-kad>g?n8wV_OLiH@*b+f!_jmP$}#KzZLGe zcprn`26rXieekb>yBF`z;U{-d8RCK81-F}C_{lXcW9()4EpYvKkHOyo_b}eqhzIWS zOOX!vSHT@p&e&Vzhx=o^LHMz@%&?x!PQg#^CwL9pVXNg>$HHrZAM43%1l}b0t#DW1 zwZM;cW%eT84ET@3eFyJ2__4msPT|djpRIr#yi?)FIy0Mq*9JerqEy=uxf=oJ_61Nny-HV@IKD5G`Y zH|SL29*~!0G)KrQj_^m~`-@YiQHj&DxP{PeRgB)T_#yFZ$d))}S+BChH3k;?Acy9O`yztoRX-%EWf^|jPLQ~yhS{ATdnjQ4K5+wlGb?|!@o@jj22N;>^T zRs;T0YaBC%7N)0r)_d6MW_KkPSh)vlnzZ~!IFKsIt@d~;*SH(#52OOZ%9|UDe&lUz z@-&cp6|FroTK`2n-#lN&0&D0au=3eE68Vk4Q`?am#<5WfYf4jC#-K26J#eRh>y5xY z3|x15m`9VTxtT)*ZH{ycq+2fCI_b7a_crP7mTs4HUzToAx{U4);z^TkrgY~^*CpL5 z={8CCCh2xc_hISolkQRJz9!vX>6$V`d>PW6D&0KkmP@xzx?7~%Dc#4UdsMo|rK{QL zq=XH_L_8ywDe1BiLcav*4wCLj=}wTYO}g`> zn7mbhk_QG3h=d-DA=XO81m>Q&3kTpKr>yu*Wy$TiD_MxAL9F zDjQe3v5)7jZSbPtPv>yu8c*ewZn^!&&J#G^lg||X`X+ZnYkgI1OB2G(=eR0QCAJXj zNEUDxM&s(}k8@uXg{!RdR5Y`NQ8*d{RMWN_%Zw-(#6G=-(~R{_`Tp@Bw~r~(Iw?~Jf50#{q-!454? z4d&h)Cv+=QNKSoYRVz4Z>Ka#5SnT&UBkZzB8dAO1!`P(~NB+yXpAUN2)!g6gsi+bI zqfHWSX{=l8!T4x3Mo4#X9Ho_SSM&1)ogrKkHWfWp?yEh`jfne)0`F~Xa$_Tyu{{!Q z#*U-Aq6q`7D)wL`uF6waTVIQ9N5&qC#8)GoEo<1rkvNfb_94f$Hne!T)CdWfPe#+E z6wLjj@m$i!u{dudI~|Qfmeg&4>g;olUx$5v51XjudFrrvnhOX!_;n?654%utP!7bR z*&N+sk2klqxfvORZR$$wgR?D!E2wDkI_RJQWA_nU$g|Ul{na{84%W~JM*-yKIb(O| z^HDN!jsUyPvC-_;=eJ1djm?WZ6<%z)yk!k*xCT{@^_89`+96+r{XLYdJ!(mv$J4}~QcJbXVl6rB1+}!U1?n!NeQWla zDtGfir%h(u9ndg*f1m1s+nwufX+kB&DG0ZS5q7v9_!^Iwss=X4TUZ-l$}CUATDFn= zDD~CYS;k3fKvX7CsNCKSO(@s52~2AXv=gTq7<-(#E9zTnFbAL-{Ty>w3g7GSHP)m4 zAY88Et`@$n3Xcqlt!H@#x5#dGm7!vFW3!iCXTbJ2mvf^5*-lLiyUidldkoc0D2?7~ zw%1VI?19vO8MKP~iJ{(8Us;c)>r?J)+Q8W7a=ubcG^0fovzL`olTuvIy*Xdckb;x+S%P1?Ck9{ZL@64+-BS6+~(T0W?R#?E!#S_ z?cTO`+tF>^+k)GAx0$wEwr6g)ZFg>WZC|s!Y5SJ#9ou(r-@E;cOI)(314*dK5{;Cf)y z131>iwje!6q4%jy7SehBwl=Qsv2Djgx|VNW#r52`y^HIZvBS#sTeY)|$A8yO>u%d_ z`)=3nRlA#Zx9#rO-MM@3?ylY4yN~bg-Oct`_E`7W_SpBh_N>~|w5M%P$DYnTd-rth z>E3gE4>~~FHpBi?FZ8g(ZUFuVK2xESj_XCMet0ZmUv#`dfU&=V-#0<55@O$GvEY9% zmQlhZ;p$kzG>t!&P0**#7>F+7I~<~8Z_Z9LEPbpX2@82Ov(7H>^AKIzx7~48dEE;J zk|*Q4a3H$Se~?|HYv;30oi)DlT#Y}LO~m)ffOHYxJ$YJq>_>8Ytx{tp30UyguGILk zH_7=6`e$b%{wv)Ye=M7j$5v@{?R?rVDAW3R1iyk>E6N}CJ$d}Mib8ot2oZnkw>AD) z1|jcjV{etq`rf+x}|_&>i>bC?$l0zCX=zQ5r>}n50(xv<-*BlT7xo~)G&n* z39a~T@-|c8OL*XfbtISI)fw+Y*g3D0M4ho^4W@=a`9(|I#g5#f;yiZOiNv%7G;d01o}Nq7*^`OMHfp59 z=tXrEm`VR#;0?L}#Qh_2>}8}-m`Ph>crP*eM+k0FmbBKd_B7+(LPb5+I`Gx=ULhbO z945a32lO%3rUU%{OiV3EV9d(qnkJD}lj%ntfuAYv+@d9=j`C90ZJ2Ew9}nq@E6dqf z?_uW~lkeray0SSuN5Ce>^{rxuDJ=Fb}tH1UQdCM+?gl;CuoXwXlT( zypX`fEi6}nb^=RUSe^hEDh?5`L&TJ)*cidU~^MFQwhim`I)62M)c zG_j=u=me#f6$@ZD1k|z;0qj+Z=de=Y-=`GMWo5$Or4(n`*fIee1(3xq6+kzDY*sFS zV*qBb@orLD#f);Y^4BB&HE^xMvhAIGAtT3HWzzpYO#RO%vz0! zlTo;sK1~oPdz-N`xmJYhG^FKuR=3t@=yd|U+mJ>pYzuK=p>j=WBSo}cQ1(Vr7Bx54 z6K#W_?Gv<6r4j+J7R0U?q89esf_&7#5*8K}6)?5kOcg$1;qp=kQ~kp(Cg4)4wdzg7 zsR>EQ6Hs8(EUJeF11=BY4=JciQ4}XH#?J*tEQIlOUAm`I=fUL-Z)*!n9G1dc5+zPH zVZ4bj=~U4c@%F2%plHcrx2v?6#br(J3`I73CW|}B;W*c_qWnCj8>FOCEsZ07hBGH= zX6V8pfiddF??>=BE>NIMIw2vVHNwrV{3Q;idqX!V0bkNOm-Neo$3QKNff^IT5X8cL zEY8(W$hURYJOohR1MhryVOI8>92_Fl9aA&c0j(4?u48{xQ(prW-$<>kS;JmcEzbcm zv8jUjPpUB=oMVXncD$*SYNLR6X|S244?&>EHQ3G6{qQf~_B0u)8e3P_d6>y!;N5`) z)z`stVFH!~aU-X;%8ey1(H@4DER8n}SBy|T4nNbzo*v%*sp(l&b7LE%Ao+3EYLV;(nsRA`b zw$sx@xC{Zh3oBZ#WYYz1WC}Nz);_eb^Nfj`kx|x^^7{HP)@Dqk($JZvC3+^yGA2-g z=v3I$SnFmR)e>aiMV*R8x5_x=9W+HLPHc>z{i!gT2xKV*o|=lv4Q#d16pGHqDvc&8 zc%2k^7ON7_UV^fjM?hT!&0y66>LzF=s}ay~f@ZNb0_sf$G@I252u&ft^Vt;wv~X|^ zyHbEw4$ftD0<>`ujdQ(#?E=nX4FYxvIGZ&Jc$I)>uqFXF33w*EO2BObp2eC4+@XjX zMU6DCVG6S|oke%KF^yX1>5J;TCA8V}EhCjtfGE)%;pT{(=YX{c5p*k%ix`F$K^q?E zt}&)iOOftJNnNRNq_DV%CPNH;bnhn`X;c)|nn=QrKqg;X>}#vKx%OG+}{0jf$r$!W$-NZME`LyO~TMAw9xqzax)jF{@GS=^wZq=b#Bq<@^$O=lcr z<54tp=cNsr zpNt{H+1MRRauyaim~vL8!klvV!ki^}m*(e{I+^aQym=+LE_Z3pVrDoi8^6OYl{KP( zBZ|xGYL8=C2jF?Awe=UR&A1)(FBN%?y!g(bbMJo3}AzQzl1?AV!F8+bHAjU@t9>B0jUt zDbVbBeAlS74^p{3sr3I)T2t4GDzJN05)EZ^x|ad$5rAHI1%L--q&h4sv4;d;($Ssh zhXs(NqvLl!5`aZVi!VPGK$=30T~Re}J%1u_8M;+q*eigMx)gLxj|jl3yApC96~H)M z5rCfx6*F}Q0X!yv$+}MgJT8E#y1f9N5WsZZ6aY^Oz^0pwc=ib(TlX#~PYKa8bvPc+ z_6uN+E(esK31GgCI*XqRzz)qA`-KpYr@I$yzZAeC-Cj_h7Hm%45&&HSD9~*Ia6kYq z-5~%61yHK{GXxwGK)G%MfM*1-QfCL-uSSietXajqa^*@R z&qW7U0vRSnmohr-TJWIBzzGOCu)@rvipLIr4a9TylZ3zGXWEDO z5wlquNr~C4`U#NdQiqd}4%`P+Clg$yMJ{)NW0|8MV$BW>EC!#c*E}N^uX0yi3Xo3NZG8FCSHuyEB=d+~S!Sz>qtKspRG^XL01x z7h;%^dme zJC6LARdCtk2`JN`2?SBEN}pC@c7hfb6fI;qS&Y+5SCz8 z&bYkTv4}A{`C&#!@iHn`Z3N~Q6gUh zD=@E0s^H64MjSR=$B$ekt>%b4L(ncf zg!&ALRc{2S-iX+T;jCa2%aU}97OK9Y0hXx3aX~giN;GLSe3Hmr$=9@IN|Hg6Lb^59 zRU!A9yrFeJW!CuVXoQV!e7S7#rDz85NwR_hv}g;<7P|{`N}Xs5nQ{S_7m`Bdug=?2 zg=3L!?44A4nDSx&959$<_^4lomexj%;S^_ZYF0$OqC>&8EpGZ+kFr3CqoNS6XEI4< z%n@;HQXFMW&P}IM@GSN@4V0hEOlK8wLeY{vh}MQr5+M~HLjm=A*pCK_Jf>)|47D(R|Jg4`O~P(qz5 z{V=QB-Q*6R1Wl?L*$OU|XcLfby0N94mpnFndNX;}knJRA4D{kZ%p85NH0j$zDY93H z$qJ8w1d1QR8;HPEYLd($scsKTp3Uv`IWdQRm`Zg9c5Q5^uC4K|q2ttI)t(Jn&Nl)k zjRHSUY8JHRU)*9TBNVQJgJ|@_)Nv3qR?A1Myha{nO?kl7NSyS;R4;z{N_#uucxWpf zhvju6sg4^`7)?9ostik^bPA+6?`qtZK`6wCkm1^w62qvMj)%x(zJ4Z@+A=mf0M4rc!+}W6pa<9nA5Hw{xsqEx>$j% z4#x8po?q59(bk~M^GDg5ipgRjKY6UoP)1Ny!BmD}J&G;CcMR-E3wsE4C0;4k?@)?y zk-Vz4sSc;Zy&iW{lQ^l4HI6X~udB*6kT$rYk`UubslgR%$v=be!zinR;snwfGd zkIG^ZmUvE{YEiZpjl(w(sF!r}Q_;$8iPWmFQPs3miAA25@ z&v-{%2p}0b5RaG5+=y(*OBDuEsNnq6T!V1goxl%y6hC9YMq~aVhX7>5Go64}04#>b zftSssV)(s5LI@iQ%qylWSZ>5cz?XqzDc%t?09*~vTD(Ip0dNaEJ_5=CJPFT_2&e?` zH+YWYEo%TU5%SU?ZAc>k9rB5mFA|T*=%|l)e=Mb@oMz-nCnTP_h*=*=fI0)z0X}7) zwLKb{aE)TJjx$*&%s`>YycZ_T94yVDd8kg&^G5O-=rQ9N@QipFKf|F+240q^8K3I& zM(|LDO9<-OvfVO!?h{DG7OyN-vZ1VEV@W@fMCx0To|ORgKS?8Hj!?6bI7tGF0K5u0 zBTM?Gc!Xhb?`q;*$7 zWVBrxC0Ef(2c?G|W$U+5h(~+YQ&&o#m}I%xv`efMkESk#AE3z_!ZAxnS7YUaIRsQb zx{g+p7Y(6lzp{LEleUw|7F(W&VBPnutlVAdSjd(y(XJSkdR8;tO_`(bLX>)yB0k@p zPn$2)414HS5B860Jlc-TyK&SazXi6zr5HV+Rn@;6H-p3CG7msIZ?sjK(yaeW+&nJVu^#KuP=PRoBziCj^3aDR33WM-ZG{{Cc|}!C z%T?=WM^0a?S2~em{b0GROb9wVF`POAjfxN7#9=JK6w~c0%H`L15Uras1ggg#Tuw3| zSL8u7-GGPAbg_rd3^;IBRa;$+LuP9Exerj*_ItieC(f6_;inYnyoWC4R2kqiPr2!0 zPnGGkBPUQc@+gTe@+gTebVNZHb1Z_^zmvi;!h8`&8FZne3~^`MgcEyq?^BYoXIBH8 zDraNY_Uz8e6tib{R^ITQ-C5b9_w15m*X2lm{p~6Dllo^_my6TZ<%r*ab-76>rwSHT z;X(iFG;hh1TT=;Olba ziCC8-P+ONHf7H4hA>_K8@QQUg@@wmI#uE@;mm?^=E=Q19mm{CHE+_nQT`o)r zFT&+%9AT7$P*Ll0grIdf?uvCe@}9Xa$5-?s*5$;XJMXt*ksONE`*ag^HpBFRj_RDSCGS4lB6bENLFFz~x2Yk_l&u zTu;kR`U}c*yuL$zD%K+BRB@P75oIR=q*6p|kTzwXt=Qx}4C<)qQMUdLY=iL$HQqN9 zz~bFlLewrf(<)61v*Md;oS~VAqHqh)@Fz4NJuU1U9b&0OO?uh8LqL=MoS45!!!12fC+UYe4i!~!S`vBNQ$9drD7aMLU2U3-+h|RQ{4Sh zY39Rj97by~;hx=rBjbBuNQPlJueVdnH+U z0r?Ya9c3%~zAQQ?zUHEnh>Tc3G_2Urq38&gvEsq3TtrUI4jP* zJ}SZR{SI93;ARLH)#$=(`Uirig>;H2^!*m;^#430Ga5dEekulKC(+2qpDlnkC_5`t z%*_9+yy2PuS=pjz{swtGH0rz%jteEDrA?wVm{5ZZ zgz>r9cVCEo_ZC(zXc=+h)aVL)y9wv5>e%wJ$)v3{F7~|W3PBjh4B~8TYzi(LYorAC zM`aCT&!w~_nb6?t#TkjXtc)JSW10k%P96*(ovp_6fR5K|f4xc2`1TK*FpQQ=u<~vd zf5}DA=zCHVM+u7dx1V%4wt(+~u}M>SkIyd@vab_jwWEQwTev}F%Bxl z>)X5{NHRoKLDT}$G+tjWLkRTM>_UNFCD9pfELpn?OL3~6&xH|T{|6sDBTTReW}Y${ zp;;xXmYUf^no&xs*bgP%8ODnf6K9?$cu*CyaP1G)Ky)-~=wQJ^l2iLrHnE)H69x}U z&Tcte7^cZYF$f>#NVhCN=8d80?@!U=TaJ#-Ch1a>FunmsilrYjXP z2R_@z8DMn&C|eIBwvl2x_sTTNMeOv93ad$WWy&Rrl7^lwF{D*uNSnlv7Um`{rZC}r zNHI6HuqDY)QY51(iZ-d)w?({2rjfSA{|v2P!D|cxz!#F)=LEbDU^;*acrBj-u*4(w zF(hZNloRsI&;(wh90C)UT8wZ@@N%h@@Kg{$QXAp95^pL=y#b!<2q5XV!P9}4rQnP7 zVIzhH8Va^gzs@o0y-?`4c&~;oy6{mXZJ=>HW`O!bWIGKs&VyRUuW_JpA=GKY`xxG@ zFtGT-!-%gof{?9fRt7$@%MA3TR})Zl+$?+O1VYi_^7vmMS5^8<>qU6uuAu@$?F=30 zinkGiUi%|b0(~`05NMlhWz;xuT@w|U4tXWk^S~M5wrD*a_DT|Ht3=~;qsXeQ$f~b% z9V{7R&I|Cyei7v(Dp8?vjJ84+e>0h3z^TO<`!Zj6nasci#|#L+*fLpog)4fn6&F4? z!!mVS?}OPDeq2y@Z~SYNoeDoLsJkzfNG1ilcUeq#f6^w9ECgZqpp!!xiaai;+s0ul zGteZ|Na5n>n|iI)%%&ept((G^g!SVS-{Ud3E3w0*pTOfYDel#DBTPS$6D{~`9=>9QSF&Gx&hux2t z8oX_|ANO^(!!Mu)eUA5Wyl4*kxp|Js-w&WnyuM4WbZC=5!jg)={hC$064y?*<9$!4 z7<**Yq~c>WP_H+p%Xl8AWJtZwpx%_PvC9~Nc5W%&*e@kbg358QXhUnIdu@fgj;>ki zGDeZrrkZfoTYT9hMEWW4M!5tsjexjNpfSU#W@8D0f7nES?o=Au7zb?2jIqlkap65? zefhZ`Q{a9VPK;vV1Wst-B!R0H)4Cb^TRkzxuAWRc4Q@k879SBnZ#8NKLE4k@R0uBd*)ZycG2*sLy}uy zWTwxdORW582|wTdn82GN@Y?5RA0LwZf7p8y_^PUFfBc+#hC3xU2}wwp6UL}`2_Z}x zB_Jq+LO|4D)c_$tDnm>Hf)i0uvDy|}r?wPQM;vO=TF2UAs}?(=ZLO^xuxj;nc#og8 z>U*7j-|rsIa8DAbmH+#_|Le`?ob0{!+H0@9_S*B=YqR(ZEqtugi6a8**UedBJla3+ zAplD(8Vp#!P8?f&ynki|XqQ`s*RNjp&rifNfJ^m_u14PyK77W5Cg9|ZUwgLx(nF|8+!C?Ah^oxVR^x5>OgTeH> zBGfw=Oi%(KG^z3sFb)P2mLe>0Fqp7Bz~sST`ZDy1gTeF_!lw@g)87w%c`%s15)sOS z!SwZq&p#MUNI4+-U@-jy;a3NPnd89>)(3+bK2ibH!C-<$%P8Vta0TL2!S5doz8oc6 zXOt6>fkMWX^jB+t(kO_W{>8aqmPxhkZW$WC449P-t2cMh^0QXSuAx+~N_8SuXwu~Z zSTKuNW z?>QaoW8*VZ{w35z40j!)z>w22fnVM z*Z;aE;Pbw&AuRZHO^u#aB`Z@dMxKtCRwYNJ#b?}(m{ui6Cu^vuj+|B{$B4i}M^3Af zRU)(;UQVl$M+xs>L{-zOW-dTpPhD`5{@iDLK1X|fBF&mV6W;~ZXhi>z*@OXXN(UwCb}-Y+R;=Ix zt$9L{?ITXD$PY}-6NMkQp6Qbt^1gI5_h_J+VB&mj)5h_JInC+>l|gx@{E5UmHm`;G zryNRiBqfJ4QJk-sE4(n<(g)!hEbLiN3&N+Jj_>dtVPONw%~!OAA6N?%ZGA6=+0Z9- z7(O=_S_46G!kOr4s?2)|e@*f@Io8ys?BJXCsWdo|=G7Ja9@sGNPjW<)aIkENkw_Cq z_=fq#6o(>(PDe|#JdS9X4NLq<^<-{{ZW=hbVdzL7^oJaLbTDHO%4Ez25l?3VWgIH)qIhOoW^M>36@Oscr z@O$6{nM@Ef@jhN2zO?h7nlPB*w-TGS025cCqZ3h#!A(f6VV18t=G__Qu1GH~BUrI| z^7?k&3z~O{j`LSKc}&3Nd9}QnejIGaaIz(F1-Yqaa{TbXm?+Kn=Z`R}hI`iZ-!_@~ z@kF1*S3O^Qi7x7EF+);M!drYiT*LK3#P3A36-4%;jUdnA#fM}|83|lXJoZJ%ty+fn zb9Iui)^FY^N?}qTXPI6#OJT+Ky=LxEO9+aO62R{qUe+Hg*I6jJJ$XKlL@0qVsoR1WLWadpQ z`}!|Bvvz0&+jZ zlb-;oJhX8(o^-P^bDWPw2GBumyHI5m%RETP7)9>?tmUm8gAu~t3+5?BphQ9N^Tp#y zmYF#Pj#>0j5DVd0fM;}&l$}dT5IF~EXEPp&tb}6)JtWcw$2vSo_cX~MB{CX`Yl)O8 zcux|k0jr`I+Y}O3uy9Dk%=?Sxo?k+4W?D>`rqQmXhY5cYj*sIJ#i--kjIWFFvk1MF z=!|;@9JkTKxDUW_Kc3{40MoAonBLw8(^HVd$QMv@m%;Iieki$@;CTw<9>p{D06fA`Eh;^l;7$&@51p8 zp5)wsPCf{}Py*>oj6B{PJ@7JPxRE|5tenBXu$C(Ia+MOsv_q@c_szRdvxR2RMB(4b z3Wc18hnqhlFQsr4;}PnmDcIVfNeLnqKpV<BClPpraP`$1~;#$3i zD|k=pH6C(HE(p}5XJy2s_3}oktVUYf6Za}ww+=FnTaC23l_oTT7JufurgaobHvc*V zP6uZv;2C-&JS^+b01Rzb&@x-CS*HCM>Zk$HM1{1mrir$?CYgho zR$jX?*{mE+7c8lDz(j2!`;z0?Hs!51R-2>8Agn46CKF(s(pYPXH7-KX%flLiT);BE zfxBbL0cQ6YSfE2W(@SUA3F7X!hfJE~AYY&XEHF^z|++F-R>T{LDc zhE7QdpQq$t?l>A3CK-!|aNP4B$T`0?8&QIhdz4FPyr6@IhBdy_YAlQeDczI=|BGKNh8LMr;T^>kNAfYTt)+GpV`4LIXAuJu zF_iguL+vNhQ)8&@#F*Mn4DBYSSDpbwkEg-90nEf2X0nXmao7*zmB-DtZ^Gg5W!U^q z#O>$|qNhF!7>=&KE6Wxz_>oNU#RJ}FKfm8Oj~M*-I360z!5Wl<_-&TGx92# zwV@zbj>i(x%d4UECc$4r*fN~|owgNNv*DX5AT>tbTtd!;Zwa2F_Kr39+$6t%Kpg3G z@hMaRg%rD?zTZ8HQ7{QF5N^Q38t_95O^@W3;5dkI8J-T*w3s#;<2oNl@=2>g6_nlt z{40>il!?*VfFroewjT^RXd83y1NkD-w^e1dd)*SVbGO9o9yh>jxdDcM-UgVRv-bsm z^vhv8cke6BX2E<@{y##9Z;Vx2@_!BUtN>V=m4_vN!tLTF zXf`bQlYY;Z{HI{T(z7Lh66oEM|6uG{R$vt;{R&8zgzfh~kC*}b{XBjIzh}Rn{-FJS z`h)iS=?~iPr@ta#zn}i7{eH3=u-{K_z<&Qr@CNMn(;KkgPjA3}KfM9_{q)xR_WS7# z+V5vdp8bCE=GpJ3$Ftv0k7vK19?yP1J)Zr3dfK%8etJCn{q%Hc`~CEI_WSACuI=~J zLk`|0uQ z_tSGw+wZ66{lWXtn!$d*6Sd#}XM`A5Uc`Ps<8|A4x%T@B-fidgV85Rsdx9a_20!fg zGwd-LhBN8%@=DKsKLhvX1nRi3-_PKEwhdsgfo z4B8Vn$Dlnyxd!bSJ8ICLm?dF@_5=kC+B06RL3_dmyHSJo4?*@7F3i7&4BE5Ay7ROd z2w~8kh1P8vr9Bw5ABidd&~9na{xQ@*S6TdlL3?`f&4g#r-b+pxw5M`(GjUF<($VbGrb?WWXvwpyYVz`(sB z4cfE0D)SB6Q%B+T4cZe>@j1K-C5be8OhICRk?;)K!=61?wENRs@mP(JF%l7b_AqD9 zkwGGOIfgW6|4w>X6Jn+rJveaijM2lI{hbICV*wbmp9MFzNagi6zA<~Umk1{8#fL5X z6$ni8RetDCOAdfM%{1JCjn!CR==!impGY}}HTuN$4{P*^7Cx+z=GUi{Cqw@C!I9ZZ z>BRf8z3LQ|F>CQY4YWG_Mv>g`++Au4$Gs^t7SqO9AG_4$dY78`aqLn*f&py|8;I(7 zE}hZ_1YNWNA^yV#1pm_pg!m5|5d2RY5d1G~K+q*^KnR#;1A;zf145t(8xVAX7ipW7 z9?u2@J)R8+dT0YeV9*AHbl@vT>3|IgfdU&45&#gY?L4dLWA)V3&1l`&O1l^tu2zq=Q5cK&rAn21eAn4LIAf#K_fbau+ zgAX$`h7X!WP{;-Z0ki=j{!1GWbVhAJBpEZXOHIGGOHGg7r51>4mzwUtE;YUWE_J}? z?NSpK+@*$1hc>PWHm!ttPHdU=>yK7wgq{RPOX1EHwTEmT^$qMutO$Nth0u;WYF-ZZ`n*w1ks4$TU zgmnbM{-DXpct>qgVehhJ)9inYJT!V-0N|p3`4LJxq%La zj*S@0&ul-eb-7}$_5Ab4i3cQX{q-wOe3GWEry0-D<4rSc=(Bg!()N#k9!+?7))6|2 zY=>qYlt5h1E8e2VKmAEc1@g0xS@Rd;a)-jLv3`F5Fm^KRj-3yCDFf&;Vl#yIYU#y5 z;&DLZ!a9tMcTLP8D6lXZo+EhK2w()}2>v1HfqjiBi0G%7RF}b%Dm0;n}h7A{5gPC#Kbrewo})ylL6yoz(^E7Kc}gd-YO*512^I( zw(*jqv9Z%>2u|p6jRa+(Sv}?3sG2#dgv`dooS%0{8nZ@?cmxn5M!qF0Cy&abHG)J8 zgV+u2w3#R2r$~5SY{7*v_q}SdFt%&V9+kOQ>cn0F&VsmB|7Vo@4#HYSW3@iPjQY8LMa&zLtV-a8e94q-m++>$rkCo6u%0DOL) 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 literal 0 HcmV?d00001 diff --git a/production/bin/ZAN02CHK.exe b/production/bin/ZAN02CHK.exe new file mode 100644 index 0000000000000000000000000000000000000000..f8aa4659756d9206a59daf69cc3165788746b113 GIT binary patch literal 154048 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 xf}I_p+N(Lj?!yF88tqj{U7IiO(g&T literal 0 HcmV?d00001 diff --git a/production/bin/ZAN03CHK.exe b/production/bin/ZAN03CHK.exe new file mode 100644 index 0000000000000000000000000000000000000000..b213b52d44ec47a6fa3917499c969ddd3d57cca7 GIT binary patch literal 156654 zcmeFa31C#!**|>l%-qamoe3lm_5lJWtVviT3OZQ^CNf#f!s60NNG1@;W-@_bU4kK$ zaZHU?thO!zYr(ov>w;8m04u2VZM0UYwU)ZniJ^+tDq=PN-*e8nvk_?P_xXR{_xrqX z=bUFb&w0*s_U)$dq8_Gaj2Z9_4KcPCEd*+`GkP{~DOJI*gzc_iX;(T#(`MSDR zYjaD}+Lo#YYjss)W0S|a#%*nBYqZuiTJwv`tPM>y?m6-CF{x5?iJh^Uts~j@-Ko5hxbX%5~Ryh(U1c%hm?zvR~my$MtapyxQ;D8>$5r9-+Z!D{7b z85VvaM01G9F&2gO6JS-?x>)kar-L!S6wNUxb>E{;m`iTtN zGm^WGfZ$^zd3A!1=LzzL#esfVkcWIW;`7w=cqy4IL(1DgK=83~ySVF{pc~IaF}qaI8q| z6u4R74|!}n-US?^x56oreC5ONEjXL=9Y=j(9pHZ=e4@3mi00 zva#CQIp#@QxDq)lb5`V3pY>Dx2y&O{9S$KEw>=R zA+_TM#;8QtyFN8<`7sKJ!>88QlEWNbeV#abX5T(4Hkr>2_4})H(9ZePOAy8vUyEO- z7mUf}@cCz=a{A)4;q7|PyyXjo@g<){(97m6Gf8geGpjECj_cB#OL8vF`A&}OU`TqO zCJhEI92y!jPs)c@cCM2D8I)c}cl;eF?L*0rk5DMCO46-6{<*J)h8$jW_&s1IygXnwpTrFQelSXe3% zI+It|X6@Wd`I4|3z6RVbHC46z7MwSGk3X=rY9&}{w~td zWFsAubD)QBgx8|Mi5l#f3sd!(w|#^Vkat@RW1Wkj#wLgWJiy^0^OlP^octW(bNJ#P zhU0HIp9k$)AXpP1(%G#(-VKiKHB0B26OGgWa^Kj+y07rlQv)GzS^G&XsDLsGy5Fh(+^x6fS;g(>7Ne9f!k3YmUrjB%N&P*Bikfz zg~?!|COA&->^;|mbsSjzPtWEhjKU5?k*uD*7;`Z$_X!liA^(*y=)e!DgmuR^W9;LP zMSn1`0f^3aPl9=C9DMn{9zQ~5K4(V(-@bp~1SCB%2^jxR5gG<~4Ni~H8+AAhW_P2@ z69v*g_MbyTJw2!rX{h_C8k}zDbckU7lV60=2fj}j7J@!F3M&LHkh!*PEW&$+)u zAq6*h5lf%nkdK&rg~uJ$`yF+CYinz39sB)O?}7a%b>74KPfSWb;O*akRHyVSed+tX z&*yX-EMEI3K05;RJL+B*0p7QIU)ukGQrM0E71c^n@v*`?u*Gor8+wke!+UHZU3q>AdO~?AdwMac15!5wJ*-`LX_h z(mc2@rgFe%KbGHZ&;_)g)HQgaWB>cs{U=o~l$ezM{QBo>(hqwN1d=HeqA^l3Rhi6V zr-%uq28|FNHvOgbFV&EhV8aM2!Q=sh8*;pT|B0dUqx;A__7e)XQAlyhwx2Lx`wA+| zpwc7CPUka@i!VJ`;qbnTQfl=US{&Yr6o1+bDvlK?KD&h%uH&&(T>NO+QJGNKGU5pC z(So66d-@`T=vIFPC$v=lkO!o?Wevvi1Z9~&3O^FRmn8ymH^z;Q^k*F1_osG%=I!pm z&=rx*tR%aNwA^D;vN-JAQoIxtwnM zVboODHpn`JMivpU9Pdk-t_Kj$IIb%s#_XkrXTXNQK+mEe-4*Q)FREsDR|f(*y!L+7 zzy3ou6UiYjOmOcgqF8*Y4k6Hc+}y_%G|9t9PyVYNE$}AM}eO5`C#wp3KZs!a?3`7w1VbX}b3nGqU{2DmbWO z+7cw|z!zFvNXZ93I3C4#;Q*Zer!f7IkX07<_UVC{atDZ1bM zIEtS7G*AWJ{(aODiKHzx@ud0GKarK5peRLI--kjYd2%I>{jks0jsm+~6j)DMs6{xt zD4Lo@HU=!>Q@5U8{M$yM!hb40B}Dw((~I9C#j7JDdC17Z3YA||h3zQnBF}y5lQ%^e zFeqO6n&KA*#s8HJd1Qf>r||LOA^22oBg^2@QRWOVmn_cy?Vr*JQJoGgQ2(!kI2uEFb-;}kxT}LWEg8|lWJJki zJlZo%GOVXb#>HXDnEI@0resi*aC7!TTefeAjECC31;f_C>VJ{I@qq+pL(0!{LK67M zKPZ98eVZv|>Q<;JQn!VC-N}16p5wIC#RXHBc9JrwTm1pJa`x&%GRc2zJ`I)Bm7pxn zG;dj=aQTm6vUo~vjxh|MoB3g8KyF4uSmxlp|01z-QEqu|4qS=;7HP=5kdmUlZlkyj z!fr@wuAWERt^NgsK!*S16Q1GwJHi^rhXtrLj(v{q5=>3|9s7^!F|!0T9TC)l$)Ql6 ze*=;!%(y9B&Sn2f&K$^@Eabp?#gMa2H}D9CR;UZIl9+?`-+hAHKUqg1y4AsJwBkV} zc z%EKfb%p$d}4wE!Y<8TRfHT*4{O0vQ<1 ztQ3?K%xcl|)q2&1-~sEB((T~W? z!69QvTOR0_QOQMEtptt=X2W!}k7xmsFXh^+32*{+%zp$qLhBv>MUizUFA+Q+_(FLe z5j;2ijCev6p=D7j@(8CXauXUDsfgMJAt3#A$(gKW!ZHyCVxmv@4@M$?!y2z54U+`q`Hcu;fC+2d>+nf?s@ZJ=ZyROp;-cwwEb?f4=f>%6*Rj@$8 z%j6KE>HwF>|50HK7LB3FsWJTHt569aatIQ>6Oiyq7{h;Q46_3gei6p-fX47-K*CL7 z4A*N6u>lE}hcT?z7=9FxP$E!1b*1Kc&`Xv}eho8<(-;11$^D-e{)s5mT6S(n41w(2 z`@z2~{8ylv2`~I(f`vc*?p*9tJu zm2~zgUVER<-iL*mZ2ObuZfcNy6;A@A^kb3a{YgsyODDW)83bdh`4hzDQ#)7h z+nYdA`g8V*YV$k_j=vboVP5+)omV}>+RpK*rr|?V-*b-$ZGH^BcH4ZU?L*Aiwy8e{ zdT<(r-;{v%5xM2HKRK`r{i{#i$DzJ~Y(PC&0YH;Ufv`GvoE)#ZgEH5fyptTC`nI6G zBWT+N?G{0MP0)@Anpe=S6SNlu?KgsUm7rZMXulG)K0&)&&|2Ui0iU*00?y-%vIiX> z%)(l_zZ$s~tU<_bzkw>E{^gz#=H52|U+ z)51W6fl2$_>0IcfQ+4%nO0rGp`o*j#yP7c?# zQ&7&V>kk86aJNd6p$NNvmd1s)a!Qz8|HLWDHzO5@wKx!zbbUh5ek80{7SQ#h&!nz> zm`fm3c0kwH1m(=S4r*gj1buV!DY`Bfx*p<`FkLf+K7&vaLGKO(C0*kM?E_)G*X&^7 z*0XE6CJ9{|0=mxpcXT~JMAxi9gn=?}*I8VZai{9q#VN_>3td0!(2_~IRtZ|J(DmYg zuD5+E?Ya(wdZchOsmxPxji8*_u0Nn6ELX0!1|kgT`uFKvXcMP|+4T>clH83{AlBu9 zprq@gL>oR{RAs1V8JsAaBiV>g3O3?921P%7J|u5bGa(r5KACZwnhO8}i>pPhtPG@d z`#*#Y)GZukZ>RSCknKu^A|r3d{qWHv8~$l5ma!%DqpiStVnrDAFT|zBP}vSH(6)`{ zAv=0NrEOWcZtIzbw4awx`9yK;VC>h^s78ilc!z-$otYzzgOME2{Qdt zLel@f=){g(j%t@tu*l|~Pbl#|wG#3M_8>{5Db_X2kJ;M! zK8At~yM!k|AU)3E++Y!FG)geubj16FUT`IGE)9y}5IRU07R*%omt_|(w?v`Nq;K!*fBZzkrBTM5JiY3~V4FNZni_X4v!h&d=QdxDss3rt@S zbCK`wO1TgS8png)ErZ?+*WtAvL4iNw=ypVto3l3>0UX`~{v(s& z3d#sU86hc82Pvt7k}4@b2~r$_;*gZ<0+ek%gyKY))2jb^exZUa%R|G7NoT5DTzb7cwoD$X-yvQlZA1vWP z|BSK`Eamr#P%m@jXJ!~32rlo3B9vc*x);kh!BDLt)a@J@7OF~wdP{_Ay(2W#5)rDF zBf~Q{oYjqLOU z!y`9U$Sdl~Qy=j1?Ne*Og9xUbM-*!2%LL-bzaa$eC8|B}Ml6Yahaxy+KRN_!f}`n5 zVz&F?^6O&aPSyNTKE0Q1SSxwiz8c5z7+Hfg9^h2T1xZwf?eQBt_ zv_aYKUP?d!n&(n9WShNP`rQbnaS z)J7q=GMx*iCdy5iprKX>ummwv6S7Qzt0cHcfSRGw0ZKzn}g=-l0S_(#Jp z2Ji{|SRqhP`pK$?R0a|~JRmmg(H>IE=HsVV95YQG)&Kb@EX(yfHa|n>UgWtLI(mcS zHpq_O@#01;I|oNCLTFyNIC!a`S|ydQ8+dz;BSML}3!Bl=CoU$wOutwxL4Eg z2=FztxZBYIPA==&j?F>uwLxzuyh29DmLRq(=-nD*_+HR^UC`?ddQZSBH1D{cuy{xf zOh$SH#Ck4`IG`6e#KdzzZTK~UAeYU^xGM5vbd*EGtnTDe0!bQBpJGTAajXde7RkV4 z;h!Y~zd?hqL+TiS^nel*!u8cNKtUcKq8(BP0n!sL+J=LJ{9qQU9i@7i{06nLM@;RmQli9>w!8m`14HCaj-Tmv}<5&+g$!0J`MI!NNw z56J=Ynuze7Cu;btHU-TRp25i?ZJj6F8oGwiF@!#Z>pQe3@JvP^l>tLKy>!M>-A2)f zl-ez1qIO>Ed^p6_22%EcE5T*A66I%16_ySC#~fmHUw&Yf4C zU~REz7B8DGG1B_iCDW?>CqgntbaZ6#>MUOc9TUtxU@kh~wc|YDF-J9~zAoM8r90(aK_4Mq zope8z`oAUJm!*3^x(`ctr*v=Pt~_7dHifLuOW%yzo{;+nw1c6pBx*OE1-9YfW3q!l zWaZniI6tHu!q0CdptVodQ}653dG~jo81iIyJ?F7{4|fjG8R7$u^uvyB&w&$kwP9!^ zPKBBr*?({Q2dZzQs3K_>e`jFo@94xo%k0BXi2VF+o8sN?^!8oQx%dEUJ3e?%INhgS z)JI*VCkm&h^J!;oDPWW>Hc&+yO__b+4Q}U2y(hNoWsmWoIFCK>;~1Rn58gk}(xZ-C zfc3aVI#1LgepROPq|P(4^Q7V_A|qV<9mLjwNMNQ3=`_dcUND86?7w^d9A;04Pft}` zM+f~5@^t@A3ee7jleB?kXd%zFhwIDrX*VZ&Qf=nMD^pAI&58M`m7Up9=I_0T=zTD7 z@~kYxTy3}(+j%%W8PLm;$=JvFW=oFsW3y#b3Vtp}OL4hL9F;$4;Z#V=DDYx2B6%ON zQyggp-j7g2;rHM=z*GzpddwDz--7rv`yde-AQA1bLJ!jK%|La%B^d7?2;Lfm?*%;2 zip-$=2Y)mo8mJD!FA=?rN<#O9sYIjwLhTqkPyZr^_XWD4u!^hh#GQajCpw*V4sUtt zD!R3h=KqAxSd*6^Jhd(j7Pvl7YMMywt3>s_Uf?}W#9Kl1&%{qpZI8HCQ{t#zu=Q!; zc>#A{zE9`5Q4QLGv1dN#=x-}+VCh)(ra z2m&phDZ%|3x=+w~0v#~=XNRvmby3b<8v^pPP5I{hK8Jq7c8bBf+*IKGgTq^98A`qq zQJ|_nHk3S;BI}N?M($wo#)Gp(lz*9@4os%3LcK#!-%5C0 zE^K^09Y_kVuNB&bCSiC7znS1$ph8&Jr=CPdx7!5GwTnTQ9z3M}73&~WpZ!0NhCUPc`(lDTaXFS&TjV!NA?#jR}Pf& z0?ay3n#@}!fvNMP#oVp7D%ZsE)|AAG`uK0hO$0z90o!DG({&>> zHi(K)pg;tUM zSmw*(LfCJpEv5ajE$30eplXUUZm99^fe20<>L0u_7{8`}oEDhq}Jw|HmkY3z@An8dY zod~#OwL~xr{kRYy(*ja?@HTO$a|(~C?qdo zX=Nx`{|B=2grCqlOV=Mg^Kgl@grk;xegs+WiyivC!~5*eYYsHu@#s0Qr;&$2<3}`* zyx4*uZErwU7X{}7C)cHpp=p0bP?25~mqk9c2;>~^a|mw6#lFsG76t52CC|YZIrgO> z`S~c4Hvcuq6w2~~d~|I#bUmpKJ_EYjS#RrlI6zhz3Jb|6}A}lmPla$xjQ{ zUiBq-hmtP_&){{uNDOwNJmdbIPkkCBC=d~FZSm7v);j5B;nHf)e%X&WpAW_p3wX7T^Yh#=kZ8@QOG5F=vO559^*RVRvSJ_=bL=s^tw>Gk{2at(L_d=R=CGKP|WLE$F>uZ;wS z`^UG#$H$p{wVShXd)Mr!z7V%}U)r2aw|6}zZG2AjO)0TD?5hK1L;I2gw!`Mf9Z|K& zx+VGM$8AY`o)YK1pgW(XIJ=#P(}MLk-)D<+VgizVpv9zjU;zJoODqlYoY{xl-p1r2 zP+z>i^=CxE8l5Lh8xvqmeLCG4#>HY!Qsy5W7-7rOFXtVO>UGfL*PE|m{I>BMwVSVk zmTj-pc3u_5JTICbwTuJ!)n26uUr*_6=9e zpP=x4P>^nEn+qVosT|mRPIx}oZoY!lKaTv&jjF{6!t*YCNf`a>>x<8Ey zK}h-j)OMEDgW=F~o<|*243M>s>;r9nWGx?;K>uut|K))G4&>W@SYxu=D;V@#VbC%d^mS=aBc|Hm zMbYK<{K$804=OIq`5r8L0a^Ar&l_aqqzk&sbt(4loT1`wLq}0}`2lX)eBT8aOddw{ zXo=3(=bD_^eV8nD9)LnGx4ngErF^GyWH5&2C*0;qsAe?mYcu*v;?Tyu*7e*q?^4w( zRE|)9U>k5@2}WO-y3w#CrDcp`^8klBqnTqi_i^gR_Z;c_9YC&H9TJwLQ2UNH=FwC% zNge3-`1}xKkDma6i?04S!i`3f{RiMfx{aLU#q^QQQITynWpc5!3f8vQbT*rOBDTtbIIvWeh)ZG-|tB9 zSoGuQD36f6dGm##mDVqH#~fpA_mh4kuH=^GA%Pes~eXqp$|0vU>AeEtw) zC~~5{JJ5fAPyH*QI8W#2iYJy|84~r3chn(y%Ez1D7yQURhVfr_Qh{UtTL!vpBgS__ z(+>1gbV2ud3I8kib;Ao!81JZq1x;v$NlXS0@Zi{r+NVinF zxzf#&?iA^ckgkrqWM7-3bIH61VPH=btZKU$g*N$_1j=J)>S8`M7 z`1AvB(u1U!$-R1|xceO0d^7~p6j~<^tRzWCs2uuN~BdQRu}^D0ul&s zVF3~kAd8O(j9&{69{^ciabZb;)1I$kw9p+|J&X+IZYDoaDz&Ncf}azi4=VoNNz&H2!tN@vl6+KDQ3fe_DMG zNAS;^BUmpy=aQ_9tc4j1a|&k9yTsGfRNs2ZoH>_x8k#TRNz8LBcQv=To99%osVB_^ zbLOI~jQN=hGBPq|W-Q9cuxbx0tH{mBDlA*Zw7@I_X~@XP!n+Xf*(_t;JiH91E+{Hm zTHu5)E8v?aeMoq5MLAJdW@JgRwl%mLJ=U70hAMpH(%sV1)M8D`FD}d}C`xAma%)}V+P3sGSK)_yusa4Ti>+N+EUfH)~y9EUSTg?>MUNF&Pu9UJatv|*7~N_R%=tO zwY6?-V_j_>zO7m9wx*Rhi_6Nmr1B=uX}QV+T#S{k!{<2Nt!?!lD?ZhU{I<3>RMpqR z$3N8RMqalfIqn*3T18R5rbR{L`o^Y>GId;US3{L&9TJ|# z)}~vnX)SKghN}7{0I&{u>wjSd8t*$V4h_}Ay%O*BcrU?Q2)k^Yy>a1u`bem!uEA}s zt*WbUYjK~0fOv9hYM@c8by~A^T~({KvB_H3P_@=QyVYIoscULvR_lto7EfDM{e^Ar zmQ6e`bgxAoOslc3+2nDzTB|(Ps(=(O6hDD*B`r-J$kIY?tn;k1R^ub3){ORP?Zl_0 zy}8xhR?`II;ro$Q6gPe7)YDYmRBuHdwi04m%^acinZvEA^B^CuaEJ1fwm_d63A9Jr zo7y~-`@E3MvU;jo*1A2g97waQo9f*4H3T3-tgw0;1UGAnWMG>+^4%hF$KjIyX}p?U zBHbA?W>{N2Rn_aMoV2c^XlmSKFjyJ1bF3bBOG8~_6<{stVImq@H&nNH=G4^JGbmr< zYGqY8Sg`@W&8&{iV_EpXYYnT%KgP;7wR+qQOWPWG)@ICG2%M!ly#87v;L20$sc5IA z7LoKw_-ISGd=?=;EmgD+TB24(z?Bj3aoK)o{6`|-S0dp42slF*9$#++eRl-hAHjcX zggtsA;N21Mo(TA8g#0}bur(sSK1aCyEVSo zShl(>i>lLQC|K#%%ms6@=E%1FTmEnD^KE(fw!VDZK8POW+xGB(S9>Uz8-`|%7X4yR zxo|BN;r*n>r;Qu_U00jmRQ{`Z&gleV=C07}y$540xUY}IC&J-B3inIA zxvTMh0)M5Av7LC?jabWpJ0*uP6Z{!)i}5DGUjnxbZwmadD{I3$9)8%GeSy~sKg(rI zk9QXQ81pbw9%PUoZX;d?{LOG*#>z%H{72z7J0Oqna393m4*wpwPvY%>A7d$Y)dl$M zI{Y1Q-^Y7B{Kw&5y_~Vz2@f~g3H!irfjgoQ_JQ9DcPidT;Lm`23EsW%SHj(c_euE4 zU0Q^A;4gvOPcQuB8jBfw1%3-$AKoMI_rQG??;FGecXbKU0e>ajQ5Q1y4*B6eh}RE4 z*2Wmt!`KP<$^8Pa;U?Isl(AU6Cit-)#>U}|gWn4GBD@y(u`b45!kYsBQMm8nO@$xp zW9$UpH27H=>7)L_k~U*hg zrM{N>XX<~ckM9D{_wn9_cL&~w@b1HV0PhQUsif0i5iL!huvxZmru>z0TE0e;@}CR=!+VbR%z5v%8Vp%W3V8(fTXm`S$rwEU?Z> zc_W_6849DnQ)HbS#O(pD2Y07-hv3p?Dl8>cVIAPro=bo`4&3P;$237Jmu`)8+oiij zy0=RAe(CO&?r)^)m+n8MYnm?PCP_C{x{IXilx~f5J<{DK-CpTFBHhE%)za~bgpWzr zaF&QKMY?IyT`b)q>0Tz?tGnytU%E%7`>Av_x!;yIkuTqtxA1!OO_jHith#B93;Rqc zfJvI)RoCbNJcq;8>)h4rU2?04%@sJ_>#gVhTKr+RdKce6M3`2AtE+cor>!1aPQX3M zadnM#5c+h$@A6cwsdt0SDiqQIe_^i;q1M(nts!~X%WDB`MJTP_U9|xrR!SWCFXevT zp|UHuzr|fuBRbtJ5^im(-{3~yy9T}QEgaWMeKBoC^1b2S0InGuM(!Hd74DWM#Jx-4 zJx$FnZ1OR7uY_B$o8+o$Mkijwein+Wao5*1)L~1BvHL>twMcvGI(C03PMCvz#c><4 zzv^aZDf#YtY*OU`!cJ*@ncOQZRP1DpNHkldTjuuUwY9XsSlAA%#(pC{Zw;KYs?}qs z4PD0WB)E{9)`5MjdUp=iN(e^*hYq5jJ*iC?_d?15eo=wdtV>b&-TPw5^ zyT^<@%3M_qt!pvXqf-4mb5#r9pWth1puZN$Sf1jl6~5aQ9vKqb!14_)k=^WaL)Dt5 z77x4HfNe-FXR86(&MVE$27$TPP}_|1=BZ_S47Dw8Nd3D(t5{zc8r%)l4b6=Gllz)C zG4>VtpgvYBRN8Z|LJ7}OTRkoH7;>@&k}d;&yGw zV(irb7CWv;Hy#=XegkiP-5N9)v*+_2U__IIIR2l!%k8B_cIUh-OMvNUL_ax;JX^Q{H`M_Hf}^L{8~>b3Ny^=9-sdP{oO^)~lz>+R{?-MgpvaBqLF zzxQ~rX@_M;+K!AJjvXaC*6nECv291sj@>)<>^Qume}{j^@g1g}mYr!kGj=+5mh4=& zvw7#Xojp5u@7%NV@Xr37M|Wo2ZM(bV?#jEH@9wyJ+uc2P_uh@;AM8rRduwlR@7~_N z-Xpz7dr$N-9>=O3m0bSb9erH((VgsW)7_T4Q||8l>7JkV{j~q5M}KU6s3@jV-$V{gVrBYJ(LAPEb3YZshZ-d6!S_IJ3vyU!@EAFEx`J`sE}KCFlhPZ#=+ zuxWJde9VamIT|SBt;*B*HN55u`WL6Ai}-$&uZ72c6i;8Js!0fU1%KTo8b9`?IKMNT zEdYu5*Sj?S06}_$JXWdEwevwwg-^o*!34j8)U;R+y$DSOQZ;Rm5K*9gPZ5luJ?KnT(>K^Wq{6Et8vA6ec z@PG1SjbA$te`fjY4vimsgk1ii;gkVR=<}OynvuhihX0M?mepr@|8>5+K znEu72L{+b=YGG5hfGLJf#=1PrFm+ZhK$FQ>--JV_{HLvvreZjGO6w{nlNzKDBBl+$ z&7KwtyqpJ)*+_B;UX$`MgiZMqNz@rz*I~M74VPw6xln@;N`95pQB7#LOa@~FvrsA= zsh9#VPmWrNpca>XRi3@1yr8(qRcg;GF3o4R4#p zg&FqW1m2+QhPV%6Ctpko1(~$9hYw@pA3$)6QqkN z9FWEooDNWb6r1RbVa&?1P3ff74Ej;W;b*2Ruehk(zN(z{8x|U;MMJt$lIdt_aI>?G z@po`tOR_k;NWdngWFCjJ1#D4D=5zQQ0jDS>3pjkPfUQc&LJlt$aGH|WgcX{0k4X6v zV=P%DLn&;}Yi(iY32?qr=3blE%FZ{&Oa*ljf%&b>CctwDw70Sx0WKzRX)DVW;CTct zYh`%?v=La=%JK!6tJp=vb`ev)lHZcSmI~b*05aJ!0h9p9Vh#bU0x*vi2%r+cLUw@w z)&V%1Ef+wuQd-r{oC0W9N~_yhp#VCR(wcTwB!F#7>6&&{EPx)Rw6&R)2;f#wn%RW{ z=mn*Yl?q@t1k|xI0qjvq7qN2T->Z~nvkKwwQ%W;4*a`t029U{C3ZNfA7F#8NBLL>H z)dDyQU_QG@0Db@q*u?@ku9V_C^Op$V#5tcu)5uYYUxCG>rj}Co+Bz&Ow6Hc~>pm2BK{e zw7r5Bs8k~06@u6oLDa&2SC9`ISWIqlv6HEtW~%TpxvR_VO!bYqfPj@$Yt`$=QWFxB zFQD!T^e4|v1_Lf{RH3c75JhpuGW?ut!~z*#d!>5<^==%V_q4UL*f9ybB~hYe6ULhe zlTHUT^I6mZ4o8)&C@#onx)Dku)zT>9XE<|^WQHyr z5*VXy+CBu2;sOQAq!SWCS|i-6DJZft-CMf!m?)ecBK^|fF;EL*pvJ^73bAk>iz*o= zP zN7YyW&Pl|+9d9C~+9=?AG}z3NMMOPZL%16cOXIaPhdGO z2Fr!G5m8s;!qS&$4+Be?#_Pu_MkpVJpV`y!V~G4AGrRzWnEE&T1oGMxj8kWDEv5X& zpVl$K?^;s}-%Qu4!a`SB&I-FLr_`P^59@8Z$;J^6qmSk78!Eucrj{BuMYK9hDdRWJT^<9M#*-1wg{IZ zKv!W^>v}dv;KnC#b7}2EE1PSK?LtOb6IL}e1hE;$SSk&@Nm`=kvrJc zmQgK3_MP9WSag-fQSYHCN^oHF0_{(g(L^9iaJtu4Rc~TzjHWpW*^y{C*eguY{>G71nSnj>5sk@GyT79oOeWpNQ>&?0EV1KpLz1ZpXg zeJH7yXdDSFDx}E}Lm%D8u|^sdg|#M<^hxZb8xd9|0imO&lHvl4LQ2b+B|0wY2#9!VZ>1CuBJK_8)qREO`&lI1nA=8jJJTQ(ogF9iQ{5%POXTJl?*0kln{V5 z@(t{m0K$|gwJ$3uD=*Cn9miP)5|b#@w9iSAX%+CAFmi&E`a$AVBu?xUwXhEp$5X>P zTH8fAE?}0bjMzndOY1OVqnd}N-9!!V=oR8d8Pkt2@j;=*RaEXOFUVz!{+T%S{5YgL z(9b#1)v_-W=a4GAEva6gTZOYUUnTMZp^2K8>h(_AP-8;^XHm-9)`;6y<#lUth?H}t zOe3YON=^%IqS1y^1zMbvCUi}xNvhyU!-%QAmPL&iO-f`imGqC2y6KD~j2te}5T+5y zZt$u3_?de_ajvU4_X2xfxvR)t?t(Gxe1utA>~t-4<}52?bf!Z$H)+J;cnlfN#BMLj z$#vS9az>`YoK>#eoTB`d1^ML;raL2Vepz0Lt2}2JGn|oaMUJx|Un*-v0VycVS!Q?T z7nivl_8i=nWVVmTC*7EUe4uUHwRP3(@8jcWluC%|HTBKx69MZ8Zf5@wkb$6<`fB#6 zfTK9Is%2eG3;Rr)DWC*`n%NfuvH+@XZEIlv z6z~YZ7(aa}pd?OZUkPXwp!(V>Qff$GQh;gN(1;D)2|P(-0b~1;DHGx-#p8+WZm6qa zIzdmB2+TE@UZAFnAX&^XA#Ml4qya`GjqZ(1oe=jV?6jCAlevh!KzYsl-H;3`ZLCSAPEf724KwuK5a87vZjm3IrODJYH;TUo6j#3^N%?iSY; z^L^Z^df9KS6>(XVJj`FKaM`j2mAtOHm8}zm5trnZwRGm^l;^ne3oz>} zFD_lpOm|L58e>6H<<_q@alA`tf~EtSuwI!QErJLkx*ZdYzk|KBIEwkqHpi*i^XNSj zl0He~_N3CkOIlOchAOaoLL3ccbh=jn+$#XR?lJ&BlacDMtiF5)= z4+y}bqs5m81(2jrV^>_uThE6CE=5-fhCKopuS-DJ^m74Nb?YJLVF9G-iUIsWsF!`DMQUEq+#@JIrK)&t{ustn+rMf+!{7SGnbVUIA1mM(d1F&BJCAxzE4hW!J z_a+1!6u>IoCIHU};1Zn;Y`>l`p0cKrB~vjljF45#9H=-EnTdg`?%4^}>0ngPMu^ko zIi@Gak4#8<6)8q7qFn!jNCV@!{(5Mx|1mVz-w?_fc&`6R03z4l6oAO}KMO$Q`cVNS z=_-++zf9nBixi&2ZwZRX;kN}Ka`+vgj>zG61t4 zqD2l53P9xWF#(7i{+j?q4u2p7h#dY<03wHvizJ8~{zw2NJcmCPz$%`@e-}U{&*4vm z=yg1Y{~>^Soec*0ROE28R(T^b6gj2)Y=UtnGE{3Thvl%2NkWzrTdwTk(4UJAt_(6v ziY{Sd(pBI=lYx^FbdZIaC(6|;oJDcVR?ISS47IHWC8BjpoH&U}OG-eCF!8z(6UY6C z6qtw~P0t_)=28gG+E>_}A!~MMU@`b)ro_=CC&qb3rV-OfoH`CQFV9o8 zHV-4$g7Vy)GCMOGXlxU`J)s8-`XIqoSm7)$D0g6N*kXZ6Tmx7$4au!EGMbYx2;*~`#o`8IN9y(hmOCX>i zlUXA@->bi%1$T}rSU8! zMBY-ijJwVN! zGulg6P`TUC z5V(;a#fn?Q5&4F=4Y3!Yh^7Px8>4Aq26e@Sr7wJ%qq&YofN|~W`CzlZ2a2c+aholV zQrUL7+8XHunK(69!!ZFECj?Q_#St@&LC2Pol(wxqW&}UBgL{1q!hQ_}}c?eD!A4di@2F}MR6FDL|5pn+>Zw3W# zuX9x~Wop9nKnU;(rlfK(nbP!CfU%kwrzQMdGFH35I9&s4HZ{6D^{xEW9Zq`I*RR1` zk|{H$yoS~gaxo=YyD@mgPnpG48G|HOvpL)!t+)1yEi=MyU>S*<$D$?Fr%0^26`;Bm zv5&zS!e*8!=@u8(rEZ3jH{ZjY0Z};gCqrXYpSn7?lpS?>we0D zX>-sB8(oD3Max#A87M19?|~LAw_=&AFsIysrjRM;a(MwMR3Pg;tu;6<>B8PgwVNrQ z4$lFDNrumcWoT_{(il!~28U)v)GIo;Ti5EMucatUlqf0+(RwD6WX2p3$0@}T$N0Qt zDh1DBpVL73$;@jTZ2c){(EPf%k*H^?G_+cv58Q8U{v9@llXB{1R7OVDb#A?0~kUjzYJgJ$`mVfbx zC5%(J3U;E=4^vYiX0n!#Sa}US;+pVNQxkF04^ut(6 zPM>_jG6GqhmZp`nrt!-_tC0Z%f->sD5B5_Syb3IOtd)%(( zW>gq7a9HD*r0}|`TnT9-tEvexjg%T$wSoNe2tT%J1FG$0C6*evv2{$DqC^qTSd{Up z0$VZ`9O+67uUkwd#tX&00NKh>W-{dqg~BPvAoQ$etS-s%^q0vmpdUD^xx_9JUnSp# zX85e;qH=-2jBRK`*S{r(c8O`Wx)kpi-Wl`m z|A!-}M(S_8|C$Nt0NJg)+w1_(Wq8vzPeb{ZD(Ey1jmhcRKIu&>?$DP`5Aqlyd34`T zn>6k+aJ-5Dui(wP0stfrKyrzctY{vh&~sbLl*x?E8x7WRv+&~w?oGVo&I1sS9Eirt z=5IzeS6p$0vnC_M;!!^1`j26(&#tOD>jJP#014dAcv9K~DF2;eNp zOMW-LYWl2ELJl<)#uINp$Zq{*RvJ7 zW%k@DkV;0ha-ot1Wt9vT_kbi)-xBwn1gQUs8!vN&nw8je2`mNhI^>K;O^!WZBHu%s z__+{{&Q!`^aaxvAlNtNAQ0x+f zM)c#A3t8+|iKiaz4k0x-96~aKqaY+VT5pjZeY9?)m8uGhjg@x33F&%7sDXKekm^SyPZo=9kmxS((1*9BPH`;~e+7lTSps^5O-ANY35XtIvG+*)1;Eb$p4;;*A?6 zIjQAi3s=@P7KV!}CvJS2ghv<@_r4}>1sAs%q85?3PbDW8w^Hk$WiJ>wA*1cmD0zxj zIw(E#D7SwXg?OU7ow`!`#2?GcqFrL8bRu;r`~Xe z?N?S$Y}R%%*)q!u5Ujh=%2v6`?YV4qk#_Z{+`WeBu1}kIE27k^6!F=v0@{3`X4p-) zeXxJD)~)TxydOm^@;hJ~S&q>IT2=k~QS&$~F8Kho@kU#vSx%U&yru@a3lb^v&s-$6 zv?KG;pwnmlD9!pmN1emv+S{=n4HXDeNTNrQAUA#3k5HHL*e-IRKd-7;+j{v%+L6XlxkSU*y3D-(jwPK>3FK%?TrCs7znFvYZ8MY;S252E!`hCua7nTJKf}6Ql(sHM{06McrK6lGSX7bg za^w~3a^$0RIqqUzj$B%o<1W_a$j!sL9Jyj$j(lQWj^hIBasvDvU>vF;?*5$~rt;>;LTZx-SKyY1-py0Y3L1JBweA>F4@XK|%AR)L2 zm#=XIQFcOwt;-RD*5$Y>*5$~1>be|X(F<9Z6RUT$+lEO70ouA8XO!!5wLE@z;g$AxBxDY2GXRObXLigvuTX6K^lT}~WUaJg9AIluy!AA*Y~oGGxt zhCzE)+@DdVqxC)VQ=Jw$r;5UyiYPxpfJBOjjnJm-3l)4Xi+94*QPZQ`{yVUZ#3!^k zngABl^HV zUO`%Zi8l?AevJ<2Yj-bE{Yd1$*T+PgqGDnBU^nq~x|(3Vp&(v#(PKH!h(8(-^ z-Okw9|Ig@TVj?>kZu;#BouvL5IvJzZ$q>IDolHE+2(>-mb~4{~GQ7JRGE;XD*!&^j z8|h?XC!wes4O9*dn=NHj3{Tmo0VdFm@O_$41o{;niz6w9PL+yr6bZo**X-W$A=#@vX_(9yC6SybhQ2x+32fJ z0}%(raSc%eMEsO!z4nD|^;#ejEYbR2?Gx6wARg)=I%x*@4fYW4>KXeD-m9U2E_4@8 zv8p#ghiJX_Rc^hQRWLd^LYn;?n(4kl%^EOCx)X2YEzG^pRFRV><+PJ0e5)?}#*Q-V zR7nwuf)ki3DG^g8z^6`?l*p-)qD_^cTIf_s37sk_f!;|8pDG1I2RT9}NlIXnqz|m$ zEAh&U$e&2-D7Uj8$f7g&4HunQWCZ;Q+5`+@bb-xU#i-uE%T1pw%38VkFQ`N1W(-dF zj`#-4&HYg64ZM-JZ5>eaYm^&(@TQk;`7GK%{kKb!X$x_Gt>QG&q~{kZm_B8K5fx6q zvY?1x8qr@9Pvd00xEiAG=F~v((L2Sh4gGD2vk~e{Wl_lIGb=;p97>l#gvEsq3TtrS zI4jP*J}klD{SI93;ARLG)$qb>`T)U`0y>2h`eBQ7^1mLE84aI7KNW+rV`$`~&lEr# zl%0_&V&;EF-r&stjBMdEe}g<88g^a?$A#k2(#BC5Oe5eMbrycq9k7;KNI&FbqvbIu z3K}?2iJg@+wS02Y`v?%l_fzDF%HrD6s*U_SV#Vadrzw1ty|LyL;tD}DMFl7Yjo7MY zD+S&X#OGn(Js11#t!$N`r9_ESqZi@(N;q#-&sI;4CvB}!k>^D(5`^_79sr=3|%u zEAR3z>)Z;Wl`b=J=^n0%n6EuOpg3XZl{s5kiCSb3%hRq(A z3Y8E^s|XSgQ8f^?gfxxTACVyh`U-ZQKp&Op6c?7PU4`X1RnO10Ne3v;$45nX*;UT5#IOrAN8_dIXHI zq5h;$=%2vTi#O(M{LG+2`4~J86NV;l=aSsR@H~Sz0Uy@ps|9p_jE%$YWPOW!t%zy8 zLgrw(f&oV7k8=C7h;6*s&Rw5Gxrm*f2|+cQFKVnzANHIGL5t?{wB136|d0`0AI*uUlH&zfH?rB9VxX}L*-itExlqga4GuKUgF4N4AHn-I z1{VMJFyiZtAY?0=nKBaQFr?te1QZ=N%NjkMP;|IF`YGh9ItIS;@kU)q1%_HcI?xrJ zK@58BkN61m6)Z-ewZG+~MuF?fu)uW4E4G0L*8V~e1*XGZaRS{dn<$)a6j^mUvg(^$ z2aCs;^IW_ZS;tRMLh*b?B`PqE(N@T!zYo%XurKp(FOwO#;D`a?zqd>lT;U2IY()jn z&9F4x?RUcL3O_EWyCeDyN}|G#3+nDnB$7$N?p-F+-4(Y5Bnv^UMD0 z$_z9KHBz`J`qo}sEz8hPrq)g2OTzkTv3x^IaaCi7Nk5&(XHr~i=th|SEKaoGb9(r) z0Mn;&Y6?Kwxzwj~a6E$I(g{h{&)^slOs|UoFi$j<%!VG;xf}%3@y$x z{oFCTpO+5XeVx}a!p`m&i{oD<595ay0M#7>?uA*~ofe#1j-J=PABQbx1pe!M9 z@=Ax3S0pX6$SAklP-xA~;+Q7Z#U~Q{OT3TbwQ$=j@fNb$pMZD?Z(@Tic1?)qOT2oe zRKf1ZEfSs2QP`nh& zj65=GQt`1GsCPV~%Xk5&WJtX)q2A1Iu*(>ScJ4yFkzYzmhssf~Xk%NoYeSW*o~~Ky zQYMhqW|?r+TYT9hK>7vnM!5tsn}Dc5ph;t?W@8D0f7nDnbrub6jHg{DF-9(vL*OrS6Y%Y$XA;i>{EQ^uTx3D$QjalosYfJ*Pp{R?Ig|-eWd#@6 zUFA&u!C9pUZ4S(~DHb#Tass}tkPW~X=#h-!jeQ_xAsiudYGYuT$a zd}35W4P>Y2F%ieP|9v8yRj r9hx@MyBYH&_2S+}W`z6h-q$&QIsye7*VvAiU0=BPjpmf@Za zeY;8C?@qgF;*A)e>Wk>U$JG<#?uUG)FRW{=X4g)Prf-?xZk70hv|1dU6L}eq)06n% z+Rzq(M$r~G?D4r8xoXrUC`lm{w^m_V*;YYK2~wRnY1YU;`qaw4C#d7~;ww;yE+pu- zi983b0b*!KuOLp*M=l{i2xa^sU)G~@P!V>BH*!^Wpo z+xR4Y+%JrxZ##Uu@kti=|Lw+S0uoQBqO@CY1P3-g3D7n^IioyXL;jG{H3SAv*MvZU z(=~((JzbNf&8ng&$3$V|sq$%6^t4!hj9cZ?s_5y_SyWC{F|CR|ixVxXm{vunacT-c znpQ=pb8tL@%4t>f434oPxR_Q&&*X?yH8`z`p2cORu_!*Rik{2Ac7pY|(uyLwndmAh zvsdI7BdyNjJngtoW;~7d&d6jh%E!5&ER8XE$!y*jYD&kM7T->ZuBxe_1zKfEG_{Yo zwIU9fD(7(+fAvbcxgq{uHJW=gP%eD>yur00lPTxxJ&-akZrMLbSnH++eEumyQh|`9 z(o7WhD=y$5KHG8z!C6??)9>ek3(Ig0U*%ueKy*b?HiyAgEM;qdYe6YFqjY=_UAa&{ z782*JKu?pV+-rG@#N+0et66>@U%5}lK@(~EGY@ngm?`&1(}>2TV%ZWS5f_c{nespk z4Mi*}{zSRBj>wb;qhEy`Q&iknTgQ}##!w$(W%DUIWsklUu_fVd5%v-BiHCa&C2sl_ps5QT9S_3ByAWN8Jy>*V*)PjtHouFpux5dH(N~Ck~SF>9UVMi3&dyrq*YJd#}Cr+H0@9_I%FTBqNq;@oVm!gfDg`ormuh7gJNz;P<>kwH>+HYq`5DbSWM9*L}iV%5{YYxlqq;FiPV5qQH-q$2`gCmNW{$htLC0>LT+JNOqiz8E~SSFe+G_E z;}*rJN*L1) ztzO?ZZ%54*nn4qVACMIaISmgte?(qN;V8x})Js#awL_B|k>Z8wbr}-Z>NQlsbE(%j$Srwlpe8*nBPOi|Rhx{owkPgYv)BLT02bC7P2ono^4a!24jsmaumWw=fPwGj8hux zOtHpA2zq%~Ly!wt#*;WZlpJ7okC6rK9vk11AoOq?0Hrv*N^!t8s!^VW(}+%W1CBzp zP0F^AnSr}ZWV5}k3GO4fN><22Y;1F)=w)j$l)>gMRtz@aLzWgC+k{~Vms-#X{mL|{ z5J$8aZ;RgO2#kq1Br^V84u?*F4d`<;zFeaKIY>%YDgqo|JtvSBSjZ3hrC6fcNIn^${~JjoY31DnF`fh1F_xK$yA6)a%t}D>;}ukHkSr#-c$S_xv6?=euUZN-%P7HLgwX1y<~u zhGeZ`nj@jLvh%~XM{=$Lp9t`k0*tMXPR(C(Ng&qEeylYLoR3(0Wh`*ZJa<6AI0jo} zibFfOQ_ki5CtwliaBeGJfazc^fs4RvPim!JY%Bi1_{L&*kvSFKQA}|p z9~0YJYDY09Hsf{`F(45`nU6Enej+_JhT2YysqMtjZen`X=`i$o3alHzOsruh%lICL z{Qw?$+-&<691b6b&G$sy_KqNW>I;D3(^WNk#cm!<4&ap>?}V?|mkS-#cJXQnw(`_y zIveTs#2(d;pj{J}x$`VUvsM`c$B>^CHjiA~1vo5SXw|O(jO&l~3pL%g<>X-f^U zTN7FhIAZ2y?zA8`Bd?NK8w`TwxGf>Qyc$aH82D=lTaNF4r)~q*Ecj*$NR5#_ah*>id3=4W3QE5L`ZpkvDHEf!eur_FZ9f=t&^BhD2l5r9Z>!2^ce^EKXK#tw zIXA#;xdDbBZv)KE+WUe(`sT2mz4w*o=luQoN=D{;5Sx+aiy3_aX2E<@{x2cKH^!JmL z5i?-FpPwJW@7eFCKWM+7{-FJS`h)iS>8}Xb@25X%zn|;|?Dx|fu;2eOyaD_D^akwr z(;KkgPjA3}KfQIn{eF6b_WPNVXTP7kdG`D1@$C20pzYpB~SC zKRun=em^~){eF6OX#4&2c=r40>C*Q5>GACM)3Zm}@26Ya@27h&%ZcwKg0w*7vB z@38Z7*zae^o?wW!!4LcW40}X|;hS`MsHJDWpMiU`0(D&2?`QBn+lY&OW$Vg*4pcub zjPzSq^?w-5$G!Km55i~booKW=!JT3|xKkYWP4TN2u_Y0_^J_mT-n345Tg7Yu5_+rn zC8Quc0suSww-XR~PkT_vSUx|n)W-7p6^d^xpWn>%?X%2(-!!hL_+$9a#KY|+QDvLibXiqQRneYtS zd&vod_Ee58CN2!x)3=8{VbGqwz4Qr#_Vn$iPZ+eP?*M(mpgnyD9r%Pnd-~8ez$*;e z(_1LK!k|696~ZeF+S6MtylAap(4PJ}=@$m=>93c5VbGrbWzsJU+SA`E{lcI<{hiV; z4BFGb!<1UjR!h_Z7`Qj2L3=h=Wxhds>L|RvL3;u!zKBPmB#}msDM<7)5}rYO*t6$~ zc3+w+9-|R5Mj~R*9_H*hGDrju$B^di-$@T?M9eg!2L}$GF?v|DzYSqxEC6HnC&G;_ zQhEH1Z_J+TC4vci@nOq;B?8lYlpp%lk^>-5GYvOjV>Q+jy8c+BN2IKeHG0JLKi23G zE&Q=Yns1+0o&@>d4M%1#r4#ST_Nr4<#;nDAG|=kw89{PGvv;W}9QSjXF_<>Sdf25d z*Spljk7JkmAq;3^*g#aD=h7){K+r`S5aJg$Aoxog5aJg$Aoxog5d4)kAn1}dAOy^_ z0YRU#0U=O?4G6lxi?q#3k7omd9?u2@J+uKKFlYlpI`EdGbif9LK!FVi34jd<0iX>C z384)Lx}*&Vx;z^Y^avXebOd&(>D4wM=nmO{AVArGkWOg>f^KaCf^N?S1UN^* z5cEkK5Oir95Ynw|K==W^!H1a|!v~#6P{;-Z0ki=jex(fvI-@oql8hPHrKaE8rKU&k zQVT@2OHFrRmzrLGmpb6{cBu&q?oz|1Lo3$=8&|lN9LlnhZXd z2~c=YW0C@>HwMC9P+=ky2x||7{Z5mU@s8N6!ro=crrG}(d1&;w0Ki56^24|Q@CK4B zML}dA@ChqzhW=8+<_0+*AoVZ`Y)^ES!i%-(D^)%xddc0|d z4Sn`LwY2@uKaV6lJnIO3ifo5w9h5*^&nw=h$N&11lnUf)A1BUVgu@*Qx5fJW4#3z+ zuse1R?4|Uh&xlPI-pi#I1BpigjSK5AGTtX+4ncv1(eNC>%SHerFh}q|g6`kbm_okY z8n@p8OZ;MV0A86)_Y^@7LV85X8ie$S>kmSDL<3K|zKnukvVXD^x!1M`jgy*FVg z*r+~YL`gAb05S1K>5(JyYK6dOz$yWDQ~0^&BAndOEWhbIN(RSbGhms3FCeNHB#bd5 zM%)J?i5Ol~ZNe)h^I-6xU7YB1^oTxx0L8-Ci8wNEi+tyxYDE5Qz$#*5oCw>g8`jH! zu`*ydil493R7>w@B$tC5aT41&$AYTXGj_+ zju`e3AV!RQOIA)AkwP5oXt}$yw<}Q&-5;(1S z-SSo(&Dm_smf&)52XlhreTz9GimqhdjRd70ug}GzG~#TGA2IAF6e`s$o(s>IJ0jja z6@(6AKJDz1H{8c7e!&2|ex9WihWqu(zcNkE*aw`Ahr>FGGc)9ZH*5>z4O^pszy1hH zTFX>F91fPRgbXNs9TAh(EQJHh7UGi$k~pV%3z|oB(2#F}Ofg@((C??HP)t%Q5`PE0 z2&hJ7lImg4tSCBP=A`+vJsBrzPe1igkQpLXfhH{nMEYY z&2nLsT|9)%D`Dh3_|5G3V}MvVPj>M!xOtg7w_^a4Tr+d+T4_?!IDe2(ZVbKNM^~Fv z21_o;P(+^r^gIsAIJDuxe#V6blwk(_@wDes#EN1lRm5Pj)0EMbkC$S6NWSY-_ zdS8+GW}&&m`(o#OW3#a?Lz!`kjUDh~Cipd_4IAM&4nS+RF^&Co=UiE0S1<}Le7wwZ z0g^FoGz;Y}i0^jXDINsJ$i@tj+&2JwjBqq*0z6ZIUk2#=xHESu!c@B^kPPR|eO(2M z0y(HW)Zs8*G#A(|_p@*$vv5$2;I0-KU>258iOA}aBbbH1fS*6&PKru@O@i&y265^g=f@vl?Qxt z=h?`7P61dRe~d6a`qwHrM-dp;B0k5%zrcGBhjW*11cv6Ef4qSD7W3>64W-KuS;>2k9P+SCs%iYqo3lgP!$zDsJPN4n7EkS=vldPca*fgpAdtVi{|Z7}etA$lRdAn7KHn zLz8evh7PXB zd#6JZ$-p$}H8P~PX82KiQqP&b%aG8V$;!=RB8-0js7U&PM@7<~byOrl*+)eZ zmVHztVg6B(^!Z0c(ic1`l79cFNc#MvBIyes6-h|&s7U$)M@2Hnp`#)ho^@0tLBXRU zZ$+H&QIXFBqt+-SA_IktVcMPk2ed!eQIYr}jAf#a4hwvq=ML)k7GesMA-b%%)TlrF z!akkP>Sx9QZ!-Qu)BR-Bl5O3V7}FdQDpFiY@w z>MHT71WE2^APyiTti<%cf8a5M0F~oq1hIBGZ7tSQ*EPfb0?s5Pa)k*aP0c z;V9ttEjYbnosNmK4;hTtHdqFcV4Q}?;2IO=`N!9&NOB&Cvk{pwyx}3lEfO_wMk0ZD z&qDy^MrON#(-H};#Sy2?nEG#AXW+<0Lhw?D=E%UoiA)PGa;#mO{aqr?QDoRjiY`9< zZ8}G7uNpj75n;1}VK7zCBanH>B7*9DcC>ANgGVkRs38!fBJuo1ge=1@J>H^e{PEpaS6t|PB}irWk^XNB=9vYKE!1x-igxjf}hjk zLtKUq^pztJ6(8bKbt}BUU`%|7%fO+cb;rlIBs1I-Wmewt@$D|;JxxgtwVewp`~DE# zVeA;33o8?hTXt$&%W8fgeo{+Yd&iQ99Mw3#QKhIK9MvMw}A z&aa$_N#yWbK+O<6+15(IiEZMeuJdptAl6jY@c6EaB^-SiKZ(9X`tqPhUSgL@SfTDs zqN#1GjFWAxE>VQbDyuI8J8AMXB6K!hsvkT2avapOz6o#bpH=W080JTUef-DW02yfx z=!wU7-|PAi_H&J9hk7%Q%}nhmTM2u^o>D zQQH*b#>GG_Fnv6Wc<&=Bqg%vJBS&%W4;lUc6JNP}LB%w+V$GYKAkMDjD-sDzEP+vjgse;$^@`NhEO^)oiMwV}(DUB)e3 zUfX|a_F~QX*gh&~U4$2!adOBlBPibAg4)}-g~V?Y5-)Arv|Qobp8s{=q$t%d3#l5Q z@OPjK@#zHObAfc%cm(-k$r9fI#f$MVphm=(ho}kMLVSbZ7=RlfiqBNyvsNMISER^n zicE;=2q2DPOp0m}9Q^oDh-xVuOK?+ESZ57>Z+QbVzC&?z3{h~IJ4-Na7h?Fl5Q8Xo zjb+n7*cX%C=C4cVuP#^qTEIs$8KZiz5H<_Oz}ZPH>sQvFsKz}fZfJ$^D$iT(jXS7mhbVRO}`T8bbHa zmx?+`;Ib(0$LfU0T8p2xkBhAR4g`5dyI@*Jbp8u5*LBbI0hIt|aXGZ_&mi|F+=A&8 z`itd64$_NaxH>xqZU+{tQN&?+&8vDN<~XnYp8DAHQLNKX(& z`gMdnj$3H!6rrup!uvEq)Yhp&TmK#2H*pK8J)_c$J&OcSdKBs9l3IT@+;1yX&rvS8 z%ppO(VDV?%LV^x7(87(0^j<~b8RX;zB-Iy-q#M!fj8jtG1vp{tcrHLlUwlf7Z!iah zMP>}Au*lKCE@WzW85^O|Xle~}_|a@-@! z3)?>hZ0WzKsTK?%)zZL`hef5|L-#Id_Yt&9TXC4U8lV>UzaE23;|Ox4*UQEz@t8XY zV#Tb4{b4cWP(XRGUmO8PCGM;S{#Y&MClSBE6!DG)+IXTep6Dk}gYQ(_Ld479I2$*n zU(}doibB1|Knc6YwZK?|`zW^gFf+goax457;1(KtGaNhVp~n6UjvwPje}$XtjekRV zAI=5e-=oTo0{gGyV9Z$0N8*~!Enq5XRb;JA-;EL?t4D!E>M$;i-UK#(Oi3@0?d^QZ z3D+Q;qN(2?akl}WUn7B~wJv!7S+9}&<8P1zUZT)Tomocb)BZaqu(0+TGb5KsVMmRx zmBcyJ%d`1PoMG=SXFu4}8zuSbl@SLP!{;GpuV3d#EW#IDEjX*8S-qHGxZ?)R2Zg`l zj(w4jHav_BdPFsJ^AM}dfka5oZdafUZ71P1gpF;Wg}qL!i?}sr9}=61#vyh#=_EN4 zY&PQOm|_6GngOo?9$Smh7_(_4)Yv^CPcQBy3Li%NDm-vXFuw4`aivXbaAfK77M!!1 z8I!Fk=FTn9)k1zIX%>`T0XMXHlhmf7tKq#?sg|i7*boz!*~j@a((1DtNHtuZ$89*R z3Z3khBSdWHX@Z8cO$9TXwKCYO!M2*8sNr0#aLRyln!-8RDBi8W6nDwJ%EK=W5Zx`h zVtZ%jg=i?5apt0L7aU^@m$@rzME2V|ga~47v0AIVX~W896jyAK5F_5qkkxf7s*QaZ zt1FI+G#Sr3xTToA*y8z$K}BWB3^x%GVEs1%5A1M*4);%eglxs&3~Inazo?4 zqt^CR1)ZQ`uHJ~5vtg#=pM_A8)_%3S5VvQct9bsV%MzAdqg4dTgG>Bb5Hb|wMPE00&oSx^a%)Tx+e_4 z?E5h4!Y=g1FX7&!G`WtfZbcc=tJ)E|ECprT-s!g)szi~d}2r7k@z0CP4YqO zu9o*OVtwIH;Ut`OIOm*&gqKa$;k5nP?a}^nBp2a&@XT7lnJ59BhAfZ<|d%TxJsi6(jfpASOpf3kyn^S zr9VVK(yG&v{R+I|jcARLCun6SjxFjK1jPKG20jjF{wuLd+<@CyC~K?E|F#_YZ^F7X zTWCn&7Q~3%frpj=0YM3PxJ6}bC6ZRXmcduyl``;f@&vtX79a&4qDv_}18xrIM*V(B zAOW)gg;`SgC8e*w`PJpiy3@QKr>Q3kZ>0q8icWszbWk#`%XZZ*HAO zYjWu8tQF-XmD}98rF%r{-2C4WOLmF)@%H#X;vux&?ss=K(EI4aa$q>P5c+0mL&02l zu?;+WI=|M^AAmSjBiJG&X3Uzl5F1v7)P?lzh@Ci7fF_&84-@nVsXjwE-pv%>l+>B! z-zD&C3W#qsjFo2D0eX3A&xzCK8=r_3u7TgrgP*OyroMk1ZeCCCEX$XinKPR3{Q#q^ z{{<#|t&^rLtY3KQ48wkEU;##tb_pKE*CP`{;3zRlXU(2}+M;RmXPgMLfwsNhIuYQ$ z8`s0a!%72QY849C!y@cV(qVLK)+wjXJbm7YhW&CWpC!%>YI^qWP+pA%79RTpNjhBqHm>r*zY+_<(`zD+#MxP2)q z%Ht&RCW-XtX7oI{Np+@?I@KM-@K+hWpW!6H8Mu12!DwZhL|bAm@g$85yIsvkzjAW9 zO!ZLb!p+Ov`3`2mDZFoM^s6EFU&2uGv$zMyV|WG>Tj)cd2H=~x2i^hCDn%m38H_oo z_%aYE*rb3o8wZ;x=&;qy8~ySXDvZqE3gkE^$>-?sK{u)3M@7&=@gY~?g9=E2ydndV zR-2Af@I-*5Aa|7xGLmey$h0gBoB128$^wU^44@PasOSh1m$~yaL=aLa=}RfRh0MN= zd&pZFQyZhnVBuu-d0MEcLXy+n{&5~T$|==Ksiux1y}yChpK({zhUtNKS~jfIJCv*O z9o)M1O-!#I}t0oEkTu-JD{af-==xHb+Jy*fuG z#)lZoxc+H=mORbR4UBF$xXXJMkK99?f7*~HKamlZd-TFwPs5YI@igJr192wHdK763 z496~S!?rOdgWh+JI2YkIl(WN60t%kR!_Io}OhKEY8N=b=zSpCYUYwsy(){r1+5a7* zlEUnP0{O=W+9uSzr-6cZelqd-f%cVnljdIo1xn!m>_CA>BnJly|2^j?7wNB?O=s98 zP(~bYqlN>0=oQv)=`e7Tj9A~`=gr->9eMu_MTU`DH9l}|gSVLRb#(R$-A6AOjXpAI zb?WHwsBf`5d^btbX0x$Es7_l_{W)! zxv-2umWtpxyiPcom!$d9e%J*n!=0Q2&yjG9#*L9!<7|HGg^#(;XvVbk$)l0*gx-AMF@H@8q{w zWs1kC#l#r}Bhm*z5gwlWHc~A7CSvl0f>9!<5FhYR$fHGAIea{y;0WOxh-m6~f+Gc> z0#W7Z1V;(~a2(sJ&wLvr$c;8^aW+A0>;Uj!H?GRIrEX^SA;9_`9&x@s%RBKVdBgx7 zx}sP9!WP)gf@01ZaO}F$BrdLRSRq%vW2^g-N;*5KSaTWS*=1<%%)<*xFv@5qM>FB+ zXeMfL=hv#jPD084Z(n9UW2yc+n_XPnkF*MlO)HU3tDF#0R0;OSB1RvP zArQp7*g^hFLiCwpscFs@ob`ppuHsnP!_%>bTNXk?Yc2dL+Z16xA%{v+3L=Iq_g9h; zQpVKT@u|Ur2{8tRT(H0EGrm@-RpRER1rT1-P9kwGW106%irrN{3{avAXi}1yhrBumx?$so4mw zsIo|=R_Y``ehyA3HAoD`E$P7f zV#Q_};!+r@VCqm>5#TgM9u1omvQKn|kXAa4dMN878J!8rB#U}S?}@<4Ov%DI2?djp zIOOSMRf)Vvvx15|wI4Nic3AqKG*R(Me~za^qEx6ub3Ih>Fsh%2I?scv0t`z2lwc)Q zRd7B_?Gm#e+lo`GpcyjjqEtlY>eJ{C7N`)B7|Kh8EDQsKDV?S=CmJR;c#AxpAzDLv zv2!M%r>CL$r>y1|Y4t*2~+p-6VP z^$aw|xoe1Ql%-Y|dChXDGP4wuiW7;5nkX}Ip(x6fk6sBHst{1|vlTy2>TrH8^~>nC zw19QCFgxc`X^LbQ)5i-HWfv4^G5ZKr^d$i`DAnD|A;c%MVh1}ZX95)cxJrjG%EFZ` zSUk5t6MnW?*ORiYr*dUE4Pc~-<%O%5VTS3&f=VcBnB}X1VfyZvACUqgGnS`hO6RrY zs8v2XQ9ndFe(8&Tog%WrS}2tg5>y?WBa6|MEx7`-V~GcPKD?-`#t})a@F~=F3_i@` zD=#-Wh|rqmfxl}IjFE!u(DHrODu)9doMi&~QQ!xQScS4jC<=7ueSE2CAr{LLEs?rh z8Y)=ikJY`e?yJhY22zEThl`Ijzh79H^#G-R7_3W*#+J?8 z;3_mylIDfrVMumMraJ3?SSw)C5W?YU$0`*pxbW&S=kA9Eyh* ze>#9Mzc=uO0e7Ei7Kk4I3sr=m{qjl3!btjA!lwzUwyOa@DzUDf5E@Gywb@H6qsQn4 zqNS-+ETQ8N(u9hsNJXCLLnYEjj{1sa*_Y^)yh>B*RR}p86g_)iJ^#?vS|nRp!Xhcx z3fxamBjli7E4!TU3=m^10jo?h+Q94nHfABKGuOi821?h|M1sX-iYtI^m#_;rpmcQKWtVT1t$ppJ$X%_^Bb^bUpgofFCs8vOg zh&J=Xx0qUJqB#-0jBXYEKE{`^YyyK5S5EHKI7h9bh~)~7b;1Hk$c9WIp`+6+T*_}G z(_SN)7v>9zPjp+PhE1YFq5kwyWhMBQ%~>(%hnIOu1XA`)y)?wN zoT>NKO<`aq#Gk2`=WeHzuH8rmArpA@N z8V=3Xb_`P$S=1Rhh#Bs+4npPFV2{Y%$&Abf>xxNkM}-trHW8zhW;6T<-Pz=*!+{aA zuZ3ZC(nD-bMQWQr1P_d^bF~72DINM=Jvb{CC0g*$ zsJ8W!O4dK51)xio2WU+ksB+^icnk_F16hC~hJgeP39~BOIJEG(39k%yscF4hHq?V- z9O6NT1si~VAoqgWr>f_BxP`O3lDkwE}H#S}v3Soou_h{$5>wrTd6bfswGp0Xvpb|O?(dihO_ zJ#|Z$iVB-U1jq&pAQ%!TJr`paw8~y(^_t7b_DEp#=(p8M#2nZbh4sU0k;HsT>9tsb zqvXZ<8y)^Wi5{esdHEE)AXzSLmaC#t42OC?J+jMgt~mZDlgBekJ+MY8_lZ zU*v%K${sQ5rI4gQh>`uaS0~71+RL+2DVd=Q(Lr>>Ycyp$m~&ax9G$uw4r7vWPt!t4 zvQPRSNzyBZKnJ9S8dyF3XXa85m4a*Z;ch1|(b7YGS89nry^>1rEp7x0T5FQ154zKm z%}HMFA-0}pVdl?8Ilm{s@|4$?WOr|3vc)=F=<9k>R6+X4`c+)2HbhIH1x9K1XsNFl z=qc@F6J8b?Z6PacbV6&SR43U}g_PP~9rfBWF;ENYq7uqLugMAyp$0KK*e75tEQYF$ zQbkNxc?J$qi0HZK;ts0Ux=>iX*piW@8rX^nD?)c02_i4D#~rChP|3g$fUDtRLSOmo ze7QoFYs*EdM7}Jaj2t)@=<#e}F8O2q+iyN8|2}^EQmkuzNmvS6Vkq=r+Zi4z;lQLY z;WDpi7+;QWQU2M*AxF5OmLsZx7$^F~Wuwm;1|@SmdXd%$70!>utcDVi(-JOWqgSB1 zT3$oqZ?jd3)o3TmkejXjabJwO!-?{o%5FM2d+4SKXM36#%7Glj~d1> zbr_g-xVzYKzKQk#sk;qMdXsdn1nv|kEpQ)Kaegd* z&7ZvN`$XA57SbOgiIf}VUM1+`onKKO74n_W1!IyH92Zxao zRS3GwDSvUyBIV4#bWl!@Jx|VDK1q;6Sme18-e~^yZe72%%Z- zvrZBOEq95PR|U*s*GeH5J%!(GUV<2oTTXN*uc!f)y&QFoZNXet>0E7r)gSN6jmNzN zw`c?6o8U5OhQs_6Vb}7pn~yvAxStPEdzaNI&PxR2P6|0o+$+j7?v53|sXLv-DGq(Gi{!Lmp=vjCE1hfp^ zL!XFS>dpeV%q4vAaEjPEKDO|2DIZtzA$3PHdpX{Trka<_!m`SDz|&6d9jmATzo;Ue z8u<=XTq3VV>sSC68bKTN8kH8nHG)DMZ4}!))5=HHUh}eJS$MBb1X<7>)sVy!+lob_ zonob2jM%1ggnOh6o`Y1+Zb0?3I#@?7v4EN&6odXo_k(i_98nC4@OL~XYu76EM??(1+1680WO z97tLGVABs`U ziqNsSS9&fhy~A_+&_)dtmGRJOT9!n$!7W91CS2xnJ`Nr8aiG2A#rz8+rD6HZyaDP< z1z+E-#6AwROL5@m-|_Jt9~Oq1v3x#C`54N_QGAT&V=5o@d@SZe z%6Nv-q?b7Qfeu%RO?d-qE!12J{!J&JJsv%~+*c9F8o;(6 z8eUvnB71RE0e6FRPIFT1?%ok218DrIi=9awPP*2q1c8|QX^DkV#Pz^3YeD8xRbj4U zCFz*sl(4;?t41KJ#qT)5iIbS(RMEB4>BpZrPGXaEoq-rjL?_@f0PQjQZH}pqnj>SJ z;2d?Pb|LQt4I8OT;J`Zfo?>*}#m=y)&d|k9=_0`167{`;y~12Li<}`R2q$GCI{a0r z$Lwh^9BfWhU_5v>+k301!`htK<^BPr+1Jig68};R!b;37DFqIikyQ|2AxBYGTcS^w zXc#zNz`(0&4#sf%E<#T}zqexf+tBZ?eTLx-< zG2#+Ht6-OKiDBO^#-^05(n~}nS9sDp#CV6p7(w4eah0O%zqqwS0<2#e7}Z%t`#>r& zS_~syNQ1+K1V=YkA7r_2u~X<;Eyxu7sF(0VTqiiGsZK!?ayw5B3DfQ|7;bS;2;vwH zv%&nD$cJMVIu^#tWwlmIEq)qYWFEx7imqm&^)(D%1b5)%v(8Aj%qg;xwa$@NTdh-g zs?(32LThuaQ(~RZ0rj-v{_YO)Qu+qOqPSVzEjK&J42Bb?bx(j9XCjAT5R$cP>zpuG z4+*aB(Oj7nElOLAW369ZB>fPBd%1+Q!g;S44D`j&pByfcwcsfkUMmPBFx<0#jed17 zy_W#XD&2?TumRE8lMWMmH2+qYE85F5-QKJ!tES}(Q5p`M4zc`psgOpwkvd#xf zpCwylHTD>}e43A|)gbHiZu_9Y`LH95`)u4IcJh3<%z@fU~-~3suqQJew8z6dKKG2%Y6c>e{^iDSte#rarbdCoXT@=6D_b9 zYFnjjsvZ{rbBa@drrz3vd9G=-Cu*%<7!8~)S$A%&VpKG}){l%T_G0&L-NAsemvfS~ zF_q-(-R2PA8Uux~njQ;b+HTjIfX=@s1kH2T2~NWCr-BeCV?MRA zDrfjOCv`GJAOwK?e@v{9q}_Soul!k28_~eF|3M5-kob{*kcm6-x17Nw!G2(y$UkR- zmQ@ZxpbfIDlaB-ONwB?_)Jj1;{` zhm-#fG_qC{5yvX|i&1nUEaRka#RRlp8?x~g5k2khW(OO0`yv-*-Z3=S)mNzT1n;}%+Muy}k9^EjBksA~)~$Nj%V@#91GnHQeh*ycgM84Eb!;CWFY)nnK7PfAU{;$8 zwhGk53`1cogP?%jqrp1X15wh*$P5&ezhriaW0pfhFH(yIUvDxj{QXS67#g1Kz0zX~UmW(?ab)eBP$GRg0sY}IT9vMKBHp3C4 zVOFvh4%=r_u!2!mC$|HmG3#jRTVd5M*ZQ}uSn`STjL6ptez~j#^b)dHiCJ?I*keP1 zg%)pM4CN|tXMy`7$C>LC)}r;84f+{bIYiPJG>EZ^$48#^9jwT?)bC?}cD)!FI% zR-|*CN+)NTFr7ckbgod+5b3!KdYh+JKUu@{QvZxQlHS_4`Tq36Hv=%usz~>Xmr& z<~ZDv`U<$rHa-OJ+Gc1s)W@kQ*_!SoV}Bo{-ojmk&F5O&B9*)bxXk5ze4Ma$JgiUf zaRncr<>QNd+`-3veC*}pJA4Sfv_&z@s6~;_br#`Q>~%FbeOQ_u&S?DD4S1OnR!*xR#;RzYzSV};r~ z?pe-gL^XFiqnn{kUnr)+BL!?!mfpU3?KZo!`QGq}t@@{xo=5m_^}r4wB< zOPujSOfl51#iG`k&2Wh{+Yg!MO3?iT?%PRUtYbV0m-!+eza&iLT${nrX)b1Voy=IL zKg$Q541ac^_BDuPk?Oy$|Em%}_hNj23sbet6?ySQ7uqvkgo{hPb)mqCa^~Nir3KfnyrMSAwH|f2PTkls-m*@u4`vlXQpu+d4{p>asJ}pzYEjBGv zeyKGxQx~gCWy+DkLS!&8OJs!Uk#4oxo`iKFadpQB;e0*D+o>XJ#S}|KwRDBgTt^{SR~VXgp>iVVEQ}E`WsR= zCO+@RE>HdVl^^*DPEU7BcQ|Ntk*?YoJ6li<)2#=L=@YM2;jJL=xRCy3EU#_Wv`odN z_RLIc?8Q{30)hrmWRdF9X-lnKk)V9E?=(Vg?wBZgL20{kwUJ&l}VhEK1;c#r_WHX+1;1JOwbsO zcMJ5w{Tv`ch|RrapFNW;9Z%fQ-u_<3iMYWCj<@lXMQwk@fg$ z0cC#cPD^DH;6Pp)uXC=%yTZe(t_R-CbnI;W%t>p!!g&%8J)O8fuT|ph5_sLoi*N&t zg}16Dqjy_g#IFXvURW9vz$biJ*6~m?75*Ltzh2=By^6}MITe-L$&`ssS0BXIspx39 zK4XsK7+xB#56si;frjtMI#*D`_ba%Tw}$I8C?AsKyOj_1xgPH`=*ixEg%8yeF4D`@ z4^fWW5l_#=&QI8PUy{J3SZ+g0;LwGq}qtH_tt(QIF z&jP-lr1S=VGw}7a<52k2^E-gArvt~Sd_k@&go4kO6>NgSTc$?E0Xh2p)}}zqKS!p_ ze3AYE6^~ir)l+^aqe^F+j3hqc*~TDyqSFa{J$}Y)Ph8#MQx1GVMUQ=T|Ek-!2HCnP zD*yV?67bL3_RirB9^TDE`qWYDr{p{hoTsS!$6L#&;wWx)a<+fep9~X+sOLENU54Ud zKkqbd#Rlw?x4@$E`OWe~_dp8zux~%AN>gx(Bb5W^$~QJP<1n+9P0c(dtgT~XD}Qm| zn2Z}e7e3c<@PcbkUi!3jFLj)V+-~%AqI>ud`1u>xt!QpLbye`taM&zuZtZBR27EMa4^1psRf&^wBxAe@V)0eilH7#ASv1RSbqfePV|Ku}| znPAL3ZtR(3r;kOz*mbmLfAo3BOz>St!~XnObvJKru4)S6e-uKDf6CZ(?OWP)GWcy- z-?Vlkjz;PsY;0@$%5z})IK)7A3~PE|Tr%xB&TCn}zN2c5frIASTGk)kvaWS4e5i!Y zK!FPsfwHoB72GS(CU&&1gsZ({B@PLP1Ly1rQ^pX~^41mra0nC8r02YjEv?P%gwlau zq|)4m6WIl#NJ2MDfUH~Iu?9aKO{fX@#i@s&3P&rBa%gTR8EJDDj#X56Pu_RwBIrhRUQu{L|3_699fIf#4!`mqsv>E<3~CLB=sPY_6eRKVFw7Op!etmJR3!d&&Rijy1Gfe>k(? zC*iw#$(puuqLj zd#MwfJ2rP5?mjY*M!?xi1~IDFhmRc2D%O+EhFJ*vv?AtK(}>dL9x}JLtd?_(UdjX= zHqP`oti5PY^6-=QUA-MTNI7xF6`l=wl~7Hdmy*KxWSnu~sp%YlLFS^F3)V~FVjADvB>DOu7{+<2 zdyd}L53g71MLyTHw5uhb#$dN|81l=MxUz!768)62{k`D0y}flTX7Wwv;0&8{8doiE zS$nvYA1U>;7=^`}EG{B|Mv*_XQn`yxH~hKUD>1|kl;ojHM5L8t;Vvw&)f@luIe+g3 zqf_%GqanUTyk@%>g)h_<3xF*hSW{cqc-W@pLRrC2w-etm4`H9mT42`I>zsK9-ybfW z78z>{CKK{}C`RQx{P326;LcAd%lo0&6@`RDozd=s1^(ESoOwMksQPUSr7a4Vtg+IDjJP$ z&r3X95@-E&y(tqrfS?OE=St|Nf`sY2@Z5H`Loy=|x5%vX%{F zL+92Vt~`pQdK`0Pvytr=6j1GQU$gOU8$V#xm)(`PHDNBaZ%y2mux~LJ@>Okl*;U(2 zbCLb7`Ar8u_q*SA@$+~0#kjf1P%l>*cGc2Y^=^CVA5HUYU|t!c@5EUT^*u&oM=QWngYltBHBFZ9>38Zx!$RZnp z+*vZovt*b7AYz_w|DH*mE|WT)S-RQ%3Z*MJv$rL#Pgsc$cH7q{zLe0Ccq9I9TmavV z|Bd3A0g^#wk}23LRwL;znK!e5Z#MV9n3BE6e3ZUN%_pU4CFE#zE8wl?flLu(7$jpG zB?u}h_4SdE1roAA6%-&164DUR*@`B_Z2FWbqS~J_zre)5V17{olmw7C@D?b%1-m8Q z0*$9qATse96kdbEYtVQ|SLjE5Fii@w{!?bG#t-xfNc^UY%+u_Pw&R2N&AW{l3fQhc zGiAN9RV&Y#+fDN{yU++Ae>?GA z27EX1a#q00i5pT#=Z4hXDI|V(>Id+FGy8S>eH#UWvbJQKW^Z@iav|rp+|Ibw-m%;6 zjDy3|kXsNqO~wR1UP0xb{etsJH&(aX{vq;VCE(bWd?INjDt6nyO5Tu)O@ zlA^{-*HR6OP1ucs*TLGgRKpnTmHrQ$-#B*a160}{xd-q;7aW%-yOOTRJX+7>yGZr} zCMW-F5g~1K$_S}lx?AWJ@tnH3!-uG7$xgxLZ;%zqrEm!@>7u%WHx;a1f=eBYJRX3& zWNhIQvFV}+5Jv@Tmx!%{Q4UZx`)~2P5|Hp+iRTimJ@#`bL{T*Mg8-RlQQUM@u!G&-ME_5*U)V@CcWp)?#m*cOqD-2%tvd7upJZ}Do z)$m8=RhDdruCi{h0KdVyUjgp7p0vO>F18@zvcF~ifKB8N%m-s=mcJgm%EAw$;OBnp z3HC})Fxu&m6)$`BCr$G4N%IjCwTfx5^+v!?V}FdnP@X_Ciji>f*+@)(;UwThtDB3U zx%2#17BFKZU?V5T+6;U06hFi^CZoL+5U>3mWH#A@ro?ZtZ!6v=zVKr7$>vI+5m-Xt z`B^QyPFw!kMgdYQxRk=W)WoOA3+>Cy%T@Dsxp^<)_nKc-fUlb0Cg9uVJ_Xokeq9MM zMAlxq0iyb~d1(wkJ7W*<=egKx{CO+(E`Rw;)zRH2V zUL}(c^yh(;g;OTqpp!=zFOqN2$pavgZ_vpDAd+v;$pavgZ_vpDAd+v;$zzzn3oTQp z9OT|$cTrk5*>~HqYvec`0f5!x5rB2ZZixZ!me>_m>>3gPi92K85JkN=_FaT|J+Qqe zwwJg9TyK9DdI;Zph$*am2nGzh^|r}h`@#6* z4165aBY}c~{jB=}6Z;{0MstB^cH#a2pLLh-793!)~PWV8CnO z0|OKckW@zQ&CZC3kexZcQ_pr^#LJvpa$O9acK>sYp~D0(SH(vL@)wlLFoil4G9vD6 z@jK(zxubX6cg7)`1xB1CuVU{+z6`s|d4tvP4d+f*Rzqk|mwOB5Rxd zoGz;k#Ch2Vtmhg0y!|SE*cv z_ggPpUS_Rt!fiik?I#HQJc&Rtof8Z(*)Cm+o`}ho?upnNtVnObn5*B8 z*$)#9VvD`NZkA$0zv79FeT)>F{Q}$(p~ZGHeM$?VIvZrc?leEc3i=sNnNG(j{(jZb z-EUrxA%VybU1vxc?KgjEW;Ur3*(6KkmkdA64+nW$z&K8^zsU-G1{vN5JZqCK3ZoFI z7LJiQq)OW%2mpj71y;EfOh1J!LJG?fzuy>H%KgUpWn6tc0*>#L*^pEwEkGG8=rsG> zVlEu!={7v5^l~g@Pg;;^RoQBl*;;VMfDrm-gB4~dW3d{X@d;6&(9%g~Fvn+f)V3O- z2m({l92g3rZ{VzfcWg5gqwyGUhq2oz0;{_1GEKYYSPpOJ1b`yfn6@soi|Ty6pxla} zibYe+MfOw%pyv_ljFUfrIz_aSHcqFhH#)PZks{*P)dR8qBE-L_ld8~ZUaWNBV)H(% z#t?}U#ukLu+ZQ8L{M?7>n*Jb2Rj<9~GbHc~22DPPwlM&(0mn&5C5Y*4qE;35$DA-` z*0B^s16Dk`qrcc@(ovO!a>N zqyz5ju9z%y0(W@=OO6N7zjP&TPl%bEVc(1SyO_5bFcRalcK`!V`=H(F7%v9F$#T2m zD9pn!8n+)olLk_;FUK%6+8eX?p-nc#Xh=C@Gk4imVGCB0ec_%0ATsf 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 W$TG}qzVMR>2yWA>NEt&ey!{`vXwKLG literal 0 HcmV?d00001 diff --git a/production/bin/ZAN04MAT.exe b/production/bin/ZAN04MAT.exe new file mode 100644 index 0000000000000000000000000000000000000000..4d12394ced44a8e4baf1bb1417e1bb725fe6982c GIT binary patch literal 157352 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[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 z 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 X$Z{+*8&7hDhGB5ii&hyg-m3o(o&+fr literal 0 HcmV?d00001 diff --git a/production/bin/ZAN06UPD.exe b/production/bin/ZAN06UPD.exe new file mode 100644 index 0000000000000000000000000000000000000000..d2ddbafa19cacfd9a11c2e8218e7e79c9d8faff8 GIT binary patch literal 171482 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 literal 0 HcmV?d00001 diff --git a/production/cpy/ZAN01REC.cpy b/production/cpy/ZAN01REC.cpy new file mode 100644 index 0000000..18e3282 --- /dev/null +++ b/production/cpy/ZAN01REC.cpy @@ -0,0 +1,11 @@ + * + * 加班申請レコード 80B + * + 03 (A)APPL-ID PIC X(008). + 03 (A)EMP-ID PIC 9(008). + 03 (A)APPL-DATE PIC 9(008). + 03 (A)START-TIME PIC 9(004). + 03 (A)END-TIME PIC 9(004). + 03 (A)STATUS PIC X(001). + 03 (A)OVT-TYPE PIC X(001). + 03 (A)FILLER PIC X(046). diff --git a/production/cpy/ZAN02REC.cpy b/production/cpy/ZAN02REC.cpy new file mode 100644 index 0000000..7cca953 --- /dev/null +++ b/production/cpy/ZAN02REC.cpy @@ -0,0 +1,12 @@ + * + * マッチング結果レコード 80B + * + 03 (A)APPL-ID PIC X(008). + 03 (A)EMP-ID PIC 9(008). + 03 (A)APPL-DATE PIC 9(008). + 03 (A)START-TIME PIC 9(004). + 03 (A)END-TIME PIC 9(004). + 03 (A)STATUS PIC X(001). + 03 (A)OVT-TYPE PIC X(001). + 03 (A)PROC-SEQ PIC 9(002). + 03 (A)FILLER PIC X(044). diff --git a/production/cpy/ZAN03REC.cpy b/production/cpy/ZAN03REC.cpy new file mode 100644 index 0000000..4febbd4 --- /dev/null +++ b/production/cpy/ZAN03REC.cpy @@ -0,0 +1,11 @@ + * + * 集約結果レコード 80B + * + 03 (A)APPL-ID PIC X(008). + 03 (A)EMP-ID PIC 9(008). + 03 (A)APPL-DATE PIC 9(008). + 03 (A)START-TIME PIC 9(004). + 03 (A)END-TIME PIC 9(004). + 03 (A)OVT-HOURS PIC 9(004)V9(001). + 03 (A)OVT-TYPE PIC X(001). + 03 (A)FILLER PIC X(042). diff --git a/production/cpy/ZAN04REC.cpy b/production/cpy/ZAN04REC.cpy new file mode 100644 index 0000000..f466156 --- /dev/null +++ b/production/cpy/ZAN04REC.cpy @@ -0,0 +1,5 @@ + * + * DBCLEAN対象レコード 80B + * + 03 (A)APPL-ID PIC X(008). + 03 (A)FILLER PIC X(072). diff --git a/production/cpy/ZAN05REC.cpy b/production/cpy/ZAN05REC.cpy new file mode 100644 index 0000000..807cd1a --- /dev/null +++ b/production/cpy/ZAN05REC.cpy @@ -0,0 +1,5 @@ + * + * エラーログレコード VB可変長 + * + 03 (A)ERR-CATEGORY PIC 9(002). + 03 (A)ERR-DETAIL PIC X(198). diff --git a/production/cpy/ZANCHKAC.cpy b/production/cpy/ZANCHKAC.cpy new file mode 100644 index 0000000..cfea712 --- /dev/null +++ b/production/cpy/ZANCHKAC.cpy @@ -0,0 +1,5 @@ + * SUB04CHK 項目チェック用連絡領域 + 01 C01CHKPAR. + 03 C01CHKTYP PIC X(008). + 03 C01CHKDAT PIC X(080). + 03 C01CHKRRC PIC 9(004). diff --git a/production/cpy/ZANDATAC.cpy b/production/cpy/ZANDATAC.cpy new file mode 100644 index 0000000..5ab2681 --- /dev/null +++ b/production/cpy/ZANDATAC.cpy @@ -0,0 +1,4 @@ + * SUB01DAT 運用日付取得用連絡領域 + 01 D01UBSPAR. + 03 D01FKICOD PIC S9(004) COMP. + 03 D01UBSUDATE PIC 9(008). diff --git a/production/cpy/ZANENDAC.cpy b/production/cpy/ZANENDAC.cpy new file mode 100644 index 0000000..a8031fd --- /dev/null +++ b/production/cpy/ZANENDAC.cpy @@ -0,0 +1,3 @@ + * SUB03END ABEND処理用連絡領域 + 01 E01ABDPAR. + 03 E01ABDCOD PIC 9(003). diff --git a/production/cpy/ZANMSGAC.cpy b/production/cpy/ZANMSGAC.cpy new file mode 100644 index 0000000..9f5ac0d --- /dev/null +++ b/production/cpy/ZANMSGAC.cpy @@ -0,0 +1,13 @@ + * SUB02MSG メッセージ出力用連絡領域 + 01 M00MHOPAR. + 03 M00MSGCOD PIC 9(003). + 03 M00UMKDATS22-01 PIC X(030). + 03 M00UMKDATS22-02 PIC X(030). + 03 M00UMKDATS22-03 PIC X(030). + 03 M00UMKDATS22-04 PIC X(030). + 03 M00UMKDATS22-05 PIC X(030). + 03 M00UMKDATS22-06 PIC X(030). + 03 M00UMKDATS22-07 PIC X(030). + 03 M00UMKDATS22-08 PIC X(030). + 03 M00UMKDATS22-09 PIC X(030). + 03 M00UMKDATS22-10 PIC X(030). diff --git a/production/cpy/ZANTIMAC.cpy b/production/cpy/ZANTIMAC.cpy new file mode 100644 index 0000000..105c65c --- /dev/null +++ b/production/cpy/ZANTIMAC.cpy @@ -0,0 +1,5 @@ + * SUB05TIM 時刻丸め用連絡領域 + 01 T01TIMPAR. + 03 T01TIMHRS PIC 9(004)V9(001). + 03 T01TIMOUT PIC 9(004)V9(001). + 03 T01TIMRRC PIC 9(004). diff --git a/production/ddl/schema_kin.sql b/production/ddl/schema_kin.sql new file mode 100644 index 0000000..bece146 --- /dev/null +++ b/production/ddl/schema_kin.sql @@ -0,0 +1,97 @@ +-- ============================================================================= +-- 勤怠休暇管理システム(サブシステムA)DBスキーマ +-- 対象DB2: DB2 for z/OS +-- ローカル開発: SQLite(型宣言はDB2準拠、SQLiteが許容する範囲で記述) +-- ============================================================================= + +-- 1. EMP_MASTER(社員マスタ) +-- 全社員の基本情報。サブシステムAでは参照のみ。 +CREATE TABLE EMP_MASTER ( + EMP_ID CHAR(8) NOT NULL PRIMARY KEY, + DEPT_ID CHAR(4) NOT NULL, + EMP_NAME VARCHAR(50) NOT NULL, + STATUS CHAR(1) NOT NULL +); + +INSERT INTO EMP_MASTER VALUES ('EMP00001', 'D001', '山田太郎', '1'); +INSERT INTO EMP_MASTER VALUES ('EMP00002', 'D002', '鈴木花子', '1'); +INSERT INTO EMP_MASTER VALUES ('EMP00009', 'D003', '佐藤健一', '9'); +INSERT INTO EMP_MASTER VALUES ('EMP00010', 'D001', '田中実', '1'); + +-- 2. LEAVE_RECORDS(休暇申請記録) +-- 休暇申請の生データ。取消はDELETEで物理削除。 +CREATE TABLE LEAVE_RECORDS ( + APPLICATION_ID INTEGER NOT NULL PRIMARY KEY, + EMP_ID CHAR(8) NOT NULL, + LEAVE_TYPE CHAR(2) NOT NULL, + START_DATE CHAR(8) NOT NULL, + START_TIME CHAR(4) NOT NULL, + END_DATE CHAR(8) NOT NULL, + END_TIME CHAR(4) NOT NULL, + STATUS CHAR(1) NOT NULL +); + +INSERT INTO LEAVE_RECORDS VALUES (1, 'EMP00001', '01', '20260615', '0900', '20260616', '1800', '1'); +INSERT INTO LEAVE_RECORDS VALUES (2, 'EMP00002', '02', '20260617', '0900', '20260617', '1200', '1'); +INSERT INTO LEAVE_RECORDS VALUES (3, 'EMP00001', '04', '20260620', '0900', '20260620', '1800', '9'); + +-- 3. HOLIDAY_CALENDAR(休日カレンダー) +-- 祝日のみ列挙。土日は曜日判定で処理。 +CREATE TABLE HOLIDAY_CALENDAR ( + HOLIDAY_DATE CHAR(8) NOT NULL PRIMARY KEY, + DESCRIPTION VARCHAR(50) +); + +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260101', '元日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260112', '成人の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260211', '建国記念の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260320', '春分の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260429', '昭和の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260503', '憲法記念日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260504', 'みどりの日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260505', 'こどもの日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260720', '海の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260811', '山の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260921', '敬老の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260922', '国民の休日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20260923', '秋分の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20261012', '体育の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20261103', '文化の日'); +INSERT INTO HOLIDAY_CALENDAR VALUES ('20261123', '勤労感謝の日'); + +-- 4. SICK_LEAVE_RATE(病欠控除率) +-- 全社員共通の病欠控除率。 +CREATE TABLE SICK_LEAVE_RATE ( + LEAVE_TYPE CHAR(2) NOT NULL PRIMARY KEY, + DEDUCTION_RATE DECIMAL(3,2) NOT NULL +); + +-- 5. DAILY_RECORDS(日別勤怠記録) +-- 1社員1日の勤怠情報。出勤日のみレコード存在。 +CREATE TABLE DAILY_RECORDS ( + EMP_ID CHAR(8) NOT NULL, + TARGET_DATE CHAR(8) NOT NULL, + TIME_IN CHAR(4) NOT NULL, + TIME_OUT CHAR(4) NOT NULL, + ANNUAL_LEAVE_H DECIMAL(6,1) NOT NULL, + PERSONAL_LEAVE_H DECIMAL(6,1) NOT NULL, + OFFICIAL_LEAVE_H DECIMAL(6,1) NOT NULL, + SICK_LEAVE_H DECIMAL(6,1) NOT NULL, + UNAPPROVED_ABSENT_H DECIMAL(6,1) NOT NULL, + UPDATED_AT TIMESTAMP NOT NULL, + PRIMARY KEY (EMP_ID, TARGET_DATE) +); + +-- 6. MONTHLY_ABSENCE(月次統計) +-- DAILY_RECORDSの月次集計サマリ。 +CREATE TABLE MONTHLY_ABSENCE ( + EMP_ID CHAR(8) NOT NULL, + YEAR_MONTH CHAR(6) NOT NULL, + ANNUAL_LEAVE_H DECIMAL(6,1) NOT NULL, + PERSONAL_LEAVE_H DECIMAL(6,1) NOT NULL, + OFFICIAL_LEAVE_H DECIMAL(6,1) NOT NULL, + SICK_LEAVE_H DECIMAL(6,1) NOT NULL, + UNAPPROVED_ABSENT_H DECIMAL(6,1) NOT NULL, + UPDATED_AT TIMESTAMP NOT NULL, + PRIMARY KEY (EMP_ID, YEAR_MONTH) +); diff --git a/production/ddl/schema_zan.sql b/production/ddl/schema_zan.sql new file mode 100644 index 0000000..13ab519 --- /dev/null +++ b/production/ddl/schema_zan.sql @@ -0,0 +1,31 @@ +-- ============================================================================= +-- 残業統計管理システム(サブシステムB)DBスキーマ +-- 対象DB2: DB2 for z/OS +-- ローカル開発: SQLite(型宣言はDB2準拠、SQLiteが許容する範囲で記述) +-- ============================================================================= + +-- 1. OVT_APPLICATIONS(個別加班申請テーブル) +-- 1件=1回の残業申請。STATUS=9で取消。 +CREATE TABLE OVT_APPLICATIONS ( + APPL_ID CHAR(8) NOT NULL PRIMARY KEY, + EMP_ID CHAR(8) NOT NULL, + APPL_DATE CHAR(8) NOT NULL, + OVT_TYPE CHAR(1) NOT NULL, + START_TIME CHAR(4) NOT NULL, + END_TIME CHAR(4) NOT NULL, + OVT_HOURS DECIMAL(4,1) NOT NULL, + STATUS CHAR(1) NOT NULL, + UPDATED_AT TIMESTAMP NOT NULL +); + +-- 2. OVT_MONTHLY(月次集計テーブル) +-- 社員別・年月別・種別別の残業時間集計。 +CREATE TABLE OVT_MONTHLY ( + EMP_ID CHAR(8) NOT NULL, + YEAR_MONTH CHAR(6) NOT NULL, + OVT_TYPE CHAR(1) NOT NULL, + OVT_HOURS DECIMAL(6,1) NOT NULL, + OVT_COUNT INTEGER NOT NULL, + UPDATED_AT TIMESTAMP NOT NULL, + PRIMARY KEY (EMP_ID, YEAR_MONTH, OVT_TYPE) +); diff --git a/production/design/01_勤怠休暇管理システム_設計書(サブシステムA).md b/production/design/01_勤怠休暇管理システム_設計書(サブシステムA).md new file mode 100644 index 0000000..4b144bb --- /dev/null +++ b/production/design/01_勤怠休暇管理システム_設計書(サブシステムA).md @@ -0,0 +1,787 @@ +# 勤怠休暇管理システム 設計書(サブシステムA) + +## 概要 + +休暇申請データと打刻データを処理し、日別勤怠記録(DAILY_RECORDS)および月次統計(MONTHLY_ABSENCE)を生成する。 + +9本のCOBOLプログラムで構成される。 + +拠点間SORTやCSV変換などはCOBOLではなくJCL SORTで処理する方針とし、COBOLプログラムは純粋なビジネスロジックに専念する。 + +### 設計方針(カバレッジ拡大) + +本設計は、サブシステムBで未カバーのプログラムタイプ・ステートメントを積極的にカバーするため、以下の方針でプログラム分割・構文選定を行う。 + +| 項目 | Bの状況 | Aで狙う追加カバレッジ | +|------|---------|---------------------| +| プログラムタイプ | 6パターン◎ | 未カバー5パターン + **SYSIN(P28)** を追加 | +| ステートメント | 主要構文は網羅済 | SEARCH非ALL, DELETE, EVALUATE(4分岐), PERFORM THRU, WRITE FROM, WRITE AFTER ADVANCING, **MULTIPLY, SUBTRACT, ACCEPT, DISPLAY, INSPECT** | +| DB操作 | INSERT/UPDATE/SELECT/COMMIT/ROLLBACK | 上記に加え **DELETE FROM** を追加 | + +--- + +## システム定数 + +全てのプログラムで共通の前提値。COBOLのCNS-定数として保持する(DBは持たない)。 + +| 定数 | 値 | 説明 | +|------|-----|------| +| WORK-START | 0900 | 所定労働開始時刻 | +| WORK-END | 1800 | 所定労働終了時刻 | +| LUNCH-START | 1200 | ランチ開始時刻 | +| LUNCH-END | 1300 | ランチ終了時刻 | +| DAILY-HOURS | 8.0 | 1日の所定労働時間(9h実働 − 1hランチ) | + +--- + +## 休暇種別 + +| コード | 名称 | 給与への影響 | 備考 | +|--------|------|------------|------| +| 01 | 年休(年假) | 控除なし | 有給年次休暇 | +| 02 | 事假(事假) | 全額控除 | 私事欠勤 | +| 03 | 因公特批假(因公特批假) | 控除なし | 公務特認欠勤 | +| 04 | 病欠(病欠) | 一部控除 | 控除率はSICK_LEAVE_RATEテーブル参照 | + +**休暇種別は上記4種で固定。勤怠ルールはこの4種を基準とする。** + +--- + +## DBテーブル一覧 + +全テーブルはDB2で管理する。COBOLからは埋め込みSQL(`EXEC SQL`)で直接アクセスする。 + +### 1. EMP_MASTER(社員マスタ) + +全社員の基本情報を保持する。サブシステムAでは参照のみ。 + +| No | カラム名 | 型 | 長さ | NULL | PK | 備考 | +|----|---------|---|------|------|----|------| +| 1 | EMP_ID | CHAR | 8 | NOT NULL | ✓ | 社員番号 | +| 2 | DEPT_ID | CHAR | 4 | NOT NULL | — | 部署ID | +| 3 | EMP_NAME | VARCHAR | 50 | NOT NULL | — | 氏名 | +| 4 | STATUS | CHAR | 1 | NOT NULL | — | '1'=在籍, '9'=退職 | + +### 2. ABSENCE_SUMMARY(欠勤集計中間ファイル) + +サブシステムA→Cの連携用。KIN08DBUが月次集計後に出力する。 + +| No | カラム名 | 型 | 長さ | NULL | PK | 備考 | +|----|---------|---|------|------|----|------| +| 1 | EMP_ID | CHAR | 8 | NOT NULL | ✓ | 社員番号 | +| 2 | YEAR_MONTH | CHAR | 6 | NOT NULL | ✓ | YYYYMM | +| 3 | ANNUAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 年休使用合計 | +| 4 | PERSONAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 事假合計 | +| 5 | OFFICIAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 因公特批假合計 | +| 6 | SICK_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 病欠合計 | +| 7 | UNAPPROVED_ABSENT_H | DECIMAL | 6,1 | NOT NULL | — | 未申請欠勤合計 | + +### 3. HOLIDAY_CALENDAR(休日カレンダー) + +祝日(曜日判定で休日にならない日)のみを列挙する。 +土曜・日曜は曜日判定で休日とするため、このテーブルには含めない。 + +| No | カラム名 | 型 | 長さ | NULL | PK | 備考 | +|----|---------|---|------|------|----|------| +| 1 | HOLIDAY_DATE | CHAR | 8 | NOT NULL | ✓ | YYYYMMDD | +| 2 | DESCRIPTION | VARCHAR | 50 | OK | — | 任意(例:「建国記念の日」) | + +**出勤日判定ロジック(全PGM共通):** +``` +1. HOLIDAY_CALENDARに日付が存在する → 休日 +2. 曜日が土曜(6)または日曜(INTEGER-OF-DATE MOD 7 = 0) → 休日 +3. 上記以外 → 出勤日(WORK-START=0900, WORK-END=1800) +``` + +### 4. SICK_LEAVE_RATE(病欠控除率) + +全社員共通の病欠控除率を保持する。 + +| No | カラム名 | 型 | 長さ | NULL | PK | 備考 | +|----|---------|---|------|------|----|------| +| 1 | LEAVE_TYPE | CHAR | 2 | NOT NULL | ✓ | '04'固定 | +| 2 | DEDUCTION_RATE | DECIMAL | 3,2 | NOT NULL | — | 例:0.50(50%控除) | + +### 5. LEAVE_RECORDS(休暇申請記録) + +休暇申請の生データを保持する。取消は**DELETE FROM**で行い、レコードを物理削除する。 +期間は開始日〜終了日で表現され、日別展開は行わない。 + +| No | カラム名 | 型 | 長さ | NULL | PK | 備考 | +|----|---------|---|------|------|----|------| +| 1 | APPLICATION_ID | INTEGER | — | NOT NULL | ✓ | 自動採番 | +| 2 | EMP_ID | CHAR | 8 | NOT NULL | — | 社員番号 | +| 3 | LEAVE_TYPE | CHAR | 2 | NOT NULL | — | '01'〜'04' | +| 4 | START_DATE | CHAR | 8 | NOT NULL | — | YYYYMMDD(出勤日) | +| 5 | START_TIME | CHAR | 4 | NOT NULL | — | HHMM(所定労働時間内) | +| 6 | END_DATE | CHAR | 8 | NOT NULL | — | YYYYMMDD(出勤日) | +| 7 | END_TIME | CHAR | 4 | NOT NULL | — | HHMM(所定労働時間内) | +| 8 | STATUS | CHAR | 1 | NOT NULL | — | '1'=有効, '9'=取消 | + +### 6. DAILY_RECORDS(日別勤怠記録) + +1社員1日の勤怠情報。出勤日のみレコードが存在する。 +打刻がない日でも休暇または未申請欠勤の情報を持つ。 + +| No | カラム名 | 型 | 長さ | NULL | PK | 備考 | +|----|---------|---|------|------|----|------| +| 1 | EMP_ID | CHAR | 8 | NOT NULL | ✓ | | +| 2 | TARGET_DATE | CHAR | 8 | NOT NULL | ✓ | YYYYMMDD | +| 3 | TIME_IN | CHAR | 4 | NOT NULL | — | 出勤時刻、'0000'=打刻なし | +| 4 | TIME_OUT | CHAR | 4 | NOT NULL | — | 退勤時刻、'0000'=打刻なし | +| 5 | ANNUAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 年休使用時間 | +| 6 | PERSONAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 事假時間 | +| 7 | OFFICIAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 因公特批假時間 | +| 8 | SICK_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 病欠時間 | +| 9 | UNAPPROVED_ABSENT_H | DECIMAL | 6,1 | NOT NULL | — | 未申請欠勤時間 | +| 10 | UPDATED_AT | TIMESTAMP | — | NOT NULL | — | DEFAULT CURRENT_TIMESTAMP | + +### 7. MONTHLY_ABSENCE(月次統計) + +DAILY_RECORDSを月次で集計したサマリ。 + +| No | カラム名 | 型 | 長さ | NULL | PK | 備考 | +|----|---------|---|------|------|----|------| +| 1 | EMP_ID | CHAR | 8 | NOT NULL | ✓ | | +| 2 | YEAR_MONTH | CHAR | 6 | NOT NULL | ✓ | YYYYMM | +| 3 | ANNUAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 年休使用合計 | +| 4 | PERSONAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 事假合計 | +| 5 | OFFICIAL_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 因公特批假合計 | +| 6 | SICK_LEAVE_H | DECIMAL | 6,1 | NOT NULL | — | 病欠合計 | +| 7 | UNAPPROVED_ABSENT_H | DECIMAL | 6,1 | NOT NULL | — | 未申請欠勤合計 | +| 8 | UPDATED_AT | TIMESTAMP | — | NOT NULL | — | DEFAULT CURRENT_TIMESTAMP | + +--- + +## ファイル一覧 + +| # | ファイル名 | DD名 | 編成 | RECM | サイズ | 生成元 | 消費先 | 備考 | +|---|-----------|------|------|------|--------|--------|--------|------| +| 1 | RAW-LEAVE | KIN01R01 | SEQUENTIAL | FB | 80 | 外部システム | KIN01INP | 休暇申請CSV | +| 2 | WORK-LEAVE | KIN01W01 | SEQUENTIAL | FB | 80 | KIN01INP | SORT→KIN02UPD | 検証済休暇申請(中間) | +| 3 | RAW-PUNCH | KIN04R01 | SEQUENTIAL | FB | 80 | 打刻システム | KIN04CHK | 生打刻データ | +| 4 | EDITED-PUNCH | KIN04W01 | SEQUENTIAL | FB | 80 | KIN04CHK | KIN05MAT/B-サブシステム | 項目チェック通過打刻 | +| 5 | LEAVE-DAILY | KIN02W01 | SEQUENTIAL | FB | 80 | KIN03EXP | KIN05MAT / KIN07DAI | 日別展開済休暇 | +| 6 | KIN-LEAVE | KIN05W01 | SEQUENTIAL | FB | 160 | KIN05MAT | KIN07DAI | 打刻+休暇照合結果 | +| 7 | WORK-DAY-FILE | KIN06W01 | SEQUENTIAL | FB | 80 | KIN06CLD | KIN07DAI | 出勤日カレンダー | +| 8 | DAILY-RECORD | KIN07W01 | SEQUENTIAL | FB | 200 | KIN07DAI | KIN08DBU | 日別勤怠計算結果 | +| 9 | ERROR-LOG | KIN01E01 | SEQUENTIAL | VB | 200 | KIN01INP / KIN04CHK | — | エラーレコード退避 | +| 10 | ABSENCE-SUMMARY | KIN08W01 | SEQUENTIAL | FB | 80 | KIN08DBU | C-サブシステム | 月次欠勤集計(Cへ連携) | +| 11 | CSV-OUTPUT | KIN09W01 | SEQUENTIAL | FB | 200 | KIN09CSV | — | 社員確認用CSV | + +--- + +## 処理フロー + +``` +休暇申請(RAW-LEAVE / CSV) + │ + │ [KINJ010] KIN01INP — 休暇申請CSV取込・検証処理 + │ UNSTRINGでCSV分解 → IF/ELSE chain(新規/取消/変更) + │ SEARCH(非ALL)で休暇種別テーブル検索 + │ SUB04CHKで日付/時刻/数値チェック + ├──正常 → WORK-LEAVE-file + └──異常 → ERROR-LOG + │ + │ [KINJ011] SORT(WORK-LEAVE → APPLICATION_ID昇順) + │ + │ [KINJ012] KIN02UPD — 休暇申請DB更新処理 + │ 新規: EXEC SQL INSERT + │ 取消: EXEC SQL DELETE FROM ← 新カバレッジ + │ 変更: EXEC SQL DELETE + INSERT + │ → DB:LEAVE_RECORDS + │ + │ [KINJ015] KIN03EXP — 休暇日別展開処理 + │ DB(SELECT/CURSOR) → PERFORM THRU(日付範囲) + │ キーブレイク(社員番号切替) → HEADER処理 + │ 休日除外 → CONTINUE + │ → LEAVE-DAILY-file + ▼ +LEAVE-DAILY-file(日別休暇) + │ + +打刻生データ(RAW-PUNCH / CSV) + │ + │ [KINJ020] KIN04CHK — 打刻項目チェック処理 + │ UNSTRING + SUB04CHK(日付/時刻/数値) + │ IF多重ネスト(必須→日付→時刻→数値の4段階) + ├──正常 → EDITED-PUNCH + └──異常 → ERROR-LOG + │ + │ [KINJ022] SORT(EDITED-PUNCH → 社員番号+日付昇順) + │ + │ [KINJ025] KIN05MAT — 打刻休暇照合処理 + │ マッチング(1:N) EDITED-PUNCH × LEAVE-DAILY + │ 休暇種別優先順位(01/02連動, 03/04独立) + │ → KIN-LEAVE + ▼ +KIN-LEAVE(照合結果) + │ + │ [KINJ030] KIN06CLD — 出勤日カレンダー生成処理 + │ DB SELECT(CURSOR) + PERFORM VARYING + │ SEARCH ALL(休日判定) / WRITE FROM ← 新カバレッジ + │ → WORK-DAY-FILE + ▼ +WORK-DAY-FILE(出勤日カレンダー) + │ + │ [KINJ033] KIN07DAI — 日別勤怠計算処理 + │ マッチング(1:N) + EVALUATE分岐 ← MULTIPLY/SUBTRACT新カバレッジ + │ WORK-DAY(主駆動) × KIN-LEAVE(N側) + │ 4パターン(A/B/C/D)をEVALUATE + PERFORMで分岐 + │ 休暇時間計算(ランチ除外) + SUB05TIM丸め(0.1h切上) + │ → DAILY-RECORD + ▼ +DAILY-RECORD(日別計算結果) + │ + │ [KINJ036] KIN08DBU — 勤怠DB更新処理 + │ DAILY-RECORD → DAILY_RECORDS INSERT + │ 社員別月次集計 → MONTHLY_ABSENCE UPSERT + │ ABSENCE_SUMMARYファイル出力(Cへ連携) + ▼ +DB: DAILY_RECORDS + DB: MONTHLY_ABSENCE + │ ABSENCE-SUMMARY-file + ▼ +C:給与計算システム(KYU01CAL) + │ + │ [KINJ040] KIN09CSV — 勤怠CSV出力処理 + │ DB SELECT → STRING → WRITE AFTER ADVANCING ← 新カバレッジ + ▼ +CSV(社員確認用) +``` + +--- + +## プログラム詳細 + +### STEP010: KIN01INP — 休暇申請CSV取込・検証処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | **振り分け** | +| **JCL前処理** | なし | +| **入力** | RAW-LEAVE(80B / CSV形式)| +| **出力** | WORK-LEAVE(80B)/ ERROR-LOG(VB)| + +**機能:** + +1. READ RAW-LEAVE → CSVレコード1行を取得 +2. **UNSTRING** でCSV分解(申請番号,社員番号,日付,開始時刻,終了時刻,休暇種別,ステータス)+ **TALLYING** でフィールド数カウント(項目数チェック) +4. **SEARCH(非ALL)** でWORKING-STORAGE上の休暇種別テーブルを線形探索 → 該当種別の存在確認 ← **新カバレッジ** +5. **IF/ELSE chain** でステータス判定(新規/取消/変更) ← **新カバレッジ(振り分けIF文)** +6. SUB04CHKで日付・時刻・数値の各項目検証 + - IF多重ネスト:必須チェック → 日付形式 → 時刻範囲 → 数値 +7. 通過 → WORK-LEAVEに出力(検証済みレコード) +8. エラー → ERROR-LOGに出力 + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| UNSTRING | CSVレコードの項目分解 | +| INSPECT TALLYING | カンマ区切り数カウント | +| **SEARCH(非ALL)** | 休暇種別テーブル線形探索 ← 新規 | +| IF/ELSE chain | ステータス別の振り分け処理(EVALUATE不使用) | + +--- + +### STEP020: KIN02UPD — 休暇申請DB更新処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | **DB更新** | +| **JCL前処理** | WORK-LEAVE → APPLICATION_ID昇順SORT | +| **入力** | WORK-LEAVE(80B)| +| **出力** | LEAVE_RECORDS(DB2)| + +**機能:** + +1. READ WORK-LEAVE → 検証済みレコード1件 +2. レコード種別に応じたDB操作: + - 新規申請(ステータス='1') → **EXEC SQL INSERT** + - 取消申請(ステータス='9') → **EXEC SQL DELETE FROM** WHERE APPLICATION_ID = :id ← **新カバレッジ** + - 変更申請(ステータス='1', APPLICATION_ID指定済) → **DELETE + INSERT** +3. IF SQLCODE NOT = 0 → エラーハンドリング + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| EXEC SQL INSERT | DB登録 | +| **EXEC SQL DELETE FROM** | DB削除(物理削除による取消)← 新規 | +| IF | SQLCODE判定 | + +--- + +### STEP030: KIN03EXP — 休暇日別展開処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | **キーブレイク** | +| **JCL前処理** | なし | +| **入力** | LEAVE_RECORDS(DB2 SELECT / CURSOR) | +| **出力** | LEAVE-DAILY-file(80B)| + +**機能:** + +1. LEAVE_RECORDSからSTATUS='1'(有効)の全レコードをCURSOR SELECTする(ORDER BY EMP_ID, START_DATE)。 +2. **PERFORM THRU** で処理範囲を指定 ← **新カバレッジ** + - 2100-PROCESS-EMP THRU 2100-PROCESS-EMP-EXIT:1社員分の処理 + - 2200-EXPAND-DATE THRU 2200-EXPAND-DATE-EXIT:日付展開処理 +3. キーブレイク(社員番号切替)時に社員別小計を出力 ← **キーブレイク(その他)** +4. 各申請の開始日〜終了日をループ(PERFORM VARYING): + - 休日判定:HOLIDAY_CALENDARに存在 or 土日 → **CONTINUE** でスキップ + - 出勤日 → LEAVE-DAILY-fileに出力 + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| **PERFORM THRU** | 段落範囲指定による構造化処理 ← 新規 | +| PERFORM UNTIL | 日付ループ(開始日〜終了日)| +| CONTINUE | 休日スキップ時の空処理 | +| EXEC SQL SELECT(CURSOR) | DB読込(FETCH) | +| SET | キーブレイクフラグ操作 | + +--- + +### STEP040: KIN04CHK — 打刻項目チェック処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | 項目チェック(重複なし) | +| **JCL前処理** | なし | +| **入力** | RAW-PUNCH(80B / CSV形式)| +| **出力** | EDITED-PUNCH(80B)/ ERROR-LOG(VB)| + +**機能:** + +1. READ RAW-PUNCH → CSVレコード +2. **UNSTRING** で分解 +3. **IF多重ネスト** で4段階チェック: + ``` + IF 社員番号 NOT = SPACE THEN + IF 日付が有効形式 THEN + IF 時刻が有効範囲 THEN + IF 出勤 < 退勤 THEN + 正常出力 + ELSE → エラー + ELSE → エラー + ELSE → エラー + ELSE → エラー + END-IF + ``` +4. 各チェックは SUB04CHK を呼出 +5. 正常 → EDITED-PUNCHに出力(**WRITE FROM** 使用) +6. 異常 → ERROR-LOGに出力(**STRING** で編集) + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| UNSTRING | CSV分解 | +| **IF多重ネスト(THEN句)** | 必須→日付→時刻→数値の4段階チェック ← 新規(深度) | +| WRITE FROM | 出力レコードの一括書出 | +| STRING | エラーメッセージ編集 | + +--- + +### STEP050: KIN05MAT — 打刻休暇照合処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | **マッチング(1:N)** | +| **JCL前処理** | EDITED-PUNCH → 社員番号+日付昇順SORT(KINJ022)| +| **入力R01** | EDITED-PUNCH(80B、打刻側)| +| **入力R02** | LEAVE-DAILY-file(80B、休暇側、N件あり得る)| +| **出力** | KIN-LEAVE(160B)| + +**機能:** + +EDITED-PUNCH(打刻)とLEAVE-DAILY-file(日別休暇)を社員番号+日付で照合する。 + +1. **マッチング制御**(EVALUATE TRUE): + - R01キー < R02キー → 打刻のみ(休暇なし)→ 休暇='99'+0hで出力 + - R01キー = R02キー → マッチ → 休暇情報マージ + - 同一キーにN件のR02がある場合は全件読み、休暇種別優先順位で1件選定 + - R01キー > R02キー → R02次へ(R01側に該当なしの休暇 → この後のR01読込で拾う) + +2. **休暇種別優先順位**: + - 01(年休)と02(事假)は連動:年休残あり→01, なし→02 + - 03(因公特批假)と04(病欠)は独立 + - 複数種別混在時はAPPLICATION_ID基準で時刻範囲判定 + +3. 出力:打刻情報(80B)+休暇情報(80B)=160BのKIN-LEAVE + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| EVALUATE TRUE | マッチング3分岐制御 | +| STRING | 出力レコード編集 | +| CONTINUE | 空分岐処理 | + +--- + +### STEP060: KIN06CLD — 出勤日カレンダー生成処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | **GETPUT** | +| **JCL前処理** | なし | +| **入力** | EMP_MASTER(DB2 SELECT / CURSOR)、HOLIDAY_CALENDAR(DB2 SELECT) | +| **出力** | WORK-DAY-FILE(80B FB)| + +**PARM解析:** +- `YEARMONTH=202605` — 必須。対象年月。 + +**機能:** + +1. PARMから対象年月を取得 +2. EMP_MASTERテーブルからSTATUS='1'(在籍)の社員一覧をSELECT(CURSOR, ORDER BY EMP_ID) +3. HOLIDAY_CALENDARテーブルから該当月の祝日一覧をSELECT(WORKING-STORAGEのテーブルに格納) +4. 各社員について、当月1日〜月末日まで **PERFORM VARYING** でループ: + - **SEARCH ALL** でHOLIDAY-CALENDARテーブルを二分探索 + - 土曜(6) or 日曜(7) → 休日 + - その他 → 出勤日として **WRITE FROM** で出力 ← **新カバレッジ** +5. 出力レコードは社員番号+日付の昇順に保証(ORDER BY + ループ順) + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| **WRITE FROM** | MOVE + WRITEを1文で記述 ← 新規 | +| PERFORM VARYING | 日付ループ | +| SEARCH ALL | 休日テーブル二分探索 | +| EXEC SQL SELECT(CURSOR) | DB読込 | + +--- + +### STEP070: KIN07DAI — 日別勤怠計算処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | **マッチング(1:N)** | +| **JCL前処理** | なし(WORK-DAY-FILE / KIN-LEAVE / LEAVE-DAILYともソート済み前提) | +| **入力R01** | WORK-DAY-FILE(80B、主駆動、1社員1日=1件) | +| **入力R02** | KIN-LEAVE(160B、N側、1日0〜N件) | +| **副参照** | LEAVE-DAILY-file(80B、ファイル併走読込) | +| **出力** | DAILY-RECORD(200B FB)| + +**機能:** + +WORK-DAY-FILE(出勤日カレンダー)を主駆動とし、社員番号+日付をキーにKIN-LEAVE(打刻+休暇)とLEAVE-DAILY-file(日別休暇)を照合する。 + +**EVALUATEによる4パターン分岐:** + +マッチング結果に応じてPATTERN-NUM(1〜4)を設定し、**EVALUATE** で処理分岐(実装時にGO TO DEPENDING ONのフォールスルー問題を確認したため、EVALUATE + PERFORMに変更): + +``` +01 PATTERN-NUM PIC 9(1). + 88 PATTERN-A VALUE 1. + 88 PATTERN-B VALUE 2. + 88 PATTERN-C VALUE 3. + 88 PATTERN-D VALUE 4. + + EVALUATE PATTERN-NUM + WHEN 1 PERFORM 6100-PATTERN-A + WHEN 2 PERFORM 6200-PATTERN-B + WHEN 3 PERFORM 6300-PATTERN-C + WHEN 4 PERFORM 6400-PATTERN-D + END-EVALUATE. +``` + +| パターン | R01(WORK-DAY) | R02(KIN-LEAVE) | LEAVE-DAILY | 処理 | +|---------|--------------|----------------|-------------|------| +| A=1 | あり | あり | あり | 打刻情報設定+休暇時間計算(ランチ除外、0.1h切上丸め) | +| B=2 | あり | あり | なし | 打刻情報設定のみ、休暇=0 | +| C=3 | あり | なし | あり | 打刻=0000、休暇時間計算(所定労働時間8h上限、ランチ除外) | +| D=4 | あり | なし | なし | 打刻=0000、休暇=0、未申請欠勤=8.0h | + +**休暇時間計算(ランチ考慮):** + +``` +例:終日休暇申請 0900〜1800 + 0900-1200 = 3h(午前) + 1200-1300 = ランチ(除外) + 1300-1800 = 5h(午後) + 合計休暇時間 = 8h + +例:午後休暇申請 1300〜1800 + 1300-1800 = 5h(午後、ランチ除外済み) + 合計休暇時間 = 5h +``` + +丸め:SUB05TIM(0.1h単位切上)を呼出。 + +**バリエーション構文(MULTIPLY / SUBTRACT):** + +COMPUTEのみに依存せず、MULTIPLYとSUBTRACTも併用して時間計算のバリエーションを確保する。 + +``` +* 例:時間(hhmm)を分(minutes)に変換 → ランチ除外 +MULTIPLY WRK-HOURS BY 60 GIVING WRK-MINUTES ← MULTIPLY +SUBTRACT LUNCH-MINUTES FROM WRK-MINUTES ← SUBTRACT +``` + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| **GO TO ... DEPENDING ON** | 4パターンの処理分岐 ← 新規 | +| **PERFORM THRU** | 各パターン内の段落範囲処理 | +| COMPUTE ROUNDED ON SIZE ERROR | 時間計算のエラー処理 | +| **MULTIPLY** | 時間→分単位変換 ← 新規 | +| **SUBTRACT** | ランチ時間除外 ← 新規 | +| STRING | エラーメッセージ編集 | +| CALL 'SUB05TIM' | 時刻丸め計算 | + +--- + +### STEP080: KIN08DBU — 勤怠DB更新処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | DB更新 + **SYSIN読込(P28)** | +| **JCL前処理** | なし | +| **入力** | DAILY-RECORD(200B)、**SYSIN(集計対象社員指定)** | +| **出力** | DAILY_RECORDS / MONTHLY_ABSENCE(DB2)、ABSENCE_SUMMARY(80B)| + +**機能:** + +1. **SYSIN読込(パターン28)**:集計対象の社員番号一覧をSYSINから読み込む(省略時は全社員が対象)。 +2. DAILY-RECORDを1レコードずつ読込み、DAILY_RECORDSに**EXEC SQL INSERT** +3. 社員別・月別の集計値を**PERFORM VARYING**で積算(全社員ループ) +4. 全件処理後、MONTHLY_ABSENCEを**EXEC SQL UPDATE / INSERT**(UPSERT) +5. **INSPECT TALLYING**で社員番号の有効性チェック → 空または無効値は**DISPLAY**で警告表示 +6. 病欠時間はSICK_LEAVE_RATEテーブルを参照し、控除前時間として保持 +7. 集計後データをABSENCE_SUMMARYファイルに出力 + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| **READ SYSIN**(パターン28) | 対象社員一覧の読込 ← 新規パターン | +| DISPLAY | 警告メッセージ表示 ← 新規 | +| INSPECT TALLYING | 社員番号の空チェック ← 新規 | +| PERFORM VARYING | 社員別月次集計ループ | +| EXEC SQL INSERT / UPDATE | DB更新(INSERT+UPDATEでUPSERT) | + +--- + +### STEP090: KIN09CSV — 勤怠CSV出力処理 + +| 項目 | 内容 | +|------|------| +| **PGMパターン** | GETPUT | +| **JCL前処理** | なし | +| **入力** | DAILY_RECORDS / MONTHLY_ABSENCE(DB2)、**COMMAND-LINE PARM** | +| **出力** | CSVファイル(社員確認用)| + +**PARM解析:** +- `YEARMONTH=202605` — 必須。対象年月。 +- `MODE=FULL` — オプション。`FULL`=全項目出力, `SUMMARY`=集計のみ。 + +**機能:** + +1. **ACCEPT FROM COMMAND-LINE** でPARM解析(対象年月・出力モード) +2. DAILY_RECORDSから当月の全レコードをCURSOR SELECT +3. **STRING** でCSV行を編集(DELIMITED BY SIZE) +4. **WRITE AFTER ADVANCING PAGE** でページヘッダー制御 ← **新カバレッジ** + - 100行ごとにヘッダー行を出力 + - WRITE header-record AFTER ADVANCING PAGE +5. CSVフォーマット: + +``` +社員番号,日付,出勤時刻,退勤時刻,休暇種別,年休時間,事假時間,因公特批假時間,病欠時間,未申請欠勤時間 +00000101,20260501,0900,1800,99,0.0,0.0,0.0,0.0,0.0 +00000101,20260502,0900,1300,02,0.0,4.0,0.0,0.0,4.0 +00000101,20260503,0000,0000,01,8.0,0.0,0.0,0.0,0.0 +00000101,20260504,0000,0000,99,0.0,0.0,0.0,0.0,8.0 +``` + +6. 休暇種別は該当日に休暇がある場合は最初に該当した休暇種別コード、ない場合は'99' + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| **ACCEPT FROM COMMAND-LINE** | PARM解析(対象年月・出力モード)← 新規 | +| **WRITE AFTER ADVANCING PAGE** | ページ制御出力 ← 新規 | +| STRING | CSV行編集(DELIMITED BY SIZE) | +| EXEC SQL SELECT(CURSOR) | DB読込 | + +--- + +## 共通関数(サブプログラム) + +サブシステムAの全プログラムで使用する共通関数。SUB06DBUは使用せず、全DB操作はEXEC SQLで直接記述する。 + +| サブプログラム | I/Fコピー句 | 用途 | 使用プログラム | +|---|---|---|---| +| SUB01DAT | D01010AC | 運用日付取得 | KIN01INP, KIN04CHK, KIN08DBU, KIN09CSV | +| SUB02MSG | MSG000AC | メッセージ編集出力 | 全プログラム | +| SUB03END | MSG000AC | ABEND終了 | KIN02UPD, KIN04CHK, KIN07DAI | +| SUB04CHK | SUB04CHK | 項目チェック(日付/時刻/数値) | KIN01INP, KIN04CHK | +| SUB05TIM | TIME010AC | 時刻丸め計算(分→時間) | KIN07DAI | + +--- + +## JCL構成概要 + +9本のJOB。拠点間ソートはJCL SORTで処理し、COBOLプログラムはビジネスロジックに専念する。 + +| JOB名 | 実行PGM | 処理概要 | SORT | +|-------|--------|---------|------| +| KINJ010 | KIN01INP | 休暇申請CSV取込・検証 | 不要 | +| KINJ011 | SORT | WORK-LEAVE → APPLICATION_ID昇順 | 必須 | +| KINJ012 | KIN02UPD | 休暇申請DB更新(INSERT/DELETE) | 不要 | +| KINJ015 | KIN03EXP | 休暇日別展開(キーブレイク) | 不要 | +| KINJ020 | KIN04CHK | 打刻項目チェック | 不要 | +| KINJ022 | SORT | EDITED-PUNCH → 社員番号+日付昇順 | 必須 | +| KINJ025 | KIN05MAT | 打刻休暇照合(1:N) | 不要 | +| KINJ030 | KIN06CLD | 出勤日カレンダー生成(GETPUT) | 不要 | +| KINJ033 | KIN07DAI | 日別計算(EVALUATE / MULTIPLY / SUBTRACT) | 不要 | +| KINJ036 | KIN08DBU | 勤怠DB更新(集計) | 不要 | +| KINJ040 | KIN09CSV | 勤怠CSV出力 | 不要 | + +--- + +## 丸めルール一覧 + +| 項目 | 最小単位 | 超過後丸め | 適用プログラム | +|------|---------|-----------|--------------| +| 休暇時間(全種別) | 1.0h | 0.1h単位切上 | KIN07DAI(SUB05TIM) | +| 未申請欠勤時間 | 8.0h/日 | 切捨 | KIN07DAI | + +サブシステムB(残業計算)の丸めルールとは独立して管理する。 + +--- + +## 期待される新規カバレッジ + +### プログラムタイプ(未カバー → Aで追加) + +| No | パターン | 状態 | A該当プログラム | A状態 | +|----|----------|:----:|----------------|:-----:| +| 2 | マッチング処理(1:N) | × | KIN05MAT | ◎ | +| 11 | キーブレイク処理(その他) | × | KIN03EXP | ◎ | +| 12 | レイアウト編集のみ(GETPUT) | × | KIN06CLD | ◎ | +| 15 | 振り分け(IF文) | × | KIN01INP | ◎ | +| 17 | 内部テーブル検索 | ○ | KIN01INP(SEARCH非ALL) | ◎ | +| 19 | CSV→FB変換(改行なし) | ○ | KIN01INP | ◎ | +| **28** | **SYSIN読込・チェック** | **×** | **KIN08DBU** | **新規◎** | + +### ステートメント(未カバー → Aで追加) + +| ステートメント | 状態 | A該当プログラム | +|---------------|:----:|----------------| +| SEARCH(非ALL) | × | KIN01INP | +| DELETE FROM(DB2) | × | KIN02UPD | +| GO TO DEPENDING ON | × | — (KIN07DAIはフォールスルー問題のためEVALUATE+PERFORMに変更) | +| PERFORM THRU | × | KIN03EXP | +| WRITE FROM | × | KIN04CHK, KIN06CLD | +| WRITE AFTER ADVANCING PAGE | × | KIN09CSV | +| **MULTIPLY** | **○(ZAN06UPDのみ)** | **KIN07DAI** | +| **SUBTRACT** | **○(ZAN06UPDのみ)** | **KIN07DAI** | +| **ACCEPT FROM COMMAND-LINE** | **◎(ZAN05CAL,KIN06CLD)** | **KIN09CSV** | +| **DISPLAY** | **△(SUB02MSG,SUB03ENDのみ)** | **KIN08DBU** | +| **INSPECT** | **◎** | **KIN08DBU** | + +--- + +## レコード構成 + +EDITED-PUNCHはBサブシステムのZAN03CHKが入力として使用するため、互換性を維持する。 + +### EDITED-PUNCH(80B) + +Bサブシステムとの連携インターフェース。 + +| # | 項目 | 名称 | 属性 | 開始 | 備考 | +|---|------|------|------|------|------| +| 1 | 社員番号 | SI-EMP-ID | 9(8) | 1 | | +| 2 | 日付 | SI-DATE | 9(8) | 9 | YYYYMMDD | +| 3 | 出勤時刻 | SI-TIME-IN | 9(4) | 17 | HHMM | +| 4 | 退勤時刻 | SI-TIME-OUT | 9(4) | 21 | HHMM | +| 5 | 部署ID | SI-DEPT-ID | 9(4) | 25 | | +| 6 | 端末ID | SI-TERMINAL | X(6) | 29 | | +| 7 | 予備 | FILLER | X(46) | 35 | | + +### WORK-LEAVE(80B) — 新規(KIN01INP→KIN02UPD中間) + +| # | 項目 | 名称 | 属性 | 開始 | 備考 | +|---|------|------|------|------|------| +| 1 | 申請ID | WL-APPLICATION-ID | 9(9) | 1 | 新規=0, 取消/変更=APPLICATION_ID | +| 2 | 社員番号 | WL-EMP-ID | X(8) | 10 | | +| 3 | 休暇種別 | WL-LEAVE-TYPE | X(2) | 18 | '01'〜'04' | +| 4 | 開始日 | WL-START-DATE | 9(8) | 20 | YYYYMMDD | +| 5 | 開始時刻 | WL-START-TIME | 9(4) | 28 | HHMM | +| 6 | 終了日 | WL-END-DATE | 9(8) | 32 | YYYYMMDD | +| 7 | 終了時刻 | WL-END-TIME | 9(4) | 40 | HHMM | +| 8 | ステータス | WL-STATUS | X(1) | 44 | '1'=新規/変更, '9'=取消 | +| 9 | 予備 | FILLER | X(36) | 45 | | + +### LEAVE-DAILY(80B) + +| # | 項目 | 名称 | 属性 | 開始 | 備考 | +|---|------|------|------|------|------| +| 1 | 社員番号 | SL-EMP-ID | X(8) | 1 | | +| 2 | 日付 | SL-DATE | 9(8) | 9 | YYYYMMDD | +| 3 | 休暇種別 | SL-LEAVE-TYPE | X(2) | 17 | '01'〜'04' | +| 4 | 開始時刻 | SL-START-TIME | 9(4) | 19 | HHMM(元申請の開始時刻) | +| 5 | 終了時刻 | SL-END-TIME | 9(4) | 23 | HHMM(元申請の終了時刻) | +| 6 | 申請ID | SL-APPLICATION-ID | 9(9) | 27 | LEAVE_RECORDSのAPPLICATION_ID | +| 7 | 予備 | FILLER | X(45) | 36 | | + +### KIN-LEAVE(160B) — EDITED-PUNCH(80B)+休暇情報(80B) + +| # | 項目 | 名称 | 属性 | 開始 | 備考 | +|---|------|------|------|------|------| +| 1-7 | 打刻情報 | — | — | 1 | EDITED-PUNCHと同一 | +| 8 | 休暇種別 | SR-LEAVE-TYPE | X(2) | 81 | '01'〜'04' or '99' | +| 9 | 開始時刻 | SR-LEAVE-START-TIME | 9(4) | 83 | 該当休暇の申請開始時刻 | +| 10 | 終了時刻 | SR-LEAVE-END-TIME | 9(4) | 87 | 該当休暇の申請終了時刻 | +| 11 | 休暇時間 | SR-LEAVE-HOURS | 9(4)V9(1) | 91 | KIN07DAIが再計算(ランチ除外・丸め適用) | +| 12 | 申請ID | SR-APPLICATION-ID | 9(9) | 96 | LEAVE_RECORDSのAPPLICATION_ID | +| 13 | 予備 | FILLER | X(56) | 105 | | + +### WORK-DAY-FILE(80B) + +| # | 項目 | 名称 | 属性 | 開始 | 備考 | +|---|------|------|------|------|------| +| 1 | 社員番号 | SW-EMP-ID | 9(8) | 1 | | +| 2 | 日付 | SW-DATE | 9(8) | 9 | YYYYMMDD | +| 3 | 曜日 | SW-DAY-OF-WEEK | 9(1) | 17 | 1=月…7=日 | +| 4 | 予備 | FILLER | X(63) | 18 | | + +### DAILY-RECORD(200B) + +| # | 項目 | 名称 | 属性 | 開始 | 備考 | +|---|------|------|------|------|------| +| 1 | 社員番号 | SD-EMP-ID | 9(8) | 1 | | +| 2 | 日付 | SD-DATE | 9(8) | 9 | YYYYMMDD | +| 3 | 出勤時刻 | SD-TIME-IN | 9(4) | 17 | '0000'=打刻なし | +| 4 | 退勤時刻 | SD-TIME-OUT | 9(4) | 21 | '0000'=打刻なし | +| 5 | 年休時間 | SD-ANNUAL-H | 9(4)V9(1) | 25 | | +| 6 | 事假時間 | SD-PERSONAL-H | 9(4)V9(1) | 30 | | +| 7 | 因公特批假時間 | SD-OFFICIAL-H | 9(4)V9(1) | 35 | | +| 8 | 病欠時間 | SD-SICK-H | 9(4)V9(1) | 40 | | +| 9 | 未申請欠勤時間 | SD-ABSENT-H | 9(4)V9(1) | 45 | | +| 10 | 予備 | FILLER | X(151) | 50 | | + +### CSV-OUTPUT(200B) + +| # | 項目 | 名称 | 属性 | 開始 | 備考 | +|---|------|------|------|------|------| +| 1 | CSV行データ | SC-CSV-LINE | X(200) | 1 | STRING編集済みCSV1行 | + +### ERROR-LOG(VB 200B) + +| # | 項目 | 名称 | 属性 | 開始 | 備考 | +|---|------|------|------|------|------| +| 1 | エラー区分 | ER-CATEGORY | 9(2) | 1 | 01=休暇エラー, 02=打刻エラー | +| 2 | 発生日時 | ER-DATETIME | X(16) | 3 | | +| 3 | プログラムID | ER-PGM-ID | X(8) | 19 | | +| 4 | エラー内容 | ER-MESSAGE | X(100) | 27 | | +| 5 | 原データ | ER-RAW-DATA | X(80) | 127 | エラー原因となった入力レコード | + diff --git a/production/design/02_残業統計管理システム_設計書(サブシステムB).md b/production/design/02_残業統計管理システム_設計書(サブシステムB).md new file mode 100644 index 0000000..299846c --- /dev/null +++ b/production/design/02_残業統計管理システム_設計書(サブシステムB).md @@ -0,0 +1,817 @@ +# 残業統計管理システム 設計書(サブシステムB) + +## システム概要 + +本サブシステムは、社員からの加班申請データを元に、振り分け・重複チェック・打刻照合・取消マッチング・キーブレイク集約を行い、月次の加班統計データをDBに保存する。 + +### サブシステム情報 + +| 項目 | 内容 | +|------|------| +| サブシステムID | ZAN(残業→ZANgyo) | +| COBOLプログラム数 | 6 | +| JCL数 | 6 | +| DB | 1(OVERTIME-DB / DB2、2テーブル) | + +### システム定数 + +| 定数 | 値 | 説明 | +|------|-----|------| +| WORK-START | 0900 | 所定労働開始時刻 | +| WORK-END | 1800 | 所定労働終了時刻 | +| DINNER-START | 1830 | 食事時間開始(1830以前は加班不可) | +| MIN-OVT-HOURS | 0.5 | 加班最小単位 | + +### 入力CSV形式(OVT-APPLY) + +各レコードはCSV形式。 + +| 項目 | 内容 | +|------|------| +| フォーマット | `申請番号,社員番号,日付(YYYYMMDD),開始時刻(HHMM),終了時刻(HHMM),ステータス` | +| ステータス 0 | 申請(新規) | +| ステータス 1 | 承認済(後続処理で状態更新) | +| ステータス 9 | 取消 | + +--- + +## ファイル一覧 + +| # | ファイル名 | 編成 | RECM | サイズ | 用途 | 区分 | +|---|-----------|------|------|-------|------|------| +| 1 | OVT-APPLY | SEQUENTIAL | FB | 80 | 加班申請CSV(入力) | 新規 | +| 2 | OVT-VALID | SEQUENTIAL | FB | 80 | 振り分け通過(有効申請) | 新規 | +| 3 | OVT-CANCEL | SEQUENTIAL | FB | 80 | 振り分け通過(取消) | 新規 | +| 4 | OVT-NODUP | SEQUENTIAL | FB | 80 | 重複チェック通過データ | 新規 | +| 5 | OVT-CHECKED | SEQUENTIAL | FB | 80 | 打刻照合通過(OVT-TYPE付加) | 新規 | +| 6 | OVT-MATCHED | SEQUENTIAL | FB | 80 | マッチング通過(処理番号付加) | 新規 | +| 7 | OVT-DBCLEAN | SEQUENTIAL | FB | 80 | 孤立取消(DB削除対象) | 新規 | +| 8 | OVT-SUMMARY | SEQUENTIAL | FB | 80 | 集約結果 | 新規 | +| 9 | ERROR-LOG | SEQUENTIAL | VB | 200 | エラーレコード退避 | Aと共用 | +| 10 | EDITED-PUNCH | SEQUENTIAL | FB | 80 | 打刻データ(Aシステム出力) | Aから連携 | +| 11 | HOLIDAY-FILE | SEQUENTIAL | FB | 80 | 休日マスタファイル(Aシステム提供) | Aから連携 | + +### DBテーブル管理方針 + +DB2インスタンスは全サブシステムで共有するが、テーブルはサブシステム別に機能分割する。 +BサブシステムのテーブルはOVT-APPLICATIONS, OVT-MONTHLYの2つであり、これらの管理・更新はBのみが行う。 +Aサブシステムのテーブル(DAILY_RECORDS, LEAVE_RECORDS等)は参照せず、A→Bの連携はEDITED-PUNCHファイル経由に限定する。 +HOLIDAY_CALENDARテーブルについては、Aサブシステムによって提供されるHOLIDAY-FILEを使用することで参照を代替する。 + +### DB二重対応 + +本サブシステムのDB操作はDB2の埋め込みSQL(`EXEC SQL`)で直接記述する。 +ただし、休日マスタに関するDBアクセスはファイルベースで処理するため、 +ZAN06UPD以外の全プログラムはDBアクセスを伴わない。 +各プログラム内でEXEC SQL INSERT/UPDATE/SELECTを発行する。 + +### 共通関数利用方針 + +Aサブシステムの共通関数のうち、安定した汎用API(SUB01DAT, SUB02MSG, SUB03END, SUB04CHK, SUB05TIM)はBでも利用する。 +SUB06DBUはサブシステムAで使用するDB更新用サブプログラムであり、Bでは使用しない(EXEC SQLを直接記述)。 + +--- + +## DB構成 + +### DB名称:残業統計データベース(OVERTIME-DB) + +#### テーブル1:OVT-APPLICATIONS(個別加班申請テーブル) + +| カラム | 型 | 内容 | +|--------|---|------| +| APPL-ID | CHAR(8) | 申請番号(PK) | +| EMP-ID | CHAR(8) | 社員番号 | +| APPL-DATE | CHAR(8) | 申請日 YYYYMMDD | +| OVT-TYPE | CHAR(1) | W=平日 / H=休日 | +| START-TIME | CHAR(4) | 開始時刻 HHMM | +| END-TIME | CHAR(4) | 終了時刻 HHMM | +| OVT-HOURS | DECIMAL(4,1) | 加班時間 | +| STATUS | CHAR(1) | 0=有効 / 9=取消 | +| UPDATED-AT | TIMESTAMP | 更新日時 | + +#### テーブル2:OVT-MONTHLY(月次集計テーブル) + +| カラム | 型 | 内容 | +|--------|---|------| +| EMP-ID | CHAR(8) | 社員番号(PK) | +| YEAR-MONTH | CHAR(6) | 対象年月 YYYYMM(PK) | +| OVT-TYPE | CHAR(1) | W=平日 / H=休日(PK) | +| OVT-HOURS | DECIMAL(6,1) | 加班時間合計 | +| OVT-COUNT | INTEGER | 加班回数 | +| UPDATED-AT | TIMESTAMP | 更新日時 | + +--- + +## 処理フロー + +``` +OVT-APPLY(CSV、任意順) + レコード: 申請番号,社員番号,日付,開始時刻,終了時刻,ステータス(0/1/9) + │ + ╞══ ZANJ010 ═══════════════════════════════════╡ + │ ZAN01CHK(残業申請振分処理)— 振り分け + │ UNSTRINGでCSV分解 / EVALUATEでステータス判定 + │ SUB04CHKで日付/時刻/数値チェック / 0.5h未満チェック + ├── ステータス=0,1 → OVT-VALID + ├── ステータス=9 → OVT-CANCEL + └── 異常 → ERROR-LOG + │ + ╞══ ZANJ012 ═══════════════════════════════════╡ + │ SORT(OVT-VALID → 社員番号+日付+開始時刻昇順) + │ + │ ZAN02CHK(時間帯重複チェック処理)— 項目チェック + │ 同社員+同日の前レコード終了時刻 > 現レコード開始時刻 + │ → 重複(境界接続は重複としない) + ├── 通過 → OVT-NODUP + └── 重複 → ERROR-LOG + │ + ╞══ ZANJ013 ═══════════════════════════════════╡ + │ SORT(EDITED-PUNCH → 社員番号+日付昇順) + │ + │ ZAN03CHK(打刻時間照合処理)— マッチング(N:1) + │ OVT-NODUP + PUNCH-SORTED を社員番号+日付で突合 + │ 申請時間帯が出勤〜退勤の範囲内か確認 + │ HOLIDAY_CALENDAR検索+曜日関数で休日判定→OVT-TYPE(W/H)設定 + ├── 通過 → OVT-CHECKED + └── 異常 → ERROR-LOG + │ + ╞══ ZANJ015 ═══════════════════════════════════╡ + │ SORT(OVT-CHECKED → 申請番号昇順) + │ SORT(OVT-CANCEL → 申請番号昇順) + │ + │ ZAN04MAT(取消マッチング処理)— マッチング1:1 + │ キー=申請番号で VALID vs CANCEL を突合 + ├── VALID有 + CANCEL無 → OVT-MATCHED + ├── VALID有 + CANCEL有 → 消滅 + └── VALID無 + CANCEL有 → OVT-DBCLEAN + │ + ╞══ ZANJ020 ═══════════════════════════════════╡ + │ SORT(OVT-MATCHED → 申請番号+処理番号昇順) + │ + │ ZAN05CAL(残業時間集計処理)— キーブレイク集計 + │ 同一申請番号内の最終レコードを集計 + │ DIVIDE 分→時間変換 / SUB05TIMで丸め + │ COMPUTE ROUNDED ON SIZE ERROR + │ → OVT-SUMMARY + │ + ╞══ ZANJ025 ═══════════════════════════════════╡ + │ ZAN06UPD(残業統計DB更新処理)— DB更新 + ├── OVT-SUMMARY → OVT-APPLICATIONS INSERT/UPDATE + │ → OVT-MONTHLY UPSERT(平日/休日別) + └── OVT-DBCLEAN → OVT-APPLICATIONS STATUS='9' UPDATE + → OVT-MONTHLY 減算UPDATE + → 該当なし → ERROR-LOG +``` + +--- + +## JCL + +### ZANJ010 — 残業申請振分 + +```jcl +//ZANJ010 JOB (ACCT),'残業申請振分',CLASS=A +//* +//*--- パラメータ定義 --- +//SETPARM SET YEARMONTH=202605 +//* +//*===================================================================== +//* STEP010: 振り分け(SORT不要) +//* 注:YEARMONTH PARMは他プログラムとの一貫性のため渡すが、ZAN01CHK内では未使用 +//*===================================================================== +//STEP010 EXEC PGM=ZAN01CHK +//ZAN01R01 DD DSN=OVT-APPLY.DAT,DISP=SHR +//ZAN01W01 DD DSN=OVT-VALID.DAT,DISP=(NEW,PASS) +//ZAN01W02 DD DSN=OVT-CANCEL.DAT,DISP=(NEW,PASS) +//ZAN01W03 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS) +``` + +### ZANJ012 — 時間帯重複チェック + +```jcl +//ZANJ012 JOB (ACCT),'時間帯重複チェック',CLASS=A +//* +//*--- パラメータ定義 --- +//SETPARM SET YEARMONTH=202605 +//* +//*===================================================================== +//* STEP012S: 有効申請 SORT +//*===================================================================== +//STEP012S EXEC PGM=SORT +//SORTIN DD DSN=OVT-VALID.DAT,DISP=(OLD,DELETE) +//SORTOUT DD DSN=OVT-VSORT.DAT,DISP=(NEW,PASS) +//SYSIN DD * + SORT FIELDS=(9,8,CH,A,17,8,CH,A,25,4,CH,A),EQUALS +/* +//* +//*===================================================================== +//* STEP012: 重複チェック +//*===================================================================== +//STEP012 EXEC PGM=ZAN02CHK,PARM='YEARMONTH=&YEARMONTH' +//ZAN02R01 DD DSN=OVT-VSORT.DAT,DISP=(OLD,DELETE) +//ZAN02W01 DD DSN=OVT-NODUP.DAT,DISP=(NEW,PASS) +//ZAN02W02 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS) +``` + +### ZANJ013 — 打刻時間照合 + +```jcl +//ZANJ013 JOB (ACCT),'打刻時間照合',CLASS=A +//* +//*--- パラメータ定義 --- +//SETPARM SET YEARMONTH=202605 +//* +//*===================================================================== +//* STEP013S: 打刻データ SORT +//*===================================================================== +//STEP013S EXEC PGM=SORT +//SORTIN DD DSN=EDITED-PUNCH.DAT,DISP=SHR +//SORTOUT DD DSN=PUNCH-SORTED.DAT,DISP=(NEW,PASS) +//SYSIN DD * + SORT FIELDS=(1,8,CH,A,9,8,CH,A),EQUALS +/* +//* +//*===================================================================== +//* STEP013: 打刻照合 + 曜日判定 +//*===================================================================== +//STEP013 EXEC PGM=ZAN03CHK,PARM='YEARMONTH=&YEARMONTH' +//ZAN03R01 DD DSN=OVT-NODUP.DAT,DISP=(OLD,DELETE) +//ZAN03R02 DD DSN=PUNCH-SORTED.DAT,DISP=(OLD,DELETE) +//ZAN03R03 DD DSN=HOLIDAY-FILE.DAT,DISP=SHR +//ZAN03W01 DD DSN=OVT-CHECKED.DAT,DISP=(NEW,PASS) +//ZAN03W02 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS) +``` + +### ZANJ015 — 取消マッチング + +```jcl +//ZANJ015 JOB (ACCT),'取消マッチング',CLASS=A +//* +//*--- パラメータ定義 --- +//SETPARM SET YEARMONTH=202605 +//* +//*===================================================================== +//* STEP015S1: チェック済データ SORT +//*===================================================================== +//STEP015SA EXEC PGM=SORT +//SORTIN DD DSN=OVT-CHECKED.DAT,DISP=(OLD,DELETE) +//SORTOUT DD DSN=OVT-SORTED.DAT,DISP=(NEW,PASS) +//SYSIN DD * + SORT FIELDS=(1,8,CH,A),EQUALS +/* +//* +//*===================================================================== +//* STEP015S2: 取消データ SORT +//*===================================================================== +//STEP015SB EXEC PGM=SORT +//SORTIN DD DSN=OVT-CANCEL.DAT,DISP=(OLD,DELETE) +//SORTOUT DD DSN=OVT-CSORT.DAT,DISP=(NEW,PASS) +//SYSIN DD * + SORT FIELDS=(1,8,CH,A),EQUALS +/* +//* +//*===================================================================== +//* STEP015: マッチング +//*===================================================================== +//STEP015 EXEC PGM=ZAN04MAT,PARM='YEARMONTH=&YEARMONTH' +//ZAN04R01 DD DSN=OVT-SORTED.DAT,DISP=(OLD,DELETE) +//ZAN04R02 DD DSN=OVT-CSORT.DAT,DISP=(OLD,DELETE) +//ZAN04W01 DD DSN=OVT-MATCHED.DAT,DISP=(NEW,PASS) +//ZAN04W02 DD DSN=OVT-DBCLEAN.DAT,DISP=(NEW,PASS) +//ZAN04W03 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS) +``` + +### ZANJ020 — 残業時間集計 + +```jcl +//ZANJ020 JOB (ACCT),'残業時間集計',CLASS=A +//* +//*--- パラメータ定義 --- +//SETPARM SET YEARMONTH=202605 +//* +//*===================================================================== +//* STEP020S: マッチング済データ SORT +//*===================================================================== +//STEP020S EXEC PGM=SORT +//SORTIN DD DSN=OVT-MATCHED.DAT,DISP=(OLD,DELETE) +//SORTOUT DD DSN=OVT-SORTED2.DAT,DISP=(NEW,PASS) +//SYSIN DD * + SORT FIELDS=(1,8,CH,A,35,2,CH,A),EQUALS +/* +//* +//*===================================================================== +//* STEP020: キーブレイク集計 +//*===================================================================== +//STEP020 EXEC PGM=ZAN05CAL,PARM='YEARMONTH=&YEARMONTH' +//ZAN05R01 DD DSN=OVT-SORTED2.DAT,DISP=(OLD,DELETE) +//ZAN05W01 DD DSN=OVT-SUMMARY.DAT,DISP=(NEW,PASS) +``` + +### ZANJ025 — 残業統計DB更新 + +```jcl +//ZANJ025 JOB (ACCT),'残業統計DB更新',CLASS=A +//* +//*--- パラメータ定義 --- +//SETPARM SET YEARMONTH=202605 +//* +//*===================================================================== +//* STEP025: DB更新(SORT不要) +//*===================================================================== +//STEP025 EXEC PGM=ZAN06UPD,PARM='YEARMONTH=&YEARMONTH' +//ZAN06R01 DD DSN=OVT-SUMMARY.DAT,DISP=(OLD,DELETE) +//ZAN06R02 DD DSN=OVT-DBCLEAN.DAT,DISP=(OLD,DELETE) +//ZAN06W01 DD DSN=ERROR-LOG.DAT,DISP=(NEW,PASS) +``` + +### 実行順序 + +BサブシステムのJOBは、AサブシステムのKINJ020(打刻チェック)出力を入力とする。 +そのためJCL起動時は以下の順序を保証すること。 + +1. Aサブシステム KINJ020(KIN03PCK)→ EDITED-PUNCH生成 +2. Bサブシステム ZANJ010〜ZANJ025(必要時順次実行) + +KINJ030(日別計算)は各打刻確定後であればいつでも実行可能で、ZANJ系列との依存関係はない。 + +--- + +## プログラム詳細 + +### STEP010: ZAN01CHK(残業申請振分処理) — 振り分け + +| 項目 | 内容 | +|------|------| +| **プログラム名称** | 残業申請振分処理 | +| **PGMパターン** | 振り分け | +| **SORT前処理** | 不要 | +| **入力ファイル** | OVT-APPLY(80B / CSV形式) | +| **出力ファイル** | OVT-VALID(80B)/ OVT-CANCEL(80B)/ ERROR-LOG(VB) | +| **件数変化** | N件 → 有効M件 + 取消K件 + 異常L件(M+K+L=N) | +| **使用共通関数** | SUB01DAT(運用日付), SUB02MSG(メッセージ), SUB03END(ABEND), SUB04CHK(項目チェック) | + +**入力CSVレコード例:** `A001,EMP001,20260610,1800,2000,0` + +**機能:** + +1. READ OVT-APPLY +2. **UNSTRING** でCSVレコードを各項目に分解 +3. **UNSTRING TALLYING** でカンマ区切り数をカウント(項目数妥当性確認) +4. **EVALUATE** でステータスを判定 + - 0 or 1 → 有効申請として次へ + - 9 → OVT-CANCEL に書出し + - その他 → エラーとして処理 +5. SUB04CHK で日付(DATE8)・時刻(TIME4)・社員番号(NUMERIC)を検証 +6. 加班時間計算(時刻はHHMM形式のため分単位に変換してから減算) + ``` + 開始分 = (開始時刻 / 100) * 60 + (開始時刻 - (開始時刻 / 100) * 100) + 終了分 = (終了時刻 / 100) * 60 + (終了時刻 - (終了時刻 / 100) * 100) + 加班時間(分) = 終了分 - 開始分 + ``` + - 開始時刻 < DINNER-START(1830) → エラー(18:30以前は食事時間のため加班不可) + - 加班時間 < 30分 → エラー(0.5h未満) + - 開始時刻 ≧ 終了時刻 → エラー +7. 通過 → OVT-VALID に書出し +8. エラー → 該当レコードをERROR-LOG用01レコードにMOVEしてWRITE出力 + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| UNSTRING | CSVレコードの項目分解(TALLYING句で区切り数カウント) | +| STRING | エラーレコード編集 | + +--- + +### STEP012: ZAN02CHK(時間帯重複チェック処理) — 項目チェック + +| 項目 | 内容 | +|------|------| +| **プログラム名称** | 時間帯重複チェック処理 | +| **PGMパターン** | 項目チェック | +| **SORT前処理** | OVT-VALID → 社員番号+日付+開始時刻昇順 | +| **入力ファイル** | OVT-VSORT(80B) | +| **出力ファイル** | OVT-NODUP(80B)/ ERROR-LOG(VB) | +| **件数変化** | M件 → 通過K件 + 重複エラー(M-K)件 | +| **使用共通関数** | SUB01DAT(運用日付), SUB02MSG(メッセージ), SUB03END(ABEND) | + +**機能:** + +OVT-VSORT は既に社員番号+日付+開始時刻でソート済。順次READしながら直前レコードと比較する。 + +1. READ OVT-VSORT → 現レコード取得成功 +2. 直前レコードと同一社員番号+日付 かつ 前終了時刻 > 現開始時刻 の場合 → **時間帯重複** + - 境界接続(前終了時刻 = 現開始時刻)は重複としない +3. 重複 → ERROR-LOG へ +4. 重複なし → OVT-NODUP へ書出し +5. 社員番号 or 日付が変わったら直前レコードをリセット +6. **SET** で重複有無フラグを設定 + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| SET | 重複有無フラグ設定 | +| CONTINUE | リセット時の空処理 | + +--- + +### STEP013: ZAN03CHK(打刻時間照合処理) — マッチング(N:1) + +| 項目 | 内容 | +|------|------| +| **プログラム名称** | 打刻時間照合処理 | +| **PGMパターン** | マッチング(N:1) | +| **SORT前処理** | EDITED-PUNCH → 社員番号+日付昇順 | +| **入力ファイル** | OVT-NODUP(80B)/ PUNCH-SORTED(80B) | +| **出力ファイル** | OVT-CHECKED(80B)/ ERROR-LOG(VB) | +| **件数変化** | K件 → 通過P件 + エラー(K-P)件 | +| **使用共通関数** | SUB02MSG(メッセージ) | + +**機能:** + +#### Step1:打刻時間内チェック + +OVT-NODUP と PUNCH-SORTED を社員番号+日付で突合(共にソート済のため順次READで処理可)。 + +1. READ OVT-NODUP → 現レコード +2. 該当社員番号+日付の打刻レコードを PUNCH-SORTED から READ +3. 打刻データあり かつ 以下を両方満たすことを確認: + - 申請開始時刻 ≧ 出勤時刻 + - 申請終了時刻 ≦ 退勤時刻 +4. 範囲外 または 打刻データなし → ERROR-LOG + +#### Step2:曜日判定 + +**SEARCH ALL** で休日マスタファイル(WORKING-STORAGE)を検索し、申請日の種別を判定。 +Aサブシステムと同一の休日定義に従う(HOLIDAY-FILEファイル相当のデータを保持)。 + +##### 休日ファイル初期化手順 + +初期処理(1000ITTSOR)でHOLIDAY-FILEを全件READし、WORKING-STORAGEのHOLIDAY-TABLEに格納する。 + +``` +* 休日データ取得(ファイル読込み) + OPEN INPUT HOLIDAY-FILE + READ HOLIDAY-FILE + ... 逐次処理 + CLOSE HOLIDAY-FILE +``` + +``` +01 HOLIDAY-TABLE. + 05 HOLIDAY-CNT PIC 9(004). + 05 HOLIDAY-DATA OCCURS 1 TO 366 TIMES + DEPENDING ON HOLIDAY-CNT + INDEXED BY HD-IDX. + 10 HD-DATE PIC 9(008). + 10 HD-TYPE PIC X(001). + 88 HD-HOLIDAY VALUE 'H'. +``` + +``` +SET HD-IDX TO 1 +SEARCH ALL HOLIDAY-DATA + AT END + SET OVT-TYPE TO 'W' + WHEN HD-DATE(HD-IDX) = APPL-DATE + IF HD-HOLIDAY(HD-IDX) + SET OVT-TYPE TO 'H' + ELSE + SET OVT-TYPE TO 'W' + END-IF +END-SEARCH +``` + +- HOLIDAY-FILE該当 → OVT-TYPE='H' +- 該当なし → OVT-TYPE='W' + +**MOVE** で OVT-TYPE を設定。 + +全通過レコードは OVT-TYPE を付加して OVT-CHECKED に書出し。 + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| SEARCH ALL | 休日マスタテーブル二分探索 | +| SET | テーブル添字操作 | + +--- + +### STEP015: ZAN04MAT(取消マッチング処理) — マッチング1:1 + +| 項目 | 内容 | +|------|------| +| **プログラム名称** | 取消マッチング処理 | +| **PGMパターン** | マッチング(1:1) | +| **SORT前処理** | OVT-CHECKED → 申請番号昇順 | +| | OVT-CANCEL → 申請番号昇順 | +| **入力ファイル** | OVT-SORTED(80B)/ OVT-CSORT(80B) | +| **出力ファイル** | OVT-MATCHED(80B)/ OVT-DBCLEAN(80B)/ ERROR-LOG(VB) | +| **件数変化** | 有効P件 + 取消R件 → 通過Q件 + 消滅S件 + DB削除T件(P=Q+S, R=S+T) | +| **使用共通関数** | SUB01DAT(運用日付), SUB02MSG(メッセージ), SUB03END(ABEND) | + +**機能:** + +キー=**申請番号(APPL-ID)** で OVT-SORTED(有効申請)と OVT-CSORT(取消)をマッチング1:1。 + +マッチング制御の分岐: + +| 条件 | 結果 | 処理 | +|------|------|------| +| SORTED.APPL-ID < CSORT.APPL-ID | 申請のみ(取消なし) | OVT-MATCHEDへ | +| SORTED.APPL-ID = CSORT.APPL-ID | 両方あり(取消済) | 消滅(出力なし)。ただし監査のため取消情報をERROR-LOGに記録(エラー区分=03、取消申請番号+原本データ) | +| SORTED.APPL-ID > CSORT.APPL-ID | 取消のみ(既DB登録済) | OVT-DBCLEANへ | + +同一申請番号グループ内の出力順に **処理番号(OA-PROC-SEQ)** を1から付与する。 + +**STRING** で申請情報を編集して OVT-MATCHED に書出す。 + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| STRING | 申請情報編集出力 | + +--- + +### STEP020: ZAN05CAL(残業時間集計処理) — キーブレイク集計 + +| 項目 | 内容 | +|------|------| +| **プログラム名称** | 残業時間集計処理 | +| **PGMパターン** | キーブレイク(集計) | +| **SORT前処理** | OVT-MATCHED → 申請番号+処理番号昇順 | +| **入力ファイル** | OVT-SORTED2(80B) | +| **出力ファイル** | OVT-SUMMARY(80B) | +| **件数変化** | Q件 → 申請番号ユニーク数(L件、L≦Q) | +| **使用共通関数** | SUB01DAT(運用日付), SUB02MSG(メッセージ), SUB03END(ABEND), SUB05TIM(時刻丸め) | + +**機能:** + +#### Step1:キーブレイク制御 + +同一申請番号内に複数レコード(例:申請(0) + 承認済(1))がある場合、グループ内の**最終レコード**を集約結果として採用する。 + +``` +入力(申請番号+処理番号昇順): +A001,EMP01,6/10,1800,2000,0 ← 申請(処理番号1) +A001,EMP01,6/10,1800,2000,1 ← 承認済(処理番号2 → 最新) + +集約結果: 承認済(1) を採用、申請(0) は捨てる +``` + +- READ → 申請番号が変わるまで読み進める +- ブレイク(申請番号切替)時に、**直前に保持していたレコード**を出力 +- グループ内の途中レコードは **CONTINUE** で読み飛ばす +- **SET** で集約結果の有無フラグを設定 + +#### Step2:加班時間計算 + +終了時刻 - 開始時刻 を分数で計算 → **DIVIDE** で時間に変換。 + +``` +DIVIDE 分 BY 60 GIVING 時間 REMAINDER 剰余 +``` + +**SUB05TIM(mode 2:0.1h単位切捨)** を呼び出して丸め処理。加班の丸めは0.1h単位切捨が正となる。 + +**COMPUTE ROUNDED ON SIZE ERROR** で内部計算のエラー処理。 + +``` +COMPUTE WRK-OVT-HOURS ROUNDED = WRK-MINUTES / 60 + ON SIZE ERROR + CONTINUE + MOVE ZERO TO WRK-OVT-HOURS +END-COMPUTE +``` + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| COMPUTE ROUNDED ON SIZE ERROR | 丸め計算+エラー処理 | +| DIVIDE | 分→時間変換 | +| CONTINUE | キーブレイク制御の空分岐 | +| SET | 集計結果フラグ設定 | +| ACCEPT FROM DATE | 処理日付取得 | + +--- + +### STEP025: ZAN06UPD(残業統計DB更新処理) — DB更新 + +| 項目 | 内容 | +|------|------| +| **プログラム名称** | 残業統計DB更新処理 | +| **PGMパターン** | DB更新 | +| **SORT前処理** | 不要 | +| **入力ファイル** | OVT-SUMMARY(80B)/ OVT-DBCLEAN(80B) | +| **出力ファイル** | OVERTIME-DB(DB2)/ ERROR-LOG(VB) | +| **使用共通関数** | SUB01DAT(運用日付), SUB02MSG(メッセージ), SUB03END(ABEND) | + +**機能:** + +全DB操作は埋め込みSQL(`EXEC SQL`)で直接記述する。 + +#### 処理1:OVT-SUMMARY → DB登録 + +**EXEC SQL** でDB2にINSERT/UPDATEを発行する。 + +``` + EXEC SQL + INSERT INTO OVT-APPLICATIONS + (APPL-ID, EMP-ID, APPL-DATE, OVT-TYPE, + START-TIME, END-TIME, OVT-HOURS, STATUS) + VALUES + (:WRK-APPL-ID, :WRK-EMP-ID, :WRK-APPL-DATE, + :WRK-OVT-TYPE, :WRK-START-TIME, :WRK-END-TIME, + :WRK-OVT-HOURS, :WRK-STATUS) + END-EXEC. + + IF SQLCODE NOT = 0 + * 同一APPL-ID存在 → UPDATEに変更 + EXEC SQL + UPDATE OVT-APPLICATIONS SET + STATUS = :WRK-STATUS, + UPDATED-AT = CURRENT TIMESTAMP + WHERE APPL-ID = :WRK-APPL-ID + END-EXEC + END-IF. +``` + +OVT-MONTHLY のUPSERTも同様。 + +``` + EXEC SQL + SELECT OVT-HOURS, OVT-COUNT + INTO :DB-OVT-HOURS, :DB-OVT-COUNT + FROM OVT-MONTHLY + WHERE EMP-ID = :WRK-EMP-ID + AND YEAR-MONTH = :WRK-YEAR-MONTH + AND OVT-TYPE = :WRK-OVT-TYPE + END-EXEC. + + IF SQLCODE = 0 + * UPDATE(加算) + EXEC SQL + UPDATE OVT-MONTHLY SET + OVT-HOURS = OVT-HOURS + :WRK-OVT-HOURS, + OVT-COUNT = OVT-COUNT + 1, + UPDATED-AT = CURRENT TIMESTAMP + WHERE EMP-ID = :WRK-EMP-ID + AND YEAR-MONTH = :WRK-YEAR-MONTH + AND OVT-TYPE = :WRK-OVT-TYPE + END-EXEC + ELSE + * INSERT(新規) + EXEC SQL + INSERT INTO OVT-MONTHLY + (EMP-ID, YEAR-MONTH, OVT-TYPE, + OVT-HOURS, OVT-COUNT, UPDATED-AT) + VALUES + (:WRK-EMP-ID, :WRK-YEAR-MONTH, :WRK-OVT-TYPE, + :WRK-OVT-HOURS, 1, CURRENT TIMESTAMP) + END-EXEC + END-IF. +``` + +#### 処理2:OVT-DBCLEAN → DB取消 + +``` + EXEC SQL + UPDATE OVT-APPLICATIONS SET + STATUS = '9', + UPDATED-AT = CURRENT TIMESTAMP + WHERE APPL-ID = :WRK-APPL-ID + END-EXEC. + + IF SQLCODE NOT = 0 + 該当なし → ERROR-LOG に書出し + PERFORM 9999ABDSOR + END-IF. +``` + +OVT-MONTHLY の減算UPDATE: + +``` + EXEC SQL + UPDATE OVT-MONTHLY SET + OVT-HOURS = OVT-HOURS - :WRK-OVT-HOURS, + OVT-COUNT = OVT-COUNT - 1, + UPDATED-AT = CURRENT TIMESTAMP + WHERE EMP-ID = :WRK-EMP-ID + AND YEAR-MONTH = :WRK-YEAR-MONTH + AND OVT-TYPE = :WRK-OVT-TYPE + END-EXEC. + + IF SQLCODE NOT = 0 + * OVT-MONTHLYレコード不存在 → データ不整合の可能性 + 該当エラー → ERROR-LOG に書出し + PERFORM 9999ABDSOR + END-IF. +``` + +**注意**: OVT-MONTHLY減算UPDATEの失敗時は、OVT-MONTHLYに対応レコードが存在しないことを意味する。 +ファイルとDBの不整合としてエラーログに記録した上でABENDさせる。 + +**SQLCODE** でDB操作の成否を確認し、異常時は ERROR-LOG に出力。 + +**新規カバレッジ構文:** + +| 構文 | 用途 | +|------|------| +| EXEC SQL | DB2埋め込みSQLによるDB操作 | +| IF | SQLCODE判定による分岐 | +| PERFORM VARYING | 月バリデーションループ(1〜12月) | +| PERFORM TEST AFTER | OVT-MONTHLY減算リトライ制御 | +| MULTIPLY | 時間→分変換(MULTIPLY BY 60 GIVING) | +| SUBTRACT | 残容量検証(SUBTRACT FROM GIVING) | + +--- + +## レコード構成 + +### OVT-VALID / OVT-CANCEL / OVT-NODUP / OVT-CHECKED(80B) + +| # | 項目 | 名称 | 開始 | 長さ | 属性 | 備考 | +|---|------|------|------|------|------|------| +| 1 | 申請番号 | OA-APPL-ID | 1 | 8 | X(8) | | +| 2 | 社員番号 | OA-EMP-ID | 9 | 8 | 9(8) | | +| 3 | 申請日 | OA-APPL-DATE | 17 | 8 | 9(8) | YYYYMMDD | +| 4 | 開始時刻 | OA-START-TIME | 25 | 4 | 9(4) | HHMM | +| 5 | 終了時刻 | OA-END-TIME | 29 | 4 | 9(4) | HHMM | +| 6 | ステータス | OA-STATUS | 33 | 1 | X(1) | 0/1/9 | +| 7 | OVT-TYPE | OA-OVT-TYPE | 34 | 1 | X(1) | W/H(OVT-CHECKED以降のみ有効) | +| 8 | 予備 | OA-FILLER | 35 | 46 | X(46) | | + +### OVT-MATCHED(80B) + +| # | 項目 | 名称 | 開始 | 長さ | 属性 | 備考 | +|---|------|------|------|------|------|------| +| 1 | 申請番号 | OA-APPL-ID | 1 | 8 | X(8) | | +| 2 | 社員番号 | OA-EMP-ID | 9 | 8 | 9(8) | | +| 3 | 申請日 | OA-APPL-DATE | 17 | 8 | 9(8) | YYYYMMDD | +| 4 | 開始時刻 | OA-START-TIME | 25 | 4 | 9(4) | HHMM | +| 5 | 終了時刻 | OA-END-TIME | 29 | 4 | 9(4) | HHMM | +| 6 | ステータス | OA-STATUS | 33 | 1 | X(1) | 0/1 | +| 7 | OVT-TYPE | OA-OVT-TYPE | 34 | 1 | X(1) | W/H | +| 8 | 処理番号 | OA-PROC-SEQ | 35 | 2 | 9(2) | 同申請内連番 | +| 9 | 予備 | OA-FILLER | 37 | 44 | X(44) | | + +社員名・部署コードは DB2(OVT-APPLICATIONSテーブル)側で保持する。 + +### OVT-SUMMARY(80B) + +| # | 項目 | 名称 | 開始 | 長さ | 属性 | 備考 | +|---|------|------|------|------|------|------| +| 1 | 申請番号 | OS-APPL-ID | 1 | 8 | X(8) | | +| 2 | 社員番号 | OS-EMP-ID | 9 | 8 | 9(8) | | +| 3 | 申請日 | OS-APPL-DATE | 17 | 8 | 9(8) | YYYYMMDD | +| 4 | 開始時刻 | OS-START-TIME | 25 | 4 | 9(4) | HHMM | +| 5 | 終了時刻 | OS-END-TIME | 29 | 4 | 9(4) | HHMM | +| 6 | 加班時間 | OS-OVT-HOURS | 33 | 5 | 9(4)V9(1) | SUB05TIM丸め後 | +| 7 | OVT-TYPE | OS-OVT-TYPE | 38 | 1 | X(1) | W/H | +| 8 | 予備 | OS-FILLER | 39 | 42 | X(42) | | + +### OVT-DBCLEAN(80B) + +| # | 項目 | 名称 | 開始 | 長さ | 属性 | +|---|------|------|------|------|------| +| 1 | 申請番号 | OD-APPL-ID | 1 | 8 | X(8) | +| 2 | 予備 | OD-FILLER | 9 | 72 | X(72) | + +--- + +## 新規COBOL構文カバレッジ一覧(14種) + +| # | 構文 | ZAN01CHK | ZAN02CHK | ZAN03CHK | ZAN04MAT | ZAN05CAL | ZAN06UPD | +|---|------|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:| +| 1 | UNSTRING | ● | | | | | | +| 2 | STRING | ● | | | ● | | | +| 3 | SEARCH ALL | | | ● | | | | +| 4 | SET | | ● | ● | | ● | | +| 5 | COMPUTE ROUNDED ON SIZE ERROR | | | | | ● | | +| 6 | DIVIDE | ● | | | | ● | | +| 7 | CONTINUE | | ● | | | ● | | +| 8 | ACCEPT FROM DATE | | | | | ● | | +| 9 | EXEC SQL(INSERT/UPDATE/SELECT/COMMIT/ROLLBACK) | | | | | | ● | +|10 | IF(SQLCODE分岐) | | | | | | ● | +|11 | PERFORM VARYING | | | | | | ● | +|12 | PERFORM TEST AFTER | | | | | | ● | +|13 | MULTIPLY | | | | | | ● | +|14 | SUBTRACT | | | | | | ● | + +--- + +## 丸めルール + +| 条件 | ルール | +|------|--------| +| 加班開始時刻 < DINNER-START(1830) | エラー(申請不可、食事時間のため) | +| 加班時間 < 30分 | エラー(申請不可) | +| 加班時間 ≧ 30分 かつ < 0.5h換算 | 0.5hに切上 | +| 加班時間 ≧ 0.5h | 0.1h単位切捨(SUB05TIM mode 2) | + +例:0.5h→0.5, 0.7h→0.7, 1.55h→1.5(切捨のため1.5、切上なら1.6) diff --git a/production/src/KIN01INP.cbl b/production/src/KIN01INP.cbl new file mode 100644 index 0000000..f59308e --- /dev/null +++ b/production/src/KIN01INP.cbl @@ -0,0 +1,594 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. KIN01INP. + ***************************************************************** + * システム名 : 勤怠休暇管理システム * + * プログラムID : KIN01INP * + * プログラム名 : 休暇申請CSV取込・検証処理 * + * 作成日 : 2026-06-17 * + * 処理概要 : CSV形式の休暇申請ファイルを読み込み、 * + * 休暇種別テーブル検索と項目チェックを行い、 * + * ステータスによってWORK-LEAVEまたは * + * ERROR-LOGへ振り分ける。 * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-17 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO KIN01R01. + SELECT W01OUTFIL ASSIGN TO KIN01W01. + SELECT W02OUTFIL ASSIGN TO KIN01W02. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * ##R01## * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + 03 R01LINE PIC X(80). + * + ***************************************************************** + * ##W01## * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W01OUTREC. + COPY KIN01REC REPLACING ==(A)== BY ==W01==. + * + ***************************************************************** + * ##W02## * + ***************************************************************** + FD W02OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS V. + 01 W02OUTREC. + COPY KIN05REC REPLACING ==(A)== BY ==W02==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'KIN01INP'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + 03 CNS-MSGSUBEEK PIC 9(003) VALUE 005. + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + 03 CNS-ABD999 PIC 9(003) VALUE 999. + 03 CNS-STAT-1 PIC X(001) VALUE '1'. + 03 CNS-STAT-9 PIC X(001) VALUE '9'. + 03 CNS-LEAVE-01 PIC X(002) VALUE '01'. + 03 CNS-LEAVE-02 PIC X(002) VALUE '02'. + 03 CNS-LEAVE-03 PIC X(002) VALUE '03'. + 03 CNS-LEAVE-04 PIC X(002) VALUE '04'. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W02OUT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** 運用日付 + 03 WRK-U06 PIC 9(008). + *** 読込フラグ + 03 WRK-R01EOF PIC X(001). + *** CSV分解用 + 03 WRK-COMMA-CNT PIC 9(002) COMP. + 03 WRK-COMMA-DISP PIC 9(002). + 03 WRK-LT-FOUND PIC X(001). + 03 WRK-ERR-TYPE PIC X(001). + 03 WRK-CSV-APPL-ID PIC X(009). + 03 WRK-CSV-EMP-ID PIC X(008). + 03 WRK-CSV-START-DATE PIC X(008). + 03 WRK-CSV-START-TIME PIC X(004). + 03 WRK-CSV-END-DATE PIC X(008). + 03 WRK-CSV-END-TIME PIC X(004). + 03 WRK-CSV-LEAVE-TYPE PIC X(002). + 03 WRK-CSV-STATUS PIC X(001). + *** ステータス再定義(数値+88条件) + 03 WRK-STATUS-NUM REDEFINES WRK-CSV-STATUS + PIC 9(001). + 88 WRK-STATUS-ACTIVE VALUE 1. + 88 WRK-STATUS-CANCEL VALUE 9. + *** 休暇種別内部テーブル(4件) + 03 WRK-LEAVE-TYPE-TABLE. + 05 WRK-LT-ENTRY OCCURS 4 TIMES + INDEXED BY WRK-LT-IDX. + 07 WRK-LT-CODE PIC X(002). + *** REDEFINESデモ(同一領域 複数型 来回代入) + 03 WRK-DEMO-AREA PIC 9(008). + 03 WRK-DEMO-ALPHA REDEFINES WRK-DEMO-AREA + PIC X(008). + 03 WRK-DEMO-GRP REDEFINES WRK-DEMO-AREA. + 05 WRK-DEMO-TYPE PIC 9(004). + 05 WRK-DEMO-VALUE PIC 9(004). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** 運用日付取得 + COPY ZANDATAC. + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + *** ABEND処理SR用 + COPY ZANENDAC. + *** 項目チェックSR用 + COPY ZANCHKAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理 + PERFORM 2000MAJSOR + UNTIL WRK-R01EOF = '1'. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + * + *** 休暇種別テーブル設定 + MOVE '01' TO WRK-LT-CODE(1). + MOVE '02' TO WRK-LT-CODE(2). + MOVE '03' TO WRK-LT-CODE(3). + MOVE '04' TO WRK-LT-CODE(4). + * + *** 運用日付取得 + INITIALIZE D01UBSPAR. + CALL 'SUB01DAT' USING D01UBSPAR. + IF D01FKICOD = ZERO + MOVE D01UBSUDATE TO WRK-U06 + ELSE + INITIALIZE M00MHOPAR + MOVE CNS-MSGSUBEEK TO M00MSGCOD + MOVE 'SUB01DAT' TO M00UMKDATS22-01 + MOVE D01FKICOD TO M00UMKDATS22-02 + PERFORM 4000MSGOUTSOR + PERFORM 9999ABDSOR + END-IF. + * + *** 入出力ファイルOPEN + OPEN INPUT R01INNFIL + OUTPUT W01OUTFIL + W02OUTFIL. + * + *** #R01#を読み込み + PERFORM 1100R01INNSOR. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.1) * + * サブモジュール名:##R01##読込処理 * + * 処理概要 : レコード読込・EOF判定処理 * + ***************************************************************** + 1100R01INNSOR SECTION. + * + READ R01INNFIL + AT END + MOVE '1' TO WRK-R01EOF + NOT AT END + ADD 1 TO CUN-R01INN + END-READ. + * + 1100R01INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.0) * + * サブモジュール名: 主処理 * + * 処理概要 : CSV分解・休暇種別検索・ステータス振分 * + ***************************************************************** + 2000MAJSOR SECTION. + * + *** CSV分解 + PERFORM 2010CSVSOR. + * + *** 休暇種別テーブル検索 + PERFORM 2020LEAVSERSOR. + * + *** エラー判定(フィールド数/休暇種別) + IF WRK-COMMA-CNT NOT = 8 + MOVE 'F' TO WRK-ERR-TYPE + PERFORM 2050ERRORSOR + ELSE IF WRK-LT-FOUND NOT = '1' + MOVE 'L' TO WRK-ERR-TYPE + PERFORM 2050ERRORSOR + ELSE + *** ステータス判定(IF/ELSE連鎖) + IF WRK-STATUS-ACTIVE + PERFORM 2030VALIDATESOR + ELSE IF WRK-STATUS-CANCEL + PERFORM 2040CANCELSOR + ELSE + MOVE 'S' TO WRK-ERR-TYPE + PERFORM 2050ERRORSOR + END-IF + END-IF. + * + *** 次のレコード読込 + PERFORM 1100R01INNSOR. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1) * + * サブモジュール名: CSV分解処理 * + * 処理概要 : UNSTRINGでCSVを8項目に分解する * + ***************************************************************** + 2010CSVSOR SECTION. + * + MOVE ZERO TO WRK-COMMA-CNT. + INITIALIZE WRK-CSV-APPL-ID + WRK-CSV-EMP-ID + WRK-CSV-START-DATE + WRK-CSV-START-TIME + WRK-CSV-END-DATE + WRK-CSV-END-TIME + WRK-CSV-LEAVE-TYPE + WRK-CSV-STATUS. + UNSTRING R01INNREC + DELIMITED BY ',' + INTO WRK-CSV-APPL-ID + WRK-CSV-EMP-ID + WRK-CSV-START-DATE + WRK-CSV-START-TIME + WRK-CSV-END-DATE + WRK-CSV-END-TIME + WRK-CSV-LEAVE-TYPE + WRK-CSV-STATUS + TALLYING IN WRK-COMMA-CNT + END-UNSTRING. + * + 2010CSVSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.2) * + * サブモジュール名: 休暇種別テーブル検索処理 * + * 処理概要 : SEARCH(非ALL)で休暇種別の妥当性を検証 * + ***************************************************************** + 2020LEAVSERSOR SECTION. + * + MOVE '0' TO WRK-LT-FOUND. + SET WRK-LT-IDX TO 1. + SEARCH WRK-LT-ENTRY + VARYING WRK-LT-IDX + AT END + CONTINUE + WHEN WRK-LT-CODE(WRK-LT-IDX) + = WRK-CSV-LEAVE-TYPE + MOVE '1' TO WRK-LT-FOUND + END-SEARCH. + * + 2020LEAVSERSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.3) * + * サブモジュール名: 有効申請処理 * + * 処理概要 : SUB04CHKで日付/時刻チェックしW01出力 * + ***************************************************************** + 2030VALIDATESOR SECTION. + * + *** W01レコード初期化 + INITIALIZE W01OUTREC. + * + *** SUB04CHKで社員番号チェック + INITIALIZE C01CHKPAR. + MOVE WRK-CSV-EMP-ID TO C01CHKDAT. + MOVE 'EMPID' TO C01CHKTYP. + CALL 'SUB04CHK' USING C01CHKPAR. + IF C01CHKRRC NOT = ZERO + MOVE '01' TO W02ERR-CATEGORY + STRING 'EMP-ID ERROR EMP=' + WRK-CSV-EMP-ID + DELIMITED BY SIZE + INTO W02ERR-DETAIL + WRITE W02OUTREC + ADD 1 TO CUN-W02OUT + GO TO 2030VALIDATESOR-EXT + END-IF. + * + *** SUB04CHKで開始日付チェック + INITIALIZE C01CHKPAR. + MOVE WRK-CSV-START-DATE TO C01CHKDAT. + MOVE 'DATE' TO C01CHKTYP. + CALL 'SUB04CHK' USING C01CHKPAR. + IF C01CHKRRC NOT = ZERO + MOVE '01' TO W02ERR-CATEGORY + STRING 'START-DATE ERROR EMP=' + WRK-CSV-EMP-ID + ' DATE=' + WRK-CSV-START-DATE + DELIMITED BY SIZE + INTO W02ERR-DETAIL + WRITE W02OUTREC + ADD 1 TO CUN-W02OUT + GO TO 2030VALIDATESOR-EXT + END-IF. + * + *** SUB04CHKで開始時刻チェック + INITIALIZE C01CHKPAR. + MOVE WRK-CSV-START-TIME TO C01CHKDAT. + MOVE 'TIME' TO C01CHKTYP. + CALL 'SUB04CHK' USING C01CHKPAR. + IF C01CHKRRC NOT = ZERO + MOVE '01' TO W02ERR-CATEGORY + STRING 'START-TIME ERROR EMP=' + WRK-CSV-EMP-ID + ' TIME=' + WRK-CSV-START-TIME + DELIMITED BY SIZE + INTO W02ERR-DETAIL + WRITE W02OUTREC + ADD 1 TO CUN-W02OUT + GO TO 2030VALIDATESOR-EXT + END-IF. + * + *** SUB04CHKで終了日付チェック + INITIALIZE C01CHKPAR. + MOVE WRK-CSV-END-DATE TO C01CHKDAT. + MOVE 'DATE' TO C01CHKTYP. + CALL 'SUB04CHK' USING C01CHKPAR. + IF C01CHKRRC NOT = ZERO + MOVE '01' TO W02ERR-CATEGORY + STRING 'END-DATE ERROR EMP=' + WRK-CSV-EMP-ID + ' DATE=' + WRK-CSV-END-DATE + DELIMITED BY SIZE + INTO W02ERR-DETAIL + WRITE W02OUTREC + ADD 1 TO CUN-W02OUT + GO TO 2030VALIDATESOR-EXT + END-IF. + * + *** SUB04CHKで終了時刻チェック + INITIALIZE C01CHKPAR. + MOVE WRK-CSV-END-TIME TO C01CHKDAT. + MOVE 'TIME' TO C01CHKTYP. + CALL 'SUB04CHK' USING C01CHKPAR. + IF C01CHKRRC NOT = ZERO + MOVE '01' TO W02ERR-CATEGORY + STRING 'END-TIME ERROR EMP=' + WRK-CSV-EMP-ID + ' TIME=' + WRK-CSV-END-TIME + DELIMITED BY SIZE + INTO W02ERR-DETAIL + WRITE W02OUTREC + ADD 1 TO CUN-W02OUT + GO TO 2030VALIDATESOR-EXT + END-IF. + * + *** 複合条件デモ(AND+OR+3段ネスト) + IF W01START-DATE NOT = ZERO + AND W01END-DATE NOT = ZERO + AND W01START-TIME NOT = ZERO + IF W01START-DATE > W01END-DATE + OR (W01START-DATE = W01END-DATE + AND W01START-TIME >= W01END-TIME) + MOVE 10 TO WRK-DEMO-TYPE + ELSE + MOVE 20 TO WRK-DEMO-TYPE + END-IF + END-IF. + * + *** W01出力(新規/変更: APPL-ID=CSV値, STATUS='1') + MOVE WRK-CSV-APPL-ID TO W01APPL-ID. + MOVE WRK-CSV-EMP-ID TO W01EMP-ID. + MOVE WRK-CSV-LEAVE-TYPE TO W01LEAVE-TYPE. + MOVE WRK-CSV-START-DATE TO W01START-DATE. + MOVE WRK-CSV-START-TIME TO W01START-TIME. + MOVE WRK-CSV-END-DATE TO W01END-DATE. + MOVE WRK-CSV-END-TIME TO W01END-TIME. + MOVE WRK-CSV-STATUS TO W01STATUS. + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + 2030VALIDATESOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.4) * + * サブモジュール名: 取消申請処理 * + * 処理概要 : 取消レコードをW01出力(検証は行わない) * + ***************************************************************** + 2040CANCELSOR SECTION. + * + *** W01レコード初期化 + INITIALIZE W01OUTREC. + * + *** W01出力(取消: APPL-ID=CSV値, STATUS='9') + MOVE WRK-CSV-APPL-ID TO W01APPL-ID. + MOVE WRK-CSV-EMP-ID TO W01EMP-ID. + MOVE WRK-CSV-LEAVE-TYPE TO W01LEAVE-TYPE. + MOVE WRK-CSV-START-DATE TO W01START-DATE. + MOVE WRK-CSV-START-TIME TO W01START-TIME. + MOVE WRK-CSV-END-DATE TO W01END-DATE. + MOVE WRK-CSV-END-TIME TO W01END-TIME. + MOVE WRK-CSV-STATUS TO W01STATUS. + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + 2040CANCELSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.5) * + * サブモジュール名: エラー処理 * + * 処理概要 : エラーレコードをW02出力 * + ***************************************************************** + 2050ERRORSOR SECTION. + * + *** W02レコード初期化 + INITIALIZE W02OUTREC. + MOVE '01' TO W02ERR-CATEGORY. + * + *** エラー種別判定 + EVALUATE WRK-ERR-TYPE + WHEN 'F' + MOVE 1 TO WRK-DEMO-TYPE + MOVE WRK-COMMA-CNT TO WRK-DEMO-VALUE + STRING 'FIELD COUNT ERROR CNT=' + WRK-DEMO-ALPHA + DELIMITED BY SIZE + INTO W02ERR-DETAIL + WHEN 'L' + MOVE 2 TO WRK-DEMO-TYPE + MOVE 0 TO WRK-DEMO-VALUE + STRING 'INVALID LEAVE TYPE=' + WRK-CSV-LEAVE-TYPE + ' EMP=' + WRK-CSV-EMP-ID + ' ERR=' + WRK-DEMO-ALPHA + DELIMITED BY SIZE + INTO W02ERR-DETAIL + WHEN 'S' + MOVE 3 TO WRK-DEMO-TYPE + MOVE 0 TO WRK-DEMO-VALUE + STRING 'INVALID STATUS=' + WRK-CSV-STATUS + ' EMP=' + WRK-CSV-EMP-ID + ' ERR=' + WRK-DEMO-ALPHA + DELIMITED BY SIZE + INTO W02ERR-DETAIL + WHEN OTHER + MOVE 9 TO WRK-DEMO-TYPE + MOVE 0 TO WRK-DEMO-VALUE + STRING 'UNKNOWN ERROR EMP=' + WRK-CSV-EMP-ID + ' ERR=' + WRK-DEMO-ALPHA + DELIMITED BY SIZE + INTO W02ERR-DETAIL + END-EVALUATE. + * + WRITE W02OUTREC. + ADD 1 TO CUN-W02OUT. + * + 2050ERRORSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(3.0) * + * サブモジュール名: 終了処理 * + * 処理概要 : ファイルクローズ・件数と終了メッセージ出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** 入出力ファイルCLOSE + CLOSE R01INNFIL + W01OUTFIL + W02OUTFIL. + * + *** 入出力ファイル件数出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'KIN01R01' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'KIN01W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'KIN01W02' TO M00UMKDATS22-01. + MOVE CUN-W02OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(4.0) * + * サブモジュール名: メッセージ編集出力処理 * + * 処理概要 : メッセージ編集出力サブPGM呼出 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.9) * + * サブモジュール名: ABEND処理 * + * 処理概要 : ABENDサブPGM呼出 * + ***************************************************************** + 9999ABDSOR SECTION. + * + MOVE CNS-ABD999 TO E01ABDCOD. + CALL 'SUB03END' USING E01ABDPAR. + * + 9999ABDSOR-EXT. + EXIT. diff --git a/production/src/KIN02UPD.cbl b/production/src/KIN02UPD.cbl new file mode 100644 index 0000000..7feb5ee --- /dev/null +++ b/production/src/KIN02UPD.cbl @@ -0,0 +1,439 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. KIN02UPD. + ***************************************************************** + * システム名 : 勤怠休暇管理システム * + * プログラムID : KIN02UPD * + * プログラム名 : 休暇申請DB更新処理 * + * 作成日 : 2026-06-17 * + * 処理概要 : WORK-LEAVEの各レコードをDB2テーブル * + * LEAVE_RECORDSに反映する。 * + * ステータスに応じて新規登録(INSERT)、 * + * 変更(DELETE+INSERT)、取消(DELETE)を行う。 * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-17 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO KIN01W01. + SELECT W01OUTFIL ASSIGN TO KIN02W01. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * R01 (WORK-LEAVE) 80B FB * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + COPY KIN01REC REPLACING ==(A)== BY ==R01==. + * + * + ***************************************************************** + * W01 (ERROR-LOG) 200B VB * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS V. + 01 W01OUTREC. + COPY KIN05REC REPLACING ==(A)== BY ==W01==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * SQLCA * + ***************************************************************** + EXEC SQL INCLUDE SQLCA END-EXEC. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'KIN02UPD'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + 03 CNS-MSGSUBEEK PIC 9(003) VALUE 005. + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-ABD999 PIC 9(003) VALUE 999. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-DBXINS PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-DBXDEL PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-DBXUPD PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** EOF判定 + 03 WRK-R01EOF PIC X(001). + 88 WRK-R01-EOF VALUE '1'. + *** SQL用ホスト変数 + 03 WS-APPL-ID PIC 9(009). + 03 WS-EMP-ID PIC X(008). + 03 WS-LEAVE-TYPE PIC X(002). + 03 WS-START-DATE PIC X(008). + 03 WS-START-TIME PIC X(004). + 03 WS-END-DATE PIC X(008). + 03 WS-END-TIME PIC X(004). + 03 WS-STATUS PIC X(001). + *** SQLCODE表示用 + 03 WRK-SQLCODE-DISP PIC +9(009). + *** エラーログ編集領域 + 03 WRK-ERR-CATEGORY PIC 9(002). + 03 WRK-ERR-DETAIL PIC X(198). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + *** ABEND処理SR用 + COPY ZANENDAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理 + PERFORM 2000MAJSOR + UNTIL WRK-R01-EOF. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + * + *** DB接続 + EXEC SQL CONNECT TO 'data/kin.db' END-EXEC. + * + *** R01ファイルOPEN + OPEN INPUT R01INNFIL. + *** W01ファイルOPEN + OPEN OUTPUT W01OUTFIL. + * + *** R01を初回読込 + PERFORM 1100R01INNSOR. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.1) * + * サブモジュール名:R01読込処理 * + * 処理概要 : WORK-LEAVE読込 * + ***************************************************************** + 1100R01INNSOR SECTION. + * + READ R01INNFIL + AT END + MOVE '1' TO WRK-R01EOF + NOT AT END + ADD 1 TO CUN-R01INN + END-READ. + * + 1100R01INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.0) * + * サブモジュール名:主処理 * + * 処理概要 : R01(WORK-LEAVE)→DB更新処理 * + ***************************************************************** + 2000MAJSOR SECTION. + * + *** レコード処理 + PERFORM 2100PROCSOR. + * + *** 次レコード読込 + PERFORM 1100R01INNSOR. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1) * + * サブモジュール名:レコード判定処理 * + * 処理概要 : ステータス判定→各DB更新処理分岐 * + ***************************************************************** + 2100PROCSOR SECTION. + * + MOVE R01APPL-ID TO WS-APPL-ID. + MOVE R01EMP-ID TO WS-EMP-ID. + MOVE R01LEAVE-TYPE TO WS-LEAVE-TYPE. + MOVE R01START-DATE TO WS-START-DATE. + MOVE R01START-TIME TO WS-START-TIME. + MOVE R01END-DATE TO WS-END-DATE. + MOVE R01END-TIME TO WS-END-TIME. + MOVE R01STATUS TO WS-STATUS. + * + EVALUATE TRUE + WHEN WS-STATUS = '1' + AND WS-APPL-ID = 0 + PERFORM 2110INSERTSOR + WHEN WS-STATUS = '1' + AND WS-APPL-ID > 0 + PERFORM 2120UPDATESOR + WHEN WS-STATUS = '9' + PERFORM 2130DELETESOR + WHEN OTHER + CONTINUE + END-EVALUATE. + * + 2100PROCSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1.1) * + * サブモジュール名:INSERT処理(新規登録) * + * 処理概要 : LEAVE_RECORDSに新規レコード追加 * + ***************************************************************** + 2110INSERTSOR SECTION. + * + EXEC SQL + INSERT INTO LEAVE_RECORDS + (EMP_ID, LEAVE_TYPE, + START_DATE, START_TIME, + END_DATE, END_TIME, + STATUS) + VALUES + (:WS-EMP-ID, :WS-LEAVE-TYPE, + :WS-START-DATE, :WS-START-TIME, + :WS-END-DATE, :WS-END-TIME, + :WS-STATUS) + END-EXEC. + * + IF SQLCODE NOT = 0 + PERFORM 9100DBERRSOR + END-IF. + * + ADD 1 TO CUN-DBXINS. + * + 2110INSERTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1.2) * + * サブモジュール名:UPDATE処理(変更) * + * 処理概要 : DELETE(旧レコード)→INSERT(新レコード) * + ***************************************************************** + 2120UPDATESOR SECTION. + * + EXEC SQL + DELETE FROM LEAVE_RECORDS + WHERE APPLICATION_ID = :WS-APPL-ID + END-EXEC. + * + IF SQLCODE NOT = 0 + PERFORM 9100DBERRSOR + END-IF. + * + EXEC SQL + INSERT INTO LEAVE_RECORDS + (EMP_ID, LEAVE_TYPE, + START_DATE, START_TIME, + END_DATE, END_TIME, + STATUS) + VALUES + (:WS-EMP-ID, :WS-LEAVE-TYPE, + :WS-START-DATE, :WS-START-TIME, + :WS-END-DATE, :WS-END-TIME, + :WS-STATUS) + END-EXEC. + * + IF SQLCODE NOT = 0 + PERFORM 9100DBERRSOR + END-IF. + * + ADD 1 TO CUN-DBXUPD. + * + 2120UPDATESOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1.3) * + * サブモジュール名:DELETE処理(取消) * + * 処理概要 : APPL-ID一致レコードをDELETE * + ***************************************************************** + 2130DELETESOR SECTION. + * + EXEC SQL + DELETE FROM LEAVE_RECORDS + WHERE APPLICATION_ID = :WS-APPL-ID + END-EXEC. + * + IF SQLCODE NOT = 0 + PERFORM 9100DBERRSOR + END-IF. + * + ADD 1 TO CUN-DBXDEL. + * + 2130DELETESOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(3.0) * + * サブモジュール名:終了処理 * + * 処理概要 : COMMIT・ファイルクローズ・件数出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** COMMIT + EXEC SQL + COMMIT WORK + END-EXEC. + * + *** 入出力ファイルCLOSE + CLOSE R01INNFIL + W01OUTFIL. + * + *** 件数メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'KIN01W01' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'INS' TO M00UMKDATS22-01. + MOVE CUN-DBXINS TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'UPD' TO M00UMKDATS22-01. + MOVE CUN-DBXUPD TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'DEL' TO M00UMKDATS22-01. + MOVE CUN-DBXDEL TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'KIN02W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(4.0) * + * サブモジュール名:メッセージ編集出力処理 * + * 処理概要 : メッセージ編集出力サブPGM呼出 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.1) * + * サブモジュール名:DBエラー処理 * + * 処理概要 : SQLエラー→ROLLBACK+メッセージ出力+ABEND * + ***************************************************************** + 9100DBERRSOR SECTION. + * + *** ROLLBACK + EXEC SQL + ROLLBACK WORK + END-EXEC. + * + *** エラーログ出力 + INITIALIZE W01OUTREC. + MOVE '01' TO W01ERR-CATEGORY. + MOVE SQLCODE TO WRK-SQLCODE-DISP. + STRING 'KIN02UPD SQLCODE=' + WRK-SQLCODE-DISP DELIMITED BY SIZE + ' APPL-ID=' + WS-APPL-ID DELIMITED BY SIZE + INTO W01ERR-DETAIL + END-STRING. + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + *** エラーメッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSUBEEK TO M00MSGCOD. + MOVE 'KIN02UPD SQL ERROR' TO M00UMKDATS22-01. + MOVE WRK-SQLCODE-DISP TO M00UMKDATS22-02. + MOVE WS-APPL-ID TO M00UMKDATS22-03. + PERFORM 4000MSGOUTSOR. + * + PERFORM 9999ABDSOR. + * + 9100DBERRSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.9) * + * サブモジュール名:ABEND処理 * + * 処理概要 : ABENDサブPGM呼出 * + ***************************************************************** + 9999ABDSOR SECTION. + * + MOVE CNS-ABD999 TO E01ABDCOD. + CALL 'SUB03END' USING E01ABDPAR. + * + 9999ABDSOR-EXT. + EXIT. diff --git a/production/src/KIN03EXP.cbl b/production/src/KIN03EXP.cbl new file mode 100644 index 0000000..8c92299 --- /dev/null +++ b/production/src/KIN03EXP.cbl @@ -0,0 +1,511 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. KIN03EXP. + ***************************************************************** + * システム名 : 勤怠休暇管理システム * + * プログラムID : KIN03EXP * + * プログラム名 : 休暇日別展開処理 * + * 作成日 : 2026-06-17 * + * 処理概要 : LEAVE_RECORDS(DB2)より有効申請を読込み、 * + * 開始日〜終了日の期間を日別に展開し、 * + * 休日・週末を除外してLEAVE-DAILY-fileを出力 * + * する。社員番号キーブレイクで小計出力を行う。* + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-17 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT W01OUTFIL ASSIGN TO "KIN02W01.DAT". + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * W01 (LEAVE-DAILY) 80B FB * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W01OUTREC. + COPY KIN02REC REPLACING ==(A)== BY ==W01==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * SQLCA * + ***************************************************************** + EXEC SQL INCLUDE SQLCA END-EXEC. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'KIN03EXP'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + 03 CNS-MSGSUBEEK PIC 9(003) VALUE 005. + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + 03 CNS-ABD999 PIC 9(003) VALUE 999. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * DBホスト変数(DISPLAY形式:bridgeテキストI/F対応) * + ***************************************************************** + 01 SQL-HOST-VARS. + 03 SQL-APPL-ID PIC X(009). + 03 SQL-EMP-ID PIC X(008). + 03 SQL-LEAVE-TYPE PIC X(002). + 03 SQL-START-DATE PIC X(008). + 03 SQL-START-TIME PIC X(004). + 03 SQL-END-DATE PIC X(008). + 03 SQL-END-TIME PIC X(004). + 03 SQL-HD-DATE PIC X(008). + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** EOF判定 + 03 WRK-R01EOF PIC X(001). + 88 WRK-R01-EOF VALUE '1'. + *** キーブレイク用 + 03 WRK-BFR-EMP-ID PIC X(008). + *** 社員別小計カウンタ + 03 CUN-EMP-SUB PIC S9(009) COMP-3 + VALUE ZERO. + *** 日付展開用 + 03 WRK-DATE-CURRENT PIC 9(008). + 03 WRK-DATE-ALPHA REDEFINES WRK-DATE-CURRENT + PIC X(008). + 03 WRK-DATE-NUM REDEFINES WRK-DATE-CURRENT. + 05 WRK-DATE-YEAR PIC 9(004). + 05 WRK-DATE-MONTH PIC 9(002). + 05 WRK-DATE-DAY PIC 9(002). + 03 WRK-DATE-END PIC 9(008). + *** 曜日判定用 + 03 WRK-DAY-OF-WEEK PIC 9(001). + *** 休日テーブル件数(ODO前に定義) + 03 WRK-HD-COUNT PIC 9(004) COMP + VALUE ZERO. + *** 休日テーブル存在フラグ + 03 WRK-HD-FOUND PIC X(001). + *** 休日テーブル(ODOは末尾に配置) + 03 WRK-HOLIDAY-TABLE. + 05 WRK-HD-ENTRY OCCURS 1 TO 366 TIMES + DEPENDING ON WRK-HD-COUNT + ASCENDING KEY IS WRK-HD-DATE + INDEXED BY WRK-HD-IDX. + 07 WRK-HD-DATE PIC 9(008). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** 運用日付取得 + COPY ZANDATAC. + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + *** ABEND処理SR用 + COPY ZANENDAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理 + PERFORM 2000MAJSOR + UNTIL WRK-R01EOF = '1'. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + * + *** DB接続 + EXEC SQL CONNECT TO 'data/kin.db' END-EXEC. + * + *** 運用日付取得 + INITIALIZE D01UBSPAR. + CALL 'SUB01DAT' USING D01UBSPAR. + IF D01FKICOD = ZERO + MOVE D01UBSUDATE TO WRK-DATE-CURRENT + ELSE + INITIALIZE M00MHOPAR + MOVE CNS-MSGSUBEEK TO M00MSGCOD + MOVE 'SUB01DAT' TO M00UMKDATS22-01 + MOVE D01FKICOD TO M00UMKDATS22-02 + PERFORM 4000MSGOUTSOR + PERFORM 9999ABDSOR + END-IF. + * + *** 休日カレンダーテーブル読込 + PERFORM 1200HDINNSOR. + * + *** 出力ファイルOPEN + OPEN OUTPUT W01OUTFIL. + * + *** C1カーソル初回FETCH(SELECT INTO) + PERFORM 1100C1INITSOR. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.1) * + * サブモジュール名:C1初回FETCH処理 * + * 処理概要 : LEAVE_RECORDSをSELECT INTO(初回のみ) * + ***************************************************************** + 1100C1INITSOR SECTION. + * + MOVE SPACES TO SQL-APPL-ID. + EXEC SQL + SELECT APPLICATION_ID, EMP_ID, LEAVE_TYPE, + START_DATE, START_TIME, + END_DATE, END_TIME + FROM LEAVE_RECORDS + WHERE STATUS = '1' + ORDER BY EMP_ID, START_DATE + INTO :SQL-APPL-ID, :SQL-EMP-ID, :SQL-LEAVE-TYPE, + :SQL-START-DATE, :SQL-START-TIME, + :SQL-END-DATE, :SQL-END-TIME + END-EXEC. + * + IF SQLCODE = 0 + ADD 1 TO CUN-R01INN + ELSE + MOVE '1' TO WRK-R01EOF + END-IF. + * + 1100C1INITSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.2) * + * サブモジュール名:C1次回FETCH処理 * + * 処理概要 : br_fetch_nextで次行を読込(2回目以降) * + ***************************************************************** + 1100C1FETCHSOR SECTION. + * + CALL 'br_fetch_next' USING SQLCODE. + * + IF SQLCODE = 0 + MOVE SPACES TO SQL-APPL-ID + MOVE 0 TO WS-COL-IDX + MOVE 256 TO WS-COL-LEN + CALL 'br_get_col' USING + WS-COL-IDX, SQL-APPL-ID, WS-COL-LEN + MOVE 1 TO WS-COL-IDX + MOVE 256 TO WS-COL-LEN + CALL 'br_get_col' USING + WS-COL-IDX, SQL-EMP-ID, WS-COL-LEN + MOVE 2 TO WS-COL-IDX + MOVE 256 TO WS-COL-LEN + CALL 'br_get_col' USING + WS-COL-IDX, SQL-LEAVE-TYPE, WS-COL-LEN + MOVE 3 TO WS-COL-IDX + MOVE 256 TO WS-COL-LEN + CALL 'br_get_col' USING + WS-COL-IDX, SQL-START-DATE, WS-COL-LEN + MOVE 4 TO WS-COL-IDX + MOVE 256 TO WS-COL-LEN + CALL 'br_get_col' USING + WS-COL-IDX, SQL-START-TIME, WS-COL-LEN + MOVE 5 TO WS-COL-IDX + MOVE 256 TO WS-COL-LEN + CALL 'br_get_col' USING + WS-COL-IDX, SQL-END-DATE, WS-COL-LEN + MOVE 6 TO WS-COL-IDX + MOVE 256 TO WS-COL-LEN + CALL 'br_get_col' USING + WS-COL-IDX, SQL-END-TIME, WS-COL-LEN + ADD 1 TO CUN-R01INN + ELSE + MOVE '1' TO WRK-R01EOF + END-IF. + * + 1100C1FETCHSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.3) * + * サブモジュール名: 休日カレンダー読込処理 * + * 処理概要 : HOLIDAY_CALENDARをWORKING-STORAGEに格納 * + ***************************************************************** + 1200HDINNSOR SECTION. + * + *** C2初回FETCH(SELECT INTO) + EXEC SQL + SELECT HOLIDAY_DATE + FROM HOLIDAY_CALENDAR + ORDER BY HOLIDAY_DATE + INTO :SQL-HD-DATE + END-EXEC. + * + *** 休日テーブルに全件読込 + PERFORM UNTIL SQLCODE NOT = 0 + ADD 1 TO WRK-HD-COUNT + MOVE SQL-HD-DATE TO WRK-HD-DATE(WRK-HD-COUNT) + CALL 'br_fetch_next' USING SQLCODE + IF SQLCODE = 0 + MOVE 0 TO WS-COL-IDX + MOVE 256 TO WS-COL-LEN + CALL 'br_get_col' USING + WS-COL-IDX, SQL-HD-DATE, WS-COL-LEN + END-IF + END-PERFORM. + * + 1200HDINNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (2.0) * + * サブモジュール名: 主処理 * + * 処理概要 : キーブレイク(社員番号)毎の処理を行う * + ***************************************************************** + 2000MAJSOR SECTION. + * + *** 社員番号キー保存 + MOVE SQL-EMP-ID TO WRK-BFR-EMP-ID. + * + *** 1社員分処理(キーブレイク範囲) + PERFORM 2100-PROCESS-EMP + THRU 2100-PROCESS-EMP-EXIT. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (2.1) * + * サブモジュール名: 社員別処理 * + * 処理概要 : 1社員の全申請を処理(PERFORM THRU対象) * + ***************************************************************** + 2100-PROCESS-EMP SECTION. + * + MOVE ZERO TO CUN-EMP-SUB. + * + PERFORM UNTIL WRK-R01EOF = '1' + OR SQL-EMP-ID NOT = WRK-BFR-EMP-ID + PERFORM 2200-EXPAND-DATE + THRU 2200-EXPAND-DATE-EXIT + PERFORM 1100C1FETCHSOR + END-PERFORM. + * + *** 社員別小計出力(キーブレイク) + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE WRK-BFR-EMP-ID TO M00UMKDATS22-01. + MOVE CUN-EMP-SUB TO M00UMKDATS22-02. + MOVE 'EMP SUB' TO M00UMKDATS22-03. + PERFORM 4000MSGOUTSOR. + * + 2100-PROCESS-EMP-EXIT. + EXIT. + ***************************************************************** + * サブモジュールNO: (2.2) * + * サブモジュール名: 日付展開処理 * + * 処理概要 : 開始日〜終了日をループ(PERFORM THRU対象) * + * 休日/週末を除外してLEAVE-DAILYを出力 * + ***************************************************************** + 2200-EXPAND-DATE SECTION. + * + MOVE SQL-START-DATE TO WRK-DATE-CURRENT. + MOVE SQL-END-DATE TO WRK-DATE-END. + * + PERFORM UNTIL WRK-DATE-CURRENT > WRK-DATE-END + COMPUTE WRK-DAY-OF-WEEK = + FUNCTION MOD( + FUNCTION INTEGER-OF-DATE(WRK-DATE-CURRENT), 7) + IF WRK-DAY-OF-WEEK = 0 + OR WRK-DAY-OF-WEEK = 6 + IF WRK-HD-COUNT > 0 + AND WRK-DATE-CURRENT NOT = ZERO + CONTINUE + ELSE + CONTINUE + END-IF + ELSE + *** 休日テーブル検索 + MOVE '0' TO WRK-HD-FOUND + IF WRK-HD-COUNT > 0 + SET WRK-HD-IDX TO 1 + SEARCH ALL WRK-HD-ENTRY + AT END + CONTINUE + WHEN WRK-HD-DATE(WRK-HD-IDX) + = WRK-DATE-CURRENT + MOVE '1' TO WRK-HD-FOUND + END-SEARCH + END-IF + IF WRK-HD-FOUND = '0' + INITIALIZE W01OUTREC + MOVE FUNCTION NUMVAL(SQL-APPL-ID) + TO W01APPL-ID + MOVE WRK-BFR-EMP-ID TO W01EMP-ID + MOVE SQL-LEAVE-TYPE TO W01LEAVE-TYPE + MOVE SQL-START-TIME TO W01START-TIME + MOVE SQL-END-TIME TO W01END-TIME + MOVE WRK-DATE-ALPHA + TO W01DATE + WRITE W01OUTREC + ADD 1 TO CUN-W01OUT + ADD 1 TO CUN-EMP-SUB + END-IF + END-IF + *** 日付加算 + PERFORM 2300-DATE-ADD-1 + END-PERFORM. + * + 2200-EXPAND-DATE-EXIT. + EXIT. + ***************************************************************** + * サブモジュールNO: (2.3) * + * サブモジュール名: 日付加算処理 * + * 処理概要 : 日付を1日進める(月/年跨ぎ対応) * + ***************************************************************** + 2300-DATE-ADD-1 SECTION. + * + ADD 1 TO WRK-DATE-DAY. + * + EVALUATE WRK-DATE-MONTH + WHEN 1 WHEN 3 WHEN 5 WHEN 7 + WHEN 8 WHEN 10 WHEN 12 + IF WRK-DATE-DAY > 31 + MOVE 1 TO WRK-DATE-DAY + ADD 1 TO WRK-DATE-MONTH + IF WRK-DATE-MONTH > 12 + MOVE 1 TO WRK-DATE-MONTH + ADD 1 TO WRK-DATE-YEAR + END-IF + END-IF + WHEN 4 WHEN 6 WHEN 9 WHEN 11 + IF WRK-DATE-DAY > 30 + MOVE 1 TO WRK-DATE-DAY + ADD 1 TO WRK-DATE-MONTH + END-IF + WHEN 2 + IF (FUNCTION MOD(WRK-DATE-YEAR, 400) = 0) + OR (FUNCTION MOD(WRK-DATE-YEAR, 4) = 0 + AND FUNCTION MOD(WRK-DATE-YEAR, 100) + NOT = 0) + IF WRK-DATE-DAY > 29 + MOVE 1 TO WRK-DATE-DAY + ADD 1 TO WRK-DATE-MONTH + END-IF + ELSE + IF WRK-DATE-DAY > 28 + MOVE 1 TO WRK-DATE-DAY + ADD 1 TO WRK-DATE-MONTH + END-IF + END-IF + END-EVALUATE. + * + 2300-DATE-ADD-1-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (3.0) * + * サブモジュール名: 終了処理 * + * 処理概要 : ファイルクローズ・件数出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** 出力ファイルCLOSE + CLOSE W01OUTFIL. + * + *** 入力件数出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'LEAVE_RECORDS' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 出力件数出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'KIN02W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 休日テーブル件数出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE 'HOLIDAYS LOADED' TO M00UMKDATS22-01. + MOVE WRK-HD-COUNT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (4.0) * + * サブモジュール名: メッセージ編集出力処理 * + * 処理概要 : メッセージ編集出力サブPGM呼出 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.9) * + * サブモジュール名: ABEND処理 * + * 処理概要 : ABENDサブPGM呼出 * + ***************************************************************** + 9999ABDSOR SECTION. + * + MOVE CNS-ABD999 TO E01ABDCOD. + CALL 'SUB03END' USING E01ABDPAR. + * + 9999ABDSOR-EXT. + EXIT. diff --git a/production/src/ZAN01CHK.cbl b/production/src/ZAN01CHK.cbl new file mode 100644 index 0000000..3c93663 --- /dev/null +++ b/production/src/ZAN01CHK.cbl @@ -0,0 +1,499 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. ZAN01CHK. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : ZAN01CHK * + * プログラム名 : 残業申請振分処理 * + * 作成日 : 2026-06-14 * + * 処理概要 : CSV形式の残業申請ファイルを読み込み、 * + * ステータスによって適切に振り分ける。 * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-14 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO ZAN01R01. + SELECT W01OUTFIL ASSIGN TO ZAN01W01. + SELECT W02OUTFIL ASSIGN TO ZAN01W02. + SELECT W03OUTFIL ASSIGN TO ZAN01W03. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * ##R01## * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + 03 R01LINE PIC X(80). + * + ***************************************************************** + * ##W01## * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W01OUTREC. + COPY ZAN01REC REPLACING ==(A)== BY ==W01==. + * + ***************************************************************** + * ##W02## * + ***************************************************************** + FD W02OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W02OUTREC. + COPY ZAN01REC REPLACING ==(A)== BY ==W02==. + * + ***************************************************************** + * ##W03## * + ***************************************************************** + FD W03OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS V. + 01 W03OUTREC. + COPY ZAN05REC REPLACING ==(A)== BY ==W03==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'ZAN01CHK'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + 03 CNS-MSGSUBEEK PIC 9(003) VALUE 005. + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + 03 CNS-ABD999 PIC 9(003) VALUE 999. + 01 CNS-STAT-0 PIC X(001) VALUE '0'. + 01 CNS-STAT-1 PIC X(001) VALUE '1'. + 01 CNS-STAT-9 PIC X(001) VALUE '9'. + 01 CNS-TIME-1830 PIC 9(004) VALUE 1830. + 01 CNS-DIFF-30 PIC 9(004) VALUE 30. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W02OUT PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W03OUT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** 運用日付 + 03 WRK-U06 PIC 9(008). + *** 読込フラグ + 03 WRK-R01EOF PIC X(001). + *** CSV分解用 + 03 WRK-COMMA-CNT PIC 9(002) COMP. + 03 WRK-CSV-APPL-ID PIC X(008). + 03 WRK-CSV-EMP-ID PIC X(008). + 03 WRK-CSV-APPL-DATE PIC X(008). + 03 WRK-CSV-START-TIME PIC X(004). + 03 WRK-CSV-END-TIME PIC X(004). + 03 WRK-CSV-STATUS PIC X(001). + 03 WRK-CSV-OVT-TYPE PIC X(001). + 03 WRK-CSV-FILLER PIC X(046). + *** 時間計算用 + 03 WRK-START-NUM PIC 9(004). + 03 WRK-END-NUM PIC 9(004). + 03 WRK-DIFF-HH PIC 9(002). + 03 WRK-DIFF-MM PIC 9(002). + 03 WRK-DIFF-MIN PIC 9(004). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** 運用日付取得 + COPY ZANDATAC. + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + *** ABEND処理SR用 + COPY ZANENDAC. + *** 項目チェックSR用 + COPY ZANCHKAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理 + PERFORM 2000MAJSOR + UNTIL WRK-R01EOF = '1'. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + * + *** 運用日付取得 + INITIALIZE D01UBSPAR. + CALL 'SUB01DAT' USING D01UBSPAR. + IF D01FKICOD = ZERO + MOVE D01UBSUDATE TO WRK-U06 + ELSE + INITIALIZE M00MHOPAR + MOVE CNS-MSGSUBEEK TO M00MSGCOD + MOVE 'SUB01DAT' TO M00UMKDATS22-01 + MOVE D01FKICOD TO M00UMKDATS22-02 + PERFORM 4000MSGOUTSOR + PERFORM 9999ABDSOR + END-IF. + * + *** 入出力ファイルOPEN + OPEN INPUT R01INNFIL + OUTPUT W01OUTFIL + W02OUTFIL + W03OUTFIL. + * + *** #R01#を読み込み + PERFORM 1100R01INNSOR. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.1) * + * サブモジュール名:##R01##読込処理 * + * 処理概要 : レコード読込・EOF判定処理 * + ***************************************************************** + 1100R01INNSOR SECTION. + * + READ R01INNFIL + AT END + MOVE '1' TO WRK-R01EOF + NOT AT END + ADD 1 TO CUN-R01INN + END-READ. + * + 1100R01INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.0) * + * サブモジュール名: 主処理 * + * 処理概要 : CSV分解・ステータス判定・振り分け処理 * + ***************************************************************** + 2000MAJSOR SECTION. + * + *** CSV分解 + PERFORM 2010CSVSOR. + * + *** ステータス判定 + EVALUATE TRUE + WHEN WRK-CSV-STATUS = CNS-STAT-0 + OR WRK-CSV-STATUS = CNS-STAT-1 + *** 有効申請処理 + PERFORM 2020VALIDATESOR + WHEN WRK-CSV-STATUS = CNS-STAT-9 + *** 取消申請処理 + PERFORM 2030CANCELSOR + WHEN OTHER + *** エラー処理 + PERFORM 2040ERRORSOR + END-EVALUATE. + * + *** 次のレコード読込 + PERFORM 1100R01INNSOR. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1) * + * サブモジュール名: CSV分解処理 * + * 処理概要 : UNSTRINGでCSVを分解する * + ***************************************************************** + 2010CSVSOR SECTION. + * + INITIALIZE WRK-CSV-APPL-ID + WRK-CSV-EMP-ID + WRK-CSV-APPL-DATE + WRK-CSV-START-TIME + WRK-CSV-END-TIME + WRK-CSV-STATUS + WRK-CSV-OVT-TYPE + WRK-CSV-FILLER. + UNSTRING R01INNREC + DELIMITED BY ',' + INTO WRK-CSV-APPL-ID + WRK-CSV-EMP-ID + WRK-CSV-APPL-DATE + WRK-CSV-START-TIME + WRK-CSV-END-TIME + WRK-CSV-STATUS + WRK-CSV-OVT-TYPE + WRK-CSV-FILLER + TALLYING IN WRK-COMMA-CNT + END-UNSTRING. + * + 2010CSVSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.2) * + * サブモジュール名: 有効申請処理 * + * 処理概要 : 項目チェックしW01出力またはW03出力 * + ***************************************************************** + 2020VALIDATESOR SECTION. + * + *** W01/W03レコード初期化 + INITIALIZE W01OUTREC + W03OUTREC. + * + *** SUB04CHKで社員番号チェック + INITIALIZE C01CHKPAR. + MOVE WRK-CSV-EMP-ID TO C01CHKDAT. + MOVE 'EMPID' TO C01CHKTYP. + CALL 'SUB04CHK' USING C01CHKPAR. + IF C01CHKRRC NOT = ZERO + MOVE '01' TO W03ERR-CATEGORY + STRING 'EMP-ID ERROR:' + WRK-CSV-EMP-ID + DELIMITED BY SIZE + INTO W03ERR-DETAIL + WRITE W03OUTREC + ADD 1 TO CUN-W03OUT + GO TO 2020VALIDATESOR-EXT + END-IF. + * + *** SUB04CHKで日付チェック + INITIALIZE C01CHKPAR. + MOVE WRK-CSV-APPL-DATE TO C01CHKDAT. + MOVE 'DATE' TO C01CHKTYP. + CALL 'SUB04CHK' USING C01CHKPAR. + IF C01CHKRRC NOT = ZERO + MOVE '01' TO W03ERR-CATEGORY + STRING 'DATE ERROR:' + WRK-CSV-EMP-ID + DELIMITED BY SIZE + INTO W03ERR-DETAIL + WRITE W03OUTREC + ADD 1 TO CUN-W03OUT + GO TO 2020VALIDATESOR-EXT + END-IF. + * + *** 開始時刻チェック(1830以降) + MOVE WRK-CSV-START-TIME TO WRK-START-NUM. + IF WRK-START-NUM < CNS-TIME-1830 + MOVE '01' TO W03ERR-CATEGORY + STRING 'START TIME < 1830' + DELIMITED BY SIZE + INTO W03ERR-DETAIL + WRITE W03OUTREC + ADD 1 TO CUN-W03OUT + GO TO 2020VALIDATESOR-EXT + END-IF. + * + *** 開始時刻 < 終了時刻チェック + MOVE WRK-CSV-END-TIME TO WRK-END-NUM. + IF WRK-START-NUM >= WRK-END-NUM + MOVE '01' TO W03ERR-CATEGORY + STRING 'START >= END' + DELIMITED BY SIZE + INTO W03ERR-DETAIL + WRITE W03OUTREC + ADD 1 TO CUN-W03OUT + GO TO 2020VALIDATESOR-EXT + END-IF. + * + *** 時間差30分以上チェック + DIVIDE WRK-START-NUM BY 100 + GIVING WRK-DIFF-HH + REMAINDER WRK-DIFF-MM. + COMPUTE WRK-DIFF-MIN = + WRK-DIFF-MM. + DIVIDE WRK-END-NUM BY 100 + GIVING WRK-START-NUM + REMAINDER WRK-END-NUM. + COMPUTE WRK-DIFF-MIN = + (WRK-START-NUM - WRK-DIFF-HH) * 60 + + (WRK-END-NUM - WRK-DIFF-MM). + IF WRK-DIFF-MIN < CNS-DIFF-30 + MOVE '01' TO W03ERR-CATEGORY + STRING 'DIFF < 30MIN' + DELIMITED BY SIZE + INTO W03ERR-DETAIL + WRITE W03OUTREC + ADD 1 TO CUN-W03OUT + GO TO 2020VALIDATESOR-EXT + END-IF. + * + *** W01出力 + MOVE WRK-CSV-APPL-ID TO W01APPL-ID. + MOVE WRK-CSV-EMP-ID TO W01EMP-ID. + MOVE WRK-CSV-APPL-DATE TO W01APPL-DATE. + MOVE WRK-CSV-START-TIME TO W01START-TIME. + MOVE WRK-CSV-END-TIME TO W01END-TIME. + MOVE WRK-CSV-STATUS TO W01STATUS. + MOVE WRK-CSV-OVT-TYPE TO W01OVT-TYPE. + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + 2020VALIDATESOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.3) * + * サブモジュール名: 取消申請処理 * + * 処理概要 : 取消レコードをW02出力する * + ***************************************************************** + 2030CANCELSOR SECTION. + * + *** W02レコード初期化 + INITIALIZE W02OUTREC. + MOVE WRK-CSV-APPL-ID TO W02APPL-ID. + MOVE WRK-CSV-EMP-ID TO W02EMP-ID. + MOVE WRK-CSV-APPL-DATE TO W02APPL-DATE. + MOVE WRK-CSV-START-TIME TO W02START-TIME. + MOVE WRK-CSV-END-TIME TO W02END-TIME. + MOVE WRK-CSV-STATUS TO W02STATUS. + MOVE WRK-CSV-OVT-TYPE TO W02OVT-TYPE. + WRITE W02OUTREC. + ADD 1 TO CUN-W02OUT. + * + 2030CANCELSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.4) * + * サブモジュール名: エラー処理 * + * 処理概要 : 不明ステータスをW03出力する * + ***************************************************************** + 2040ERRORSOR SECTION. + * + *** W03レコード初期化 + INITIALIZE W03OUTREC. + MOVE '01' TO W03ERR-CATEGORY. + STRING 'INVALID STATUS:' + WRK-CSV-STATUS + DELIMITED BY SIZE + INTO W03ERR-DETAIL. + WRITE W03OUTREC. + ADD 1 TO CUN-W03OUT. + * + 2040ERRORSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(3.0) * + * サブモジュール名: 終了処理 * + * 処理概要 : ファイルクローズ・件数と終了メッセージ出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** 入出力ファイルCLOSE + CLOSE R01INNFIL + W01OUTFIL + W02OUTFIL + W03OUTFIL. + * + *** 入出力ファイル件数出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN01R01' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN01W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN01W02' TO M00UMKDATS22-01. + MOVE CUN-W02OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN01W03' TO M00UMKDATS22-01. + MOVE CUN-W03OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(4.0) * + * サブモジュール名: メッセージ編集出力処理 * + * 処理概要 : メッセージ編集出力サブPGM呼出 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.9) * + * サブモジュール名: ABEND処理 * + * 処理概要 : ABENDサブPGM呼出 * + ***************************************************************** + 9999ABDSOR SECTION. + * + MOVE CNS-ABD999 TO E01ABDCOD. + CALL 'SUB03END' USING E01ABDPAR. + * + 9999ABDSOR-EXT. + EXIT. diff --git a/production/src/ZAN02CHK.cbl b/production/src/ZAN02CHK.cbl new file mode 100644 index 0000000..73868b8 --- /dev/null +++ b/production/src/ZAN02CHK.cbl @@ -0,0 +1,360 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. ZAN02CHK. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : ZAN02CHK * + * プログラム名 : 時間帯重複チェック処理 * + * 作成日 : 2026-06-14 * + * 処理概要 : OVT-VSORTファイルの同一社員・同一日付内の * + * 開始時刻と終了時刻の重複をチェックする。 * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-14 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO ZAN02R01. + SELECT W01OUTFIL ASSIGN TO ZAN02W01. + SELECT W02OUTFIL ASSIGN TO ZAN02W02. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * ##R01## * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + COPY ZAN01REC REPLACING ==(A)== BY ==R01==. + * + ***************************************************************** + * ##W01## * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W01OUTREC. + COPY ZAN01REC REPLACING ==(A)== BY ==W01==. + * + ***************************************************************** + * ##W02## * + ***************************************************************** + FD W02OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS V. + 01 W02OUTREC. + COPY ZAN05REC REPLACING ==(A)== BY ==W02==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'ZAN02CHK'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + 03 CNS-MSGSUBEEK PIC 9(003) VALUE 005. + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + 03 CNS-ABD999 PIC 9(003) VALUE 999. + 01 CNS-ERR-CAT02 PIC 9(002) VALUE 02. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W02OUT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** 運用日付 + 03 WRK-U06 PIC 9(008). + *** 読込フラグ + 03 WRK-R01EOF PIC X(001). + *** 前レコード保持 + 03 WRK-PREV-REC. + 05 FILLER PIC X(008). + 05 WRK-PREV-EMP-ID PIC 9(008). + 05 WRK-PREV-APPL-DATE PIC 9(008). + 05 FILLER PIC 9(004). + 05 WRK-PREV-END-TIME PIC 9(004). + 05 FILLER PIC X(001). + 05 FILLER PIC X(001). + 05 FILLER PIC X(046). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** 運用日付取得 + COPY ZANDATAC. + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + *** ABEND処理SR用 + COPY ZANENDAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理 + PERFORM 2000MAJSOR + UNTIL WRK-R01EOF = '1'. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + * + *** 運用日付取得 + INITIALIZE D01UBSPAR. + CALL 'SUB01DAT' USING D01UBSPAR. + IF D01FKICOD = ZERO + MOVE D01UBSUDATE TO WRK-U06 + ELSE + INITIALIZE M00MHOPAR + MOVE CNS-MSGSUBEEK TO M00MSGCOD + MOVE 'SUB01DAT' TO M00UMKDATS22-01 + MOVE D01FKICOD TO M00UMKDATS22-02 + PERFORM 4000MSGOUTSOR + PERFORM 9999ABDSOR + END-IF. + * + *** 入出力ファイルOPEN + OPEN INPUT R01INNFIL + OUTPUT W01OUTFIL + W02OUTFIL. + * + *** #R01#を読み込み + PERFORM 1100R01INNSOR. + * + *** 1件目W01出力(前レコード初期化) + IF WRK-R01EOF NOT = '1' + MOVE R01INNREC TO WRK-PREV-REC + MOVE R01INNREC TO W01OUTREC + WRITE W01OUTREC + ADD 1 TO CUN-W01OUT + PERFORM 1100R01INNSOR + END-IF. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.1) * + * サブモジュール名:##R01##読込処理 * + * 処理概要 : レコード読込・EOF判定処理 * + ***************************************************************** + 1100R01INNSOR SECTION. + * + READ R01INNFIL + AT END + MOVE '1' TO WRK-R01EOF + NOT AT END + ADD 1 TO CUN-R01INN + END-READ. + * + 1100R01INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.0) * + * サブモジュール名: 主処理 * + * 処理概要 : 時間帯重複チェック処理 * + ***************************************************************** + 2000MAJSOR SECTION. + * + IF WRK-R01EOF NOT = '1' + *** 重複チェック + PERFORM 2010CHECKDUPSOR + *** 次のレコード読込 + PERFORM 1100R01INNSOR + END-IF. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1) * + * サブモジュール名: 重複チェック処理 * + * 処理概要 : 前レコードとの重複判定 * + ***************************************************************** + 2010CHECKDUPSOR SECTION. + * + *** 同一社員番号かつ同一日付の判定 + IF WRK-PREV-EMP-ID = R01EMP-ID + AND WRK-PREV-APPL-DATE = R01APPL-DATE + *** 前終了時刻 > 現開始時刻 → 重複 + IF WRK-PREV-END-TIME > R01START-TIME + PERFORM 2011OVERLAPERRSOR + ELSE + PERFORM 2012NORMALOUTSOR + END-IF + ELSE + *** キーブレイク + PERFORM 2013KEYBRSOR + END-IF. + * + 2010CHECKDUPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1-1) * + * サブモジュール名: 重複エラー処理 * + * 処理概要 : エラーログW02出力 * + ***************************************************************** + 2011OVERLAPERRSOR SECTION. + * + INITIALIZE W02OUTREC. + MOVE CNS-ERR-CAT02 TO W02ERR-CATEGORY. + STRING 'OVERLAP: ' + WRK-PREV-EMP-ID ',' + WRK-PREV-APPL-DATE + DELIMITED BY SIZE + INTO W02ERR-DETAIL. + WRITE W02OUTREC. + ADD 1 TO CUN-W02OUT. + * + 2011OVERLAPERRSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1-2) * + * サブモジュール名: 通常出力処理 * + * 処理概要 : W01ファイル出力 * + ***************************************************************** + 2012NORMALOUTSOR SECTION. + * + MOVE R01INNREC TO W01OUTREC. + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + *** 前レコード更新 + MOVE R01INNREC TO WRK-PREV-REC. + * + 2012NORMALOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1-3) * + * サブモジュール名: キーブレイク処理 * + * 処理概要 : 前レコード更新 * + ***************************************************************** + 2013KEYBRSOR SECTION. + * + MOVE R01INNREC TO WRK-PREV-REC. + PERFORM 2012NORMALOUTSOR. + * + 2013KEYBRSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(3.0) * + * サブモジュール名: 終了処理 * + * 処理概要 : ファイルクローズ・件数と終了メッセージ出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** 入出力ファイルCLOSE + CLOSE R01INNFIL + W01OUTFIL + W02OUTFIL. + * + *** 入出力ファイル件数出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN02R01' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN02W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN02W02' TO M00UMKDATS22-01. + MOVE CUN-W02OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(4.0) * + * サブモジュール名: メッセージ編集出力処理 * + * 処理概要 : メッセージ編集出力サブPGM呼出 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.9) * + * サブモジュール名: ABEND処理 * + * 処理概要 : ABENDサブPGM呼出 * + ***************************************************************** + 9999ABDSOR SECTION. + * + MOVE CNS-ABD999 TO E01ABDCOD. + CALL 'SUB03END' USING E01ABDPAR. + * + 9999ABDSOR-EXT. + EXIT. \ No newline at end of file diff --git a/production/src/ZAN03CHK.cbl b/production/src/ZAN03CHK.cbl new file mode 100644 index 0000000..ed61835 --- /dev/null +++ b/production/src/ZAN03CHK.cbl @@ -0,0 +1,466 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. ZAN03CHK. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : ZAN03CHK * + * プログラム名 : 打刻時間照合処理 * + * 作成日 : 2026-06-14 * + * 処理概要 : OVT-NODUPとPUNCH-SORTEDを突合し申請時間帯の * + * 照合を行う。 * + * 申請時間帯が出勤〜退勤の範囲内かを確認する。* + * 申請日が休日かを判定しOVT-TYPEを付加する。 * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-14 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO ZAN03R01. + SELECT R02INNFIL ASSIGN TO ZAN03R02. + SELECT R03INNFIL ASSIGN TO ZAN03R03. + SELECT W01OUTFIL ASSIGN TO ZAN03W01. + SELECT W02OUTFIL ASSIGN TO ZAN03W02. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * ##R01## * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + COPY ZAN01REC REPLACING ==(A)== BY ==R01==. + * + ***************************************************************** + * ##R02## * + ***************************************************************** + FD R02INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R02INNREC. + 03 R02EMP-ID PIC 9(008). + 03 R02DATE PIC 9(008). + 03 R02TIME-IN PIC 9(004). + 03 R02TIME-OUT PIC 9(004). + 03 R02FILLER PIC X(056). + * + ***************************************************************** + * ##R03## * + ***************************************************************** + FD R03INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R03INNREC. + 03 R03HOLIDAY-DATE PIC 9(008). + 03 R03HOLIDAY-FLG PIC X(001). + 03 R03FILLER PIC X(071). + * + ***************************************************************** + * ##W01## * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W01OUTREC. + COPY ZAN01REC REPLACING ==(A)== BY ==W01==. + * + ***************************************************************** + * ##W02## * + ***************************************************************** + FD W02OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS V. + 01 W02OUTREC. + COPY ZAN05REC REPLACING ==(A)== BY ==W02==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'ZAN03CHK'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + + 03 CNS-ERR-CAT03 PIC 9(002) VALUE 03. + 03 CNS-OVT-W PIC X(001) VALUE 'W'. + 03 CNS-OVT-H PIC X(001) VALUE 'H'. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-R02INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-R03INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W02OUT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** 読込フラグ(R01) + 03 WRK-R01EOF PIC X(001). + *** 読込フラグ(R02) + 03 WRK-R02EOF PIC X(001). + *** 読込フラグ(R03) + 03 WRK-R03EOF PIC X(001). + *** R01キー + 03 WRK-R01KEY. + 05 WRK-R01KEY001 PIC 9(008). + 05 WRK-R01KEY002 PIC 9(008). + *** R02キー + 03 WRK-R02KEY. + 05 WRK-R02KEY001 PIC 9(008). + 05 WRK-R02KEY002 PIC 9(008). + *** OVT-TYPE設定用 + 03 WRK-OVT-TYPE-SET PIC X(001). + *** 休日テーブル + 03 WRK-HOLIDAY-CNT PIC 9(004) COMP. + 03 WRK-HOLIDAY-TABLE OCCURS 1 TO 366 TIMES + DEPENDING ON WRK-HOLIDAY-CNT + ASCENDING KEY IS WRK-HD-DATE + INDEXED BY WRK-HD-IDX. + 05 WRK-HD-DATE PIC 9(008). + 05 WRK-HD-FLG PIC X(001). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理 + PERFORM 2000MAJSOR + UNTIL WRK-R01EOF = '1'. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + * + + * + *** 入出力ファイルOPEN + OPEN INPUT R01INNFIL + R02INNFIL + R03INNFIL + OUTPUT W01OUTFIL + W02OUTFIL. + * + *** 休日ファイル読込 + PERFORM 1300HOLIDAYSOR. + * + *** #R01#を読み込み + PERFORM 1100R01INNSOR. + * + *** #R02#を読み込み + PERFORM 1200R02INNSOR. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (1.1) * + * サブモジュール名:##R01##読込処理 * + * 処理概要 : レコード読込・EOF判定処理 * + ***************************************************************** + 1100R01INNSOR SECTION. + * + READ R01INNFIL + AT END + MOVE '1' TO WRK-R01EOF + NOT AT END + ADD 1 TO CUN-R01INN + MOVE R01EMP-ID TO WRK-R01KEY001 + MOVE R01APPL-DATE TO WRK-R01KEY002 + END-READ. + * + 1100R01INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.2) * + * サブモジュール名:##R02##読込処理 * + * 処理概要 : レコード読込・EOF判定処理 * + ***************************************************************** + 1200R02INNSOR SECTION. + * + READ R02INNFIL + AT END + MOVE '1' TO WRK-R02EOF + MOVE HIGH-VALUES TO WRK-R02KEY + NOT AT END + ADD 1 TO CUN-R02INN + MOVE R02EMP-ID TO WRK-R02KEY001 + MOVE R02DATE TO WRK-R02KEY002 + END-READ. + * + 1200R02INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.3) * + * サブモジュール名:##R03##読込処理 * + * 処理概要 : 休日ファイル読込・HOLIDAY-TABLE設定 * + ***************************************************************** + 1300HOLIDAYSOR SECTION. + * + INITIALIZE WRK-HOLIDAY-CNT. + * + PERFORM UNTIL WRK-R03EOF = '1' + READ R03INNFIL + AT END + MOVE '1' TO WRK-R03EOF + NOT AT END + ADD 1 TO WRK-HOLIDAY-CNT + ADD 1 TO CUN-R03INN + MOVE R03HOLIDAY-DATE TO + WRK-HD-DATE(WRK-HOLIDAY-CNT) + MOVE R03HOLIDAY-FLG TO + WRK-HD-FLG(WRK-HOLIDAY-CNT) + END-READ + END-PERFORM. + * + 1300HOLIDAYSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.0) * + * サブモジュール名: 主処理 * + * 処理概要 : R01とR02のキー比較・時間範囲チェック * + ***************************************************************** + 2000MAJSOR SECTION. + * + *** R01とR02のキー比較 + EVALUATE TRUE + WHEN WRK-R01KEY < WRK-R02KEY + *** R01キー < R02キー(打刻データなし) + PERFORM 2010NOMATCHSOR + WHEN WRK-R01KEY = WRK-R02KEY + *** R01キー = R02キー(マッチ) + PERFORM 2020MATCHSOR + WHEN WRK-R01KEY > WRK-R02KEY + *** R01キー > R02キー(R02スキップ) + PERFORM 1200R02INNSOR + END-EVALUATE. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1) * + * サブモジュール名: 不一致処理 * + * 処理概要 : 打刻データなしエラー出力 * + ***************************************************************** + 2010NOMATCHSOR SECTION. + * + *** W02レコード初期化 + INITIALIZE W02OUTREC. + * + *** ERROR-LOGに出力 + MOVE CNS-ERR-CAT03 TO W02ERR-CATEGORY. + STRING R01EMP-ID DELIMITED BY SIZE + '/' DELIMITED BY SIZE + R01APPL-DATE DELIMITED BY SIZE + INTO W02ERR-DETAIL + END-STRING. + WRITE W02OUTREC. + ADD 1 TO CUN-W02OUT. + * + *** #R01#を読み込む + PERFORM 1100R01INNSOR. + * + 2010NOMATCHSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.2) * + * サブモジュール名: 一致処理 * + * 処理概要 : 時間範囲チェック * + ***************************************************************** + 2020MATCHSOR SECTION. + * + *** 時間範囲チェック + IF R01START-TIME >= R02TIME-IN + AND R01END-TIME <= R02TIME-OUT + *** 通過→OVT-TYPE設定+W01出力 + PERFORM 2200SETOVTSOR + WRITE W01OUTREC + ADD 1 TO CUN-W01OUT + ELSE + *** エラー→W02出力 + INITIALIZE W02OUTREC + MOVE CNS-ERR-CAT03 TO W02ERR-CATEGORY + STRING R01EMP-ID DELIMITED BY SIZE + '/' DELIMITED BY SIZE + R01APPL-DATE DELIMITED BY SIZE + '/' DELIMITED BY SIZE + R01START-TIME DELIMITED BY SIZE + '-' DELIMITED BY SIZE + R01END-TIME DELIMITED BY SIZE + INTO W02ERR-DETAIL + END-STRING + WRITE W02OUTREC + ADD 1 TO CUN-W02OUT + END-IF. + * + *** #R01#を読み込む + PERFORM 1100R01INNSOR. + * + 2020MATCHSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.3) * + * サブモジュール名: OVT-TYPE設定処理 * + * 処理概要 : 申請日が休日か判定しOVT-TYPEを設定 * + ***************************************************************** + 2200SETOVTSOR SECTION. + * + *** 初期設定(平日) + MOVE CNS-OVT-W TO WRK-OVT-TYPE-SET. + *** 休日判定(SEARCH ALL) + SET WRK-HD-IDX TO 1. + SEARCH ALL WRK-HOLIDAY-TABLE + AT END + CONTINUE + WHEN WRK-HD-DATE(WRK-HD-IDX) = R01APPL-DATE + IF WRK-HD-FLG(WRK-HD-IDX) = '1' + MOVE CNS-OVT-H TO WRK-OVT-TYPE-SET + END-IF + END-SEARCH. + * + *** レコード編集 + MOVE R01INNREC TO W01OUTREC. + MOVE WRK-OVT-TYPE-SET TO W01OVT-TYPE. + * + 2200SETOVTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(3.0) * + * サブモジュール名: 終了処理 * + * 処理概要 : ファイルクローズ・件数出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** 入出力ファイルCLOSE + CLOSE R01INNFIL + R02INNFIL + R03INNFIL + W01OUTFIL + W02OUTFIL. + * + *** 入力件数メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN03R01' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 入力件数メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN03R02' TO M00UMKDATS22-01. + MOVE CUN-R02INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 入力件数メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN03R03' TO M00UMKDATS22-01. + MOVE CUN-R03INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 出力件数メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN03W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 出力件数メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN03W02' TO M00UMKDATS22-01. + MOVE CUN-W02OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(4.0) * + * サブモジュール名: メッセージ出力処理 * + * 処理概要 : メッセージ編集・出力 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + diff --git a/production/src/ZAN04MAT.cbl b/production/src/ZAN04MAT.cbl new file mode 100644 index 0000000..d745930 --- /dev/null +++ b/production/src/ZAN04MAT.cbl @@ -0,0 +1,403 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. ZAN04MAT. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : ZAN04MAT * + * プログラム名 : 取消マッチング処理 * + * 作成日 : 2026-06-15 * + * 処理概要 : OVT-SORTED(有効申請)とOVT-CSORT * + * (取消申請)を申請番号で1:1マッチングし、 * + * 結果を振り分ける。 * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-15 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO ZAN04R01. + SELECT R02INNFIL ASSIGN TO ZAN04R02. + SELECT W01OUTFIL ASSIGN TO ZAN04W01. + SELECT W02OUTFIL ASSIGN TO ZAN04W02. + SELECT W03OUTFIL ASSIGN TO ZAN04W03. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * R01 (OVT-SORTED) * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + COPY ZAN01REC REPLACING ==(A)== BY ==R01==. + * + ***************************************************************** + * R02 (OVT-CSORT) * + ***************************************************************** + FD R02INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R02INNREC. + COPY ZAN01REC REPLACING ==(A)== BY ==R02==. + * + ***************************************************************** + * W01 (OVT-MATCHED) * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W01OUTREC. + COPY ZAN02REC REPLACING ==(A)== BY ==W01==. + * + ***************************************************************** + * W02 (OVT-DBCLEAN) * + ***************************************************************** + FD W02OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W02OUTREC. + COPY ZAN04REC REPLACING ==(A)== BY ==W02==. + * + ***************************************************************** + * W03 (ERROR-LOG) * + ***************************************************************** + FD W03OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS V. + 01 W03OUTREC. + COPY ZAN05REC REPLACING ==(A)== BY ==W03==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'ZAN04MAT'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + 03 CNS-MSGSUBEEK PIC 9(003) VALUE 005. + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + 03 CNS-ABD999 PIC 9(003) VALUE 999. + 01 CNS-ERR-CAT04 PIC 9(002) VALUE 04. + 01 CNS-PROC-SEQ01 PIC 9(002) VALUE 01. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-R02INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W02OUT PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W03OUT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** マッチングキー + 03 WRK-R01KEY PIC X(008). + 03 WRK-R02KEY PIC X(008). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** 運用日付取得 + COPY ZANDATAC. + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + *** ABEND処理SR用 + COPY ZANENDAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理 + PERFORM 2000MAJSOR + UNTIL WRK-R01KEY = HIGH-VALUE + AND WRK-R02KEY = HIGH-VALUE. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + * + *** 運用日付取得 + INITIALIZE D01UBSPAR. + CALL 'SUB01DAT' USING D01UBSPAR. + IF D01FKICOD NOT = ZERO + INITIALIZE M00MHOPAR + MOVE CNS-MSGSUBEEK TO M00MSGCOD + MOVE 'SUB01DAT' TO M00UMKDATS22-01 + MOVE D01FKICOD TO M00UMKDATS22-02 + PERFORM 4000MSGOUTSOR + PERFORM 9999ABDSOR + END-IF. + * + *** 入出力ファイルOPEN + OPEN INPUT R01INNFIL + R02INNFIL + OUTPUT W01OUTFIL + W02OUTFIL + W03OUTFIL. + * + *** R01を読み込み + PERFORM 1100R01INNSOR. + *** R02を読み込み + PERFORM 1200R02INNSOR. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.1) * + * サブモジュール名:R01読込処理 * + * 処理概要 : レコード読込・キー設定 * + ***************************************************************** + 1100R01INNSOR SECTION. + * + READ R01INNFIL + AT END + MOVE HIGH-VALUE TO WRK-R01KEY + NOT AT END + ADD 1 TO CUN-R01INN + MOVE R01APPL-ID TO WRK-R01KEY + END-READ. + * + 1100R01INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.2) * + * サブモジュール名:R02読込処理 * + * 処理概要 : レコード読込・キー設定 * + ***************************************************************** + 1200R02INNSOR SECTION. + * + READ R02INNFIL + AT END + MOVE HIGH-VALUE TO WRK-R02KEY + NOT AT END + ADD 1 TO CUN-R02INN + MOVE R02APPL-ID TO WRK-R02KEY + END-READ. + * + 1200R02INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.0) * + * サブモジュール名:主処理 * + * 処理概要 : マッチング(1:1)を行う * + ***************************************************************** + 2000MAJSOR SECTION. + * + EVALUATE TRUE + *** マッチ + WHEN WRK-R01KEY = WRK-R02KEY + PERFORM 2100MATCHSOR + PERFORM 1100R01INNSOR + PERFORM 1200R02INNSOR + *** R01のみ + WHEN WRK-R01KEY < WRK-R02KEY + PERFORM 2200R01OUTSOR + PERFORM 1100R01INNSOR + *** R02のみ + WHEN WRK-R01KEY > WRK-R02KEY + PERFORM 2300R02OUTSOR + PERFORM 1200R02INNSOR + END-EVALUATE. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1) * + * サブモジュール名:マッチ時処理 * + * 処理概要 : 取消済み申請をERROR-LOGに出力 * + ***************************************************************** + 2100MATCHSOR SECTION. + * + *** ERROR-LOG出力(監査証跡) + INITIALIZE W03OUTREC. + MOVE CNS-ERR-CAT04 TO W03ERR-CATEGORY. + STRING 'CANCEL-MATCH: ' + R01APPL-ID ' ' + R01EMP-ID ' ' + R01APPL-DATE ' ' + R01START-TIME ' ' + R01END-TIME + DELIMITED BY SIZE + INTO W03ERR-DETAIL. + WRITE W03OUTREC. + ADD 1 TO CUN-W03OUT. + * + 2100MATCHSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.2) * + * サブモジュール名:R01のみ処理 * + * 処理概要 : 有効申請をOVT-MATCHEDに出力 * + ***************************************************************** + 2200R01OUTSOR SECTION. + * + *** OVT-MATCHED出力(STRING編集) + INITIALIZE W01OUTREC. + STRING R01APPL-ID DELIMITED BY SIZE + R01EMP-ID DELIMITED BY SIZE + R01APPL-DATE DELIMITED BY SIZE + R01START-TIME DELIMITED BY SIZE + R01END-TIME DELIMITED BY SIZE + R01STATUS DELIMITED BY SIZE + R01OVT-TYPE DELIMITED BY SIZE + CNS-PROC-SEQ01 DELIMITED BY SIZE + INTO W01OUTREC. + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + 2200R01OUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.3) * + * サブモジュール名:R02のみ処理 * + * 処理概要 : 取消申請をOVT-DBCLEANに出力 * + ***************************************************************** + 2300R02OUTSOR SECTION. + * + *** OVT-DBCLEAN出力 + INITIALIZE W02OUTREC. + MOVE R02APPL-ID TO W02APPL-ID. + WRITE W02OUTREC. + ADD 1 TO CUN-W02OUT. + * + 2300R02OUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(3.0) * + * サブモジュール名:終了処理 * + * 処理概要 : ファイルクローズ・件数と終了メッセージ出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** 入出力ファイルCLOSE + CLOSE R01INNFIL + R02INNFIL + W01OUTFIL + W02OUTFIL + W03OUTFIL. + * + *** 入出力ファイル件数出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN04R01' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN04R02' TO M00UMKDATS22-01. + MOVE CUN-R02INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN04W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN04W02' TO M00UMKDATS22-01. + MOVE CUN-W02OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN04W03' TO M00UMKDATS22-01. + MOVE CUN-W03OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(4.0) * + * サブモジュール名:メッセージ編集出力処理 * + * 処理概要 : メッセージ編集出力サブPGM呼出 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.9) * + * サブモジュール名:ABEND処理 * + * 処理概要 : ABENDサブPGM呼出 * + ***************************************************************** + 9999ABDSOR SECTION. + * + MOVE CNS-ABD999 TO E01ABDCOD. + CALL 'SUB03END' USING E01ABDPAR. + * + 9999ABDSOR-EXT. + EXIT. diff --git a/production/src/ZAN05CAL.cbl b/production/src/ZAN05CAL.cbl new file mode 100644 index 0000000..9674094 --- /dev/null +++ b/production/src/ZAN05CAL.cbl @@ -0,0 +1,390 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. ZAN05CAL. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : ZAN05CAL * + * プログラム名 : 残業時間集計処理 * + * 作成日 : 2026-06-15 * + * 処理概要 : OVT-SORTED2(申請番号+処理番号昇順)を * + * キーブレイク集計し、同一APPL-ID内の全明細の * + * 加班時間を積算してOVT-SUMMARYに1レコード出力。* + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-15 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO ZAN05R01. + SELECT W01OUTFIL ASSIGN TO ZAN05W01. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * R01 (OVT-SORTED2) * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + COPY ZAN02REC REPLACING ==(A)== BY ==R01==. + * + ***************************************************************** + * W01 (OVT-SUMMARY) * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W01OUTREC. + COPY ZAN03REC REPLACING ==(A)== BY ==W01==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'ZAN05CAL'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + 03 CNS-MSGSUBEEK PIC 9(003) VALUE 005. + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + 03 CNS-TIMMODE02 PIC 9(001) VALUE 2. + 03 CNS-ABD999 PIC 9(003) VALUE 999. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** キーブレイク制御 + 03 WRK-R01KEY PIC X(008). + 03 WRK-PREV-APPL-ID PIC X(008). + 03 WRK-GROUP-ACTIVE PIC X(001). + 88 WRK-GROUP-IS-ACTIVE VALUE '1'. + 88 WRK-GROUP-NOT-ACTIVE VALUE '0'. + *** 集約用最終レコード保持 + 03 WRK-LAST-REC PIC X(080). + 03 WRK-LAST-REC-REDEF REDEFINES WRK-LAST-REC. + 05 WRK-LAST-APPL-ID PIC X(008). + 05 WRK-LAST-EMP-ID PIC 9(008). + 05 WRK-LAST-APPL-DATE PIC 9(008). + 05 FILLER PIC 9(004). + 05 WRK-LAST-END PIC 9(004). + 05 FILLER PIC X(001). + 05 WRK-LAST-OVT-TYPE PIC X(001). + 05 FILLER PIC 9(002). + 05 FILLER PIC X(044). + *** 集計用グループ先頭START保持 + 03 WRK-GROUP-START PIC 9(004). + *** 集計用積算分領域 + 03 WRK-ACCUM-MIN PIC S9(009) COMP-3. + *** 時刻計算領域 + 03 WRK-START-HOUR PIC 9(004). + 03 WRK-START-MIN PIC 9(004). + 03 WRK-END-HOUR PIC 9(004). + 03 WRK-END-MIN PIC 9(004). + 03 WRK-START-TOTAL PIC 9(005). + 03 WRK-END-TOTAL PIC 9(005). + 03 WRK-DIFF-MIN PIC 9(005). + 03 WRK-INT-HOURS PIC 9(004). + 03 WRK-REMAIN-MIN PIC 9(004). + 03 WRK-OVT-HOURS PIC 9(004)V9(001). + 03 WRK-TEMP-HOURS PIC 9(004)V9(001). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** 運用日付取得 + COPY ZANDATAC. + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + *** ABEND処理SR用 + COPY ZANENDAC. + *** 時刻丸め計算SR用 + COPY ZANTIMAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理 + PERFORM 2000MAJSOR + UNTIL WRK-R01KEY = HIGH-VALUE + AND WRK-GROUP-NOT-ACTIVE. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + MOVE '0' TO WRK-GROUP-ACTIVE. + * + *** 運用日付取得 + INITIALIZE D01UBSPAR. + CALL 'SUB01DAT' USING D01UBSPAR. + IF D01FKICOD NOT = ZERO + INITIALIZE M00MHOPAR + MOVE CNS-MSGSUBEEK TO M00MSGCOD + MOVE 'SUB01DAT' TO M00UMKDATS22-01 + MOVE D01FKICOD TO M00UMKDATS22-02 + PERFORM 4000MSGOUTSOR + PERFORM 9999ABDSOR + END-IF. + * + *** 入出力ファイルOPEN + OPEN INPUT R01INNFIL + OUTPUT W01OUTFIL. + * + *** R01を読み込み + PERFORM 1100R01INNSOR. + * + *** 初回レコード設定 + IF WRK-R01KEY NOT = HIGH-VALUE + MOVE R01APPL-ID TO WRK-PREV-APPL-ID + MOVE R01INNREC TO WRK-LAST-REC + MOVE R01START-TIME TO WRK-GROUP-START + SET WRK-GROUP-IS-ACTIVE TO TRUE + END-IF. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.1) * + * サブモジュール名:R01読込処理 * + * 処理概要 : レコード読込・キー設定 * + ***************************************************************** + 1100R01INNSOR SECTION. + * + READ R01INNFIL + AT END + MOVE HIGH-VALUE TO WRK-R01KEY + NOT AT END + ADD 1 TO CUN-R01INN + MOVE R01APPL-ID TO WRK-R01KEY + END-READ. + * + 1100R01INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.0) * + * サブモジュール名:主処理 * + * 処理概要 : キーブレイク集計制御を行う * + ***************************************************************** + 2000MAJSOR SECTION. + * + EVALUATE TRUE + *** EOF時:最終グループを出力 + WHEN WRK-R01KEY = HIGH-VALUE + IF WRK-GROUP-IS-ACTIVE + PERFORM 2100OUTSOR + SET WRK-GROUP-NOT-ACTIVE TO TRUE + END-IF + *** キーブレイク:前グループ出力→新グループ開始 + WHEN WRK-R01KEY NOT = WRK-PREV-APPL-ID + IF WRK-GROUP-IS-ACTIVE + PERFORM 2100OUTSOR + END-IF + MOVE R01APPL-ID TO WRK-PREV-APPL-ID + MOVE R01INNREC TO WRK-LAST-REC + MOVE R01START-TIME TO WRK-GROUP-START + SET WRK-GROUP-IS-ACTIVE TO TRUE + PERFORM 2200ACCUMSOR + PERFORM 1100R01INNSOR + *** 同一グループ:現レコード積算→最新レコードで上書き保持 + WHEN OTHER + PERFORM 2200ACCUMSOR + MOVE R01INNREC TO WRK-LAST-REC + PERFORM 1100R01INNSOR + END-EVALUATE. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1) * + * サブモジュール名:集計計算出力処理 * + * 処理概要 : WRK-ACCUM-MIN→SUB05TIM丸め・OVT-SUMMARY出力* + ***************************************************************** + 2100OUTSOR SECTION. + * + *** 累積分→時間変換(DIVIDE REMAINDER) + DIVIDE WRK-ACCUM-MIN BY 60 + GIVING WRK-INT-HOURS + REMAINDER WRK-REMAIN-MIN. + * + *** COMPUTE ROUNDED ON SIZE ERROR(カバレッジ用) + COMPUTE WRK-OVT-HOURS ROUNDED = + WRK-ACCUM-MIN / 60 + ON SIZE ERROR + CONTINUE + MOVE ZERO TO WRK-OVT-HOURS + END-COMPUTE. + * + *** SUB05TIM呼出(mode 2:0.1h単位切捨) + COMPUTE WRK-TEMP-HOURS = + WRK-ACCUM-MIN / 60 + END-COMPUTE. + MOVE WRK-TEMP-HOURS TO T01TIMHRS. + MOVE CNS-TIMMODE02 TO T01TIMRRC. + CALL 'SUB05TIM' USING T01TIMPAR. + * + *** OVT-SUMMARY出力 + INITIALIZE W01OUTREC. + MOVE WRK-LAST-APPL-ID TO W01APPL-ID. + MOVE WRK-LAST-EMP-ID TO W01EMP-ID. + MOVE WRK-LAST-APPL-DATE TO W01APPL-DATE. + MOVE WRK-GROUP-START TO W01START-TIME. + MOVE WRK-LAST-END TO W01END-TIME. + MOVE T01TIMOUT TO W01OVT-HOURS. + MOVE WRK-LAST-OVT-TYPE TO W01OVT-TYPE. + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + *** 累積分リセット(次グループ用) + MOVE ZERO TO WRK-ACCUM-MIN. + * + 2100OUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.2) * + * サブモジュール名:積算処理 * + * 処理概要 : 現レコードの時間差分をWRK-ACCUM-MINに加算 * + ***************************************************************** + 2200ACCUMSOR SECTION. + * + *** 開始時刻→分変換 + DIVIDE R01START-TIME BY 100 + GIVING WRK-START-HOUR + REMAINDER WRK-START-MIN. + COMPUTE WRK-START-TOTAL = + WRK-START-HOUR * 60 + WRK-START-MIN + END-COMPUTE. + * + *** 終了時刻→分変換 + DIVIDE R01END-TIME BY 100 + GIVING WRK-END-HOUR + REMAINDER WRK-END-MIN. + COMPUTE WRK-END-TOTAL = + WRK-END-HOUR * 60 + WRK-END-MIN + END-COMPUTE. + * + *** 差分計算 + COMPUTE WRK-DIFF-MIN = + WRK-END-TOTAL - WRK-START-TOTAL + END-COMPUTE. + * + *** 積算 + COMPUTE WRK-ACCUM-MIN = + WRK-ACCUM-MIN + WRK-DIFF-MIN + END-COMPUTE. + * + 2200ACCUMSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(3.0) * + * サブモジュール名:終了処理 * + * 処理概要 : ファイルクローズ・件数と終了メッセージ出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** 入出力ファイルCLOSE + CLOSE R01INNFIL + W01OUTFIL. + * + *** 入出力ファイル件数出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN05R01' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN05W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(4.0) * + * サブモジュール名:メッセージ編集出力処理 * + * 処理概要 : メッセージ編集出力サブPGM呼出 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.9) * + * サブモジュール名:ABEND処理 * + * 処理概要 : ABENDサブPGM呼出 * + ***************************************************************** + 9999ABDSOR SECTION. + * + MOVE CNS-ABD999 TO E01ABDCOD. + CALL 'SUB03END' USING E01ABDPAR. + * + 9999ABDSOR-EXT. + EXIT. diff --git a/production/src/ZAN06UPD.cbl b/production/src/ZAN06UPD.cbl new file mode 100644 index 0000000..a0860b0 --- /dev/null +++ b/production/src/ZAN06UPD.cbl @@ -0,0 +1,683 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. ZAN06UPD. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : ZAN06UPD * + * プログラム名 : 残業統計DB更新処理 * + * 作成日 : 2026-06-16 * + * 処理概要 : OVT-SUMMARYの各レコードをDB2テーブル * + * OVT-APPLICATIONSにINSERT/UPSERTし、 * + * OVT-MONTHLYに月次集計を反映する。 * + * またOVT-DBCLEANの各レコードについて、 * + * 該当申請を取消状態に更新し、 * + * OVT-MONTHLYから該当加班時間を減算する。 * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-16 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO ZAN06R01. + SELECT R02INNFIL ASSIGN TO ZAN06R02. + SELECT W01OUTFIL ASSIGN TO ZAN06W01. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * R01 (OVT-SUMMARY) 80B FB * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + COPY ZAN03REC REPLACING ==(A)== BY ==R01==. + * + ***************************************************************** + * R02 (OVT-DBCLEAN) 80B FB * + ***************************************************************** + FD R02INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R02INNREC. + COPY ZAN04REC REPLACING ==(A)== BY ==R02==. + * + ***************************************************************** + * W01 (ERROR-LOG) VB 200B * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + RECORDING MODE IS V. + 01 W01OUTREC. + COPY ZAN05REC REPLACING ==(A)== BY ==W01==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * SQLCA * + ***************************************************************** + EXEC SQL INCLUDE SQLCA END-EXEC. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'ZAN06UPD'. + 03 CNS-MSGSTR PIC 9(003) VALUE 001. + 03 CNS-MSGFIN PIC 9(003) VALUE 002. + 03 CNS-MSGSUBEEK PIC 9(003) VALUE 005. + 03 CNS-MSGIINKES PIC 9(003) VALUE 006. + 03 CNS-MSGOUTKES PIC 9(003) VALUE 007. + 03 CNS-MSGKEYINF PIC 9(003) VALUE 033. + 03 CNS-ABD999 PIC 9(003) VALUE 999. + 03 CNS-KN0002 PIC 9(001) VALUE 2. + 03 CNS-COMMIT-CNT PIC 9(003) VALUE 050. + 03 CNS-STATUS-ACTIVE PIC X(001) VALUE '0'. + 03 CNS-STATUS-CANCEL PIC X(001) VALUE '9'. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-R02INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-DBXINS PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-DBXUPD PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-COMMIT PIC S9(009) COMP-3 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** EOF判定 + 03 WRK-R01EOF PIC X(001). + 88 WRK-R01-EOF VALUE '1'. + 03 WRK-R02EOF PIC X(001). + 88 WRK-R02-EOF VALUE '1'. + *** 日付分解領域 + 03 WRK-APPL-DATE-N PIC 9(008). + 03 WRK-YEAR-MONTH PIC 9(006). + 03 WRK-MONTH PIC 9(002). + 03 WRK-MONTH-VALID PIC 9(001). + *** ループ制御 + 03 WRK-IDX PIC 9(004). + 03 WRK-RETRY-CNT PIC 9(001). + *** 加班時間変換領域 + 03 WRK-OVT-HOURS-EDITED PIC 9(004).9(001). + 03 WRK-OVT-HOURS-NUM PIC 9(004)V9(001). + 03 WRK-OVT-MINUTES PIC 9(006). + *** SQL用ホスト変数(全DISPLAY) + 03 WRK-SQL-APPL-ID PIC X(008). + 03 WRK-SQL-EMP-ID PIC X(008). + 03 WRK-SQL-APPL-DATE PIC X(008). + 03 WRK-SQL-YEAR-MONTH PIC X(006). + 03 WRK-SQL-START-TIME PIC X(004). + 03 WRK-SQL-END-TIME PIC X(004). + 03 WRK-SQL-OVT-HOURS PIC X(006). + 03 WRK-SQL-OVT-TYPE PIC X(001). + 03 WRK-SQL-STATUS PIC X(001). + *** SQLCODE表示用(COMP-5から編集変換) + 03 WRK-SQLCODE-DISP PIC +9(009). + *** エラーログ編集領域 + 03 WRK-ERR-CATEGORY PIC 9(002). + 03 WRK-ERR-DETAIL PIC X(198). + * + ***************************************************************** + * DBホスト変数(COMP-3、bridge compVarsマップ対応) * + ***************************************************************** + 01 DB-OVT-HOURS PIC S9(007)V9(001) COMP-3. + 01 DB-OVT-COUNT PIC S9(009) COMP-3. + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** 運用日付取得 + COPY ZANDATAC. + *** メッセージ編集出力SR用 + COPY ZANMSGAC. + *** ABEND処理SR用 + COPY ZANENDAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** メイン処理(R01→R02順に処理) + PERFORM 2000MAJSOR + UNTIL WRK-R01-EOF + AND WRK-R02-EOF. + * + *** 終了処理 + PERFORM 3000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGSTR TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + *** コンパイル日時出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGKEYINF TO M00MSGCOD. + MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01. + MOVE 'COMPILED' TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA. + * + *** 運用日付取得 + INITIALIZE D01UBSPAR. + CALL 'SUB01DAT' USING D01UBSPAR. + IF D01FKICOD = ZERO + MOVE D01UBSUDATE TO WRK-APPL-DATE-N + ELSE + INITIALIZE M00MHOPAR + MOVE CNS-MSGSUBEEK TO M00MSGCOD + MOVE 'SUB01DAT' TO M00UMKDATS22-01 + MOVE D01FKICOD TO M00UMKDATS22-02 + PERFORM 4000MSGOUTSOR + PERFORM 9999ABDSOR + END-IF. + * + *** 入出力ファイルOPEN + OPEN INPUT R01INNFIL + R02INNFIL + OUTPUT W01OUTFIL. + * + *** DB接続 + EXEC SQL + CONNECT TO 'data\OVERTIME.DB' + END-EXEC. + * + *** R01を初回読込 + PERFORM 1100R01INNSOR. + * + *** R02を初回読込 + PERFORM 1200R02INNSOR. + * + 1000ITTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.1) * + * サブモジュール名:R01読込処理 * + * 処理概要 : OVT-SUMMARY読込 * + ***************************************************************** + 1100R01INNSOR SECTION. + * + READ R01INNFIL + AT END + MOVE '1' TO WRK-R01EOF + NOT AT END + ADD 1 TO CUN-R01INN + END-READ. + * + 1100R01INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(1.2) * + * サブモジュール名:R02読込処理 * + * 処理概要 : OVT-DBCLEAN読込 * + ***************************************************************** + 1200R02INNSOR SECTION. + * + READ R02INNFIL + AT END + MOVE '1' TO WRK-R02EOF + NOT AT END + ADD 1 TO CUN-R02INN + END-READ. + * + 1200R02INNSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.0) * + * サブモジュール名:主処理 * + * 処理概要 : R01(OVT-SUMMARY)→R02(OVT-DBCLEAN)処理 * + ***************************************************************** + 2000MAJSOR SECTION. + * + EVALUATE TRUE + *** フェーズ1:OVT-SUMMARY処理 + WHEN NOT WRK-R01-EOF + PERFORM 2100SUMMARYSOR + PERFORM 1100R01INNSOR + *** フェーズ2:OVT-DBCLEAN処理 + WHEN NOT WRK-R02-EOF + PERFORM 2200DBCLEANSOR + PERFORM 1200R02INNSOR + WHEN OTHER + CONTINUE + END-EVALUATE. + * + 2000MAJSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1) * + * サブモジュール名:OVT-SUMMARY→DB登録処理 * + * 処理概要 : OVT-APPLICATIONS INSERT/UPSERT * + ***************************************************************** + 2100SUMMARYSOR SECTION. + * + *** SQLホスト変数設定 + MOVE R01APPL-ID TO WRK-SQL-APPL-ID. + MOVE R01EMP-ID TO WRK-SQL-EMP-ID. + MOVE R01APPL-DATE TO WRK-SQL-APPL-DATE. + MOVE R01APPL-DATE TO WRK-APPL-DATE-N. + MOVE WRK-APPL-DATE-N(5:2) TO WRK-MONTH. + * + *** 月バリデーション(PERFORM VARYING カバレッジ用) + MOVE ZERO TO WRK-MONTH-VALID. + PERFORM VARYING WRK-IDX + FROM 1 BY 1 + UNTIL WRK-IDX > 12 + OR WRK-MONTH-VALID = 1 + IF WRK-MONTH = WRK-IDX + MOVE 1 TO WRK-MONTH-VALID + END-IF + END-PERFORM. + * + *** 月異常時はエラー + IF WRK-MONTH-VALID = ZERO + MOVE 10 TO WRK-ERR-CATEGORY + STRING 'INVALID MONTH APPL-ID=' + WRK-SQL-APPL-ID DELIMITED BY SIZE + INTO WRK-ERR-DETAIL + END-STRING + MOVE WRK-ERR-CATEGORY TO W01ERR-CATEGORY + MOVE WRK-ERR-DETAIL TO W01ERR-DETAIL + WRITE W01OUTREC + ADD 1 TO CUN-W01OUT + PERFORM 9999ABDSOR + END-IF. + * + *** 年月抽出 + MOVE WRK-APPL-DATE-N(1:6) TO WRK-YEAR-MONTH. + MOVE WRK-YEAR-MONTH TO WRK-SQL-YEAR-MONTH. + * + *** 開始/終了時刻設定 + MOVE R01START-TIME TO WRK-SQL-START-TIME. + MOVE R01END-TIME TO WRK-SQL-END-TIME. + * + *** 加班時間 → SQL形式変換(小数点付加) + MOVE R01OVT-HOURS TO WRK-OVT-HOURS-NUM. + MOVE R01OVT-HOURS TO WRK-OVT-HOURS-EDITED. + MOVE WRK-OVT-HOURS-EDITED TO WRK-SQL-OVT-HOURS. + * + *** MULTIPLY カバレッジ:時間→分変換 + MULTIPLY WRK-OVT-HOURS-NUM + BY 60 GIVING WRK-OVT-MINUTES. + * + *** 種別・ステータス設定 + MOVE R01OVT-TYPE TO WRK-SQL-OVT-TYPE. + MOVE CNS-STATUS-ACTIVE TO WRK-SQL-STATUS. + * + *** OVT-APPLICATIONSにINSERT + EXEC SQL + INSERT INTO OVT_APPLICATIONS + (APPL_ID, EMP_ID, APPL_DATE, OVT_TYPE, + START_TIME, END_TIME, OVT_HOURS, STATUS, + UPDATED_AT) + VALUES + (:WRK-SQL-APPL-ID, :WRK-SQL-EMP-ID, + :WRK-SQL-APPL-DATE, :WRK-SQL-OVT-TYPE, + :WRK-SQL-START-TIME, :WRK-SQL-END-TIME, + :WRK-SQL-OVT-HOURS, :WRK-SQL-STATUS, + CURRENT_TIMESTAMP) + END-EXEC. + * + IF SQLCODE NOT = 0 + *** 重複 → UPDATE + EXEC SQL + UPDATE OVT_APPLICATIONS SET + STATUS = :WRK-SQL-STATUS, + UPDATED_AT = CURRENT_TIMESTAMP + WHERE APPL_ID = :WRK-SQL-APPL-ID + END-EXEC + IF SQLCODE NOT = 0 + PERFORM 9100DBERRSOR + END-IF + ADD 1 TO CUN-DBXUPD + ELSE + ADD 1 TO CUN-DBXINS + END-IF. + * + ADD 1 TO CUN-COMMIT. + * + *** OVT-MONTHLY UPSERT + PERFORM 2110MONTHLYUPSOR. + * + *** COMMIT判定 + IF CUN-COMMIT >= CNS-COMMIT-CNT + PERFORM 2300COMMITDBX + END-IF. + * + 2100SUMMARYSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.1.1) * + * サブモジュール名:OVT-MONTHLY UPSERT処理 * + * 処理概要 : 月次集計テーブルへの追加/更新 * + ***************************************************************** + 2110MONTHLYUPSOR SECTION. + * + *** OVT-MONTHLY存在確認 + EXEC SQL + SELECT OVT_HOURS, OVT_COUNT + INTO :DB-OVT-HOURS, :DB-OVT-COUNT + FROM OVT_MONTHLY + WHERE EMP_ID = :WRK-SQL-EMP-ID + AND YEAR_MONTH = :WRK-SQL-YEAR-MONTH + AND OVT_TYPE = :WRK-SQL-OVT-TYPE + END-EXEC. + * + IF SQLCODE = 0 + *** 既存レコードあり → 加算UPDATE + EXEC SQL + UPDATE OVT_MONTHLY SET + OVT_HOURS = OVT_HOURS + :WRK-SQL-OVT-HOURS, + OVT_COUNT = OVT_COUNT + 1, + UPDATED_AT = CURRENT_TIMESTAMP + WHERE EMP_ID = :WRK-SQL-EMP-ID + AND YEAR_MONTH = :WRK-SQL-YEAR-MONTH + AND OVT_TYPE = :WRK-SQL-OVT-TYPE + END-EXEC + IF SQLCODE NOT = 0 + PERFORM 9100DBERRSOR + END-IF + ELSE + *** 新規 → INSERT + EXEC SQL + INSERT INTO OVT_MONTHLY + (EMP_ID, YEAR_MONTH, OVT_TYPE, + OVT_HOURS, OVT_COUNT, UPDATED_AT) + VALUES + (:WRK-SQL-EMP-ID, :WRK-SQL-YEAR-MONTH, + :WRK-SQL-OVT-TYPE, :WRK-SQL-OVT-HOURS, + 1, CURRENT_TIMESTAMP) + END-EXEC + IF SQLCODE NOT = 0 + PERFORM 9100DBERRSOR + END-IF + END-IF. + * + 2110MONTHLYUPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.2) * + * サブモジュール名:OVT-DBCLEAN→取消処理 * + * 処理概要 : OVT-APPLICATIONS取消+OVT-MONTHLY減算 * + ***************************************************************** + 2200DBCLEANSOR SECTION. + * + *** SQLホスト変数設定 + MOVE R02APPL-ID TO WRK-SQL-APPL-ID. + * + *** OVT-APPLICATIONSから既存データ取得 + EXEC SQL + SELECT EMP_ID, APPL_DATE, OVT_TYPE, OVT_HOURS + INTO :WRK-SQL-EMP-ID, :WRK-SQL-APPL-DATE, + :WRK-SQL-OVT-TYPE, :WRK-SQL-OVT-HOURS + FROM OVT_APPLICATIONS + WHERE APPL_ID = :WRK-SQL-APPL-ID + END-EXEC. + * + IF SQLCODE NOT = 0 + *** 該当なし(孤立取消)→ ERROR-LOG + ABEND + MOVE 20 TO WRK-ERR-CATEGORY + STRING 'ORPHAN CANCEL APPL-ID=' + WRK-SQL-APPL-ID DELIMITED BY SIZE + INTO WRK-ERR-DETAIL + END-STRING + MOVE WRK-ERR-CATEGORY TO W01ERR-CATEGORY + MOVE WRK-ERR-DETAIL TO W01ERR-DETAIL + WRITE W01OUTREC + ADD 1 TO CUN-W01OUT + PERFORM 9999ABDSOR + END-IF. + * + *** 年月抽出 + MOVE WRK-SQL-APPL-DATE TO WRK-APPL-DATE-N. + MOVE WRK-APPL-DATE-N(1:6) TO WRK-YEAR-MONTH. + MOVE WRK-YEAR-MONTH TO WRK-SQL-YEAR-MONTH. + * + *** OVT-APPLICATIONSステータス更新(取消) + EXEC SQL + UPDATE OVT_APPLICATIONS SET + STATUS = :CNS-STATUS-CANCEL, + UPDATED_AT = CURRENT_TIMESTAMP + WHERE APPL_ID = :WRK-SQL-APPL-ID + END-EXEC. + * + IF SQLCODE NOT = 0 + PERFORM 9100DBERRSOR + END-IF. + * + ADD 1 TO CUN-DBXUPD. + ADD 1 TO CUN-COMMIT. + * + *** OVT-MONTHLY減算 + PERFORM 2210MONTHLYSUBSOR. + * + 2200DBCLEANSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.2.1) * + * サブモジュール名:OVT-MONTHLY減算処理 * + * 処理概要 : 月次集計テーブルからの減算 * + ***************************************************************** + 2210MONTHLYSUBSOR SECTION. + * + *** リトライカウンタ設定 + MOVE 3 TO WRK-RETRY-CNT. + * + *** PERFORM TEST AFTER カバレッジ + PERFORM TEST AFTER + VARYING WRK-IDX + FROM 1 BY 1 + UNTIL WRK-IDX > WRK-RETRY-CNT + OR SQLCODE = 0 + EXEC SQL + UPDATE OVT_MONTHLY SET + OVT_HOURS = OVT_HOURS + - :WRK-SQL-OVT-HOURS, + OVT_COUNT = OVT_COUNT - 1, + UPDATED_AT = CURRENT_TIMESTAMP + WHERE EMP_ID = :WRK-SQL-EMP-ID + AND YEAR_MONTH = :WRK-SQL-YEAR-MONTH + AND OVT_TYPE = :WRK-SQL-OVT-TYPE + END-EXEC + IF SQLCODE NOT = 0 + EXEC SQL + ROLLBACK WORK + END-EXEC + END-IF + END-PERFORM. + * + IF SQLCODE NOT = 0 + *** 減算失敗 → データ不整合 + MOVE 21 TO WRK-ERR-CATEGORY + STRING 'MONTHLY SUBTRACT FAIL APPL-ID=' + WRK-SQL-APPL-ID DELIMITED BY SIZE + INTO WRK-ERR-DETAIL + END-STRING + MOVE WRK-ERR-CATEGORY TO W01ERR-CATEGORY + MOVE WRK-ERR-DETAIL TO W01ERR-DETAIL + WRITE W01OUTREC + ADD 1 TO CUN-W01OUT + PERFORM 9999ABDSOR + END-IF. + * + ADD 1 TO CUN-DBXUPD. + ADD 1 TO CUN-COMMIT. + * + *** COMMIT判定 + IF CUN-COMMIT >= CNS-COMMIT-CNT + PERFORM 2300COMMITDBX + END-IF. + * + 2210MONTHLYSUBSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(2.3) * + * サブモジュール名:COMMIT処理 * + * 処理概要 : DB COMMIT発行 * + ***************************************************************** + 2300COMMITDBX SECTION. + * + *** COMMIT + EXEC SQL + COMMIT WORK + END-EXEC. + * + MOVE ZERO TO CUN-COMMIT. + * + 2300COMMITDBX-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(3.0) * + * サブモジュール名:終了処理 * + * 処理概要 : 最終COMMIT・ファイルクローズ・件数出力 * + ***************************************************************** + 3000STPSOR SECTION. + * + *** 最終COMMIT + IF CUN-COMMIT > ZERO + PERFORM 2300COMMITDBX + END-IF. + * + *** 入出力ファイルCLOSE + CLOSE R01INNFIL + R02INNFIL + W01OUTFIL. + * + *** 件数メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN06R01' TO M00UMKDATS22-01. + MOVE CUN-R01INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'ZAN06R02' TO M00UMKDATS22-01. + MOVE CUN-R02INN TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'INS' TO M00UMKDATS22-01. + MOVE CUN-DBXINS TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGIINKES TO M00MSGCOD. + MOVE 'UPD' TO M00UMKDATS22-01. + MOVE CUN-DBXUPD TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + INITIALIZE M00MHOPAR. + MOVE CNS-MSGOUTKES TO M00MSGCOD. + MOVE 'ZAN06W01' TO M00UMKDATS22-01. + MOVE CUN-W01OUT TO M00UMKDATS22-02. + PERFORM 4000MSGOUTSOR. + * + *** 終了メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE CNS-MSGFIN TO M00MSGCOD. + PERFORM 4000MSGOUTSOR. + * + 3000STPSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(4.0) * + * サブモジュール名:メッセージ編集出力処理 * + * 処理概要 : メッセージ編集出力サブPGM呼出 * + ***************************************************************** + 4000MSGOUTSOR SECTION. + * + MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1). + MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1). + MOVE CNS-PRGIDX TO M00UMKDATS22-05. + CALL 'SUB02MSG' USING M00MHOPAR. + * + 4000MSGOUTSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.1) * + * サブモジュール名:DBエラー処理 * + * 処理概要 : DBエラー→ERROR-LOG出力+ROLLBACK+ABEND * + ***************************************************************** + 9100DBERRSOR SECTION. + * + *** ERROR-LOG出力 + MOVE 30 TO WRK-ERR-CATEGORY. + MOVE SQLCODE TO WRK-SQLCODE-DISP. + STRING 'DB ERROR SQLCODE=' + WRK-SQLCODE-DISP DELIMITED BY SIZE + ' APPL-ID=' + WRK-SQL-APPL-ID DELIMITED BY SIZE + INTO WRK-ERR-DETAIL + END-STRING. + MOVE WRK-ERR-CATEGORY TO W01ERR-CATEGORY. + MOVE WRK-ERR-DETAIL TO W01ERR-DETAIL. + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + *** ROLLBACK + EXEC SQL + ROLLBACK WORK + END-EXEC. + * + MOVE ZERO TO CUN-COMMIT. + * + PERFORM 9999ABDSOR. + * + 9100DBERRSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO:(9.9) * + * サブモジュール名:ABEND処理 * + * 処理概要 : ABENDサブPGM呼出 * + ***************************************************************** + 9999ABDSOR SECTION. + * + MOVE CNS-ABD999 TO E01ABDCOD. + CALL 'SUB03END' USING E01ABDPAR. + * + 9999ABDSOR-EXT. + EXIT. diff --git a/production/sub/SUB01DAT.cbl b/production/sub/SUB01DAT.cbl new file mode 100644 index 0000000..45322fb --- /dev/null +++ b/production/sub/SUB01DAT.cbl @@ -0,0 +1,57 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. SUB01DAT. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : SUB01DAT * + * プログラム名 : 運用日付取得サブ * + * 作成日 : 2026-06-14 * + * 処理概要 : FUNCTION CURRENT-DATEにより現在日付を取得 * + * しYYYYMMDD形式で返す * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-14 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + DATA DIVISION. + ***************************************************************** + WORKING-STORAGE SECTION. + ***************************************************************** + 01 WRKARA. + 03 WRK-SYS-DATE PIC X(026). + 03 WRK-DATE-8 PIC 9(008). + * + ***************************************************************** + * リンケージエリア * + ***************************************************************** + LINKAGE SECTION. + * + 01 D01UBSPAR. + 03 D01FKICOD PIC S9(004) COMP. + 03 D01UBSUDATE PIC 9(008). + * + PROCEDURE DIVISION USING D01UBSPAR. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAINSOR SECTION. + * + *** 現在日付を取得する + MOVE FUNCTION CURRENT-DATE TO WRK-SYS-DATE. + *** YYYYMMDD部分を抽出 + MOVE WRK-SYS-DATE(1:8) TO D01UBSUDATE. + *** 正常終了 + MOVE ZERO TO D01FKICOD. + * + 0000MAINSOR-EXT. + GOBACK. diff --git a/production/sub/SUB02MSG.cbl b/production/sub/SUB02MSG.cbl new file mode 100644 index 0000000..da735b7 --- /dev/null +++ b/production/sub/SUB02MSG.cbl @@ -0,0 +1,76 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. SUB02MSG. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : SUB02MSG * + * プログラム名 : メッセージ編集出力サブ * + * 作成日 : 2026-06-14 * + * 処理概要 : メッセージ番号とパラメータを編集し * + * 標準出力へ出力する * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-14 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + DATA DIVISION. + ***************************************************************** + WORKING-STORAGE SECTION. + ***************************************************************** + 01 WRKARA. + 03 WRK-MSG-LINE PIC X(303). + * + ***************************************************************** + * リンケージエリア * + ***************************************************************** + LINKAGE SECTION. + * + 01 M00MHOPAR. + 03 M00MSGCOD PIC 9(003). + 03 M00UMKDATS22-01 PIC X(030). + 03 M00UMKDATS22-02 PIC X(030). + 03 M00UMKDATS22-03 PIC X(030). + 03 M00UMKDATS22-04 PIC X(030). + 03 M00UMKDATS22-05 PIC X(030). + 03 M00UMKDATS22-06 PIC X(030). + 03 M00UMKDATS22-07 PIC X(030). + 03 M00UMKDATS22-08 PIC X(030). + 03 M00UMKDATS22-09 PIC X(030). + 03 M00UMKDATS22-10 PIC X(030). + * + PROCEDURE DIVISION USING M00MHOPAR. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAINSOR SECTION. + * + *** メッセージ行を編集する + STRING 'MSG[' + M00MSGCOD + '] P1=' + M00UMKDATS22-01 + ' P2=' + M00UMKDATS22-02 + ' P3=' + M00UMKDATS22-03 + ' P4=' + M00UMKDATS22-04 + ' P5=' + M00UMKDATS22-05 + INTO WRK-MSG-LINE + END-STRING. + *** 標準出力へ出力 + DISPLAY WRK-MSG-LINE. + * + 0000MAINSOR-EXT. + GOBACK. diff --git a/production/sub/SUB03END.cbl b/production/sub/SUB03END.cbl new file mode 100644 index 0000000..3467ca0 --- /dev/null +++ b/production/sub/SUB03END.cbl @@ -0,0 +1,55 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. SUB03END. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : SUB03END * + * プログラム名 : ABEND処理サブ * + * 作成日 : 2026-06-14 * + * 処理概要 : ABENDコードを表示しプログラムを異常終了 * + * させる * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-14 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + DATA DIVISION. + ***************************************************************** + WORKING-STORAGE SECTION. + ***************************************************************** + 01 WRKARA. + 03 WRK-ABEND-MSG PIC X(020). + * + ***************************************************************** + * リンケージエリア * + ***************************************************************** + LINKAGE SECTION. + * + 01 E01ABDPAR. + 03 E01ABDCOD PIC 9(003). + * + PROCEDURE DIVISION USING E01ABDPAR. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAINSOR SECTION. + * + *** 異常終了メッセージを表示する + MOVE 'ABEND CODE=' TO WRK-ABEND-MSG. + MOVE E01ABDCOD TO WRK-ABEND-MSG(12:3). + DISPLAY WRK-ABEND-MSG. + *** プログラムを異常終了させる + STOP RUN. + * + 0000MAINSOR-EXT. + GOBACK. diff --git a/production/sub/SUB04CHK.cbl b/production/sub/SUB04CHK.cbl new file mode 100644 index 0000000..2fbe4b3 --- /dev/null +++ b/production/sub/SUB04CHK.cbl @@ -0,0 +1,213 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. SUB04CHK. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : SUB04CHK * + * プログラム名 : 項目チェックサブ * + * 作成日 : 2026-06-14 * + * 処理概要 : 指定されたタイプによりデータ項目の妥当性 * + * をチェックする * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-14 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + DATA DIVISION. + ***************************************************************** + WORKING-STORAGE SECTION. + ***************************************************************** + 01 WRKARA. + 03 WRK-RETURN-CODE PIC 9(004). + 03 WRK-SIGN PIC S9(004). + 03 WRK-NN PIC 9(004). + 03 WRK-DIGIT PIC 9(004). + 03 WRK-ALPHA PIC 9(004). + * + ***************************************************************** + * リンケージエリア * + ***************************************************************** + LINKAGE SECTION. + * + 01 C01CHKPAR. + 03 C01CHKTYP PIC X(008). + 03 C01CHKDAT PIC X(080). + 03 C01CHKRRC PIC 9(004). + * + PROCEDURE DIVISION USING C01CHKPAR. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAINSOR SECTION. + * + *** チェックタイプにより分岐する + EVALUATE C01CHKTYP + *** 日付チェック(YYYYMMDD) + WHEN 'DATE' + PERFORM 1000CHKDATE + *** 時刻チェック(HHMM) + WHEN 'TIME' + PERFORM 2000CHKTIME + *** 数字チェック + WHEN 'NUM' + PERFORM 3000CHKNUM + *** 社員番号チェック(英数字8桁) + WHEN 'EMPID' + PERFORM 4000CHKEMP + WHEN OTHER + MOVE 9999 TO WRK-RETURN-CODE + END-EVALUATE. + * + *** 復帰コードを設定して復帰 + MOVE WRK-RETURN-CODE TO C01CHKRRC. + * + 0000MAINSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 日付チェック * + * 処理概要 : YYYYMMDD形式の妥当性チェック * + ***************************************************************** + 1000CHKDATE SECTION. + * + *** 月チェック(桁位置5〜6: 01-12) + MOVE FUNCTION NUMVAL( + C01CHKDAT(5:2)) TO WRK-NN. + IF (WRK-NN < 1) OR (WRK-NN > 12) THEN + MOVE 0001 TO WRK-RETURN-CODE + GO TO 1000CHKDATE-EXT + END-IF. + *** 日チェック(桁位置7〜8: 01-31) + MOVE FUNCTION NUMVAL( + C01CHKDAT(7:2)) TO WRK-NN. + IF (WRK-NN < 1) OR (WRK-NN > 31) THEN + MOVE 0001 TO WRK-RETURN-CODE + GO TO 1000CHKDATE-EXT + END-IF. + *** 正常 + MOVE ZERO TO WRK-RETURN-CODE. + * + 1000CHKDATE-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (2.0) * + * サブモジュール名: 時刻チェック * + * 処理概要 : HHMM形式の妥当性チェック * + ***************************************************************** + 2000CHKTIME SECTION. + * + *** 時チェック(桁位置1〜2: 00-23) + MOVE FUNCTION NUMVAL( + C01CHKDAT(1:2)) TO WRK-NN. + IF (WRK-NN > 23) THEN + MOVE 0002 TO WRK-RETURN-CODE + GO TO 2000CHKTIME-EXT + END-IF. + *** 分チェック(桁位置3〜4: 00-59) + MOVE FUNCTION NUMVAL( + C01CHKDAT(3:2)) TO WRK-NN. + IF (WRK-NN > 59) THEN + MOVE 0002 TO WRK-RETURN-CODE + GO TO 2000CHKTIME-EXT + END-IF. + *** 正常 + MOVE ZERO TO WRK-RETURN-CODE. + * + 2000CHKTIME-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (3.0) * + * サブモジュール名: 数字チェック * + * 処理概要 : 全桁が数字であることをチェック * + ***************************************************************** + 3000CHKNUM SECTION. + * + *** 空チェック(全スペース→正常=オプショナル) + INSPECT C01CHKDAT + TALLYING WRK-NN FOR + LEADING SPACES. + IF WRK-NN = LENGTH OF C01CHKDAT + MOVE ZERO TO WRK-RETURN-CODE + GO TO 3000CHKNUM-EXT + END-IF. + *** 数字(0-9)とスペースのみをカウント + INSPECT C01CHKDAT + TALLYING WRK-NN + FOR ALL "0" "1" "2" "3" "4" + "5" "6" "7" "8" "9" + SPACE. + IF WRK-NN NOT = LENGTH OF C01CHKDAT + MOVE 0003 TO WRK-RETURN-CODE + GO TO 3000CHKNUM-EXT + END-IF. + *** 正常 + MOVE ZERO TO WRK-RETURN-CODE. + * + 3000CHKNUM-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (4.0) * + * サブモジュール名: 社員番号チェック * + * 処理概要 : 英数字8桁のチェック * + ***************************************************************** + 4000CHKEMP SECTION. + * + *** 桁数チェック(8桁) + IF C01CHKDAT(9:72) NOT = SPACES THEN + MOVE 0004 TO WRK-RETURN-CODE + GO TO 4000CHKEMP-EXT + END-IF. + *** 空チェック(全8桁がスペース→必須エラー) + IF C01CHKDAT(1:8) = SPACES + MOVE 0004 TO WRK-RETURN-CODE + GO TO 4000CHKEMP-EXT + END-IF. + *** 数字(0-9)カウント + MOVE ZERO TO WRK-DIGIT. + INSPECT C01CHKDAT(1:8) + TALLYING WRK-DIGIT + FOR ALL "0" "1" "2" "3" "4" + "5" "6" "7" "8" "9". + *** 英字(A-Z a-z)カウント + MOVE ZERO TO WRK-ALPHA. + INSPECT C01CHKDAT(1:8) + TALLYING WRK-ALPHA + FOR ALL "A" "B" "C" "D" "E" + "F" "G" "H" "I" "J" + "K" "L" "M" "N" "O" + "P" "Q" "R" "S" "T" + "U" "V" "W" "X" "Y" + "Z" + "a" "b" "c" "d" "e" + "f" "g" "h" "i" "j" + "k" "l" "m" "n" "o" + "p" "q" "r" "s" "t" + "u" "v" "w" "x" "y" + "z". + *** スペースカウント + MOVE ZERO TO WRK-NN. + INSPECT C01CHKDAT(1:8) + TALLYING WRK-NN + FOR ALL SPACE. + *** 英数字以外(特殊文字)がないかチェック + ADD WRK-DIGIT TO WRK-ALPHA. + ADD WRK-NN TO WRK-ALPHA. + IF WRK-ALPHA NOT = 8 + MOVE 0004 TO WRK-RETURN-CODE + GO TO 4000CHKEMP-EXT + END-IF. + *** 正常 + MOVE ZERO TO WRK-RETURN-CODE. + * + 4000CHKEMP-EXT. + EXIT. diff --git a/production/sub/SUB05TIM.cbl b/production/sub/SUB05TIM.cbl new file mode 100644 index 0000000..5266721 --- /dev/null +++ b/production/sub/SUB05TIM.cbl @@ -0,0 +1,153 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. SUB05TIM. + ***************************************************************** + * システム名 : 残業統計管理システム * + * プログラムID : SUB05TIM * + * プログラム名 : 時刻丸め計算サブ * + * 作成日 : 2026-06-14 * + * 処理概要 : 時間値を指定単位で丸め計算する * + * * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 26-06-14 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + DATA DIVISION. + ***************************************************************** + WORKING-STORAGE SECTION. + ***************************************************************** + 01 WRKARA. + 03 WRK-MINUTES PIC S9(005). + 03 WRK-HOURS PIC S9(005)V9(001). + 03 WRK-REMAINDER PIC S9(005). + * + ***************************************************************** + * リンケージエリア * + ***************************************************************** + LINKAGE SECTION. + * + 01 T01TIMPAR. + 03 T01TIMHRS PIC 9(004)V9(001). + 03 T01TIMOUT PIC 9(004)V9(001). + 03 T01TIMRRC PIC 9(004). + * + PROCEDURE DIVISION USING T01TIMPAR. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAINSOR SECTION. + * + *** 丸めモードにより分岐する + EVALUATE T01TIMRRC + *** モード0: 0.5時間単位・切上 + WHEN 0 + PERFORM 1000RNDHALF + *** モード1: 0.1時間単位・切上 + WHEN 1 + PERFORM 2000RNDUP + *** モード2: 0.1時間単位・切捨 + WHEN 2 + PERFORM 3000RNDDOWN + *** モード3: 単純四捨五入(0.1h単位) + WHEN 3 + PERFORM 4000RNDNORMAL + WHEN OTHER + *** モード指定なし→そのまま出力 + MOVE T01TIMHRS TO T01TIMOUT + END-EVALUATE. + * + 0000MAINSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 0.5時間単位・切上 * + * 処理概要 : 30分単位で切り上げる * + ***************************************************************** + 1000RNDHALF SECTION. + * + *** 時間→分変換 + COMPUTE WRK-MINUTES = + T01TIMHRS * 60. + *** 30分単位で切り上げ + DIVIDE WRK-MINUTES BY 30 + GIVING WRK-HOURS + REMAINDER WRK-REMAINDER. + IF WRK-REMAINDER > 0 THEN + COMPUTE WRK-HOURS = + WRK-HOURS + 1 + END-IF. + *** 分→時間変換 + COMPUTE T01TIMOUT = + WRK-HOURS * 0.5. + * + 1000RNDHALF-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (2.0) * + * サブモジュール名: 0.1時間単位・切上 * + * 処理概要 : 6分単位で切り上げる * + ***************************************************************** + 2000RNDUP SECTION. + * + *** 時間→分変換 + COMPUTE WRK-MINUTES = + T01TIMHRS * 60. + *** 6分単位で切り上げ + DIVIDE WRK-MINUTES BY 6 + GIVING WRK-HOURS + REMAINDER WRK-REMAINDER. + IF WRK-REMAINDER > 0 THEN + COMPUTE WRK-HOURS = + WRK-HOURS + 1 + END-IF. + *** 分→時間変換 + COMPUTE T01TIMOUT = + WRK-HOURS * 0.1. + * + 2000RNDUP-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (3.0) * + * サブモジュール名: 0.1時間単位・切捨 * + * 処理概要 : 6分単位で切り捨てる * + ***************************************************************** + 3000RNDDOWN SECTION. + * + *** 時間→分変換 + COMPUTE WRK-MINUTES = + T01TIMHRS * 60. + *** 6分単位で切り捨て + DIVIDE WRK-MINUTES BY 6 + GIVING WRK-HOURS + REMAINDER WRK-REMAINDER. + *** 分→時間変換 + COMPUTE T01TIMOUT = + WRK-HOURS * 0.1. + * + 3000RNDDOWN-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (4.0) * + * サブモジュール名: 単純四捨五入(0.1h単位) * + * 処理概要 : 0.05を加算して切捨 * + ***************************************************************** + 4000RNDNORMAL SECTION. + * + *** 0.05を加算してV9(1)に収める + COMPUTE WRK-HOURS = + T01TIMHRS + 0.05. + *** V9(1)への代入で小数点第2位以下切捨 + MOVE WRK-HOURS TO T01TIMOUT. + * + 4000RNDNORMAL-EXT. + EXIT. diff --git a/production/使用資源一覧/KIN01INP_使用資源一覧.md b/production/使用資源一覧/KIN01INP_使用資源一覧.md new file mode 100644 index 0000000..bb60650 --- /dev/null +++ b/production/使用資源一覧/KIN01INP_使用資源一覧.md @@ -0,0 +1,51 @@ +# KIN01INP 使用資源一覧 + +## プログラム概要 +- **プログラムID**: KIN01INP +- **プログラム名**: 休暇申請CSV取込・検証処理 +- **処理概要**: CSV形式の休暇申請ファイルを読み込み、休暇種別テーブル検索と項目チェックを行い、ステータスによってWORK-LEAVEまたはERROR-LOGへ振り分ける。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| KIN01R01 | CSV-INPUT | 順編成 | F (固定長) | 80B | なし(自前定義) | +| KIN01W01 | WORK-LEAVE | 順編成 | F (固定長) | 80B | KIN01REC | +| KIN01W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | KIN05REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| KIN01REC | レコード定義(W01出力ファイル) | FILE SECTION | +| KIN05REC | エラーログレコード定義(W02出力ファイル) | FILE SECTION | +| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | +| ZANCHKAC | 項目チェックサブPGM連絡領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB01DAT | 運用日付取得 | 1000ITTSOR | +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | +| SUB03END | ABEND処理 | 9999ABDSOR | +| SUB04CHK | 日付/時刻/社員番号妥当性チェック | 2030VALIDATESOR | + +## 使用DB2テーブル + +なし(DB操作なし) + +## 処理フロー +1. 初期処理(開始メッセージ→休暇種別テーブル設定→運用日付取得→OPEN→初回読込) +2. CSV分解(UNSTRINGで8項目に分解) +3. 休暇種別テーブル検索(SEARCH) +4. エラー前提判定 + - フィールド数≠8 → ERROR-LOG出力(種別:F) + - 休暇種別未発見 → ERROR-LOG出力(種別:L) +5. ステータス判定 + - ステータス'1'(有効)→ 項目チェック(SUB04CHK: 開始日付/時刻、終了日付/時刻)→ WORK-LEAVE出力(APPL-ID=0) + - ステータス'9'(取消)→ WORK-LEAVE出力(APPL-ID保持、チェックなし) + - その他(エラー)→ ERROR-LOG出力(種別:S) +6. 終了処理(CLOSE→件数出力→終了メッセージ) diff --git a/production/使用資源一覧/KIN02UPD_使用資源一覧.md b/production/使用資源一覧/KIN02UPD_使用資源一覧.md new file mode 100644 index 0000000..7b20202 --- /dev/null +++ b/production/使用資源一覧/KIN02UPD_使用資源一覧.md @@ -0,0 +1,59 @@ +# KIN02UPD 使用資源一覧 + +## プログラム概要 +- **プログラムID**: KIN02UPD +- **プログラム名**: 休暇申請DB更新処理 +- **処理概要**: WORK-LEAVEファイルの各レコードをDB2テーブルLEAVE_RECORDSに反映する。ステータスに応じて新規登録(INSERT)、変更(DELETE+INSERT)、取消(DELETE)を行う。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| KIN01W01 | WORK-LEAVE | 順編成 | F (固定長) | 80B | KIN01REC | +| KIN02W01 | ERROR-LOG | 順編成 | V (可変長) | 200B | KIN05REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| KIN01REC | レコード定義(R01入力ファイル) | FILE SECTION | +| KIN05REC | エラーログレコード定義(W01出力) | FILE SECTION | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | +| SQLCA | SQL通信領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | +| SUB03END | ABEND処理 | 9999ABDSOR | + +## 使用DB2テーブル + +| テーブル名 | 操作 | 備考 | +|-----------|------|------| +| LEAVE_RECORDS | INSERT, DELETE | APPLICATION_ID=0→INSERT, >0→DELETE+INSERT, STATUS='9'→DELETE | + +## EXEC SQL一覧 + +| SQL種別 | 処理 | 実行条件 | 使用箇所 | +|---------|------|---------|---------| +| CONNECT | TO 'data/kin.db' | 常時 | 1000ITTSOR | +| INSERT | LEAVE_RECORDSへ追加 | STATUS='1' AND APPL-ID=0 | 2110INSERTSOR | +| DELETE | APPLICATION_ID一致削除+INSERT | STATUS='1' AND APPL-ID>0 | 2120UPDATESOR | +| INSERT | LEAVE_RECORDSへ追加(変更後) | STATUS='1' AND APPL-ID>0 | 2120UPDATESOR | +| DELETE | APPLICATION_ID一致削除 | STATUS='9' | 2130DELETESOR | +| COMMIT | WORK | 常時 | 3000STPSOR | +| ROLLBACK | WORK | SQLエラー時 | 9100DBERRSOR | + +## 処理フロー +1. 初期処理(開始メッセージ→DB接続→OPEN(R01/W01)→初回読込) +2. ホスト変数設定(R01→WS-*) +3. ロジック分岐(EVALUATE) + - STATUS='1' AND APPL-ID=0 → INSERT + - STATUS='1' AND APPL-ID>0 → DELETE + INSERT + - STATUS='9' → DELETE + - その他 → スキップ +4. SQLエラー時 → ROLLBACK + ERROR-LOG出力(W01) + エラーメッセージ + ABEND +5. 終了処理(COMMIT→CLOSE(R01/W01)→件数出力→終了メッセージ) diff --git a/production/使用資源一覧/KIN03EXP_使用資源一覧.md b/production/使用資源一覧/KIN03EXP_使用資源一覧.md new file mode 100644 index 0000000..675d953 --- /dev/null +++ b/production/使用資源一覧/KIN03EXP_使用資源一覧.md @@ -0,0 +1,61 @@ +# KIN03EXP 使用資源一覧 + +## プログラム概要 +- **プログラムID**: KIN03EXP +- **プログラム名**: 休暇日別展開処理 +- **処理概要**: LEAVE_RECORDS(DB2)より有効申請(STATUS='1')を読込み、開始日〜終了日の期間を日別に展開し、休日・週末を除外してLEAVE-DAILYファイルを出力する。社員番号キーブレイクで小計出力を行う。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| KIN02W01.DAT | LEAVE-DAILY | 順編成 | F (固定長) | 80B | KIN02REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| KIN02REC | レコード定義(W01出力ファイル) | FILE SECTION | +| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | +| SQLCA | SQL通信領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB01DAT | 運用日付取得 | 1000ITTSOR | +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | +| SUB03END | ABEND処理 | 9999ABDSOR | +| br_fetch_next | SQLカーソル次行FETCH(bridge) | 1100C1FETCHSOR, 1200HDINNSOR | +| br_get_col | SQLカラム値取得(bridge) | 1100C1FETCHSOR, 1200HDINNSOR | + +## 使用DB2テーブル + +| テーブル名 | 操作 | 備考 | +|-----------|------|------| +| LEAVE_RECORDS | SELECT | STATUS='1'、ORDER BY EMP_ID, START_DATE | +| HOLIDAY_CALENDAR | SELECT | 休日マスタ、ORDER BY HOLIDAY_DATE | + +## EXEC SQL一覧 + +| SQL種別 | 処理 | 実行条件 | 使用箇所 | +|---------|------|---------|---------| +| CONNECT | TO 'data/kin.db' | 常時 | 1000ITTSOR | +| SELECT | HOLIDAY_DATE FROM HOLIDAY_CALENDAR | 常時(初回のみ) | 1200HDINNSOR | +| SELECT | LEAVE_RECORDS(全件) | 常時(初回のみ) | 1100C1INITSOR | + +## 処理フロー +1. 初期処理(開始メッセージ→DB接続→運用日付取得) +2. 休日カレンダー全件読込(WORKING-STORAGEに格納) +3. 出力ファイルOPEN +4. DB初回FETCH(LEAVE_RECORDS:STATUS='1'、ORDER BY EMP_ID, START_DATE) +5. 社員番号キーブレイクループ + - 社員別に期間内を日別展開 + - 週末判定(MOD(INTEGER-OF-DATE,7)=0/6)→除外 + - 休日判定(SEARCH ALL on WRK-HOLIDAY-TABLE)→除外 + - 非週末・非休日 → LEAVE-DAILY出力 + - 日付加算(月跨ぎ/閏年対応) + - キーブレイク時:社員別小計メッセージ出力 +6. 終了処理(CLOSE→件数出力→終了メッセージ) diff --git a/production/使用資源一覧/ZAN01CHK_使用資源一覧.md b/production/使用資源一覧/ZAN01CHK_使用資源一覧.md new file mode 100644 index 0000000..38c9983 --- /dev/null +++ b/production/使用資源一覧/ZAN01CHK_使用資源一覧.md @@ -0,0 +1,48 @@ +# ZAN01CHK 使用資源一覧 + +## プログラム概要 +- **プログラムID**: ZAN01CHK +- **プログラム名**: 残業申請振分処理 +- **処理概要**: CSV形式の残業申請ファイルを読み込み、ステータスによって適切に振り分ける。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| ZAN01R01 | 入力CSV | 順編成 | F (固定長) | 80B | なし(自前定義) | +| ZAN01W01 | OVT-APPLY | 順編成 | F (固定長) | 80B | ZAN01REC | +| ZAN01W02 | OVT-CANCEL | 順編成 | F (固定長) | 80B | ZAN01REC | +| ZAN01W03 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| ZAN01REC | レコード定義(W01/W02出力ファイル) | FILE SECTION | +| ZAN05REC | エラーログレコード定義(W03出力ファイル) | FILE SECTION | +| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | +| ZANCHKAC | 項目チェックサブPGM連絡領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB01DAT | 運用日付取得 | 1000ITTSOR | +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | +| SUB03END | ABEND処理 | 9999ABDSOR | +| SUB04CHK | 日付/社員番号妥当性チェック | 2020VALIDATESOR | + +## 使用DB2テーブル + +なし(DB操作なし) + +## 処理フロー +1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込) +2. CSV分解(UNSTRING) +3. ステータス判定 + - ステータス'0'/'1'(有効)→ 項目チェック(SUB04CHK)→ W01出力 + - ステータス'9'(取消)→ W02出力 + - その他(エラー)→ W03出力 +4. 終了処理(CLOSE→件数出力→終了メッセージ) diff --git a/production/使用資源一覧/ZAN02CHK_使用資源一覧.md b/production/使用資源一覧/ZAN02CHK_使用資源一覧.md new file mode 100644 index 0000000..0cd1b7f --- /dev/null +++ b/production/使用資源一覧/ZAN02CHK_使用資源一覧.md @@ -0,0 +1,45 @@ +# ZAN02CHK 使用資源一覧 + +## プログラム概要 +- **プログラムID**: ZAN02CHK +- **プログラム名**: 時間帯重複チェック処理 +- **処理概要**: OVT-APPLYファイルの同一社員・同一日付内の開始時刻と終了時刻の重複をチェックする。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| ZAN02R01 | OVT-APPLY | 順編成 | F (固定長) | 80B | ZAN01REC | +| ZAN02W01 | OVT-NODUP | 順編成 | F (固定長) | 80B | ZAN01REC | +| ZAN02W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| ZAN01REC | レコード定義(R01入力/W01出力) | FILE SECTION | +| ZAN05REC | エラーログレコード定義(W02出力) | FILE SECTION | +| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB01DAT | 運用日付取得 | 1000ITTSOR | +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | +| SUB03END | ABEND処理 | 9999ABDSOR | + +## 使用DB2テーブル + +なし(DB操作なし) + +## 処理フロー +1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込) +2. 1件目をそのままW01出力+前レコード保持 +3. メイン処理:キー比較 + - 同一社員+同一日付 かつ 前終了時刻>現開始時刻 → 重複エラー(W02出力) + - 同一社員+同一日付 かつ 重複なし → W01出力+前レコード更新 + - キーブレイク → 前レコード更新+W01出力 +4. 終了処理(CLOSE→件数出力→終了メッセージ) diff --git a/production/使用資源一覧/ZAN03CHK_使用資源一覧.md b/production/使用資源一覧/ZAN03CHK_使用資源一覧.md new file mode 100644 index 0000000..d4b6461 --- /dev/null +++ b/production/使用資源一覧/ZAN03CHK_使用資源一覧.md @@ -0,0 +1,49 @@ +# ZAN03CHK 使用資源一覧 + +## プログラム概要 +- **プログラムID**: ZAN03CHK +- **プログラム名**: 打刻時間照合処理 +- **処理概要**: OVT-NODUPとPUNCH-SORTEDを突合し申請時間帯の照合を行う。申請時間帯が出勤〜退勤の範囲内かを確認する。申請日が休日かを判定しOVT-TYPEを付加する。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| ZAN03R01 | OVT-NODUP | 順編成 | F (固定長) | 80B | ZAN01REC | +| ZAN03R02 | PUNCH-SORTED | 順編成 | F (固定長) | 80B | なし(自前定義:20B+56B) | +| ZAN03R03 | HOLIDAY | 順編成 | F (固定長) | 80B | なし(自前定義:9B+71B) | +| ZAN03W01 | OVT-CHECKED | 順編成 | F (固定長) | 80B | ZAN01REC | +| ZAN03W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| ZAN01REC | レコード定義(R01入力/W01出力) | FILE SECTION | +| ZAN05REC | エラーログレコード定義(W02出力) | FILE SECTION | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | + +## 使用DB2テーブル + +なし(DB操作なし) + +## 処理フロー +1. 初期処理(開始メッセージ→OPEN) +2. 休日ファイル(R03)全件読込→HOLIDAY-TABLE設定(OCCURS 1~366) +3. メイン処理:R01とR02のキー比較(社員番号+日付) + - R01 < R02 → 打刻データなしエラー(W02出力) + - R01 = R02 → 時間範囲チェック + - 申請時間帯が出勤〜退勤の範囲内 → OVT-TYPE設定(SEARCH ALL休日判定)→ W01出力 + - 範囲外 → エラー(W02出力) + - R01 > R02 → R02読み飛ばし +4. 終了処理(CLOSE→件数出力→終了メッセージ) + +## 備考 +- SUB01DAT不使用:日付取得不要のためFUNCTION CURRENT-DATEも使用しない +- R02FILLER = 56B(PUNCH-SORTEDのフォーマット:社員番号8B+日付8B+出勤4B+退勤4B+予備56B) \ No newline at end of file diff --git a/production/使用資源一覧/ZAN04MAT_使用資源一覧.md b/production/使用資源一覧/ZAN04MAT_使用資源一覧.md new file mode 100644 index 0000000..d5fa1f3 --- /dev/null +++ b/production/使用資源一覧/ZAN04MAT_使用資源一覧.md @@ -0,0 +1,48 @@ +# ZAN04MAT 使用資源一覧 + +## プログラム概要 +- **プログラムID**: ZAN04MAT +- **プログラム名**: 取消マッチング処理 +- **処理概要**: OVT-SORTED(有効申請)とOVT-CSORT(取消申請)を申請番号で1:1マッチングし、結果を振り分ける。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| ZAN04R01 | OVT-SORTED | 順編成 | F (固定長) | 80B | ZAN01REC | +| ZAN04R02 | OVT-CSORT | 順編成 | F (固定長) | 80B | ZAN01REC | +| ZAN04W01 | OVT-MATCHED | 順編成 | F (固定長) | 80B | ZAN02REC | +| ZAN04W02 | OVT-DBCLEAN | 順編成 | F (固定長) | 80B | ZAN04REC | +| ZAN04W03 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| ZAN01REC | レコード定義(R01/R02入力ファイル) | FILE SECTION | +| ZAN02REC | OVT-MATCHEDレコード定義(W01出力) | FILE SECTION | +| ZAN04REC | OVT-DBCLEANレコード定義(W02出力) | FILE SECTION | +| ZAN05REC | エラーログレコード定義(W03出力) | FILE SECTION | +| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB01DAT | 運用日付取得 | 1000ITTSOR | +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | +| SUB03END | ABEND処理 | 9999ABDSOR | + +## 使用DB2テーブル + +なし(DB操作なし) + +## 処理フロー +1. 初期処理(開始メッセージ→運用日付取得→OPEN→R01/R02初回読込) +2. メイン処理:マッチング(申請番号APPL-IDで1:1突合) + - R01キー = R02キー(マッチ) → 取消済み申請をERROR-LOG(W03)に出力(ERR-CATEGORY=04) + - R01キー < R02キー(R01のみ) → 有効申請をOVT-MATCHED(W01)に出力(STRING編集でPROC-SEQ=01付加) + - R01キー > R02キー(R02のみ) → 取消申請をOVT-DBCLEAN(W02)に出力 +3. 終了処理(CLOSE→件数出力→終了メッセージ) diff --git a/production/使用資源一覧/ZAN05CAL_使用資源一覧.md b/production/使用資源一覧/ZAN05CAL_使用資源一覧.md new file mode 100644 index 0000000..0396955 --- /dev/null +++ b/production/使用資源一覧/ZAN05CAL_使用資源一覧.md @@ -0,0 +1,50 @@ +# ZAN05CAL 使用資源一覧 + +## プログラム概要 +- **プログラムID**: ZAN05CAL +- **プログラム名**: 残業時間集計処理 +- **処理概要**: OVT-SORTED2(申請番号+処理番号昇順)をキーブレイク集計し、同一APPL-ID内の全明細の加班時間を積算してOVT-SUMMARYに1レコード出力。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| ZAN05R01 | OVT-SORTED2 | 順編成 | F (固定長) | 80B | ZAN02REC | +| ZAN05W01 | OVT-SUMMARY | 順編成 | F (固定長) | 80B | ZAN03REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| ZAN02REC | OVT-MATCHEDレコード定義(R01入力) | FILE SECTION | +| ZAN03REC | OVT-SUMMARYレコード定義(W01出力) | FILE SECTION | +| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | +| ZANTIMAC | 時刻丸めサブPGM連絡領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB01DAT | 運用日付取得 | 1000ITTSOR | +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | +| SUB03END | ABEND処理 | 9999ABDSOR | +| SUB05TIM | 時刻丸め(0.1h単位切捨) | 2100OUTSOR | + +## 使用DB2テーブル + +なし(DB操作なし) + +## 処理フロー +1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込) +2. キーブレイク集計ループ + - キー変わり(APPL-ID) → 前グループ集計出力+累積リセット+新グループ開始 + - 同一グループ → 現レコード時間差分をWRK-ACCUM-MINに積算+最新レコード上書き保持 + - EOF → 最終グループを出力 +3. 集計出力処理(2100OUTSOR) + - DIVIDE REMAINDERで時→分変換 + - COMPUTE ROUNDED ON SIZE ERROR + - SUB05TIM呼出(0.1h単位切捨て丸め) + - OVT-SUMMARY出力(グループ先頭START・最新END・積算OVT-HOURS) +4. 終了処理(CLOSE→件数出力→終了メッセージ) diff --git a/production/使用資源一覧/ZAN06UPD_使用資源一覧.md b/production/使用資源一覧/ZAN06UPD_使用資源一覧.md new file mode 100644 index 0000000..00fe3c5 --- /dev/null +++ b/production/使用資源一覧/ZAN06UPD_使用資源一覧.md @@ -0,0 +1,72 @@ +# ZAN06UPD 使用資源一覧 + +## プログラム概要 +- **プログラムID**: ZAN06UPD +- **プログラム名**: 残業統計DB更新処理 +- **処理概要**: OVT-SUMMARYの各レコードをDBにINSERT/UPSERTし、OVT-DBCLEANの各レコードについて該当申請を取消状態に更新する。DB2テーブル操作を含む全サブシステムB唯一のDB更新プログラム。 + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| ZAN06R01 | OVT-SUMMARY | 順編成 | F (固定長) | 80B | ZAN03REC | +| ZAN06R02 | OVT-DBCLEAN | 順編成 | F (固定長) | 80B | ZAN04REC | +| ZAN06W01 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| ZAN03REC | OVT-SUMMARYレコード定義(R01入力) | FILE SECTION | +| ZAN04REC | OVT-DBCLEANレコード定義(R02入力) | FILE SECTION | +| ZAN05REC | エラーログレコード定義(W01出力) | FILE SECTION | +| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | +| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB01DAT | 運用日付取得 | 1000ITTSOR | +| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | +| SUB03END | ABEND処理 | 9999ABDSOR | + +## 使用DB2テーブル + +| テーブル名 | 操作種別 | 説明 | +|------------|---------|------| +| OVT_APPLICATIONS | INSERT / UPDATE | 申請データ登録・更新(取消) | +| OVT_MONTHLY | SELECT / INSERT / UPDATE | 月次集計テーブル(加算・減算) | + +## 実行SQL一覧 + +| SQL種別 | 内容 | 該当箇所 | +|---------|------|---------| +| CONNECT TO | DB接続(data\OVERTIME.DB) | 1000ITTSOR | +| INSERT INTO ... OVT_APPLICATIONS | 申請データ新規登録 | 2100SUMMARYSOR | +| UPDATE ... OVT_APPLICATIONS | 重複時更新(STATUS) | 2100SUMMARYSOR | +| SELECT ... OVT_MONTHLY | 月次集計存在確認 | 2110MONTHLYUPSOR | +| UPDATE ... OVT_MONTHLY (+加算) | 月次集計加算 | 2110MONTHLYUPSOR | +| INSERT INTO ... OVT_MONTHLY | 月次集計新規作成 | 2110MONTHLYUPSOR | +| SELECT ... OVT_APPLICATIONS | 取消データ取得 | 2200DBCLEANSOR | +| UPDATE ... OVT_APPLICATIONS (取消) | 申請ステータス取消 | 2200DBCLEANSOR | +| UPDATE ... OVT_MONTHLY (-減算) | 月次集計減算(リトライ3回) | 2210MONTHLYSUBSOR | +| COMMIT WORK | 50件毎/最終コミット | 2300COMMITDBX | +| ROLLBACK WORK | DBエラー時ロールバック | 9100DBERRSOR | + +## 処理フロー +1. 初期処理(開始メッセージ→運用日付取得→OPEN→DB CONNECT→R01/R02初回読込) +2. フェーズ1(OVT-SUMMARY処理): + - SQLホスト変数設定(年月抽出・時刻変換・時間→分変換) + - OVT_APPLICATIONSにINSERT + - 成功 → INSERTカウンタ+1 + - 重複エラー(SQLCODE≠0) → UPDATE(STATUS更新) + - OVT_MONTHLY UPSERT(存在確認SELECT→UPDATE/INSERT) + - 50件毎にCOMMIT +3. フェーズ2(OVT-DBCLEAN処理): + - OVT_APPLICATIONSから既存データSELECT + - 該当なし(孤立取消) → ERROR-LOG出力+ABEND(999) + - OVT_APPLICATIONSステータス更新('9'=取消) + - OVT_MONTHLY減算(3回リトライ付きUPDATE) +4. 終了処理(最終COMMIT→CLOSE→件数出力→終了メッセージ) diff --git a/production/詳細設計書/COPY句定義書.md b/production/詳細設計書/COPY句定義書.md new file mode 100644 index 0000000..88485cd --- /dev/null +++ b/production/詳細設計書/COPY句定義書.md @@ -0,0 +1,542 @@ +# ファイル定義書 + +## 変更履歴 + +| No | 変更内容 | 担当者 | 変更日 | 承認者 | 備考 | +|----|---------|--------|--------|--------|------| +| 1 | 新規作成(ZAN系10部品) | AI | 2026/06/15 | | | +| 2 | KIN系6部品追加(KIN02-07REC) | AI | 2026/06/23 | | KIN07DAI実装に伴い追加 | + +--- + +# ZAN01REC — 加班申請レコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| OVT-VALID / OVT-CANCEL / OVT-SORTED / OVT-CSORT / OVT-VSORT / OVT-NODUP / OVT-CHECKED | ZAN01REC | PS | FB | 80 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 申請番号 | (A)APPL-ID | X(8) | 8 | | 1 | | | YYYYMMDD+SEQ | +| 2 | 03 | 社員番号 | (A)EMP-ID | 9(8) | 8 | | 9 | | | | +| 3 | 03 | 申請日 | (A)APPL-DATE | 9(8) | 8 | | 17 | | | YYYYMMDD | +| 4 | 03 | 開始時刻 | (A)START-TIME | 9(4) | 4 | | 25 | | | HHMM | +| 5 | 03 | 終了時刻 | (A)END-TIME | 9(4) | 4 | | 29 | | | HHMM | +| 6 | 03 | ステータス | (A)STATUS | X(1) | 1 | | 33 | | | 0:有効/1:確定/9:取消 | +| 7 | 03 | 残業種別 | (A)OVT-TYPE | X(1) | 1 | | 34 | | | W:平日/H:休日 | +| 8 | 03 | 予約 | (A)FILLER | X(46) | 46 | | 35 | | | | + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | +|-----------|--------------|------|-----| +| ZAN01CHK | W01 | OVT-VALID出力(STATUS=0/1) | O | +| ZAN01CHK | W02 | OVT-CANCEL出力(STATUS=9) | O | +| ZAN02CHK | R01 | OVT-VSORT入力 | I | +| ZAN02CHK | W01 | OVT-NODUP出力 | O | +| ZAN03CHK | R01 | OVT-NODUP入力 | I | +| ZAN03CHK | W01 | OVT-CHECKED出力 | O | +| ZAN04MAT | R01 | OVT-SORTED入力(有効申請) | I | +| ZAN04MAT | R02 | OVT-CSORT入力(取消申請) | I | + +--- + +# ZAN02REC — マッチング結果レコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| OVT-MATCHED | ZAN02REC | PS | FB | 80 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 申請番号 | (A)APPL-ID | X(8) | 8 | | 1 | | | | +| 2 | 03 | 社員番号 | (A)EMP-ID | 9(8) | 8 | | 9 | | | | +| 3 | 03 | 申請日 | (A)APPL-DATE | 9(8) | 8 | | 17 | | | YYYYMMDD | +| 4 | 03 | 開始時刻 | (A)START-TIME | 9(4) | 4 | | 25 | | | HHMM | +| 5 | 03 | 終了時刻 | (A)END-TIME | 9(4) | 4 | | 29 | | | HHMM | +| 6 | 03 | ステータス | (A)STATUS | X(1) | 1 | | 33 | | | | +| 7 | 03 | 残業種別 | (A)OVT-TYPE | X(1) | 1 | | 34 | | | W:平日/H:休日 | +| 8 | 03 | 処理番号 | (A)PROC-SEQ | 9(2) | 2 | | 35 | | | 01固定 | +| 9 | 03 | 予約 | (A)FILLER | X(44) | 44 | | 37 | | | | + +### ZAN01RECとの差分 + +| 項目 | ZAN01REC | ZAN02REC | +|------|----------|----------| +| 追加 | — | PROC-SEQ(9(2)) | +| FILLER | X(46) | X(44) | + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | +|-----------|--------------|------|-----| +| ZAN04MAT | W01 | OVT-MATCHED出力 | O | + +--- + +# ZAN03REC — 集約結果レコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| OVT-AGGREGATED | ZAN03REC | PS | FB | 80 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 申請番号 | (A)APPL-ID | X(8) | 8 | | 1 | | | | +| 2 | 03 | 社員番号 | (A)EMP-ID | 9(8) | 8 | | 9 | | | | +| 3 | 03 | 申請日 | (A)APPL-DATE | 9(8) | 8 | | 17 | | | YYYYMMDD | +| 4 | 03 | 開始時刻 | (A)START-TIME | 9(4) | 4 | | 25 | | | HHMM | +| 5 | 03 | 終了時刻 | (A)END-TIME | 9(4) | 4 | | 29 | | | HHMM | +| 6 | 03 | 残業時間 | (A)OVT-HOURS | 9(4)V9(1) | 5 | | 33 | | | HH.h(0.1h単位) | +| 7 | 03 | 残業種別 | (A)OVT-TYPE | X(1) | 1 | | 38 | | | W:平日/H:休日 | +| 8 | 03 | 予約 | (A)FILLER | X(42) | 42 | | 39 | | | | + +### ZAN01RECとの差分 + +| 項目 | ZAN01REC | ZAN03REC | +|------|----------|----------| +| 削除 | STATUS | — | +| 追加 | — | OVT-HOURS(9(4)V9(1)) | +| FILLER | X(46) | X(42) | + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | 備考 | +|-----------|--------------|------|-----|------| +| ZAN05CAL | (未定) | 集約結果出力 | O | 未実装 | + +--- + +# ZAN04REC — DBCLEAN対象レコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| OVT-DBCLEAN | ZAN04REC | PS | FB | 80 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 申請番号 | (A)APPL-ID | X(8) | 8 | | 1 | | | DB削除対象申請番号 | +| 2 | 03 | 予約 | (A)FILLER | X(72) | 72 | | 9 | | | | + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | +|-----------|--------------|------|-----| +| ZAN04MAT | W02 | OVT-DBCLEAN出力(APPL-IDのみ設定) | O | + +--- + +# ZAN05REC — エラーログレコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| ERROR-LOG | ZAN05REC | PS | VB | 200 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | エラーカテゴリ | (A)ERR-CATEGORY | 9(2) | 2 | | 1 | | | 01:項目CHK/02:重複/03:打刻不突合/03:取消監査 | +| 2 | 03 | エラー詳細 | (A)ERR-DETAIL | X(198) | 198 | | 3 | | | STRING編集値 | + +### 使用プログラム + +| プログラム | プレフィックス | エラーカテゴリ | I/O | +|-----------|--------------|---------------|-----| +| ZAN01CHK | W03 | 01(項目チェックエラー) | O | +| ZAN02CHK | W02 | 02(時間重複エラー) | O | +| ZAN03CHK | W02 | 03(打刻不突合エラー) | O | +| ZAN04MAT | W03 | 03(取消マッチ監査証跡) | O | + +--- + +# ZANDATAC — SUB01DAT 運用日付取得用連絡領域 + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| SUB01DAT連絡領域 | ZANDATAC | — | — | 10 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 01 | 運用日付パラメタ | D01UBSPAR | | | | 1 | | | CALL USING対象 | +| 2 | 03 | 復帰コード | D01FKICOD | S9(4) COMP | 2 | | 1 | | D01UBSPAR | 0000:正常 | +| 3 | 03 | 運用日付 | D01UBSUDATE | 9(8) | 8 | | 3 | | D01UBSPAR | YYYYMMDD | + +### 使用プログラム + +| プログラム | 呼出方法 | 備考 | +|-----------|---------|------| +| ZAN01CHK | CALL 'SUB01DAT' USING D01UBSPAR | 初期処理 | +| ZAN02CHK | CALL 'SUB01DAT' USING D01UBSPAR | 初期処理 | +| ZAN04MAT | CALL 'SUB01DAT' USING D01UBSPAR | 初期処理 | + +※ ZAN03CHKはFUNCTION CURRENT-DATEを使用し本COPY未使用 + +--- + +# ZANMSGAC — SUB02MSG メッセージ出力用連絡領域 + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| SUB02MSG連絡領域 | ZANMSGAC | — | — | 303 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 01 | メッセージパラメタ | M00MHOPAR | | | | 1 | | | CALL USING対象 | +| 2 | 03 | メッセージ番号 | M00MSGCOD | 9(3) | 3 | | 1 | | M00MHOPAR | | +| 3 | 03 | パラメータ1 | M00UMKDATS22-01 | X(30) | 30 | | 4 | | M00MHOPAR | | +| 4 | 03 | パラメータ2 | M00UMKDATS22-02 | X(30) | 30 | | 34 | | M00MHOPAR | | +| 5 | 03 | パラメータ3 | M00UMKDATS22-03 | X(30) | 30 | | 64 | | M00MHOPAR | | +| 6 | 03 | パラメータ4 | M00UMKDATS22-04 | X(30) | 30 | | 94 | | M00MHOPAR | | +| 7 | 03 | パラメータ5 | M00UMKDATS22-05 | X(30) | 30 | | 124 | | M00MHOPAR | | +| 8 | 03 | パラメータ6 | M00UMKDATS22-06 | X(30) | 30 | | 154 | | M00MHOPAR | | +| 9 | 03 | パラメータ7 | M00UMKDATS22-07 | X(30) | 30 | | 184 | | M00MHOPAR | | +| 10 | 03 | パラメータ8 | M00UMKDATS22-08 | X(30) | 30 | | 214 | | M00MHOPAR | | +| 11 | 03 | パラメータ9 | M00UMKDATS22-09 | X(30) | 30 | | 244 | | M00MHOPAR | | +| 12 | 03 | パラメータ10 | M00UMKDATS22-10 | X(30) | 30 | | 274 | | M00MHOPAR | | + +### 使用プログラム + +| プログラム | 呼出方法 | 備考 | +|-----------|---------|------| +| ZAN01CHK | CALL 'SUB02MSG' USING M00MHOPAR | | +| ZAN02CHK | CALL 'SUB02MSG' USING M00MHOPAR | | +| ZAN03CHK | CALL 'SUB02MSG' USING M00MHOPAR | | +| ZAN04MAT | CALL 'SUB02MSG' USING M00MHOPAR | | +| ZAN05CAL | CALL 'SUB02MSG' USING M00MHOPAR | | +| ZAN06UPD | CALL 'SUB02MSG' USING M00MHOPAR | | +| KIN01INP | CALL 'SUB02MSG' USING M00MHOPAR | | +| KIN02UPD | CALL 'SUB02MSG' USING M00MHOPAR | | +| KIN03EXP | CALL 'SUB02MSG' USING M00MHOPAR | | +| KIN04CHK | CALL 'SUB02MSG' USING M00MHOPAR | | +| KIN05MAT | CALL 'SUB02MSG' USING M00MHOPAR | | +| KIN06CLD | CALL 'SUB02MSG' USING M00MHOPAR | | +| KIN07DAI | CALL 'SUB02MSG' USING M00MHOPAR | | + +--- + +# ZANENDAC — SUB03END ABEND処理用連絡領域 + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| SUB03END連絡領域 | ZANENDAC | — | — | 3 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 01 | ABENDパラメタ | E01ABDPAR | | | | 1 | | | CALL USING対象 | +| 2 | 03 | ABENDコード | E01ABDCOD | 9(3) | 3 | | 1 | | E01ABDPAR | 999:汎用 | + +### 使用プログラム + +| プログラム | 呼出方法 | +|-----------|---------| +| ZAN01CHK | CALL 'SUB03END' USING E01ABDPAR | +| ZAN02CHK | CALL 'SUB03END' USING E01ABDPAR | +| ZAN03CHK | CALL 'SUB03END' USING E01ABDPAR | +| ZAN04MAT | CALL 'SUB03END' USING E01ABDPAR | +| ZAN05CAL | CALL 'SUB03END' USING E01ABDPAR | +| ZAN06UPD | CALL 'SUB03END' USING E01ABDPAR | +| KIN01INP | CALL 'SUB03END' USING E01ABDPAR | +| KIN02UPD | CALL 'SUB03END' USING E01ABDPAR | +| KIN03EXP | CALL 'SUB03END' USING E01ABDPAR | +| KIN04CHK | CALL 'SUB03END' USING E01ABDPAR | +| KIN05MAT | CALL 'SUB03END' USING E01ABDPAR | +| KIN06CLD | CALL 'SUB03END' USING E01ABDPAR | +| KIN07DAI | CALL 'SUB03END' USING E01ABDPAR | + +--- + +# ZANCHKAC — SUB04CHK 項目チェック用連絡領域 + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| SUB04CHK連絡領域 | ZANCHKAC | — | — | 92 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 01 | 項目チェックパラメタ | C01CHKPAR | | | | 1 | | | CALL USING対象 | +| 2 | 03 | チェックタイプ | C01CHKTYP | X(8) | 8 | | 1 | | C01CHKPAR | DATE/TIME/NUM/EMPID | +| 3 | 03 | チェック対象データ | C01CHKDAT | X(80) | 80 | | 9 | | C01CHKPAR | | +| 4 | 03 | 復帰コード | C01CHKRRC | 9(4) | 4 | | 89 | | C01CHKPAR | 0000:正常/0001:日付/0002:時刻/0003:数字/0004:社員番号/9999:不明 | + +### 使用プログラム + +| プログラム | 呼出方法 | 備考 | +|-----------|---------|------| +| ZAN01CHK | CALL 'SUB04CHK' USING C01CHKPAR | 日付/時刻チェック | + +--- + +# ZANTIMAC — SUB05TIM 時刻丸め用連絡領域 + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| SUB05TIM連絡領域 | ZANTIMAC | — | — | 14 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 01 | 時刻丸めパラメタ | T01TIMPAR | | | | 1 | | | CALL USING対象 | +| 2 | 03 | 入力時間 | T01TIMHRS | 9(4)V9(1) | 5 | | 1 | | T01TIMPAR | HH.h | +| 3 | 03 | 出力時間 | T01TIMOUT | 9(4)V9(1) | 5 | | 6 | | T01TIMPAR | 丸め後 | +| 4 | 03 | 丸めモード | T01TIMRRC | 9(4) | 4 | | 11 | | T01TIMPAR | 0:0.5h切上/1:0.1h切上/2:0.1h切捨/3:四捨五入 | + +### 使用プログラム + +| プログラム | 呼出方法 | 備考 | +|-----------|---------|------| +| ZAN05CAL | CALL 'SUB05TIM' USING T01TIMPAR | 残業時間丸め | +| KIN07DAI | CALL 'SUB05TIM' USING T01TIMPAR | 休暇時間丸め(0.1h切上) | + +--- + +# KIN02REC — 日別展開休暇レコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| LEAVE-DAILY | KIN02REC | PS | FB | 80 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 社員番号 | (A)EMP-ID | X(8) | 8 | | 1 | | | | +| 2 | 03 | 日付 | (A)DATE | 9(8) | 8 | | 9 | | | YYYYMMDD | +| 3 | 03 | 休暇種別 | (A)LEAVE-TYPE | X(2) | 2 | | 17 | | | 01/02/03/04 | +| 4 | 03 | 開始時刻 | (A)START-TIME | 9(4) | 4 | | 19 | | | HHMM | +| 5 | 03 | 終了時刻 | (A)END-TIME | 9(4) | 4 | | 23 | | | HHMM | +| 6 | 03 | 申請番号 | (A)APPL-ID | 9(9) | 9 | | 27 | | | | +| 7 | 03 | 予約 | (A)FILLER | X(45) | 45 | | 36 | | | | + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | +|-----------|--------------|------|-----| +| KIN03EXP | W02 | LEAVE-DAILY出力(日別展開結果) | O | +| KIN05MAT | R02 | LEAVE-DAILY入力(照合N側) | I | +| KIN07DAI | R03 | LEAVE-DAILY入力(休暇日別) | I | + +--- + +# KIN03REC — 打刻休暇照合レコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| KIN-LEAVE | KIN03REC | PS | FB | 160 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 社員番号 | (A)EMP-ID | X(8) | 8 | | 1 | | | | +| 2 | 03 | 勤怠日付 | (A)WORK-DATE | 9(8) | 8 | | 9 | | | YYYYMMDD | +| 3 | 03 | 出勤時刻 | (A)STR-TIME | 9(4) | 4 | | 17 | | | HHMM | +| 4 | 03 | 退勤時刻 | (A)END-TIME | 9(4) | 4 | | 21 | | | HHMM | +| 5 | 03 | 部門ID | (A)DEPT-ID | X(4) | 4 | | 25 | | | | +| 6 | 03 | 端末ID | (A)TERMINAL | X(6) | 6 | | 29 | | | | +| 7 | 03 | 予約 | (A)FILLER-1 | X(46) | 46 | | 35 | | | 打刻データ領域 | +| 8 | 03 | 休暇種別 | (A)LEAVE-TYPE | X(2) | 2 | | 81 | | | 01/02/03/04 | +| 9 | 03 | 休暇開始時刻 | (A)LEAVE-STR-TIME | 9(4) | 4 | | 83 | | | HHMM | +| 10 | 03 | 休暇終了時刻 | (A)LEAVE-END-TIME | 9(4) | 4 | | 87 | | | HHMM | +| 11 | 03 | 休暇時間 | (A)LEAVE-HOURS | 9(4)V9(1) | 5 | | 91 | | | 0.1h単位 | +| 12 | 03 | 申請番号 | (A)APPLICATION-ID | 9(9) | 9 | | 96 | | | | +| 13 | 03 | 予約 | (A)FILLER-2 | X(56) | 56 | | 105 | | | | + +### KIN04RECとの差分 + +前半80BはKIN04REC(打刻編集レコード)と同一レイアウト。後半80Bに休暇情報を追記して160B構成。 + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | +|-----------|--------------|------|-----| +| KIN05MAT | W01 | KIN-LEAVE出力(照合結果) | O | +| KIN07DAI | R02 | KIN-LEAVE入力(打刻+休暇) | I | + +--- + +# KIN04REC — 打刻編集レコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| EDITED-PUNCH | KIN04REC | PS | FB | 80 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 社員番号 | (A)EMP-ID | X(8) | 8 | | 1 | | | | +| 2 | 03 | 勤怠日付 | (A)WORK-DATE | 9(8) | 8 | | 9 | | | YYYYMMDD | +| 3 | 03 | 出勤時刻 | (A)STR-TIME | 9(4) | 4 | | 17 | | | HHMM | +| 4 | 03 | 退勤時刻 | (A)END-TIME | 9(4) | 4 | | 21 | | | HHMM | +| 5 | 03 | 部門ID | (A)DEPT-ID | X(4) | 4 | | 25 | | | | +| 6 | 03 | 端末ID | (A)TERMINAL | X(6) | 6 | | 29 | | | | +| 7 | 03 | 予約 | (A)FILLER | X(46) | 46 | | 35 | | | | + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | +|-----------|--------------|------|-----| +| KIN04CHK | W01 | EDITED-PUNCH出力(打刻編集結果) | O | +| KIN05MAT | R01 | EDITED-PUNCH入力(照合主駆動) | I | + +--- + +# KIN05REC — エラーログレコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| KERR-LOG | KIN05REC | PS | VB | 200 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | エラーカテゴリ | (A)ERR-CATEGORY | 9(2) | 2 | | 1 | | | 01:項目CHK/02:重複/03:打刻不突合 | +| 2 | 03 | エラー詳細 | (A)ERR-DETAIL | X(198) | 198 | | 3 | | | STRING編集値 | + +### ZAN05RECとの関係 + +ZAN05REC(残業側エラーログ)と同一レイアウト。別COPY IDだが実質同じ定義。 + +### 使用プログラム + +| プログラム | プレフィックス | エラーカテゴリ | I/O | +|-----------|--------------|---------------|-----| +| KIN01INP | W02 | 01(項目チェックエラー) | O | +| KIN02UPD | W03 | 02(DB更新エラー) | O | + +--- + +# KIN06REC — 出勤日カレンダーレコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| WORK-DAY-FILE | KIN06REC | PS | FB | 80 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 社員番号 | (A)EMP-ID | X(8) | 8 | | 1 | | | | +| 2 | 03 | 日付 | (A)DATE | 9(8) | 8 | | 9 | | | YYYYMMDD | +| 3 | 03 | 曜日 | (A)DAY-OF-WEEK | 9(1) | 1 | | 17 | | | 0=日/1=月/…/6=土 | +| 4 | 03 | 予約 | (A)FILLER | X(63) | 63 | | 18 | | | | + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | +|-----------|--------------|------|-----| +| KIN06CLD | W01 | WORK-DAY-FILE出力(カレンダー生成) | O | +| KIN07DAI | R01 | WORK-DAY-FILE入力(主駆動) | I | + +--- + +# KIN07REC — 日別勤怠計算レコード + +## Layout(レコードレイアウト) + +### ファイル基本情報 + +| ファイル名 | COPY ID | 媒体 | レコード形式 | レコード長 | +|-----------|---------|------|-------------|-----------| +| DAILY-RECORD | KIN07REC | PS | FB | 200 | + +### レコード定義 + +| No | レベル | 項目名 | 項目名(英字名) | 属性(PIC TYPE) | バイト数 | OCCURS | 開始位置 | REDEFINES | 所属グループ | 備考 | +|----|--------|--------|---------------|----------------|---------|--------|---------|-----------|-------------|------| +| 1 | 03 | 社員番号 | (A)EMP-ID | 9(8) | 8 | | 1 | | | | +| 2 | 03 | 日付 | (A)DATE | 9(8) | 8 | | 9 | | | YYYYMMDD | +| 3 | 03 | 出勤時刻 | (A)TIME-IN | 9(4) | 4 | | 17 | | | HHMM、打刻なし=0000 | +| 4 | 03 | 退勤時刻 | (A)TIME-OUT | 9(4) | 4 | | 21 | | | HHMM、打刻なし=0000 | +| 5 | 03 | 年休時間 | (A)ANNUAL-H | 9(4)V9(1) | 5 | | 25 | | | 0.1h単位(SUB05TIM丸め) | +| 6 | 03 | 事假時間 | (A)PERSONAL-H | 9(4)V9(1) | 5 | | 30 | | | 0.1h単位(SUB05TIM丸め) | +| 7 | 03 | 因公特批假時間 | (A)OFFICIAL-H | 9(4)V9(1) | 5 | | 35 | | | 0.1h単位(SUB05TIM丸め) | +| 8 | 03 | 病欠時間 | (A)SICK-H | 9(4)V9(1) | 5 | | 40 | | | 0.1h単位(SUB05TIM丸め) | +| 9 | 03 | 未申請欠勤時間 | (A)ABSENT-H | 9(4)V9(1) | 5 | | 45 | | | 8.0h固定(パターンD) | +| 10 | 03 | 予約 | (A)FILLER | X(151) | 151 | | 50 | | | | + +### 使用プログラム + +| プログラム | プレフィックス | 用途 | I/O | +|-----------|--------------|------|-----| +| KIN07DAI | W01 | DAILY-RECORD出力 | O | +| KIN08DBU | R01 | DAILY-RECORD入力(DB書込用) | I | diff --git a/production/詳細設計書/DB定義書.md b/production/詳細設計書/DB定義書.md new file mode 100644 index 0000000..58ddb85 --- /dev/null +++ b/production/詳細設計書/DB定義書.md @@ -0,0 +1,232 @@ +# DB定義書 + +## 変更履歴 + +| No | 変更内容 | 担当者 | 変更日 | 承認者 | 備考 | +|----|---------|--------|--------|--------|------| +| 1 | 新規作成(全8テーブル) | AI | 2026/06/23 | | サブシステムA(6) + B(2) | + +--- + +# EMP_MASTER — 社員マスタ + +## Layout(テーブル定義) + +### DB基本情報 + +| DB名 | DB ID | COPY ID | INDEX | +|------|-------|---------|-------| +| 勤怠休暇管理DB | EMP_MASTER | — | PK: EMP_ID | + +### カラム定義 + +| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 | +|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------| +| 1 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | | +| 2 | 部署ID | DEPT_ID | CHAR | 4 | | 4 | NOT NULL | | | | | | | +| 3 | 氏名 | EMP_NAME | VARCHAR | 50 | | 50 | NOT NULL | | | | | | | +| 4 | ステータス | STATUS | CHAR | 1 | | 1 | NOT NULL | | | | | | '1'=在籍, '9'=退職 | + +### 備考 + +- サブシステムA: 参照のみ(SELECT) +- サブシステムB: 使用しない + +--- + +# LEAVE_RECORDS — 休暇申請記録 + +## Layout(テーブル定義) + +### DB基本情報 + +| DB名 | DB ID | COPY ID | INDEX | +|------|-------|---------|-------| +| 勤怠休暇管理DB | LEAVE_RECORDS | — | PK: APPLICATION_ID | + +### カラム定義 + +| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 | +|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------| +| 1 | 申請番号 | APPLICATION_ID | INTEGER | 10 | | 4 | NOT NULL | | ✓ | | | | 自動採番 | +| 2 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | | | | | | +| 3 | 休暇種別 | LEAVE_TYPE | CHAR | 2 | | 2 | NOT NULL | | | | | | 01/02/03/04 | +| 4 | 開始日 | START_DATE | CHAR | 8 | | 8 | NOT NULL | | | | | | YYYYMMDD | +| 5 | 開始時刻 | START_TIME | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM | +| 6 | 終了日 | END_DATE | CHAR | 8 | | 8 | NOT NULL | | | | | | YYYYMMDD | +| 7 | 終了時刻 | END_TIME | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM | +| 8 | ステータス | STATUS | CHAR | 1 | | 1 | NOT NULL | | | | | | '1'=有効, '9'=取消 | + +### 備考 + +- KIN02UPDがINSERT/DELETEを実行 +- KIN03EXPがSELECT(日付展開用) +- 取消はDELETE FROM で物理削除 + +--- + +# HOLIDAY_CALENDAR — 休日カレンダー + +## Layout(テーブル定義) + +### DB基本情報 + +| DB名 | DB ID | COPY ID | INDEX | +|------|-------|---------|-------| +| 勤怠休暇管理DB | HOLIDAY_CALENDAR | — | PK: HOLIDAY_DATE | + +### カラム定義 + +| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 | +|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------| +| 1 | 休日日付 | HOLIDAY_DATE | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | YYYYMMDD | +| 2 | 説明 | DESCRIPTION | VARCHAR | 50 | | 50 | NULL許可 | NULL | | | | | 例:「建国記念の日」 | + +### 備考 + +- 土日は曜日判定で処理するため、このテーブルには祝日のみ格納 +- KIN03EXP, KIN06CLDがSELECTで参照 + +--- + +# SICK_LEAVE_RATE — 病欠控除率 + +## Layout(テーブル定義) + +### DB基本情報 + +| DB名 | DB ID | COPY ID | INDEX | +|------|-------|---------|-------| +| 勤怠休暇管理DB | SICK_LEAVE_RATE | — | PK: LEAVE_TYPE | + +### カラム定義 + +| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 | +|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------| +| 1 | 休暇種別 | LEAVE_TYPE | CHAR | 2 | | 2 | NOT NULL | | ✓ | | | | '04'固定 | +| 2 | 控除率 | DEDUCTION_RATE | DECIMAL | 3 | 2 | 3 | NOT NULL | | | | | | 例:0.50(50%控除) | + +### 備考 + +- 全社員共通の設定値 +- 現時点では参照プログラム未実装(設計上定義) + +--- + +# DAILY_RECORDS — 日別勤怠記録 + +## Layout(テーブル定義) + +### DB基本情報 + +| DB名 | DB ID | COPY ID | INDEX | +|------|-------|---------|-------| +| 勤怠休暇管理DB | DAILY_RECORDS | — | PK: (EMP_ID, TARGET_DATE) | + +### カラム定義 + +| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 | +|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------| +| 1 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | | +| 2 | 対象日 | TARGET_DATE | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | YYYYMMDD | +| 3 | 出勤時刻 | TIME_IN | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM, '0000'=打刻なし | +| 4 | 退勤時刻 | TIME_OUT | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM, '0000'=打刻なし | +| 5 | 年休時間 | ANNUAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 | +| 6 | 事假時間 | PERSONAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 | +| 7 | 因公特批假時間 | OFFICIAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 | +| 8 | 病欠時間 | SICK_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 | +| 9 | 未申請欠勤時間 | UNAPPROVED_ABSENT_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | 0.1h単位 | +| 10 | 更新日時 | UPDATED_AT | TIMESTAMP | — | | 10 | NOT NULL | | | | | | DEFAULT CURRENT_TIMESTAMP | + +### 備考 + +- KIN08DBUがKIN07DAIの出力ファイルからINSERT +- 1社員1日=1レコード。出勤日のみ存在。 + +--- + +# MONTHLY_ABSENCE — 月次統計 + +## Layout(テーブル定義) + +### DB基本情報 + +| DB名 | DB ID | COPY ID | INDEX | +|------|-------|---------|-------| +| 勤怠休暇管理DB | MONTHLY_ABSENCE | — | PK: (EMP_ID, YEAR_MONTH) | + +### カラム定義 + +| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 | +|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------| +| 1 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | | +| 2 | 対象年月 | YEAR_MONTH | CHAR | 6 | | 6 | NOT NULL | | ✓ | | | | YYYYMM | +| 3 | 年休合計 | ANNUAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | | +| 4 | 事假合計 | PERSONAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | | +| 5 | 因公特批假合計 | OFFICIAL_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | | +| 6 | 病欠合計 | SICK_LEAVE_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | | +| 7 | 未申請欠勤合計 | UNAPPROVED_ABSENT_H | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | | +| 8 | 更新日時 | UPDATED_AT | TIMESTAMP | — | | 10 | NOT NULL | | | | | | DEFAULT CURRENT_TIMESTAMP | + +### 備考 + +- KIN08DBUが月次集計後にUPSERT(MERGE) +- サブシステムC(給与計算)への連携元 + +--- + +# OVT_APPLICATIONS — 個別加班申請テーブル + +## Layout(テーブル定義) + +### DB基本情報 + +| DB名 | DB ID | COPY ID | INDEX | +|------|-------|---------|-------| +| 残業統計管理DB | OVT_APPLICATIONS | — | PK: APPL_ID | + +### カラム定義 + +| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 | +|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------| +| 1 | 申請番号 | APPL_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | YYYYMMDD+SEQ | +| 2 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | | | | | | +| 3 | 申請日 | APPL_DATE | CHAR | 8 | | 8 | NOT NULL | | | | | | YYYYMMDD | +| 4 | 残業種別 | OVT_TYPE | CHAR | 1 | | 1 | NOT NULL | | | | | | W=平日, H=休日 | +| 5 | 開始時刻 | START_TIME | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM | +| 6 | 終了時刻 | END_TIME | CHAR | 4 | | 4 | NOT NULL | | | | | | HHMM | +| 7 | 加班時間 | OVT_HOURS | DECIMAL | 4 | 1 | 4 | NOT NULL | | | | | | 0.1h単位 | +| 8 | ステータス | STATUS | CHAR | 1 | | 1 | NOT NULL | | | | | | 0=有効, 9=取消 | +| 9 | 更新日時 | UPDATED_AT | TIMESTAMP | — | | 10 | NOT NULL | | | | | | | + +### 備考 + +- ZAN06UPDがINSERT/UPDATEを実行 +- STATUS=9で取消(物理削除はしない) + +--- + +# OVT_MONTHLY — 月次集計テーブル + +## Layout(テーブル定義) + +### DB基本情報 + +| DB名 | DB ID | COPY ID | INDEX | +|------|-------|---------|-------| +| 残業統計管理DB | OVT_MONTHLY | — | PK: (EMP_ID, YEAR_MONTH, OVT_TYPE) | + +### カラム定義 + +| No | 項目名 | 項目名(英字名) | TYPE | 最大長 | 小数桁 | バイト数 | NULL | DEFAULT | PK | INDEX1 | INDEX2 | INDEX3 | 備考 | +|----|--------|---------------|------|--------|--------|---------|------|---------|----|--------|--------|--------|------| +| 1 | 社員番号 | EMP_ID | CHAR | 8 | | 8 | NOT NULL | | ✓ | | | | | +| 2 | 対象年月 | YEAR_MONTH | CHAR | 6 | | 6 | NOT NULL | | ✓ | | | | YYYYMM | +| 3 | 残業種別 | OVT_TYPE | CHAR | 1 | | 1 | NOT NULL | | ✓ | | | | W=平日, H=休日 | +| 4 | 加班時間合計 | OVT_HOURS | DECIMAL | 6 | 1 | 5 | NOT NULL | | | | | | | +| 5 | 加班回数 | OVT_COUNT | INTEGER | 10 | | 4 | NOT NULL | | | | | | | +| 6 | 更新日時 | UPDATED_AT | TIMESTAMP | — | | 10 | NOT NULL | | | | | | | + +### 備考 + +- ZAN06UPDが月次集計結果をUPSERT diff --git a/production/詳細設計書/詳細設計書_KIN01INP.md b/production/詳細設計書/詳細設計書_KIN01INP.md new file mode 100644 index 0000000..2d5b054 --- /dev/null +++ b/production/詳細設計書/詳細設計書_KIN01INP.md @@ -0,0 +1,153 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 勤怠休暇管理システム | +| 2 | プログラムID | KIN01INP | +| 3 | プログラム名 | 休暇申請CSV取込・検証処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | 振り分け | +| 6 | 機能概要 | CSV形式の休暇申請ファイルを読み込み、休暇種別テーブル検索と項目チェックを行い、ステータスによってWORK-LEAVEまたはERROR-LOGへ振り分ける。 | +| 7 | | ステータス'1':有効申請としてWORK-LEAVEに出力(項目チェック実施) | +| 8 | | ステータス'9':取消申請としてWORK-LEAVEに出力(項目チェックなし、APPL-ID保持) | +| 9 | | その他・フィールド数異常・休暇種別異常:ERROR-LOGに出力 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | KIN01R01(CSV) | ソート不要。CSV形式(カンマ区切り、8項目) | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | CSV-INPUT | R01 | KIN01R01 | I | 自前(80B) | F | | 80 | PS | CSV形式 | +| 2 | WORK-LEAVE | W01 | KIN01W01 | O | KIN01REC | FB | | 80 | PS | | +| 3 | ERROR-LOG | W02 | KIN01W02 | O | KIN05REC | VB | | 200 | PS | | + +### キー項目一覧 + +| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | +|----|-----------|---------------------|-------------------------------------------| +| 1 | CSV-INPUT | なし | なし | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC | +| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 3 | ABEND処理SUB | SUB03END | ZANENDAC | +| 4 | 項目チェックSUB | SUB04CHK | ZANCHKAC | + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化 + 1-4.休暇種別テーブル設定(WRK-LEAVE-TYPE-TABLE) + WRK-LT-CODE(1)='01' (年休/年假) + WRK-LT-CODE(2)='02' (事假) + WRK-LT-CODE(3)='03' (因公特批假) + WRK-LT-CODE(4)='04' (病欠) + 1-5.運用日付取得SUB(SUB01DAT)により運用日を取得する。 + 復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。 + 【メッセージ編集】 + メッセージ番号:5(サブエラー) + PARM1:'SUB01DAT' + PARM2:復帰コード + 【ABEND処理SUB】 + ABENDコード:999 + 1-6.使用ファイルのオープン(R01:入力、W01/W02:出力) + 1-7.R01を読み込む。(1100R01INNSOR)(1回目) + +2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す) + 2-1.CSVの分解(2010CSVSOR) + UNSTRINGでカンマ区切りのCSVを8項目に分解する。 + (APPL-ID, EMP-ID, START-DATE, START-TIME, END-DATE, END-TIME, LEAVE-TYPE, STATUS) + 2-2.休暇種別テーブル検索(2020LEAVSERSOR) + SEARCH(非ALL)でWRK-LEAVE-TYPE-TABLEを検索し、休暇種別の妥当性を検証する。 + 2-3.エラー判定 + 2-3-1.フィールド数≠8の場合 + ERROR-LOGに出力する。(2050ERRORSOR) + エラー種別:'F'(FIELD COUNT ERROR) + 2-3-2.休暇種別がテーブルに存在しない場合 + ERROR-LOGに出力する。(2050ERRORSOR) + エラー種別:'L'(INVALID LEAVE TYPE) + 2-3-3.ステータス'1'(有効)の場合 + 項目チェックを実施し、エラーがあればERROR-LOGに出力、なければWORK-LEAVEに出力する。(2030VALIDATESOR) + 2-3-3-1.SUB04CHKで社員番号チェック(EMPID): WRK-CSV-EMP-IDをC01CHKDATに設定し、CALL 'SUB04CHK' EMPIDタイプで社員番号フォーマットの妥当性を検証する。エラーの場合はW02ERR-CATEGORY='01'でエラーログに出力し本レコードをスキップ。 + 2-3-3-2.開始日付チェック(SUB04CHK)。エラー→W02出力 + 2-3-3-3.開始時刻チェック(SUB04CHK)。エラー→W02出力 + 2-3-3-4.終了日付チェック(SUB04CHK)。エラー→W02出力 + 2-3-3-5.終了時刻チェック(SUB04CHK)。エラー→W02出力 + 2-3-3-6.複合条件チェック(AND+OR+3段ネスト) + 開始日>0 AND 終了日>0 AND 開始時刻>0 の場合: + - 開始日>終了日 → WRK-DEMO-TYPE=10 + - 開始日=終了日 AND 開始時刻>=終了時刻 → WRK-DEMO-TYPE=10 + - 上記以外 → WRK-DEMO-TYPE=20 + 2-3-3-7.すべて通過→W01出力(APPL-ID=0, STATUS='1') + 2-3-4.ステータス'9'(取消)の場合 + WORK-LEAVEにそのまま出力する。(2040CANCELSOR) + APPL-ID=CSV値、STATUS='9'(項目チェックなし) + 2-3-5.その他のステータスの場合 + ERROR-LOGに出力する。(2050ERRORSOR) + エラー種別:'S'(INVALID STATUS) + 2-4.R01を読み込む。(1100R01INNSOR)(2件目以降) + +3.終了処理(3000STPSOR) + 3-1.入出力ファイルのクローズ + 3-2.入出力件数出力メッセージ出力 + 【入力メッセージ編集】 + メッセージ番号:6(入力件数メッセージ) + PARM1:'KIN01R01' + PARM2:当該入力ファイルの件数 + 【出力メッセージ編集】 + メッセージ番号:7(出力件数メッセージ) + PARM1:'KIN01W01'、'KIN01W02' + PARM2:当該出力ファイルの件数 + 3-3.終了メッセージ出力 + 【メッセージ編集】 + メッセージ番号:2(終了メッセージ) +``` + +--- + +## 出力レコード定義 + +### 出力ファイル1(W01/WORK-LEAVE) KIN01REC 80B FB + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | APPL-ID | WRK-CSV-APPL-ID | 有効時=0、取消時=CSV値 | +| 2 | EMP-ID | WRK-CSV-EMP-ID | | +| 3 | LEAVE-TYPE | WRK-CSV-LEAVE-TYPE | 01/02/03/04 | +| 4 | START-DATE | WRK-CSV-START-DATE | YYYYMMDD | +| 5 | START-TIME | WRK-CSV-START-TIME | HHMM | +| 6 | END-DATE | WRK-CSV-END-DATE | YYYYMMDD | +| 7 | END-TIME | WRK-CSV-END-TIME | HHMM | +| 8 | STATUS | WRK-CSV-STATUS | '1'(有効)または'9'(取消) | +| 9 | FILLER | SPACE | 36B | + +### 出力ファイル2(W02/ERROR-LOG) KIN05REC 200B VB + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | ERR-CATEGORY | '01'固定 | | +| 2 | ERR-DETAIL | STRING編集 | エラー内容(198B) | diff --git a/production/詳細設計書/詳細設計書_KIN02UPD.md b/production/詳細設計書/詳細設計書_KIN02UPD.md new file mode 100644 index 0000000..c447fb8 --- /dev/null +++ b/production/詳細設計書/詳細設計書_KIN02UPD.md @@ -0,0 +1,155 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 勤怠休暇管理システム | +| 2 | プログラムID | KIN02UPD | +| 3 | プログラム名 | 休暇申請DB更新処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | DB更新 | +| 6 | 機能概要 | WORK-LEAVEファイルの各レコードをDB2テーブルLEAVE_RECORDSに反映する。 | +| 7 | | ステータスによって新規登録(INSERT)、変更(DELETE+INSERT)、取消(DELETE)を行う。 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | KIN01W01 | KIN01INPの出力順に従う。ソート不要。 | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | WORK-LEAVE | R01 | KIN01W01 | I | KIN01REC | FB | | 80 | PS | | +| 2 | ERROR-LOG | W01 | KIN02W01 | O | KIN05REC | VB | | 200 | PS | DBエラー時出力 | +| 3 | LEAVE_RECORDS | DB | — | I/U/D | — | — | — | — | DB | SQLite | + +### キー項目一覧 + +| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | +|----|-----------|---------------------|-------------------------------------------| +| 1 | WORK-LEAVE | なし | なし | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 2 | ABEND処理SUB | SUB03END | ZANENDAC | + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化 + 1-4.DB接続 + EXEC SQL CONNECT TO 'data/kin.db' + 1-5.R01ファイルOPEN(入力)+ W01ファイルOPEN(出力) + 1-6.R01を初回読込(1100R01INNSOR) + +2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す) + 2-1.レコード処理(2100PROCSOR) + 2-1-1.R01各項目をホスト変数(WS-*)にMOVEする。 + 2-1-2.ロジック分岐判定(EVALUATE) + 2-1-2-1.STATUS='1' AND APPL-ID=0(新規)の場合 + INSERT処理(2110INSERTSOR) + 【SQL】 + INSERT INTO LEAVE_RECORDS + (EMP_ID, LEAVE_TYPE, START_DATE, START_TIME, + END_DATE, END_TIME, STATUS) + VALUES + (:WS-EMP-ID, :WS-LEAVE-TYPE, + :WS-START-DATE, :WS-START-TIME, + :WS-END-DATE, :WS-END-TIME, + :WS-STATUS) + SQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。 + CUN-DBXINSを+1する。 + 2-1-2-2.STATUS='1' AND APPL-ID>0(変更)の場合 + UPDATE処理(2120UPDATESOR) + 【SQL】 + DELETE FROM LEAVE_RECORDS + WHERE APPLICATION_ID = :WS-APPL-ID + INSERT INTO LEAVE_RECORDS + (EMP_ID, LEAVE_TYPE, START_DATE, START_TIME, + END_DATE, END_TIME, STATUS) + VALUES + (:WS-EMP-ID, :WS-LEAVE-TYPE, + :WS-START-DATE, :WS-START-TIME, + :WS-END-DATE, :WS-END-TIME, + :WS-STATUS) + 各SQLでSQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。 + CUN-DBXUPDを+1する。 + 2-1-2-3.STATUS='9'(取消)の場合 + DELETE処理(2130DELETESOR) + 【SQL】 + DELETE FROM LEAVE_RECORDS + WHERE APPLICATION_ID = :WS-APPL-ID + SQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。 + CUN-DBXDELを+1する。 + 2-1-2-4.その他 + 何も処理しない(CONTINUE) + 2-2.次レコード読込(1100R01INNSOR)(2件目以降) + +3.終了処理(3000STPSOR) + 3-1.COMMIT + EXEC SQL COMMIT WORK + 3-2.入出力ファイルのクローズ + 3-3.件数メッセージ出力 + 【メッセージ編集】 + メッセージ番号:6(入力件数) + PARM1:'KIN01W01' + PARM2:入力件数 + PARM1:'INS'、'UPD'、'DEL' + PARM2:各処理件数 + 3-4.終了メッセージ出力 + 【メッセージ編集】 + メッセージ番号:2(終了メッセージ) + +4.DBエラー処理(9100DBERRSOR) + 4-1.ROLLBACK + EXEC SQL ROLLBACK WORK + 4-2.ERROR-LOG出力(W01OUTFIL) + 【MOVE → INITIALIZE & WRITE】 + MOVE SQLCODE TO WRK-SQLCODE-DISP + W01ERR-CATEGORY = '01'(固定) + W01ERR-DETAIL = 'KIN02UPD SQLCODE=' + WRK-SQLCODE-DISP + ' APPL-ID=' + WS-APPL-ID + CUN-W01OUTを+1する。 + 4-3.エラーメッセージ出力 + 【メッセージ編集】 + メッセージ番号:5(サブエラー) + PARM1:'KIN02UPD SQL ERROR' + PARM2:SQLCODE + PARM3:WS-APPL-ID + 4-4.ABEND処理SUB呼出(9999ABDSOR) + ABENDコード:999 +``` + +--- + +## 出力レコード定義 + +### 出力ファイル1(W01/ERROR-LOG) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | ERR-CATEGORY | 01で固定 | DBエラー | + | 2 | ERR-DETAIL | STRINGで編集 | KIN02UPD SQLCODE= + WRK-SQLCODE-DISP + APPL-ID= + WS-APPL-ID | + +### DB更新結果 + +LEAVE_RECORDSテーブルに直接反映される。 diff --git a/production/詳細設計書/詳細設計書_KIN03EXP.md b/production/詳細設計書/詳細設計書_KIN03EXP.md new file mode 100644 index 0000000..853b1a3 --- /dev/null +++ b/production/詳細設計書/詳細設計書_KIN03EXP.md @@ -0,0 +1,170 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 勤怠休暇管理システム | +| 2 | プログラムID | KIN03EXP | +| 3 | プログラム名 | 休暇日別展開処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | キーブレイク(集計) | +| 6 | 機能概要 | LEAVE_RECORDS(DB2)より有効申請(STATUS='1')を読込み、開始日〜終了日の期間を日別に展開し、休日・週末を除外してLEAVE-DAILYファイルを出力する。 | +| 7 | | 社員番号(EMP_ID)キーブレイクで小計出力を行う。 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | DB(LEAVE_RECORDS) | EMP_ID, START_DATE順にソート済(ORDER BYで取得) | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | LEAVE-DAILY | W01 | KIN02W01.DAT | O | KIN02REC | FB | | 80 | PS | 日別展開後レコード | +| 2 | LEAVE_RECORDS | DB | — | I | — | — | — | — | DB | SQLite | +| 3 | HOLIDAY_CALENDAR | DB | — | I | — | — | — | — | DB | SQLite | + +### キー項目一覧 + +| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | +|----|-----------|---------------------|-------------------------------------------| +| 1 | DB(LEAVE_RECORDS) | EMP-ID, START_DATE(昇順) | キーブレイク: EMP-ID | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC | +| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 3 | ABEND処理SUB | SUB03END | ZANENDAC | + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化 + 1-4.DB接続 + EXEC SQL CONNECT TO 'data/kin.db' + 1-5.運用日付取得SUB(SUB01DAT)により運用日を取得する。 + 復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。 + 【メッセージ編集】 + メッセージ番号:5(サブエラー) + PARM1:'SUB01DAT' + PARM2:復帰コード + 【ABEND処理SUB】 + ABENDコード:999 + 1-6.休日カレンダーテーブル読込(1200HDINNSOR) + 【SQL】 + SELECT HOLIDAY_DATE FROM HOLIDAY_CALENDAR ORDER BY HOLIDAY_DATE + FETCHループでWORKING-STORAGEのWRK-HOLIDAY-TABLEに全件格納する。 + WRK-HD-COUNTに件数を保持。最大366件(ODO定義)。 + 1-7.出力ファイルOPEN(W01) + 1-8.C1カーソル初回FETCH(1100C1INITSOR) + 【SQL】 + SELECT APPLICATION_ID, EMP_ID, LEAVE_TYPE, + START_DATE, START_TIME, END_DATE, END_TIME + FROM LEAVE_RECORDS + WHERE STATUS = '1' + ORDER BY EMP_ID, START_DATE + INTO :SQL-APPL-ID, :SQL-EMP-ID, :SQL-LEAVE-TYPE, + :SQL-START-DATE, :SQL-START-TIME, + :SQL-END-DATE, :SQL-END-TIME + SQLCODE=0の場合、入力件数+1 + SQLCODE≠0の場合、WRK-R01EOF='1'(EOF) + +2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す) + 2-1.社員番号キー保存 + SQL-EMP-ID → WRK-BFR-EMP-ID + 2-2.1社員分処理(2100-PROCESS-EMP)(PERFORM THRU) + 2-2-1.CUN-EMP-SUB初期化(ZERO) + 2-2-2.EOFまたはキー変化(SQL-EMP-ID≠WRK-BFR-EMP-ID)まで繰り返し + 2-2-2-1.日付展開処理(2200-EXPAND-DATE)(PERFORM THRU) + 2-2-2-1-1.開始日(SQL-START-DATE)→WRK-DATE-CURRENT + 終了日(SQL-END-DATE)→WRK-DATE-END + 2-2-2-1-2.WRK-DATE-CURRENT > WRK-DATE-END までループ + 2-2-2-1-2-1.曜日判定 + COMPUTE WRK-DAY-OF-WEEK = FUNCTION MOD( + FUNCTION INTEGER-OF-DATE(WRK-DATE-CURRENT), 7) + 0=日曜日、6=土曜日 → 週末としてスキップ + 2-2-2-1-2-2.非週末の場合、休日テーブル検索 + SEARCH ALL WRK-HD-ENTRY(昇順KEY=WRK-HD-DATE) + WRK-HD-DATE(WRK-HD-IDX) = WRK-DATE-CURRENT → 休日としてスキップ + 2-2-2-1-2-3.非週末かつ非休日の場合、W01出力 + W01レコード初期化 + APPL-ID = SQL-APPL-ID + EMP-ID = WRK-BFR-EMP-ID + LEAVE-TYPE = SQL-LEAVE-TYPE + START-TIME = SQL-START-TIME + END-TIME = SQL-END-TIME + DATE = WRK-DATE-ALPHA(現在日付) + WRITE W01OUTREC + CUN-W01OUT +1 + CUN-EMP-SUB +1 + 2-2-2-1-2-4.日付加算(2300-DATE-ADD-1) + WRK-DATE-DAY + 1 + 各月の最終日判定: + - 1/3/5/7/8/10/12月:31日超で月+1、13月→年+1 + - 4/6/9/11月:30日超で月+1 + - 2月:閏年判定(MOD年400=0 または MOD年4=0 AND MOD年100≠0) + 閏年→29日超、平年→28日超で月+1 + 2-2-3.次レコードFETCH(1100C1FETCHSOR) + CALL 'br_fetch_next' USING SQLCODE + SQLCODE=0の場合、br_get_colで各カラムを取得 + SQLCODE≠0の場合、WRK-R01EOF='1' + 2-2-4.社員別小計出力(キーブレイク) + 【メッセージ編集】 + メッセージ番号:33(情報メッセージ) + PARM1:WRK-BFR-EMP-ID + PARM2:CUN-EMP-SUB + PARM3:'EMP SUB' + +3.終了処理(3000STPSOR) + 3-1.出力ファイルのクローズ + 3-2.件数メッセージ出力 + 【メッセージ編集】 + メッセージ番号:6(入力件数) + PARM1:'LEAVE_RECORDS' + PARM2:入力件数 + 【メッセージ編集】 + メッセージ番号:7(出力件数) + PARM1:'KIN02W01' + PARM2:出力件数 + 【メッセージ編集】 + メッセージ番号:33(情報) + PARM1:'HOLIDAYS LOADED' + PARM2:休日テーブル件数 + 3-3.終了メッセージ出力 + 【メッセージ編集】 + メッセージ番号:2(終了メッセージ) +``` + +--- + +## 出力レコード定義 + +### 出力ファイル1(W01/LEAVE-DAILY) KIN02REC 80B FB + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | EMP-ID | WRK-BFR-EMP-ID | キーブレイク単位 | +| 2 | DATE | WRK-DATE-ALPHA | 展開された日付(YYYYMMDD) | +| 3 | LEAVE-TYPE | SQL-LEAVE-TYPE | 01/02/03/04 | +| 4 | START-TIME | SQL-START-TIME | 元申請の開始時刻(HHMM) | +| 5 | END-TIME | SQL-END-TIME | 元申請の終了時刻(HHMM) | +| 6 | APPL-ID | SQL-APPL-ID | APPLICATION_ID | +| 7 | FILLER | SPACE | 45B | diff --git a/production/詳細設計書/詳細設計書_SUB01DAT.md b/production/詳細設計書/詳細設計書_SUB01DAT.md new file mode 100644 index 0000000..8f32bee --- /dev/null +++ b/production/詳細設計書/詳細設計書_SUB01DAT.md @@ -0,0 +1,52 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | SUB01DAT | +| 3 | プログラム名 | 運用日付取得サブ | +| 4 | PGMタイプ | サブ | +| 5 | PGMパターン | - | +| 6 | 機能概要 | 現在日付を取得し、運用日付(YYYYMMDD)として返す | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 使用方法 + +``` + CALL 'SUB01DAT' USING D01UBSPAR +``` + +### 入出力パラメータ + +| COPY句 | ZANDATAC | +|------------|----------| + +| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 | +|----|-----------|------|------|------|------| +| 1 | O | D01FKICOD | S9(4) COMP | 4 | 復帰コード(0000:正常) | +| 2 | O | D01UBSUDATE | 9(8) | 8 | 運用日付(YYYYMMDD) | + +### リターンコード一覧 + +| NO | コード | 説明 | +|----|--------|------| +| 1 | 0000 | 正常終了 | + +--- + +## 処理詳細 + +``` +1.制御処理(0000MAINSOR) + 1-1.現在日時を取得する。 + MOVE FUNCTION CURRENT-DATE TO WRK-SYS-DATE. + 1-2.YYYYMMDD部分を抽出する。 + MOVE WRK-SYS-DATE(1:8) TO D01UBSUDATE. + 1-3.正常終了 + MOVE ZERO TO D01FKICOD. + 1-4.復帰(GOBACK)。 +``` diff --git a/production/詳細設計書/詳細設計書_SUB02MSG.md b/production/詳細設計書/詳細設計書_SUB02MSG.md new file mode 100644 index 0000000..2407a62 --- /dev/null +++ b/production/詳細設計書/詳細設計書_SUB02MSG.md @@ -0,0 +1,72 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | SUB02MSG | +| 3 | プログラム名 | メッセージ編集出力サブ | +| 4 | PGMタイプ | サブ | +| 5 | PGMパターン | - | +| 6 | 機能概要 | メッセージ番号とパラメータを編集し、標準出力へ出力する。 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 使用方法 + +``` + CALL 'SUB02MSG' USING M00MHOPAR +``` + +### 入出力パラメータ + +| COPY句 | ZANMSGAC | +|------------|----------| + +| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 | +|----|-----------|------|------|------|------| +| 1 | I | M00MSGCOD | 9(3) | 3 | メッセージ番号 | +| 2 | I | M00UMKDATS22-01 | X(30) | 30 | パラメータ1 | +| 3 | I | M00UMKDATS22-02 | X(30) | 30 | パラメータ2 | +| 4 | I | M00UMKDATS22-03 | X(30) | 30 | パラメータ3 | +| 5 | I | M00UMKDATS22-04 | X(30) | 30 | パラメータ4 | +| 6 | I | M00UMKDATS22-05 | X(30) | 30 | パラメータ5 | +| 7 | I | M00UMKDATS22-06 | X(30) | 30 | パラメータ6 | +| 8 | I | M00UMKDATS22-07 | X(30) | 30 | パラメータ7 | +| 9 | I | M00UMKDATS22-08 | X(30) | 30 | パラメータ8 | +| 10 | I | M00UMKDATS22-09 | X(30) | 30 | パラメータ9 | +| 11 | I | M00UMKDATS22-10 | X(30) | 30 | パラメータ10 | + +### リターンコード一覧 + +| NO | コード | 説明 | +|----|--------|------| +| 1 | - | 復帰コードなし(GOBACKで復帰) | + +--- + +## 処理詳細 + +``` +1.制御処理(0000MAINSOR) + 1-1.メッセージ行(WRK-MSG-LINE)を編集する。 + STRING 'MSG[' + M00MSGCOD + '] P1=' + M00UMKDATS22-01 + ' P2=' + M00UMKDATS22-02 + ' P3=' + M00UMKDATS22-03 + ' P4=' + M00UMKDATS22-04 + ' P5=' + M00UMKDATS22-05 + INTO WRK-MSG-LINE + END-STRING. + 1-2.標準出力へ出力する。 + DISPLAY WRK-MSG-LINE. + 1-3.復帰(GOBACK)。 +``` diff --git a/production/詳細設計書/詳細設計書_SUB03END.md b/production/詳細設計書/詳細設計書_SUB03END.md new file mode 100644 index 0000000..d9d3297 --- /dev/null +++ b/production/詳細設計書/詳細設計書_SUB03END.md @@ -0,0 +1,51 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | SUB03END | +| 3 | プログラム名 | ABEND処理サブ | +| 4 | PGMタイプ | サブ | +| 5 | PGMパターン | - | +| 6 | 機能概要 | ABENDコードを表示し、異常終了する。 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 使用方法 + +``` + CALL 'SUB03END' USING E01ABDPAR +``` + +### 入出力パラメータ + +| COPY句 | ZANENDAC | +|------------|----------| + +| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 | +|----|-----------|------|------|------|------| +| 1 | I | E01ABDCOD | 9(3) | 3 | ABENDコード | + +### リターンコード一覧 + +| NO | コード | 説明 | +|----|--------|------| +| 1 | - | ABENDするため復帰コードなし(STOP RUN実行) | + +--- + +## 処理詳細 + +``` +1.制御処理(0000MAINSOR) + 1-1.ABENDメッセージを編集する。 + MOVE 'ABEND CODE=' TO WRK-ABEND-MSG. + MOVE E01ABDCOD TO WRK-ABEND-MSG(12:3). + 1-2.メッセージを表示する。 + DISPLAY WRK-ABEND-MSG. + 1-3.異常終了する。 + STOP RUN. +``` diff --git a/production/詳細設計書/詳細設計書_SUB04CHK.md b/production/詳細設計書/詳細設計書_SUB04CHK.md new file mode 100644 index 0000000..a7d5333 --- /dev/null +++ b/production/詳細設計書/詳細設計書_SUB04CHK.md @@ -0,0 +1,115 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | SUB04CHK | +| 3 | プログラム名 | 項目チェックサブ | +| 4 | PGMタイプ | サブ | +| 5 | PGMパターン | 項目チェック | +| 6 | 機能概要 | チェックタイプに応じてデータ妥当性を検証する。 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 使用方法 + +``` + CALL 'SUB04CHK' USING C01CHKPAR +``` + +### 入出力パラメータ + +| COPY句 | ZANCHKAC | +|------------|----------| + +| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 | +|----|-----------|------|------|------|------| +| 1 | I | C01CHKTYP | X(8) | 8 | チェックタイプ(DATE/TIME/NUM/EMPID) | +| 2 | I | C01CHKDAT | X(80) | 80 | チェック対象データ | +| 3 | O | C01CHKRRC | 9(4) | 4 | 復帰コード(0000:正常,0001:日付不正,0002:時刻不正,0003:数字不正) | + +### リターンコード一覧 + +| NO | コード | 説明 | +|----|--------|------| +| 1 | 0000 | 正常終了(チェックOK) | +| 2 | 0001 | 日付不正(DATE指定時、月01〜12/日01〜31範囲外) | +| 3 | 0002 | 時刻不正(TIME指定時、時00〜23/分00〜59範囲外) | +| 4 | 0003 | 数字不正(NUM指定時、非数字文字を含む) | +| 5 | 0004 | 社員番号不正(EMPID指定時、8桁以外または空欄) | +| 6 | 9999 | チェックタイプ不明 | + +--- + +## 処理詳細 + +``` +1.制御処理(0000MAINSOR) + 1-1.C01CHKTYPにより分岐する。 + 1-1-1.C01CHKTYP = 'DATE' の場合 + 1000CHKDATEへ。 + 1-1-2.C01CHKTYP = 'TIME' の場合 + 2000CHKTIMEへ。 + 1-1-3.C01CHKTYP = 'NUM' の場合 + 3000CHKNUMへ。 + 1-1-4.C01CHKTYP = 'EMPID' の場合 + 4000CHKEMPへ。 + 1-1-5.その他の場合 + C01CHKRRC = 9999 を設定し、1-2へ。 + 1-2.復帰(GOBACK)。 + +2.日付チェック(1000CHKDATE) + 2-1.C01CHKDATから年月日を抽出する。 + YYYY = C01CHKDAT(1:4) + MM = C01CHKDAT(5:2) + DD = C01CHKDAT(7:2) + 2-2.月チェック(MM) + 2-2-1.MM < 1 OR MM > 12 + → C01CHKRRC = 0001 を設定し、2-5へ。 + 2-3.日チェック(DD) + 2-3-1.DD < 1 OR DD > 31 + → C01CHKRRC = 0001 を設定し、2-5へ。 + 2-4.正常の場合 + C01CHKRRC = 0000 を設定する。 + 2-5.復帰(0000MAINSOR-EXTへ)。 + +3.時刻チェック(2000CHKTIME) + 3-1.C01CHKDATから時分を抽出する。 + HH = C01CHKDAT(1:2) + MM = C01CHKDAT(3:2) + 3-2.時チェック(HH) + 3-2-1.HH > 23 + → C01CHKRRC = 0002 を設定し、3-5へ。 + 3-3.分チェック(MM) + 3-3-1.MM > 59 + → C01CHKRRC = 0002 を設定し、3-5へ。 + 3-4.正常の場合 + C01CHKRRC = 0000 を設定する。 + 3-5.復帰(0000MAINSOR-EXTへ)。 + +4.数字チェック(3000CHKNUM) + 4-1.C01CHKDATにSPACEより前の文字があるかチェックする。 + INSPECT C01CHKDAT TALLYING WRK-NN FOR + CHARACTERS BEFORE INITIAL SPACE. + 4-2.WRK-NN > 0 の場合 + C01CHKRRC = 0003 を設定し、4-4へ。 + 4-3.正常の場合 + C01CHKRRC = 0000 を設定する。 + 4-4.復帰(0000MAINSOR-EXTへ)。 + +5.社員番号チェック(4000CHKEMP) + 5-1.桁数チェック(8桁以内) + C01CHKDAT(9:72)にSPACES以外がある場合 + C01CHKRRC = 0004 を設定し、5-4へ。 + 5-2.空欄チェック + INSPECT C01CHKDAT(1:8) TALLYING WRK-NN FOR + CHARACTERS BEFORE INITIAL SPACE. + WRK-NN > 0 の場合 + C01CHKRRC = 0004 を設定し、5-4へ。 + 5-3.正常の場合 + C01CHKRRC = 0000 を設定する。 + 5-4.復帰(0000MAINSOR-EXTへ)。 +``` diff --git a/production/詳細設計書/詳細設計書_SUB05TIM.md b/production/詳細設計書/詳細設計書_SUB05TIM.md new file mode 100644 index 0000000..4afbb16 --- /dev/null +++ b/production/詳細設計書/詳細設計書_SUB05TIM.md @@ -0,0 +1,107 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | SUB05TIM | +| 3 | プログラム名 | 時刻丸め計算サブ | +| 4 | PGMタイプ | サブ | +| 5 | PGMパターン | - | +| 6 | 機能概要 | 時間値を指定単位で丸め計算する。 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 使用方法 + +``` + CALL 'SUB05TIM' USING T01TIMPAR +``` + +### 入出力パラメータ + +| COPY句 | ZANTIMAC | +|------------|----------| + +| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 | +|----|-----------|------|------|------|------| +| 1 | I | T01TIMHRS | 9(4)V9(1) | 4.1 | 入力時間(HH.h) | +| 2 | O | T01TIMOUT | 9(4)V9(1) | 4.1 | 出力時間(丸め後) | +| 3 | I | T01TIMRRC | 9(4) | 4 | 丸めモード(0:0.5h切上,1:0.1h切上,2:0.1h切捨,3:単純四捨五入) | + +### リターンコード一覧 + +| NO | コード | 説明 | +|----|--------|------| +| 1 | 0000 | 正常終了 | + +--- + +## 処理詳細 + +``` +1.制御処理(0000MAINSOR) + 1-1.T01TIMRRCにより丸めモードを分岐する。 + 1-1-1.T01TIMRRC = 0 の場合(0.5時間単位・切上) + 1000RNDHALFへ。 + 1-1-2.T01TIMRRC = 1 の場合(0.1時間単位・切上) + 2000RNDUPへ。 + 1-1-3.T01TIMRRC = 2 の場合(0.1時間単位・切捨) + 3000RNDDOWNへ。 + 1-1-4.T01TIMRRC = 3 の場合(単純四捨五入・0.1h単位) + 4000RNDNORMALへ。 + 1-1-5.その他の場合 + T01TIMOUT = T01TIMHRS をそのまま設定する。 + 1-2.復帰(GOBACK)。 + +2.0.5時間単位・切上(1000RNDHALF) + 2-1.T01TIMHRSを分に変換する。 + WRK-MINUTES = T01TIMHRS * 60. + 2-2.30分単位で切り上げる(DIVIDE REMAINDER)。 + DIVIDE WRK-MINUTES BY 30 + GIVING WRK-HOURS + REMAINDER WRK-REMAINDER. + 2-2-1.WRK-REMAINDER > 0 の場合 + WRK-HOURS = WRK-HOURS + 1. + 2-2-2.WRK-REMAINDER = 0 の場合 + そのまま。 + 2-3.時間に戻す。 + T01TIMOUT = WRK-HOURS * 0.5. + 2-4.復帰(0000MAINSOR-EXTへ)。 + +3.0.1時間単位・切上(2000RNDUP) + 3-1.T01TIMHRSを分に変換する。 + WRK-MINUTES = T01TIMHRS * 60. + 3-2.6分単位で切り上げる(DIVIDE REMAINDER)。 + DIVIDE WRK-MINUTES BY 6 + GIVING WRK-HOURS + REMAINDER WRK-REMAINDER. + 3-2-1.WRK-REMAINDER > 0 の場合 + WRK-HOURS = WRK-HOURS + 1. + 3-2-2.WRK-REMAINDER = 0 の場合 + そのまま。 + 3-3.時間に戻す。 + T01TIMOUT = WRK-HOURS * 0.1. + 3-4.復帰(0000MAINSOR-EXTへ)。 + +4.0.1時間単位・切捨(3000RNDDOWN) + 4-1.T01TIMHRSを分に変換する。 + WRK-MINUTES = T01TIMHRS * 60. + 4-2.6分単位で切り捨てる(DIVIDE REMAINDER)。 + DIVIDE WRK-MINUTES BY 6 + GIVING WRK-HOURS + REMAINDER WRK-REMAINDER. + 4-3.時間に戻す。 + T01TIMOUT = WRK-HOURS * 0.1. + 4-4.復帰(0000MAINSOR-EXTへ)。 + +5.単純四捨五入・0.1h単位(4000RNDNORMAL) + 5-1.T01TIMHRSに0.05を加算する。 + WRK-HOURS = T01TIMHRS + 0.05. + 5-2.小数点第2位以下を切り捨てる。 + T01TIMOUT = WRK-HOURS. + *> 9(4)V9(1)へのMOVEにより自動で切捨 + 5-3.復帰(0000MAINSOR-EXTへ)。 +``` diff --git a/production/詳細設計書/詳細設計書_ZAN01CHK.md b/production/詳細設計書/詳細設計書_ZAN01CHK.md new file mode 100644 index 0000000..9f737a4 --- /dev/null +++ b/production/詳細設計書/詳細設計書_ZAN01CHK.md @@ -0,0 +1,144 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | ZAN01CHK | +| 3 | プログラム名 | 残業申請振分処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | 振り分け | +| 6 | 機能概要 | CSV形式の残業申請ファイルを読み込み、ステータスによって振り分ける。 | +| 7 | | ステータス0/1:有効申請としてOVT-VALIDに出力 | +| 8 | | ステータス9:取消申請としてOVT-CANCELに出力 | +| 9 | | その他:エラーとしてERROR-LOGに出力 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | OVT-APPLY(CSV) | ソート不要。CSV形式(カンマ区切り) | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | OVT-APPLY | R01 | ZAN01R01 | I | 自前(80B) | F | | 80 | PS | CSV形式 | +| 2 | OVT-VALID | W01 | ZAN01W01 | O | ZAN01REC | FB | | 80 | PS | | +| 3 | OVT-CANCEL | W02 | ZAN01W02 | O | ZAN01REC | FB | | 80 | PS | | +| 4 | ERROR-LOG | W03 | ZAN01W03 | O | ZAN05REC | VB | | 200 | PS | | + +### キー項目一覧 + +| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | +|----|-----------|---------------------|-------------------------------------------| +| 1 | OVT-APPLY | なし | なし | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC | +| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 3 | ABEND処理SUB | SUB03END | ZANENDAC | +| 4 | 項目チェックSUB | SUB04CHK | ZANCHKAC | + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化 + 1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。 + 復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。 + 【メッセージ編集】 + メッセージ番号:5(サブエラー) + PARM1:'SUB01DAT' + PARM2:復帰コード + 【ABEND処理SUB】 + ABENDコード:999 + 1-5.使用ファイルのオープン + 1-6.R01を読み込む。(1100R01INNSOR)(1回目) + +2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す) + 2-1.CSVの分解 + UNSTRINGでカンマ区切りのCSVを各項目に分解する。(2010CSVSOR) + 2-2.ステータス判定 + 2-2-1.ステータスが0または1の場合 + 項目チェックを実施し、エラーがあればERROR-LOGに出力、なければOVT-VALIDに出力。(2020VALIDATESOR) + 2-2-1-1.日付チェック(SUB04CHK)。エラー→W03出力 + 2-2-1-2.開始時刻>=1830チェック。NG→W03出力 + 2-2-1-3.開始時刻<終了時刻チェック。NG→W03出力 + 2-2-1-4.時間差>=30分チェック。NG→W03出力 + 2-2-1-5.すべて通過→W01出力 + 2-2-2.ステータスが9の場合 + OVT-CANCELにそのまま出力する。(2030CANCELSOR) + 2-2-3.その他の場合 + ERROR-LOGに出力する。(2040ERRORSOR) + 2-3.R01を読み込む。(1100R01INNSOR)(2件目以降) + +3.終了処理(3000STPSOR) + 3-1.入出力ファイルのクローズ + 3-2.入出力件数出力メッセージ出力 + 【入力メッセージ編集】 + メッセージ番号:6(入力件数メッセージ) + PARM1:当該入力ファイルのDD名 + PARM2:当該入力ファイルの件数 + 【出力メッセージ編集】 + メッセージ番号:7(出力件数メッセージ) + PARM1:当該出力ファイルのDD名 + PARM2:当該出力ファイルの件数 + 3-3.終了メッセージ出力 + 【メッセージ編集】 + メッセージ番号:2(終了メッセージ) +``` + +--- + +## 出力レコード定義 + +### 出力ファイル1(W01/OVT-VALID) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | APPL-ID | CSV同項目を設定 | | +| 2 | EMP-ID | CSV同項目を設定 | | +| 3 | APPL-DATE | CSV同項目を設定 | | +| 4 | START-TIME | CSV同項目を設定 | | +| 5 | END-TIME | CSV同項目を設定 | | +| 6 | STATUS | CSV同項目を設定 | 0または1 | +| 7 | OVT-TYPE | CSV同項目を設定 | | +| 8 | FILLER | CSV同項目を設定 | | + +### 出力ファイル2(W02/OVT-CANCEL) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | APPL-ID | CSV同項目を設定 | | +| 2 | EMP-ID | CSV同項目を設定 | | +| 3 | APPL-DATE | CSV同項目を設定 | | +| 4 | START-TIME | CSV同項目を設定 | | +| 5 | END-TIME | CSV同項目を設定 | | +| 6 | STATUS | CSV同項目を設定 | 9 | +| 7 | OVT-TYPE | CSV同項目を設定 | | +| 8 | FILLER | CSV同項目を設定 | | + +### 出力ファイル3(W03/ERROR-LOG) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | ERR-CATEGORY | 01で固定 | | +| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 | diff --git a/production/詳細設計書/詳細設計書_ZAN02CHK.md b/production/詳細設計書/詳細設計書_ZAN02CHK.md new file mode 100644 index 0000000..9e9da40 --- /dev/null +++ b/production/詳細設計書/詳細設計書_ZAN02CHK.md @@ -0,0 +1,123 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | ZAN02CHK | +| 3 | プログラム名 | 時間帯重複チェック処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | 項目チェック | +| 6 | 機能概要 | OVT-VSORTファイルの同一社員・同一日付内の時間帯重複をチェックする。 | +| 7 | | 重複なしのレコードはOVT-NODUPに出力 | +| 8 | | 重複ありのレコードはERROR-LOGに出力 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | OVT-VSORT | 社員番号>日付>開始時刻で昇順ソート済み | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | OVT-VSORT | R01 | ZAN02R01 | I | ZAN01REC | FB | | 80 | PS | | +| 2 | OVT-NODUP | W01 | ZAN02W01 | O | ZAN01REC | FB | | 80 | PS | | +| 3 | ERROR-LOG | W02 | ZAN02W02 | O | ZAN05REC | VB | | 200 | PS | | + +### キー項目一覧 + +| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | +|----|-----------|---------------------|-------------------------------------------| +| 1 | OVT-VSORT | EMP-ID>APPL-DATE>START-TIME(昇順) | EMP-ID>APPL-DATE | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC | +| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 3 | ABEND処理SUB | SUB03END | ZANENDAC | + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化 + 1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。 + 復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。 + 【メッセージ編集】 + メッセージ番号:5(サブエラー) + PARM1:'SUB01DAT' + PARM2:復帰コード + 【ABEND処理SUB】 + ABENDコード:999 + 1-5.使用ファイルのオープン + 1-6.R01を読み込む。(1100R01INNSOR)(1回目) + 1-7.1件目をW01に出力し、前レコードに保持する。 + +2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す) + 2-1.前レコードとの比較 + 2-1-1.同一社員番号かつ同一日付の場合 + 2-1-1-1.前終了時刻>現開始時刻 → 重複あり(2011OVERLAPERRSOR) + エラーカテゴリ02でERROR-LOGに出力 + 2-1-1-2.前終了時刻<=現開始時刻 → 重複なし(2012NORMALOUTSOR) + W01に出力 + 2-1-2.異なる社員番号または日付の場合(キーブレイク) + キーブレイク処理として前レコードを更新しW01に出力(2013KEYBRSOR) + 2-2.R01を読み込む。(1100R01INNSOR)(2件目以降) + +3.終了処理(3000STPSOR) + 3-1.入出力ファイルのクローズ + 3-2.入出力件数出力メッセージ出力 + 【入力メッセージ編集】 + メッセージ番号:6(入力件数メッセージ) + PARM1:当該入力ファイルのDD名 + PARM2:当該入力ファイルの件数 + 【出力メッセージ編集】 + メッセージ番号:7(出力件数メッセージ) + PARM1:当該出力ファイルのDD名 + PARM2:当該出力ファイルの件数 + 3-3.終了メッセージ出力 + 【メッセージ編集】 + メッセージ番号:2(終了メッセージ) +``` + +--- + +## 出力レコード定義 + +### 出力ファイル1(W01/OVT-NODUP) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | APPL-ID | R01.同項目を設定 | | +| 2 | EMP-ID | R01.同項目を設定 | | +| 3 | APPL-DATE | R01.同項目を設定 | | +| 4 | START-TIME | R01.同項目を設定 | | +| 5 | END-TIME | R01.同項目を設定 | | +| 6 | STATUS | R01.同項目を設定 | | +| 7 | OVT-TYPE | R01.同項目を設定 | | +| 8 | FILLER | R01.同項目を設定 | | + +### 出力ファイル2(W02/ERROR-LOG) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | ERR-CATEGORY | 02で固定 | 重複エラー | +| 2 | ERR-DETAIL | STRINGで編集 | EMP-IDと日付を編集 | diff --git a/production/詳細設計書/詳細設計書_ZAN03CHK.md b/production/詳細設計書/詳細設計書_ZAN03CHK.md new file mode 100644 index 0000000..5394433 --- /dev/null +++ b/production/詳細設計書/詳細設計書_ZAN03CHK.md @@ -0,0 +1,122 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | ZAN03CHK | +| 3 | プログラム名 | 打刻時間照合処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | マッチング(N:1) | +| 6 | 機能概要 | OVT-NODUPとPUNCH-SORTEDを突合し申請時間帯の照合を行う。 | +| 7 | | 申請時間帯が出勤〜退勤の範囲内かを確認する。 | +| 8 | | 申請日が休日かを判定しOVT-TYPEを付加する。 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | OVT-NODUP | 社員番号>日付で昇順ソート済み | +| 2 | PUNCH-SORTED | 社員番号>日付で昇順ソート済み | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | OVT-NODUP | R01 | ZAN03R01 | I | ZAN01REC | FB | | 80 | PS | | +| 2 | PUNCH-SORTED | R02 | ZAN03R02 | I | 自前(80B) | FB | | 80 | PS | | +| 3 | HOLIDAY-FILE | R03 | ZAN03R03 | I | 自前(80B) | FB | | 80 | PS | 休日カレンダー | +| 4 | OVT-CHECKED | W01 | ZAN03W01 | O | ZAN01REC | FB | | 80 | PS | | +| 5 | ERROR-LOG | W02 | ZAN03W02 | O | ZAN05REC | VB | | 200 | PS | | + +### キー項目一覧 + +| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | +|----|-----------|---------------------|-------------------------------------------| +| 1 | OVT-NODUP | EMP-ID>APPL-DATE(昇順) | EMP-ID>APPL-DATE | +| 2 | PUNCH-SORTED | EMP-ID>DATE(昇順) | EMP-ID>DATE | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 2 | ABEND処理SUB | SUB03END | ZANENDAC |※ コード上では未使用(PERFORM元なし)| + +※ ZAN03CHKはSUB01DATを使用しない。日付取得は不要のためFUNCTION CURRENT-DATEも使用しない。 + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化 + 1-4.使用ファイルのオープン + 1-6.HOLIDAY-FILEを全件読込しHOLIDAY-TABLEに設定する。(1300HOLIDAYSOR) + 1-7.R01を読み込む。(1100R01INNSOR)(1回目) + 1-8.R02を読み込む。(1200R02INNSOR)(1回目) + +2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す) + 2-1.R01キーとR02キーを比較 + 2-1-1.R01キー < R02キー(打刻データなし) + ERROR-LOGにエラー出力する(エラーカテゴリ03)。(2010NOMATCHSOR) + 2-1-2.R01キー = R02キー(マッチ) + 時間範囲チェックを実施する。(2020MATCHSOR) + 2-1-2-1.開始時刻>=出勤時刻 かつ 終了時刻<=退勤時刻 → 通過 + OVT-TYPEを設定しW01に出力する。(2200SETOVTSOR) + 2-1-2-2.範囲外 → ERROR-LOGに出力(エラーカテゴリ03) + 2-1-3.R01キー > R02キー(R02スキップ) + R02を1件読み進める。(1200R02INNSOR) + +3.終了処理(3000STPSOR) + 3-1.入出力ファイルのクローズ + 3-2.入出力件数出力メッセージ出力 + 【入力メッセージ編集】 + メッセージ番号:6(入力件数メッセージ) + PARM1:当該入力ファイルのDD名 + PARM2:当該入力ファイルの件数 + 【出力メッセージ編集】 + メッセージ番号:7(出力件数メッセージ) + PARM1:当該出力ファイルのDD名 + PARM2:当該出力ファイルの件数 + 3-3.終了メッセージ出力 + 【メッセージ編集】 + メッセージ番号:2(終了メッセージ) +``` + +--- + +## 出力レコード定義 + +### 出力ファイル1(W01/OVT-CHECKED) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | APPL-ID | R01.同項目を設定 | | +| 2 | EMP-ID | R01.同項目を設定 | | +| 3 | APPL-DATE | R01.同項目を設定 | | +| 4 | START-TIME | R01.同項目を設定 | | +| 5 | END-TIME | R01.同項目を設定 | | +| 6 | STATUS | R01.同項目を設定 | | +| 7 | OVT-TYPE | 2200SETOVTSORで設定 | W:平日/H:休日 | +| 8 | FILLER | R01.同項目を設定 | | + +### 出力ファイル2(W02/ERROR-LOG) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | ERR-CATEGORY | 03で固定 | 打刻不突合 | +| 2 | ERR-DETAIL | STRINGで編集 | 社員番号と日付を編集 | diff --git a/production/詳細設計書/詳細設計書_ZAN04MAT.md b/production/詳細設計書/詳細設計書_ZAN04MAT.md new file mode 100644 index 0000000..3d33b75 --- /dev/null +++ b/production/詳細設計書/詳細設計書_ZAN04MAT.md @@ -0,0 +1,144 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | ZAN04MAT | +| 3 | プログラム名 | 取消マッチング処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | マッチング(1:1) | +| 6 | 機能概要 | OVT-SORTED(有効申請)とOVT-CSORT(取消申請)を申請番号(APPL-ID)で1:1マッチングし、結果を振り分ける。 | +| 7 | | 申請番号一致(取消済):監査証跡としてERROR-LOGに記録 | +| 8 | | 申請のみ(取消なし):OVT-MATCHEDに出力(処理番号=1) | +| 9 | | 取消のみ(既DB登録済):OVT-DBCLEANに出力(DB削除用) | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | ファイルR01(OVT-SORTED) | 申請番号(APPL-ID)で昇順ソート済、重複なし | +| 2 | ファイルR02(OVT-CSORT) | 申請番号(APPL-ID)で昇順ソート済、重複なし | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | OVT-SORTED | R01 | ZAN04R01 | I | ZAN01REC | FB | | 80 | PS | 有効申請(APPL-ID昇順) | +| 2 | OVT-CSORT | R02 | ZAN04R02 | I | ZAN01REC | FB | | 80 | PS | 取消申請(APPL-ID昇順) | +| 3 | OVT-MATCHED | W01 | ZAN04W01 | O | ZAN02REC | FB | | 80 | PS | マッチング結果(処理番号付) | +| 4 | OVT-DBCLEAN | W02 | ZAN04W02 | O | ZAN04REC | FB | | 80 | PS | DB削除用(APPL-IDのみ) | +| 5 | ERROR-LOG | W03 | ZAN04W03 | O | ZAN05REC | VB | | 200 | PS | 監査証跡(取消マッチ記録) | + +### キー項目一覧 + +| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | +|----|-----------|---------------------|-------------------------------------------| +| 1 | ファイルR01 | APPL-ID(重複NG) | APPL-ID | +| 2 | ファイルR02 | APPL-ID(重複NG) | APPL-ID | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC | +| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 3 | ABEND処理SUB | SUB03END | ZANENDAC | + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化 + 1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。 + 復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。 + 【メッセージ編集】 + メッセージ番号:5(サブエラー) + PARM1:'SUB01DAT' + PARM2:復帰コード + 【ABEND処理SUB】 + ABENDコード:999 + 1-5.使用ファイルのオープン + 1-6.R01を読み込む。(1100R01INNSOR)(1回目) + 1-7.R02を読み込む。(1200R02INNSOR)(1回目) + +2.主処理(2000MAJSOR)(R01、R02を全て読み終えるまで下記を繰り返す) + 2-1.マッチの場合(R01.APPL-ID = R02.APPL-ID) + 取消済みの申請のため、OVT-MATCHEDには出力しない。 + 監査証跡としてERROR-LOGにマッチ情報を出力する。(2100MATCHSOR) + 【STRING編集】 + ERR-CATEGORY = 04 + ERR-DETAIL = 'CANCEL-MATCH: ' + 申請番号 + 社員番号 + 申請日 + 開始時刻 + 終了時刻 + R01を読み込む。(1100R01INNSOR)(2件目以降) + R02を読み込む。(1200R02INNSOR)(2件目以降) + 2-2.R01のみの場合(R01.APPL-ID < R02.APPL-ID) + R01をOVT-MATCHEDにSTRING編集して出力する。(2200R01OUTSOR) + 【STRING編集】 + W01 = 申請番号 + 社員番号 + 申請日 + 開始時刻 + 終了時刻 + ステータス + OVT-TYPE + 処理番号(01) + R01を読み込む。(1100R01INNSOR)(2件目以降) + 2-3.R02のみの場合(R01.APPL-ID > R02.APPL-ID) + R02をOVT-DBCLEANに出力する。(2300R02OUTSOR) + W02.APPL-ID = R02.APPL-ID + R02を読み込む。(1200R02INNSOR)(2件目以降) + +3.終了処理(3000STPSOR) + 3-1.入出力ファイルのクローズ + 3-2.入出力件数出力メッセージ出力 + 【入力メッセージ編集】 + メッセージ番号:6(入力件数メッセージ) + PARM1:当該入力ファイルのDD名 + PARM2:当該入力ファイルの件数 + 【出力メッセージ編集】 + メッセージ番号:7(出力件数メッセージ) + PARM1:当該出力ファイルのDD名 + PARM2:当該出力ファイルの件数 + 3-3.終了メッセージ出力 + 【メッセージ編集】 + メッセージ番号:2(終了メッセージ) +``` + +--- + +## 出力レコード定義 + +### 出力ファイル1(W01/OVT-MATCHED) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | APPL-ID | R01.APPL-ID | | +| 2 | EMP-ID | R01.EMP-ID | | +| 3 | APPL-DATE | R01.APPL-DATE | | +| 4 | START-TIME | R01.START-TIME | | +| 5 | END-TIME | R01.END-TIME | | +| 6 | STATUS | R01.STATUS | | +| 7 | OVT-TYPE | R01.OVT-TYPE | | +| 8 | PROC-SEQ | 01固定 | 同一申請番号グループ内連番 | +| 9 | FILLER | 初期値 | | + +### 出力ファイル2(W02/OVT-DBCLEAN) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | APPL-ID | R02.APPL-ID | DB削除対象申請番号 | +| 2 | FILLER | 初期値 | | + +### 出力ファイル3(W03/ERROR-LOG) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | ERR-CATEGORY | 04で固定 | 取消マッチ監査証跡 | +| 2 | ERR-DETAIL | STRINGで編集 | CANCEL-MATCH: + 申請番号 + 社員番号 + 申請日 + 開始時刻 + 終了時刻 | diff --git a/production/詳細設計書/詳細設計書_ZAN05CAL.md b/production/詳細設計書/詳細設計書_ZAN05CAL.md new file mode 100644 index 0000000..15c1d65 --- /dev/null +++ b/production/詳細設計書/詳細設計書_ZAN05CAL.md @@ -0,0 +1,169 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | ZAN05CAL | +| 3 | プログラム名 | 残業時間集約処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | キーブレイク(集計) | +| 6 | 機能概要 | OVT-SORTED2(申請番号+処理番号昇順)をキーブレイク集約し、 | +| 7 | | 同一APPL-IDの全レコードの加班時間を積算し、 | +| 8 | | OVT-SUMMARYに1レコードに集計して出力する。 | +| 9 | | キーブレイク制御にCONTINUE/SET、時間計算にCOMPUTE ROUNDED/DIVIDEをそれぞれ使用する。 | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | ファイルR01(OVT-SORTED2) | 申請番号(APPL-ID)>処理番号(PROC-SEQ)で昇順ソート済 | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | OVT-SORTED2 | R01 | ZAN05R01 | I | ZAN02REC | FB | | 80 | PS | マッチング結果(APPL-ID+PROC-SEQ昇順) | +| 2 | OVT-SUMMARY | W01 | ZAN05W01 | O | ZAN03REC | FB | | 80 | PS | 集約結果(加班時間付加) | + +### キー項目一覧 + +| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) | +|----|-----------|---------------------|-------------------------------------------| +| 1 | ファイルR01 | APPL-ID>PROC-SEQ(同一APPL-ID内複数明細あり) | APPL-ID(キーブレイク) | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC | +| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 3 | ABEND処理SUB | SUB03END | ZANENDAC | +| 4 | 時刻丸め計算SUB | SUB05TIM | ZANTIMAC | + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化(WRK-ACCUM-MIN含む) + 1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。 + 復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。 + 【メッセージ編集】 + メッセージ番号:5(サブエラー) + PARM1:'SUB01DAT' + PARM2:復帰コード + 【ABEND処理SUB】 + ABENDコード:999 + 1-6.使用ファイルのオープン(R01入力、W01出力) + 1-7.R01の初回読込(1100R01INNSOR) + 1-8.初回読込成功時、WRK-PREV-APPL-IDに設定 + WRK-GROUP-STARTに現レコードのSTARTを保持 + WRK-LAST-RECに現レコードを保持 + SET WRK-GROUP-IS-ACTIVE TO TRUE + (積算は主処理2000MAJSOR内の各分岐で行う) + +2.主処理(2000MAJSOR)(R01を全て読み終え、最終グループ出力完了まで下記を繰り返す) + 2-1.EOFの場合(WRK-R01KEY = HIGH-VALUE) + 2-1-1.WRK-GROUP-IS-ACTIVEなら最終グループを出力(2100OUTSOR) + 2-1-2.SET WRK-GROUP-NOT-ACTIVE TO TRUE(ループ終了条件) + 2-2.初回設定済みの場合(WRK-PREV-APPL-ID = 初回値あり) + 2-2-1.同一APPL-IDの場合 + 現レコードの時間差分を積算(2200ACCUMSOR) + 現レコードをWRK-LAST-RECに上書き保持(ENDは最終明細で上書きされる) + グループ内最初の明細のSTARTはWRK-GROUP-STARTに保持済のため不変 + R01次回読込(1100R01INNSOR) + 2-2-2.異なるAPPL-IDの場合(キーブレイク) + WRK-GROUP-IS-ACTIVEなら直前に保持していたグループを出力(2100OUTSOR) + WRK-PREV-APPL-IDを現レコードのAPPL-IDで更新 + WRK-GROUP-STARTに現レコードのSTARTを保持 + 現レコードをWRK-LAST-RECに設定 + 2200ACCUMSORを呼出(新グループ初回レコードの時間差分を積算) + SET WRK-GROUP-IS-ACTIVE TO TRUE + R01次回読込(1100R01INNSOR) + +3.積算処理(2200ACCUMSOR) + 3-1.現レコードの時刻→分変換 + DIVIDE R01START-TIME BY 100 GIVING WRK-START-HOUR REMAINDER WRK-START-MIN + DIVIDE R01END-TIME BY 100 GIVING WRK-END-HOUR REMAINDER WRK-END-MIN + COMPUTE WRK-START-TOTAL = WRK-START-HOUR * 60 + WRK-START-MIN + COMPUTE WRK-END-TOTAL = WRK-END-HOUR * 60 + WRK-END-MIN + 3-2.差分計算 + COMPUTE WRK-DIFF-MIN = WRK-END-TOTAL - WRK-START-TOTAL + 3-3.WRK-ACCUM-MINに積算 + COMPUTE WRK-ACCUM-MIN = WRK-ACCUM-MIN + WRK-DIFF-MIN + +4.計算出力処理(2100OUTSOR) + 4-1.分→時間変換(DIVIDE for coverage) + DIVIDE WRK-ACCUM-MIN BY 60 GIVING WRK-INT-HOURS REMAINDER WRK-REMAIN-MIN + 4-2.COMPUTE ROUNDED for coverage(結果はSUB05TIMには渡さない) + COMPUTE WRK-OVT-HOURS ROUNDED = WRK-ACCUM-MIN / 60 + ON SIZE ERROR + CONTINUE + MOVE ZERO TO WRK-OVT-HOURS + END-COMPUTE + 4-3.SUB05TIM呼出(mode 2:0.1h単位切捨) + COMPUTE WRK-TEMP-HOURS = WRK-ACCUM-MIN / 60(切捨用にそのまま) + MOVE WRK-TEMP-HOURS TO T01TIMHRS + MOVE 2 TO T01TIMRRC(mode 2) + CALL 'SUB05TIM' USING T01TIMPAR + MOVE T01TIMOUT TO WRK-OVT-HOURS + 4-4.OVT-SUMMARY出力 + 【STRING編集相当(MOVE)】 + INITIALIZE W01OUTREC + MOVE WRK-LAST-APPL-ID TO W01APPL-ID + MOVE WRK-LAST-EMP-ID TO W01EMP-ID + MOVE WRK-LAST-APPL-DATE TO W01APPL-DATE + MOVE WRK-GROUP-START TO W01START-TIME + MOVE WRK-LAST-END TO W01END-TIME + MOVE WRK-OVT-HOURS TO W01OVT-HOURS + MOVE WRK-LAST-OVT-TYPE TO W01OVT-TYPE + WRITE W01OUTREC + W01出力カウンタ加算 + 4-5.WRK-ACCUM-MINをZEROに初期化(次グループ用) + +5.終了処理(3000STPSOR) + 5-1.入出力ファイルのクローズ + 5-2.入出力件数出力メッセージ出力 + 【入力メッセージ編集】 + メッセージ番号:6(入力件数メッセージ) + PARM1:'ZAN05R01' + PARM2:入力件数 + 【出力メッセージ編集】 + メッセージ番号:7(出力件数メッセージ) + PARM1:'ZAN05W01' + PARM2:出力件数 + 5-3.終了メッセージ出力 + 【メッセージ編集】 + メッセージ番号:2(終了メッセージ) +``` + +--- + +## 出力レコード定義 + +### 出力ファイル1(W01/OVT-SUMMARY) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | APPL-ID | WRK-LAST-APPL-ID | 申請番号 | +| 2 | EMP-ID | WRK-LAST-EMP-ID | 社員番号 | +| 3 | APPL-DATE | WRK-LAST-APPL-DATE | 申請日 YYYYMMDD | +| 4 | START-TIME | WRK-GROUP-START | 開始時刻 HHMM(グループ最初の明細のSTART) | +| 5 | END-TIME | WRK-LAST-END | 終了時刻 HHMM | +| 6 | OVT-HOURS | SUB05TIM出力(T01TIMOUT) | 加班時間(0.1h単位切捨) | +| 7 | OVT-TYPE | WRK-LAST-OVT-TYPE | W=平日 / H=休日 | +| 8 | FILLER | 初期値 | | diff --git a/production/詳細設計書/詳細設計書_ZAN06UPD.md b/production/詳細設計書/詳細設計書_ZAN06UPD.md new file mode 100644 index 0000000..40a5800 --- /dev/null +++ b/production/詳細設計書/詳細設計書_ZAN06UPD.md @@ -0,0 +1,238 @@ +# 詳細設計書 + +## 基本情報 + +| # | 項目 | 内容 | +|---|------|------| +| 1 | システム名 | 残業統計管理システム | +| 2 | プログラムID | ZAN06UPD | +| 3 | プログラム名 | 残業統計DB更新処理 | +| 4 | PGMタイプ | メイン | +| 5 | PGMパターン | DB更新 | +| 6 | 機能概要 | OVT-SUMMARYの各レコードをOVT-APPLICATIONSテーブルにINSERT/UPSERTし、 | +| 7 | | OVT-MONTHLYテーブルに月次集計を反映する。 | +| 8 | | またOVT-DBCLEANの各レコードについて、該当申請を取消状態に更新し、 | +| 9 | | OVT-MONTHLYから該当加班時間を減算する。 | +| 10 | | 新規カバレッジ:EXEC SQL(INSERT/UPDATE/SELECT)、COMMIT/ROLLBACK、 | +| 11 | | PERFORM VARYING/TEST AFTER、COBOL MULTIPLY | + +※PGMタイプ:メイン、サブ +※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 + +### 前提条件 + +| NO | 対象ファイル | 条件 | +|----|-------------|------| +| 1 | ファイルR01(OVT-SUMMARY) | ZAN05CALの出力、APPL-ID順ソート済 | +| 2 | ファイルR02(OVT-DBCLEAN) | ZAN04MATの出力、DB上に該当APPL-IDが存在すること(孤立取消はエラー) | + +### 使用ファイル一覧 + +| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 | +|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------| +| 1 | OVT-SUMMARY | R01 | ZAN06R01 | I | ZAN03REC | FB | | 80 | PS | 集約結果(加班時間付加) | +| 2 | OVT-DBCLEAN | R02 | ZAN06R02 | I | ZAN04REC | FB | | 80 | PS | 孤立取消(DB削除対象) | +| 3 | ERROR-LOG | W01 | ZAN06W01 | O | ZAN05REC | VB | | 200 | PS | DBエラー・データ不整合記録 | +| 4 | OVERTIME-DB | DB | - | - | - | DB2 | - | - | DASD | EXEC SQLで直接操作 | + +### キー項目一覧 + +| NO | ファイル名 | キー項目 | 用途 | +|----|-----------|---------|------| +| 1 | ファイルR01 | APPL-ID | OVT-APPLICATIONS INSERT/UPDATEのキー | +| 2 | ファイルR02 | APPL-ID | OVT-APPLICATIONS SELECT/UPDATEのキー | +| 3 | DB OVT-MONTHLY | EMP-ID + YEAR-MONTH + OVT-TYPE | 月次集計UPSERTのキー | + +### テーブル定義 + +#### OVT-APPLICATIONS(個別加班申請テーブル) + +| カラム | 型 | 内容 | +|--------|-----|------| +| APPL-ID | CHAR(8) | 申請番号(PK) | +| EMP-ID | CHAR(8) | 社員番号 | +| APPL-DATE | CHAR(8) | 申請日 YYYYMMDD | +| OVT-TYPE | CHAR(1) | W=平日 / H=休日 | +| START-TIME | CHAR(4) | 開始時刻 HHMM | +| END-TIME | CHAR(4) | 終了時刻 HHMM | +| OVT-HOURS | DECIMAL(4,1) | 加班時間 | +| STATUS | CHAR(1) | 0=有効 / 9=取消 | +| UPDATED-AT | TIMESTAMP | 更新日時 | + +#### OVT-MONTHLY(月次集計テーブル) + +| カラム | 型 | 内容 | +|--------|-----|------| +| EMP-ID | CHAR(8) | 社員番号(PK) | +| YEAR-MONTH | CHAR(6) | 対象年月 YYYYMM(PK) | +| OVT-TYPE | CHAR(1) | W=平日 / H=休日(PK) | +| OVT-HOURS | DECIMAL(6,1) | 加班時間合計 | +| OVT-COUNT | INTEGER | 加班回数 | +| UPDATED-AT | TIMESTAMP | 更新日時 | + +### 使用モジュール一覧 + +| NO | 機能 | プログラムID | 使用COPY名 | +|----|------|-------------|-----------| +| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC | +| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC | +| 3 | ABEND処理SUB | SUB03END | ZANENDAC | + +--- + +## 処理詳細 + +``` +1.初期処理(1000ITTSOR) + 1-1.開始メッセージ出力 + 【メッセージ編集】 + メッセージ番号:1(開始メッセージ) + 1-2.コンパイル日時出力 + 【メッセージ編集】 + メッセージ番号:33(コンパイル日時) + PARM1:コンパイル日時 + PARM2:'COMPILED' + 1-3.ワークエリアの初期化 + 1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。 + 復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。 + 【メッセージ編集】 + メッセージ番号:5(サブエラー) + PARM1:'SUB01DAT' + PARM2:復帰コード + 【ABEND処理SUB】 + ABENDコード:999 + 1-5.使用ファイルのオープン(R01/R02入力、W01出力) + 1-6.R01、R02の初回読込(1100R01INNSOR、1200R02INNSOR) + +2.主処理(2000MAJSOR) + 2-1.処理フェーズ1:OVT-SUMMARY(R01)を全件処理 + R01 EOFまで以下の処理を繰り返す + 2-1-1.OVT-APPLICATIONSへのINSERTを試行 + 【EXEC SQL INSERT】 + INSERT INTO OVT-APPLICATIONS (APPL-ID, EMP-ID, APPL-DATE, OVT-TYPE, + START-TIME, END-TIME, OVT-HOURS, STATUS, UPDATED-AT) + VALUES (:WRK-SQL-APPL-ID, :WRK-SQL-EMP-ID, :WRK-SQL-APPL-DATE, + :WRK-SQL-OVT-TYPE, :WRK-SQL-START-TIME, :WRK-SQL-END-TIME, + :WRK-SQL-OVT-HOURS, :WRK-SQL-STATUS, CURRENT TIMESTAMP) + 2-1-2.SQLCODE NOT = 0の場合(APPL-ID重複): + 【EXEC SQL UPDATE】 + UPDATE OVT-APPLICATIONS SET STATUS = :WRK-SQL-STATUS, + UPDATED-AT = CURRENT TIMESTAMP + WHERE APPL-ID = :WRK-SQL-APPL-ID + SQLCODE異常時は9100DBERRSORへ + 2-1-3.SQLCODE = 0の場合:CUN-DBXINS加算、それ以外:CUN-DBXUPD加算 + 2-1-4.OVT-MONTHLYのUPSERT(2110MONTHLYUPSOR) + 2-1-5.CUN-COMMITが閾値以上の場合、COMMIT実行(2300COMMITDBX) + + 2-2.処理フェーズ2:OVT-DBCLEAN(R02)を全件処理 + R02 EOFまで以下の処理を繰り返す + 2-2-1.SELECTでOVT-APPLICATIONSから該当レコード取得 + 【EXEC SQL SELECT INTO】 + SELECT EMP-ID, APPL-DATE, OVT-TYPE, OVT-HOURS + INTO :WRK-SQL-EMP-ID, :WRK-SQL-APPL-DATE, :WRK-SQL-OVT-TYPE, + :WRK-SQL-OVT-HOURS + FROM OVT-APPLICATIONS + WHERE APPL-ID = :WRK-SQL-APPL-ID + 2-2-2.SQLCODE NOT = 0(該当なし=孤立取消): + ERROR-LOGに出力(カテゴリ=20)、9999ABDSORで異常終了 + 2-2-3.OVT-APPLICATIONSのSTATUSを'9'に更新 + 【EXEC SQL UPDATE】 + UPDATE OVT-APPLICATIONS SET STATUS = '9', + UPDATED-AT = CURRENT TIMESTAMP + WHERE APPL-ID = :WRK-SQL-APPL-ID + 2-2-4.YEAR-MONTH抽出:APPL-DATE(1:6) + 2-2-5.OVT-MONTHLYから減算(2210MONTHLYSUBSOR) + 【EXEC SQL UPDATE(減算)】 + UPDATE OVT-MONTHLY SET + OVT-HOURS = OVT-HOURS - :WRK-SQL-OVT-HOURS, + OVT-COUNT = OVT-COUNT - 1, + UPDATED-AT = CURRENT TIMESTAMP + WHERE EMP-ID = :WRK-SQL-EMP-ID + AND YEAR-MONTH = :WRK-SQL-YEAR-MONTH + AND OVT-TYPE = :WRK-SQL-OVT-TYPE + リトライ制御:PERFORM TEST AFTER VARYING(最大3回) + SQLCODE≠0時はROLLBACKしてリトライ + 全リトライ消費後もSQLCODE≠0の場合、 + ERROR-LOG(カテゴリ=21)に出力し9999ABDSORで異常終了する + (9100DBERRSORは通らない) + 2-2-6.CUN-COMMITが閾値以上の場合、COMMIT実行(2300COMMITDBX) + +3.OVT-MONTHLY UPSERT処理(2110MONTHLYUPSOR) + 3-1.OVT-MONTHLYの存在確認SELECT + 【EXEC SQL SELECT INTO(DB-OVT-HOURS, DB-OVT-COUNT)】 + SELECT OVT-HOURS, OVT-COUNT + INTO :DB-OVT-HOURS, :DB-OVT-COUNT + FROM OVT-MONTHLY + WHERE EMP-ID = :WRK-SQL-EMP-ID + AND YEAR-MONTH = :WRK-SQL-YEAR-MONTH + AND OVT-TYPE = :WRK-SQL-OVT-TYPE + 3-2.SQLCODE = 0(既存レコードあり): + 【EXEC SQL UPDATE(加算)】 + UPDATE OVT-MONTHLY SET + OVT-HOURS = OVT-HOURS + :WRK-SQL-OVT-HOURS, + OVT-COUNT = OVT-COUNT + 1, + UPDATED-AT = CURRENT TIMESTAMP + WHERE EMP-ID = :WRK-SQL-EMP-ID + AND YEAR-MONTH = :WRK-SQL-YEAR-MONTH + AND OVT-TYPE = :WRK-SQL-OVT-TYPE + 3-3.SQLCODE NOT = 0(新規): + 【EXEC SQL INSERT】 + INSERT INTO OVT-MONTHLY + (EMP-ID, YEAR-MONTH, OVT-TYPE, OVT-HOURS, OVT-COUNT, UPDATED-AT) + VALUES + (:WRK-SQL-EMP-ID, :WRK-SQL-YEAR-MONTH, :WRK-SQL-OVT-TYPE, + :WRK-SQL-OVT-HOURS, 1, CURRENT TIMESTAMP) + 3-4.SQLCODE異常時は9100DBERRSORへ + +4.COMMIT処理(2300COMMITDBX) + 4-1.【EXEC SQL COMMIT】 + COMMIT WORK + 4-2.CUN-COMMITをZEROにリセット + +5.終了処理(3000STPSOR) + 5-1.最終COMMIT(2300COMMITDBX) + 5-2.入出力ファイルのクローズ + 5-3.DB操作件数メッセージ出力 + メッセージ番号:6(入力件数メッセージ) + PARM1:'ZAN06R01' / PARM2:CUN-R01INN + PARM1:'ZAN06R02' / PARM2:CUN-R02INN + PARM1:'INS' / PARM2:CUN-DBXINS + PARM1:'UPD' / PARM2:CUN-DBXUPD + PARM1:'W01' / PARM2:CUN-W01OUT + 5-4.終了メッセージ出力 + メッセージ番号:2(終了メッセージ) + +6.DBエラー処理(9100DBERRSOR) + 6-1.ERROR-LOGにDBエラー情報出力(カテゴリ=30) + 【COBOL STRING】 + STRING 'DB ERROR SQLCODE=' SQLCODE ' APPL-ID=' + WRK-SQL-APPL-ID INTO WRK-ERR-DETAIL + 6-2.【EXEC SQL ROLLBACK】 + ROLLBACK WORK + 6-3.9999ABDSORで異常終了 +``` + +--- + +## 新規カバレッジ構文 + +| # | 構文 | 用途 | +|---|------|------| +| 1 | EXEC SQL INSERT | OVT-APPLICATIONSへの新規登録 | +| 2 | EXEC SQL UPDATE | OVT-APPLICATIONSステータス更新・OVT-MONTHLY加減算 | +| 3 | EXEC SQL SELECT INTO | OVT-MONTHLY存在確認・OVT-APPLICATIONS検索 | +| 4 | EXEC SQL COMMIT | 定期的なCOMMIT発行 | +| 5 | EXEC SQL ROLLBACK | DBエラー時のROLLBACK | +| 6 | PERFORM VARYING | 月(1-12)のバリデーションループ | +| 7 | PERFORM TEST AFTER VARYING | 月次減算のリトライ制御 | +| 8 | COBOL MULTIPLY | 加班時間→分変換 | + + +## 出力レコード定義 + +### 出力ファイル1(W01/ERROR-LOG) + +| No | 項目名 | 設定元 | 備考 | +|----|--------|--------|------| +| 1 | ERR-CATEGORY | WRK-ERR-CATEGORY | 20=孤立取消 / 30=DBエラー | +| 2 | ERR-DETAIL | WRK-ERR-DETAIL | エラー詳細メッセージ |