ࡱ> F:Z7̏K`JFIF,,C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( 1EWscW<:niRg]Y\EzG ?3Xw8mh2\l@q 4mrW/&;9'Sa܀?"bZ(եӜUWmLŦJ҅ r_k -}(& ̚WWuq|ONɃ0*_gvEr_x?*AG@MU%.oM,Cŝ\V o85xZ8^"jOW ֭$SZ~,l>qi`Gs.[ƫ{ţ'gYEVia <DxaVkb((((Ezs-}4["&K=+=/k5k-%̅a SzgLStF}=Z"_a?JƸ.s&5K霅Ư{"qkCo?#S5f.zqǒ|Yn L:dtHyֽ/Vwgq-ͬ#~'$}yWjZU?}nzJpmJLZd+3 r٩Yz+59-n):Z,oP!>m|K~/ezqּ8_CliOs~$ΘMJeY@t1]Ɨ[VB̝~^OimYaNUш ]0J?RT+}jn# р'ZǏxO {J/ AkxAU,u(px?+Ũv]bÿ4χ 1^?E/ϰ{ AߣK Bߣ^IE/~'G SΕ8 ";XWU |Z7u ]ֳf"~x_oñpŻʇK\ q|>Mtt]2RWG;M;1hQ@M{9>\C8X~5⺮q]6]vڻm-U9~W^v*ʺTaep+<}T:|E2xY;~}?*Z WW[]kFW#1.e91ڻ.Z|*啶np7UaVj245~7ukj`\y*nIm~ac3\אxC]:6ϋI7b9VOi39YZ;[4i3^cѿ^kD1$l2NAںwm7v8Q˧R>}kfrT{e-fi:ՎoYyO QZUҚjɫ ES((s>.BTMjy;ަRQWcId/SiP~?wݽkʵJUkɚYLQaUIyvyfcO2ʵQQE`hQEzyw~xdr\k^yV0QqZ6;uPwbW. u>䬛p?һ> @%𴏀|Q{sf]^ )IIEWwQ@Q@Q@Q@^5kOg1F%]ut8e ;]"=OKLbT #9a'tr׎/#Ml_t?Ы:jzU͓*37cº*Þ B\SHh]H/pA*_^ϤyEz*ZF>|:Lu ~'@.̌+a|-2]+TC_(?QOϰâAE@G "wF\sS④J#:9)HݑYN>ƽž5M\1sVʛ"pRZB\ZE4FL!d^zt)QqvbE'Q7ue_@]]{گPdy~z;𠢊+2%YGk6#vo*'t&Ϡ   u"Xř =c+;76OG?/ZkMTӄ&Wjmr`x_{Џ2m>vı0eO)MӞO}$&,Xoԏ?J#SWa2%^5m:k;WT#VӮVd<0}Gzφ|So[,7Y/)l'5 F$чb=棳;g),g*Epҫ*R:g5sߨ/ kQ.Qkv8I]4Ţ*QEgzV5b88Xܞ+5=JU;e{ #jK4{0# k*Taep+((~ʣXsAz`0Wב|?EB!tǯF;½v<+[SE03Ҷ*EŤd#FiٞEWzETQEQEQEQETַSY]Gso!IcmhY]ңn⵫|/[[y =-'8}׫աS78jCV(}+KZ3,uKP)3PTἁg=kS72Q.W..P+9( ɻ)me)?@+.,4+b^,A++QR0((s|Y`g.WR?{MxF0\9\qftC֎JQEv B-ȎD tb*n#/Ԝ:?ְƚ;QEQ@Q@Q@Q@Q@ `r8 e #R*Ks(m'"iI&xfd2<*[<0C˖.Ul06T1T?u?`(cS9##/Z""$+5 (' SOCu kY%0+Ҕ۹)h Q\EPES<7jhEHSl9;3z󯆺wp@17עZ8ɢKy CG"`{0kµ+'ӵ+93 gv?טGQ]g|,t횓c+r'Nٝ (e)$LЊiP=G/a"GWd%C#OB youϰjOȷ &O 'oϧ^^8gYXkڐL'煏!eWxCΎf/,; %uR2 (4$nrc]ܬ:%x()n{͕xC}} \;.\YdUq 7F281]zwg*|uns[vFcb>&@YϜqGup*FQEQE:9)D8d!_@#+TWϵ<~a6ݻlg8ʃ]7G=~Q]1H$VrW#]0uǰG?pVNAEV&EPES)QEXO~Rb^"M."?Ouw@gYObXt%;eZIC+9D7lVnoZXTVVuįIO$Яg)1>Eٝɦ(QEz8Dtߡ5ze~Wf̑&Nrr F]IzaxL*y2?ޤ%%fsgsءf+o#"qS#K+cWqG5۾Dž` g @!^E?ǸOx0[T-S=~E%y?kײ(թ|:$洋ߐRU/n}UW1V08 2 C&B%ѽu{Y ewa H _%:>j?ݐ7% ڔg?Vo ʊ=C.O{L#sG{=?q o kT`5:vW a7i|9玟sW)I#d%LᥫGܕ#͕P(쫼:4aUl(̆hcH J6}!l KEjAʭ(Ven/C+G1GURykRp3>\ ʹ14]rb̠T{J+rgWIN Hgo 0ʀ\4>"ٗէ-lNzAGz>) ~%%Gel?1P?}e B6ڗ)Wyq?7 M/SW/u4j&A70ts+5gahQ@,mI-C )~Ƽ~. `dzx"5'daEcV!QŞEv#$ `כ:r:%%tQEfPVQsHdC0FzcVQI3oWerG㺡,cMrUjqtV"dye%6D_+^}Ò=yUرQS`)(*[kin #Uɨ|᧲Qޮ'qcH3ҦJNj*[Zeg+ `SԟĒj%edpp)QEt+b.>Jեjic5j>՘zKG\} ڹO>ԎS }`oxj?[Rf]>cGֹk+ Wv'dR3ISwFqQEAAER((tq,q;ª}0]׀:.rD)t?JؕF[+ux+c""(UQ 0ۇûHUZȚ((Jִ}oNyGJ7b+O%&V`մ. 9VuUM_G֬2q^GvA)*c>ڼ5[h1袊5 ( m_c V)YA>UZ)j号@ŘbrI9$QG; )(@QE ( ( (u>"2,#>Xvާ? Vu # 7{^!;xRQR4*ҺaKc z"@:+9B(((svV_"юIڎ2mj)X|: J~5_BgTN1Bm=^ ('zWL'XƿAEuZ)y}F?Ț殬dwm, z ~ISwFQ{QEQ@Q@Q@RUI4Jtq,q;ª}tW5}Ck(28@<-I.i[=oO92Xcǁ)#Քe~d<  tdrNNZ($((((* &xXۂ OEr7k jLV;QKe*7f6KjS|.yW.Naҽ^=jO~Q |)}Mw+۾ǃGj36ج.,,N?*Ҷ~t-H@?>k8ǫuaА_ُں7úfYƎ?ylQ[Œ!3-شQEj@QEQEQEU{X/ x.bIbqWQ@k= \hr6y?"kI)W:E}YcZt'>r+KXm h Up0ϥQчr.cO1\s8nԌ3h̰)QEQEQEQE(K +ѷ"FPN3Wa|7vɪ=|x,V9lHsou9+i'QCdȚq"xZ,-t6G c gjvF:Vsγz :+((((((* xn1O rRE jz)Xn:I W{t\%mg?<~U蔕[I.M]FVLnTew!6C:& Ux"k TVx>X3&m>j2n'~4U,-4'ZG8ӭkl\}'FӴ~g$e^Oִi+X҄vD9Ţ+BB(((((((((((((((((((~Z-f# (AV+6캄j 3mTa-Jr[3n~jdwqdc`ֱ|#Z4ɈDH%$׵QX,ŪGa g ?3{?Sqw=c7 NO.F{^ESp6 ׮hhҰP?\´~ұL/Թ?J* q:8KO1_O>@DcMƑTK'J4r{hА((((((((((((;Rto#A(y 6p}q=gj12FI@V劻*0vGR0Uw,Inl u[n̠ d85RJH걨,@I9@m+. #Kc$`)n v寛e1m+pHQ;&' %vJ+~c*MḶPFNr:~֞Ťiβ4Qcpܐ8s]̿EgiŶ&3fl.ФO8z.#Kc$`)n :I6ơ'G_EQӵ;MRnlDI];yzlCE:ywywg>h6k]-?v%Ag9#Rk%?v)Ag9#P{ٹIEb%(8ی$zr%&ݑEqiV Rn;$$0nj1늕V 2$GCEbi%tkRX-WPPt>'[S"I&9@ Wv8krrĿ-SG9fUF*2IQWuNKk1qOh掺+2GFyUZՈ51?;iVXdDjF[0qktX4W|Po䋐gcE/"hNz/9=zjsMةG;Rto#A(y 6p}q=g,, xtHdnzN3i4лEVQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@wCa_d@sKHY-Л]Y"E7q>; gs·b4bIo<21Ny[uIt=&?WCegfDS''n͟xe$v,yss>:Ю5}6)Q,X?y1`}zS.Pyd ;ºEp57,A'3p+o1XHMLTc#>2oiSaR=pH*h}G\Dbu#i]r8NO=2C%ʡII]b5_p޺rG\c=ZSkYo{wj"R߼]Nr>T~0>;$5/mA6Lo18n$5gg).2~FO|-KK`i q}\֗iT>Wr[̕+r;t+^OKQ~ZˤJuy6jE*׌wv;t%bGF`z\ |뽝BW׮b:ES$3M@3<bgڴΡCfD$ 0`#ֳ4 fOw$ k.qs}j'%l|PW(0mVNeVG9-nI8i=OַoMINKmgBJu]3Ό>GriWIqjlW$$7pOupQ՜,j}xycgc5j}uciiI7yQ݄lg_}\?_TYۼ}SIֹmJ5Kq}_BmWTA$vks蕩 gIԘtnGȜGoʖ)szEqߎ [|R`y:x4Ŭ;@A7~ 鑎z?giw*1K k ]_#Q]nnw2GusO*R1M7ԺjˡCa_d@?Ni+ Y~&^KcUqB/Iڮ\n0 કlv<zTr{1Y[Q^UxĚĪ)+>$~PaצI}.h.fy0H;󁟩ךKdD/E!EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPU.t;kfvч۞㠫tRj° qDu#P;OEϛH.fin4Ilny VcےE[$54U@UU @J(\g}o,o鏽sgmy)pYP0jY c%Q߀*Fs3KqZM+c/$ {rH (.ȣ!ccPUF} Fnz#G*mؗ%o&084\w>i=qAV裕Zvf?&*°Q/H*S(QK`W>l$jX{K$I4m2,o 1&wƑS1[d+}Y )>a-ڤ{C %/򫸠QE1ȲGYC+, ЃҢR/p:}OAq;|\dqU(FE'TeK[h$#ihU$zdaW(ʻٜ$$e$Go2iQG${° qDu#P;Gs]3Ό>G[4 vV1[ d+}Yv(٠Frf;43BF*JFIFddDucky<Adobed       ^   !1AQaq"2r3s45u67BRb#tDVS$dC%U&ce1!2AQq3a"rBR4b# ?@@@@@@@@@@05(eyvհ+oIQ]ʋX콆[fw%92d$]jěUdv(h@@@@@@@@@@@@@@2QY`;h$UGRhՏ:%=~io]?şVz{y+L|&O#\ AB)'v'VDȈƻuq.ph{$wvH6-ӿ#W?Ş7:I[4:/i I/|%xG8^2+@@B}Qet9"ONz ΅|wqJ0gqokngkB cx=`fAagw*KJP     V8:Vyź$.-aF`24/S|=W!@@@@@@@@WEsc9\B}/V0s5shZ]g{g >&5~饹>y0LvmS8ߢϪm; xdl>7=GB>)^yM*[WS`svdɦdI}A|f>k:ljܾNŗx?n>8޳dUo-  4=_ͽ5FE{ mZds \6Q䍞.rlպ,vFx-}͝nk\HLiRʎpI0 ɭYj%|ߤa/Upp+vBGiOOH9M_GDzGˎ}ja3LKWqs\$t Kv9Jmlf2]t.dф@@@@٬&2H(|2(oDpRS> ֻmoٻR3jFNNًu;k.垑qpc[hh_u'f̲"       RF:_cևܾ' _5i~!`N|&Lj|i8uN؀0;шW Xb|t>;NDL CElޤzCl>3_o=f~ {۠  )\d^僚+c{2ܱF-{+*b(Ou. O49ikue'q5:8 nxLmK\54=!Pȅ$u>Ce7Mg:\MR-*;75Է˻)e3o q [Kv/>ѵMؿ\:Wwi>7DYH -,"c3صO%M՟;$6|[5s*ٽePK]K2@@@@@h|:K~j#/L>k_;;㕿f:C\w#[|[fν#       RF:_cևܾ' _5i~!`N1jܜ~wj 0DύcŬ9 _@tyGƟ.^뗂9JRygm ~ {۠?3[uNksR }/1B㌀ z5뜴6{n"J|ʝC!UToƻh}Q>[gȽ9_#ZF.mvmAk8X"RzxJn[LXƆlRV΋kWaMQ樿T߱`O65&ykM3A kGѷh;T nfŗvl,cUZf*笟>m`9p8YA].S^eo6w3XX¿RZZgˌ.O+;g$ҹm&{Z͠V!{Mir6%A?JsKim,n%ćZ;P*>:CHtNٹ;I&Ju:Zcpls^%E\h36>$xƧY#›6Nd_GLJl-1ֆ4\Lן+9 o>3078}E}76h=b+Cd:G"G^Ff"gݠڬ[Mњ͎QW [9C[T9ha{>pje ]$UJޙ1BIGCߋ6u@@@@@@@@.6 >8gRxyO=OcbNg>#fV\[>H*2]84ΨfROj@E7 jX`2{sKO|+ mȜ|WR+Z:?f55[A.o#}RGA A#ZjkQl'tt?i$gD<7Rcߊ&o"8ʶyih'oX7mJT.Bӄ5kcsz>0E[ûmVRQkhdK_w?kjpssg{0*\'d?,g-.{έǹؕij >>FX"ĝKO#%Ԓ]5C#]ҵ߱m,T8=2nEܘ- bi"⣿)DRhk\G[\ְrZ〳a-4ד2>Cq\Zc'ھX+ \>b{#6~{"77x%i4^;N2cX.F.3$ڐ6\RMU!ypL]sW >VޒGqCvj6;~,*hqzxfJ}6U-NjsȒ[VcU-tWVv+zg|rH} $kq^~,פa@@@@@ Ty@bO@$t4QCC|~(@nxdŶS'J;=Uzeߙ$=LpsOH5z^ۿxzK,bzK<>B\Kt3ZUګ-h~CۻB^ʃgI܇5}vVm̍ŭx;kC/S01xf>aOcSStѵ>|bdXs=܁spi۶U\$dn/O"hr׉Sj.~7l:8x}-ʻކ*ʈsՔ2(sIr͞BKFܵ읎,׵еU7fևWBg[\my%VW+͋яQZ̎v'eW|okw]HT)>р^T=q#mXMmNyq~}`YLvFV,%wޯyշ73A QcVg15=ԚK:ٶWIjzO~Ƽ !uǡa)X+hT[9p؀qi}QVj|]\}z5 ggviӞߗ-ž|3Ց%t2: ;G 81S-OZ"jWoَH:8YH     [z@pn_5gS^۵2~3-]1[42\CHnZKĥUesMm*pGXj>cjZ_w|p֖M፟Y.كlFber6x*++NC;v[+[5#q}pZBN/#ue#R;l5帵|?sw3Қ-k mc]o*ZGydc>TQ}±cSStѵ>|s?7<OmCF@Gk; oI*5̎y vJZ"m3s7R]ܾM:d~ U\ 6lڶ-*TwmN\ k4 IuoYryS;PnRPvU/q `>8,e**صMGne#yw%s:%>I+YvguF*+ :GwJ*_gg -O?wLn7:> HN֑mvmmInt&_Ii7,&:fbq+d3~|$qrٖb& rF*>51ggviӞߗ-ž|3Ց%t2: ;G 81S-OZ"jWoَH:8YH   ľYٰ^ (nߌԪiYaG#kD^cl㋅\kN|*E{if^nnNƚRc/q"SMoޗ9G5}u\n6Z{[讗h;epgZiƲGc|_:'IH节CKn/#ޖud^U"\I^DaՖk_2JVo{i"k^}±cSSt &H2 \m5 $QmeU8KU_c?(lt8umĮ=īLCTpfm ~Okwb&Υ}mnZ盟/E1+z]ח@n kx2"m6x_^ \l&+U-NҤHc,c*3Cy!^`k/vV7Vo J[F!; Gwn)#ێu_KђYZk3+z* k* Yn}Gp9@4 S' ($5Zᠼ(D y#5C \$Y/xȭJ3r'Vv;{_LnZH&5+](Ҭz?)sr^CKyNL6=sEKv3]f,8l'1261A zm U+MsIx6Fo *2_i=Zw襃},[k$lO09<O-/{ywiV<Ӽ{/Eq=1UYf9şں'𽍹Tmvwf+kLacε(+J[8,UГ6ܴ3cl>W!{䲶RH?'eVl]6G^:Vvʥ\nLVm厐?H:޷͡zF@@uw&YFäX\R+]xl`wױBk}W^])dAg3xWM3 x%I+T29i1"Yi@[v$ q6lmp6EiNPbXU8eVvP7xZƎ%M̥  OHF'ߛ'F댘(mqM:?B=+V8^MU73&3nJt/ڇ,R*jlۼe}u2[]E3K&U"fxn-5+ve䃍]OOrY7gCr>}Vi2G7!U8x^B9MSa^&r9Kk.2w3\=WqqYckAWvԝ_U*3L~A޵VC59$OB!!? ޒ=yp[K,72guvR m6̫5N<< LԚ[Ojl\Y 6&8QpsH+bO!7TC9I\0c\I ~3ݤ\}GX-ƶ@rZ:ͷe-g"wܙ u<DK&p;}XHHVwe-F,un]A8Ql2݃{J!>Gvr'4&ym- WrsY,0 evRTf#4{= ;%nzu勊dJ2/>Rqeͣ.O9ۏV-qob;d-⯌khG.G1tmhnKE<.)n_rA = E"Z]Cu%n079Ǥ#^ajL#h,҃}b8.|M 9oߗ<1IG< N@cmp%E["sXro(2 l$0w#|O#~q\ >Gvr6.^h'}]D|"n(i<4x@^JZtXXn"r:3rEv=? XX($O}4.xqzfNaf=;ɍ*n\Y<1 C_rC}M!c x^ {mޔ4e;_|8Yuk|V\r;dKe\FNf?5or1Avoq4=^[Hyv=4ct:,}%8nt8;ViP)9ji]y+us-p:i$"榍liGvr>}及Xqvx|]MCC q4k@5Y7^&R@@yw SFp'w.(*ԊYk9GmsB-ͷDOI3IqjRrudfc-m|8);b28iNMZ|SV  )magG1u$w=%9ғt,&,!{Ul$jzg u0ѓonx [-)2)\uqӺ j+ 1wX\Υ'bYB :Ҵb@@@@@@@@@@@|,qF$pk*JIJ3M6wt)n5g!{I\۫'Y8FjiSFLeq.h4p \u1i)Lx w #1 f"W}Q]\V`a{!ywXp[γ]2+k %8pSOglHh2SU1׸K? p*S=9d"llW zӴz+af.*Ū*S6|'x7T仹Uenr< ije9Z 3KsGHFdXp8/.: o LejGޮiܭmI Z/,_NC\:݌wpuFr񸼶ow}a;"*Wc"4NN=RqyybP=>x=4wG ,[Lds~xmn?͟hU9Vt&.-4ьN=౔UX#ݩq 4t5qVyi+- m׸КwX-Ǿ[2 R]?oeyɨh$Olk^#B)*(^%ifw[~0*|7Z=bTana/.*vMo:ȟY}}_ }D!U!dV } Dp ee٨Oy-Tַ+3tj@ T#n2ڡ;Unf[i#e8u=g58Q8yi[;]_piq%#Sl˶' 8 AB@77@; Vzqӧ`==f>_q@hwS/,]\|vHww[}r2Z9<6 |ϊ4>g*Ηţ9X<Ρe.cZM1ErHDo$t5ظ{VYHQL[ @.{4~nvNy2;Լ0Va|chu;hwnVl0@̳1fBGZ0{'U״*CԳ_z3797DY 7/dm;hw.&d^gXMr!kߴ8]u*ǝeZy#lJZ9Ҧd~F =,2T$x\XũΝ2MmJ~ Umiƌ=O5޲=@e3@_:5\Ioo<'z&6{Bj8- fK6F|VVr2Gp^@+Y+f^0HMVWdL}ǮoR'F$U|#w}lv~> C⑒Fjǀ hs{\EۭuGp e^] i"<HOzVM׉MV 6daW]N-͕vOM.]!R 8:>]{JueGdAYVgU*=AnĚyJ379I#F:=6ݿ*&dK}QgrGvþ`o =>Z՘yqɮlJ֖=J.$9ӉLjmkt{R垾vmŒgY|4$W_ v]W>ފ!M R9dB y[\鄾и|*ԟ#[婦{WPMk4/,{C}"MI&eSH}XK%\iɭ"vo%LwI\'FfS?99cÍ5*afJ}YTaf9e}pm5$y7V#Ē1[{Vsy*a, U G{+ԝEs^Zc$g>Oj(#a{Dk^dbܵ=RL]aypȒ=bKc.޼D#2<Ѯ\hMo6mQ.ptЮFgmC:*^7TVfQU*-An~םqbtww]Ꝉ]*&dKmQn-Aĝ -0pXOEm%MFfb6frk4R9Tq%!]44կ^&Hr,~,:;冡i"WeY.W hoxD YKr[IzqB]ǩTu~^K0\%p;CZ53<%BW]KhuCX4>[|sڃs '7ljP*͝*a@@W\Ͽ+`m.g}ԒMi3\㼮9HjNai N>:M2|`lVӗ걀1Cl1"CQJSUJvR\bp)02s[S!_2Kq4c0kGmAS֏RUܺIsLYcuQ6n :ܷZ5RͧVܱs FNۦH;}}i:S}^']6w?S/у$6DYdI'ɺڂy#m#a5|M6TfwYP9 ~ xdJZuHܩڊ`fD@=xʷ'0PۧuBvw7){6hspvyvx\Yݶ 2Y&3썤XAݯu} /-4T,gL2&kV1 tXJugx w![Dfd)?ZdV?%w|+e\V\#|{Eĭ[ʔ| ې 86 2nx[붔Qvƃ+Ues 3==[k/p$_r/$Tzlrrdek##s^M< vH|wNj\K{|6.EӋmpJViҘsz;6VJ qE1.3m#n=Uʓ|M_{~Y!b۰$,s8 PoTܻcOm>%+>CဎἙ=f؋(7PW0ϟC3 ?. t_DS*3AnEȾvE [N\y܉.^I$LZzPskiM\ ZA ;S֏RUܺHLYuP.tT+qojO- )[ɡ2Q;Q/:]up9-bAʴX-;=%p%ZGzi\ ]q:hY%g ft%*ak+U[0EFoJS  *k%_o͓ЬW*Nyh϶7El=Hԋ+1~y \.OZ-!)3vӡ>//Yt3ѐؾgu*}HGf_Yg5&{ʓ7UE}&{kRW=Yhյ͞OC17Z~/ /':/]DMŤJHfoߤϼFzEI\kf`Toq\nX]hr@alp#h*LMI:PQ33+OOekW~ l -f~5Z#l!u;R tfObLFk"?>1/_-.HLFփ-6p[H%ܳosĦ0O1} EIjZ ى _mTw?2 _;[F#c Zwt=7}718lrm"(K+}y/b"W||B#K\8Z*+77uh{7f>k]ʷ z23r[u."Co+/&_D=/yRznZ0x:$ݠեµ![f7 -t**h)2I͗;yEepmD{'vK8w?59: #^Y\@hXJĪy2?`| 64ΒzNU("86^m\ɕ'J57sFpv վ["sUj8=pP E<8†QZC{3`DN]q@T˾sW,Ak;{[w-r`|^cf(#o{x`hE١YH 75xJ  *k%_o͓ЬW*Nyh϶7El=Hԋ+1~y \.OZ-!)3vӡ>//Yt3ѐؾgu*}HGf_Yf5{ʓ7UE}&{kRW=Yhյ͞OC17Z~/ /':/]DMŤJHfoߤϼFzEI\kf`Toq\nX]hn?9uUEiwt3!qNojErT6Ớ1/_-1tAg.PlI%d+f$.7ٵPח&G%|QmYKme${Fiji$;]_6+K;Cn:?ػKED$jxߴ[Gcw5?xNiEUlkĊYP猇s{7OVsᡬ;>h{7f>k]ʷ z23r[u."Co+/&_C=/yRzִ-t0<l{d,*똀wPXD!#B2MUqGC\^K,:JC7ԺLa"llu`E׀8 [7"*O;ӸZg܈?jx}y ;է;~Ak]7 f,-zLgƷa>Pʥs&_?f}Z Lv^F#׉]X  %_o͓Ь*N|^y&E2\:vErC3;OjwzJ\{]ͬhOe+t蛏;]d':/]DE%JR=eٗV_陾Mlz^6g|M}_wɞԤ}VZ5msgfo־ Bqy|zι-y:Qui<ҠR=eٛw3m^Rz٘40cz-hW&29a<\x+w`H 5-C_wZ JfnNڮH_9cШї|g͝m,煴5cV:PqIObYތaN|c_8[D>c փ.>e]>*KRVHMjiqmT7?2 5%|Qmeh$,&/~IFcvPx} YNZVn.Zh斀NѵQ{w˃4,chTK呙o>XѲ )s|!G#-I/hvLyIۋU8MO]/ՠAKh Y`I-ad^$W4:w%blVr-I cLdMW pB҉o#"m_ Pbew/4׬ I0I.څv"E{H\-hh+%29_n--E";@9|uW_ωnՙ^QZXw3q-tOiҶuIa5km\lQ믣'UR@@U궖X&؃kpW._4Ŧ' 9cL ȸNd Z"peͤ'==Ҭc_'JITym%|mVJĮ핶ͳ#vԽ=9J&hil>Ixhh4b̮I$d \泹,1œLcpG`tݏ7Rce~z3r[u."Co+/&_C=/yRz3`܊读mjRW> -W޳ u7_q؅UPce`\3mwWwl(JH*.DMJ.ITym%|mV׻JUv6ծ>%wluvmwt9^d4#CO-O3CA"RfW$2n{yy,tv ݎ.qI;z^GB.YObgz3Yu9)A|Qm&?Z =~w򇯣`H-K![10X7xR*ϙjPGtg5Kw-u;c8+׬.\Qq3kZ;)yw݄njc٬>;E+SN6V.1&uf0njIop#8QUs0|ƀFO 'R\]:_ ޿!+ac[GkMFo\\\=*lZB}F**#]/ &TqEGTk}u+fCko2_<=Y[$ գ3eTw{'C*/49TB3}fsi+l~6|/v.\0*PNqmld:h\x|v4{nR|b v c]ËmmwhFĩn:)JKU,#F՗7Ď#3 6+y7.fErGdbqvxMa;x=F*"Vs[LwLvaEƭq+ekm]weWm> #FX+tF@.Saw ,' c8)*5T9Wr;]a.d24Jt rS?Y$e*hWeqfcN_tҵ<$wZZ+{Ck/]ZuTw{;_ϼyw\]4ӝ捴pmSػn:OԷ^뫏x}̂%L$mJu:+. l0Cm a֑lkX͔^9U1$.A#X*#bJŚм?ӴIu刯zl-Rwwݠѝ>)_XK)ևir|ZKOi<9nYY@(_#|ݲ[[^\hE'RsKcN; ۖ<$/G .ѷy*;c_Ҍ(9{ O4׭Z#ڌ?+^daΚ^XXn;:7eo265}hr"#t5-ph6/$95yqr~ i |_[_^q'-A70ŸzlQNJJ3G][h6HBUp/3Ɲsw[iXӶ"x+SsbkBEt2S5i*5ϼyE_ntW V-l]Os}u^݌v=8.$o W޷lmPS^?kcjbcҶiP^i܌1uג[x<'TJ.ܧjQ9%=ӟ skyc_\6WL\qvh'?SCc]hx$Ӽg [rPI3'=Z{{b$"lǁ[s7ڦWeq#Ƒ'DZz8즿+o=qE'\r:;=q}7]XqE=hl=Ċ/0,|HDz*Od2s%{Aas+CMeOV<_ի^حb,߱wڵ=ݿ?Oc<5gf?B;vn#.JSo[\NhJ2k?cp4=cͤV@T%eo%cZoyeOVe(_#:IRIU!֭<>+~{p42Pf9gkۆh}Jo<| Uw;L\d/[5s\UMn (a_ӓ#t }5k&.GOwޙ@ <SaME)d ؔǁ@@@@@@@@@@@@@@S;Zޗ]=~M7,3q(þ67M]\$T ǂf cJ I\A@Ja76L ] dawy[ɕ&U-2%:F|}oIuڗ ވ%om2Vdkn߄ZdmPR@|K< #X?e4`Ԙa s6{jdo+X 1;;=ETtf֦{8ԭLBl"~Z ndnM8M%|c;'vޓmTr!uw3(ɢgKVuL♠ӎ)TtЮO/h_x$-27MVUibQ&e,6!Zn#zo6Q1q6 >aD~+FK;d9qM_3e_GΕ֏X{7<ʝGq=- R}52At;jϥhq&3wqȹ9#Mn cV/ⷎ6wm1X/YSΘsne6.kky]cIXڍa H>'io,moM+uEf {jx|VNk|"H[ of1wa{'b*u6?qխs׹*8O_9冂am(.޺i4rom:#B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@T7(@ =  ~*www.ZZUtils.com/train8http://www.zzutils.com/train/ 00DTimes New Romanttwx: 0DArialNew Romanttwx: 0 DWingdingsRomanttwx: 00DCourier Newmanttwx: 01 C .  @n?" dd@  @@``  H|                                                             XYZ[\] `abcdef ghij klmn orstuvwxyz{| }~                              5/XR$Z7̏K`:R$;43BF*zf: 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s " 0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab@3f@8 g4KdKdPx: 0ppp@  <4dddd@ 0tg4HdHd쮒x: 0pp p ʚ;ɡ3ʚ;<4dddd@U 0@r0___PPT10 2___PPT9/ 0? -O = Batch Topics      `sOverview bu WORK Files  WORK Files  WORK Files  WORK Files  WORK Files  WORK Files cv WORK Files dw WORK Files jx WORK Files lz WORK Files WORK Files & Printers kyWORK Files & Printers WORK Files & Printers Printers Printers Printers m{WORK Files & Printers WORK Files & Printers WORK Files & Printers n|Sorting o}Sorting Sorting qSorting rSorting sSorting tSorting uSorting vSorting wSorting xJCL yJCL JCL JCL JCL JCL JCL JCL JCL et Sorting & JCL Restart Restart Restart Restart Restart Restart Restart Restart Restart Restart Restart Restart Restart Restart Restart Restart Restart  Batch Topics    /asftguhwixzy{z|{}|~}~N   0` %%/3f3` E1Affff` ffCIfff` CI33̙` rCI]2}/<̙` q3fff3` 3ffffff` ff3f` ff3̙f` ffff3f>?" dd@ ?Fd@lK " d@0`4 n?" dd@   @@``PP   @ ` `*p>> c[ (    <ڒ #" `x  T Click to edit Master title style! !$  0ݒ "  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S`B  s *DԔ"xZf"2  6L"f <  2  6l"Z <  2  6"N <    s \A2LEN_crop circle logo LLC#" `H   Bl"  d* 0 ^   C (ANC logo"P   0 "    !Batch Topics LEN CONSULTING LLCV"0      H  0޽h ? 3ffffff___PPT10u.. O +D=' = @B +  1_Echo  0 D< (    6t  "`@0  T Click to edit Master title style! !  0T  "0 @0  W#Click to edit Master subtitle style$ $B  s *Dm",$D 02  6"-gB <  2  64".  <  2  6".>  <     s \A2LEN_crop circle logo LLC#" `H   BD"  d* 0 ^   C (ANC logo"P   0 "    !Batch Topics LEN CONSULTING LLCV"0      H  0޽h ? 3ffffffD<___PPT10.. O  0 @x*(  x x 0\j z%   X*  x 0o  @%  Z* d x c $ ?XK   x 0Ps  N)  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S x 6x z   X*  x 6`~  @  Z* H x 0.k ? ̙3380___PPT10.@J  0,( p   0Li3 z%  3 **Natural Batch Topics   0l3  @% 3 Z* 8  6 z  3 6* 2006 LEN CONSULTING LLCB       6  @ 3 Z* H  0.k ? ̙3380___PPT10.@ 0L0 0q(  ~  s **`@0    0   P H r&Natural Conference 2006 Training Track0'8 lKP'    08  `H yRalph Zbrog RGZbrog@ZZUtils.com. 0 lKP  HHH  0޽h ? 33___PPT10i.ߥ +D=' = @B +  0 `e(  x  c $x     0  ``H M}Excerpts from a 1-day seminar: Batch Processing with Natural and Adabas. See www.ZZUtils.com/train.html for more information.R~0 lKP  (  7  MX 0MgHHH  0޽h ? y___PPT10Y+D=' = @B + s 0 (    <~ 8  w3WORK files Printers Sorting JCL Restart & recovery44r  S x   H  0޽h ? y___PPT10Y+D=' = @B +B u 0 ia(    0LP> N Default SELECT clausex  0 0 HREAD WORK Syntax(2   0t PR  x0Each field interrogated to verify numeric format1x1$   0 P`" |4Returns NAT1505 Invalid data for numeric input field5x5$  0"`  g1 #REC 2 #FIELD1 (A25) 2 #FIELD2 (P7.2) READ WORK 1 #REC READ WORK 1 #FIELD1 #FIELD2,hgr  S x   H  0޽h ? y___PPT10Y+D=' = @B +D  0 kc  p(  p p 00 HREAD WORK Syntax(2 p 0#P> y1What if you are the creator of the input dataset?2x2$ p 0h-P }eg in a previous job stepx 0$ p 08=P -ie you can guarantee the validity of the data.x., p$ p 0BP  x.Why incur the cost of the field verifications?/x/ 0$r  p S <x   H p 0޽h ? y___PPT10Y+D=' = @B +z  0  <1(  < < 0\R0 HREAD WORK Syntax(2 < 0$WP2 k3 Specify RECORD clause to avoid format verification4x4 < 0d@ @  dHuge performance improvementx$2 < 0L\"`  |1 #REC 2 #FIELD1 (A25) 2 #FIELD2 (P7.2) READ WORK 1 RECORD #REC READ WORK 1 RECORD #FIELD1 #FIELD2,}| < 0s @  l$Possible NAT0954 for bad packed data%x%$" < 0~@^ \Does not trap alpha translation ( ABC 123):/x($r < S xx   H < 0޽h ? y___PPT10Y+D=' = @B +  0   4(  4 4 0(P> + Read blocks of alpha for similar cpu gains,x," 4 00 HREAD WORK SELECT(26  4 0"`  1 #REC 2 #BLOCK1 (A250) 2 #BLOCK2 (A250) 2 #BLOCK3 (A250) 2 #BLOCK4 (A75) READ WORK 1 #REC /* No RECORD clause,r  4 S x   H 4 0޽h ? y___PPT10Y+D=' = @B +  0 `  hr(  h h 0X0 HREAD WORK RECORD(2 h 0P> p(Clears field contents prior to each read)x)$ h 0±P dMay result in logic errorsx 0$ h 0Dα=P kField values unavailable at EOF x  p$ h 0رP  _May result in NAT0954x 0$  h 0m P  r&RESET alpha block corrupts packed data'x' p$r  h S ܱx   H h 0޽h ? y___PPT10Y+D=' = @B +A  0 h`  ,(  , , 0hPP H Temporary filesx , 0T0 ?Control(2 , 0D"`L n&WRITE WORK 1 #BLOCK READ WORK 1 #BLOCK,'& , 0P.  O Continuing a READ WORKx , 0x P  O Restarting a READ WORKx , 0"`   c+READ WORK 1 ONCE #CONTROL READ WORK 1 #DATA,,  , 0"`P  VCLOSE WORK 1 READ WORK 1 #DATAr  , S x   H , 0޽h ? y___PPT10Y+D=' = @B + w 0  i(      0 PP S Defining the output recordx   0<%0 @Creation (2 T   04)"`|  1 CMST VIEW CUST-MAST 2 ACCOUNT-NBR 2 BILL-EFF-DATE 2 ... * 1 #REC 2 #ISN (N10) /* 1 2 #ACCOUNT-NBR (N8) /* 11 2 #BILL-EFF-DATE (A8) /* 19 2 ...r   S 'x   H   0޽h ? y___PPT10Y+D=' = @B + x 0 -% (    04@PP U Populating the output recordx  0tD0 @Creation (2 1  0@H"` ASSIGN #ISN = *ISN (C.) ASSIGN #ACCOUNT-NBR = CMST.ACCOUNT-NBR ASSIGN #BILL-EFF-DATE = CMST.BILL-EFF-DATE ... WRITE WORK 1 #RECm  0I"` n  ASSIGN #ISN = *ISN (C.) /* P10 to N10 WRITE WORK 1 #ISN /* 1 CMST.ACOUNT-NBR /* 11 CMST.BILL-EFF-DATE /* 19 ... /* 27 r  S Qx   H  0޽h ? y___PPT10Y+D=' = @B +f  y 0   @ (    00^P R Defining the input recordx  0lb0 @Creation (2    08f"`u /ZZLIST LEN Consulting LLC 04/01/2004 10:10 Natural Utilities ZZUtils v2.1 Natural Source Module Listing Page: 1 Library: ACU7569 Data Area: RGZCMS Natural: 2.2 0008 Saved by ACU7569 on 10/10/00 10:10:10 Termid: ACU7569 L R Field Name F Len Occ/Comment Begin End 1 #REC 2 #ISN N 10 1 10 2 ACCOUNT-NBR N 8.0 11 18 2 BILL-EFF-DATE A 8 19 26 2 DT-RESTOR N 6.0 27 32 2 DT-ARCHV N 6.0 33 38 2 LEC-OVRD-CD A 1 39 39 2 CANCEL-DATE N 6.0 40 45 2 CANCEL-REASON A 2 46 47 2 CANCEL-AUTHZD-BY A 8 48 55 2 PUB-FON-PLAN-ID A 3 56 58 2 TAX-ID-NBR N 9.0 59 67 *** End of list *** Press ENTER for a new selection or PF3/PF15 to exit 00 ,v!r  S qx   H  0޽h ? y___PPT10Y+D=' = @B + { 0 D<,(  , , 0|PP l Variable vs fixedx  , 0D0 >Length(2 , 04P H Comma-delimitedxr , S x   H , 0޽h ? y___PPT10Y+D=' = @B +  0   D(    00 ICommon Processing(2  0H bTreated similarly by Natural 2  0@` NDEFINE 2  0   MCLOSE 2  0  LOPEN 2r   S Lx   H  0޽h ? y___PPT10Y+D=' = @B +H  z 0 %` $(  $ $ 080 C Null Output (2  $ 0"` ^&DECIDE FOR FIRST #CODE VALUE  A WRITE WORK 1 #FIELD1 VALUE  B CALLNAT  CODEB #DATA VALUE  C CALLNAT  CODEC #DATA #PLUS ..." $ 0"`` 2  |WRITE WORK 2 #DATA /* CODEB WRITE (3)  CODE B FOUND ...?? $ 0|"` r  p8WRITE WORK 3 #PLUS /* CODEC #DATA ...99 $ 0<@0`,$D 0 Z$What happens if CODEB is not called?% 2%f  $ s p0e0e 3"0e`x   H $ 0޽h ? ___PPT10+kMDO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(+8+0+$0 +y  0   0(    0 0 C Null Output (2   0"``>  IF FALSE /* Never THEN WRITE WORK 1 #LRECL-1 /* Must match CODEB WRITE (3)   END-IFss  0  [Explicit LRECL in JCL 2   s 0e0e 3"0e`x   H  0޽h ? y___PPT10Y+D=' = @B +   0     (    04% @`@ > 2   0&0 RCarriage Control: CCONTROL(2f  08+"`p@0   > > + Program NC-BT-01 Lib ZZUTIL All ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 DEFINE DATA LOCAL 0020 1 #I (I4) 0030 1 #A (A10) INIT <'ABCDEFGHIJ'> 0040 END-DEFINE 0050 WRITE ' ' 0060 WRITE ' ' 0070 WRITE 0080 #A 0090 END ....+..Current Source Size: 139 Char. Free: 223670 ...+... S 9 L 1    0,"`0 @0 }C----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----> 1Page 1 - ABCDEFGHIJ DxD   0x6P QDefaultx 8   s P70e0e 3"0e`x   H  0޽h ? y___PPT10Y+D=' = @B +   0    L (  L L 0DS @`@ > 2  L 0LU0 RCarriage Control: CCONTROL(2 L 0dY"`p@0S  9 > > + Program NC-BT-02 Lib ZZUTIL All ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 DEFINE DATA LOCAL 0020 1 #I (I4) 0030 1 #A (A10) INIT <'ABCDEFGHIJ'> 0040 END-DEFINE 0050 DEFINE PRINTER (2) OUTPUT 'CMPRT02' 0060 DEFINE PRINTER (3) OUTPUT 'CCONTROL' 0070 WRITE (3) 0080 ' ' 0090 #A 0100 WRITE (3) NOTITLE 0110 '+' 0120 '_ _ _ _ _ ' 0130 END ....+..Current Source Size: 281 Char. Free: 223192 ...+... S 13 L 1   L 0`"` @0 ,----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----> ABCDEFGHIJ + _ _ _ _ _ x  L 0pP YUser-controlledx 8  L s q0e0e 3"0e`x   H L 0޽h ? y___PPT10Y+D=' = @B +   0    Dc (  D D 0 @`@ > 2  D 0 0 RCarriage Control: CCONTROL(2 D 08"`p@0m  a > > + Program NC-BT-03 Lib ZZUTIL All ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 DEFINE DATA LOCAL 0020 1 #I (I4) 0030 1 #A (A10) INIT <'ABCDEFGHIJ'> 0040 END-DEFINE 0050 DEFINE PRINTER (2) OUTPUT 'CMPRT02' 0060 DEFINE PRINTER (3) OUTPUT 'CCONTROL' 0070 WRITE (3) NOTITLE ' ' 0080 WRITE (3) ' ' 0090 WRITE (3) 0100 #A 0110 END ....+..Current Source Size: 242 Char. Free: 223215 ...+... S 11 L 1 bb  D 0"` @0o C----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----> ABCDEFGHIJ *D G D 0P ]No carriage controlx 8  D s 0e0e 3"0e`x   H D 0޽h ? y___PPT10Y+D=' = @B +p | 0  4'(  4 4 0P QTestingx 8 4 0T0 ?Testing(2 4 0< PZ n"More convenient on-line than batch#x# 8 4 0XP 6TSO, Com-plete, CMS allow on-line access to WORK files7x7 ) 8 4 0P  TFor CICS x  8 4 0 Pf  o#Replace READ WORK with REPEAT/INPUT$x$ 8  4 0d P  ^DEFINE WORK as TDQx 8  4 0 P z.DEFINE PRINTER  SOURCE x 8r  4 S tx   H 4 0޽h ? y___PPT10Y+D=' = @B +Y  0 x  (    0 P fWrite to (0) to test on-linex 8  00 ?Testing(2  0@(P ;MAINPR in batch to separate output from Natural audit trail<x< 8hr   S x   H  0޽h ? y___PPT10Y+D=' = @B +/  0 VN` (    0.P N Questions?( (2   s 10e0e 3"0e`x   H  0޽h ? y___PPT10Y+D=' = @B + } 0 F><(  < < 0>P   Internal vs external sort,x  < 0C0 ?Sorting(2 < 0I  r SORT verb vs JCL stepx   < 0N  W Both invoke the sort utilityxr < S |Ox   H < 0޽h ? y___PPT10Y+D=' = @B + ~ 0 6. D(  D D 0aPP Q Internal, x  D 0hf0 ?Sorting(2 D 0mP I Simplifies JCLx D 0lP^ a' Sequence is specified with field names(x( D 0tpP  a' Efficient: eliminates writes to target(x( D 0y P  _% Complex: combines extract and report&x&  D 0} P  J Inefficient I/Oxr  D S $vx   H D 0޽h ? y___PPT10Y+D=' = @B +I  0 ph  (    0PP Q External, x   0ؕ0 ?Sorting(2  0ТP 2Simple extract and report vs single complex module3x3  0 PZ  I Full-track I/Ox  0` P  L Efficient restartx  0 Pb r*Sequence specified with cryptic parameters+x+   0P I Additional I/Oxr   S x   H  0޽h ? y___PPT10Y+D=' = @B +_  0 ~ T(  T T 0`PP E Comparison 1x T 00 ?Sorting(2 T 0"`  H5,000 records: CPU sec EXCPs Elapsed External Sort Extract 1.08 415 00:00:36 Sort .12 2 00:00:02 Report 1.12 416 00:00:07 Total 2.32 833 00:00:45 Internal Sort 2.56 380 00:01:33 Test machineII%r T S x   H T 0޽h ? y___PPT10Y+D=' = @B +e  0 @\(  \ \ 0PP E Comparison 2x \ 00 ?Sorting(2 \ 0"`0  N50,000 records: CPU sec EXCPs Elapsed External Sort Extract 1.99 631 00:00:29 Sort .33 7 00:00:08 Report 5.48 632 00:00:17 Total 7.80 1270 00:00:54 Internal Sort 8.26 230 00:00:35 Production machineOO+r \ S x   H \ 0޽h ? y___PPT10Y+D=' = @B +  0 ?7`d(  d d 0 PP VRecommendationx d 0P0 ?Sorting(2 d 0PN eInternal sort will save I/Ox d 0'P  AUse external sorts for better design at reasonable increased costBxBr d S  "x   H d 0޽h ? y___PPT10Y+D=' = @B +  0 l:(  l l 0D7PP H Sort parametersx l 0$<0 ?Sorting(2 l 0?"`P jSORT FIELDS=(1,6,CH,A,7,8,CH,A,15,2,CH,A,60,3,CH,A) SUM FIELDS=(63,10,ZD,73,8,ZD,81,5,ZD,86,5,ZD,91,9,ZD)kk l 0D"`P,  s* TRD010S1 SORT FIELDS=(01,06,CH,A, ROUTE 07,08,CH,A, SCHD DATE 15,02,CH,A, LEG 60,03,CH,A) SVC LEVEL SUM FIELDS=(63,10,ZD, TOT WGT 73,08,ZD, CUBIC FEET 81,05,ZD, TOT PCS 86,05,ZD, SHIPMENT COUNT 91,09,ZD) TOTAL CHGSttr l S Ix   H l 0޽h ? y___PPT10Y+D=' = @B +S  0 zrt (  t t 0x]PP k Sort vs AT BREAKx  t 0db0 iSort vs Natural(2  t 0`f"`P xREAD CUSTMAST BY ACCOUNT AT BREAK OF ACCOUNT WRITE / 10T OLD (ACCOUNT) 20T #TOTAL (EM=ZZ,ZZ9.99)yy t 0k"`0 P * CSTMST01 INCLUDE COND=(01,08,NE,C  , ACCOUNT &,01,08,NE,C 00000000 ) SORT FIELDS=(01,08,ZD,A), ACCOUNT EQUALS FIRST RECORD SUM FIELDS=(50,04,PD) TOTAL READ WORK 1 #ACCOUNT #TOTAL WRITE 10T #ACCOUNT 20T #TOTAL (EM=ZZ,ZZ9.99)uur t S lx   H t 0޽h ? y___PPT10Y+D=' = @B +<  0 c[|(  | | 0PP M Records per US statex | 0Ј0 iSort vs Natural(2  | 0̌"`P UREAD WORK 1 #DATA EXAMINE #ST (*) FOR #STATE GIVING INDEX #I ADD 1 TO #COUNT (#I)VV | 0@P  L Records per US cityx | 0"` P  ^READ WORK 1 #DATA ADD 1 TO #COUNT AT BREAK OF #CITY WRITE OLD (#CITY) #COUNT__r | S Px   H | 0޽h ? y___PPT10Y+D=' = @B +  0  (    00PP Q Let SORT do the countingx  0D0 iSort vs Natural(2   0"`P  N INREC FIELDS=(07,03, COUNTY 01,07, CITY C 0000001') COUNT SUM FIELDS=(11,7,ZD) COUNT READ WORK 1 #CNTY #CITY #COUNT WRITE #CNTY (IS=T) #CITY #COUNT4  0,"`P P . INREC FIELDS=(01,98, BASE RECORD C 0000001') COUNT SUM FIELDS=(99,7,ZD) COUNT(vsr  S x   H  0޽h ? y___PPT10Y+D=' = @B +K  0 rj (    00PP N Invocation parametersx  0d0 ?Example(24  00"` //NAT EXEC NATDEV, // PARM=( MT=0,MAINPR=1,DBUPD=OFF )HH   0P.  @ CMPRMIN x    0X"``   g//CMPRMIN DD * SYS=DEVL,AUTO=ON,MAXCL=0,MADIO=0, MT=0,IM=D,SL=74,MAINPR=1 /*hxh r   S x   H  0޽h ? y___PPT10Y+D=' = @B +7  0 ^V (    0PP > *DATAx  040 FIn-stream Data(2  0 "`  zB//CMSYNIN DD * LOGON PRODLIB PROGRAM1 PARM1 PROGRAM2 PARM2 FIN /*CCr  S x   H  0޽h ? y___PPT10Y+D=' = @B +   0   T (    00 "`@0 1 > > + Program NC-BT-04 Lib ZZUTIL All ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 DEFINE DATA LOCAL 0020 1 #IN (A10) 0030 1 #A (A30) INIT <'ABCDEFGHIJ'> 0040 END-DEFINE 0050 * 0060 WRITE (1) *PROGRAM '=' *DATA 0070 * 0080 REPEAT 0090 INPUT #IN (AD=A) 0100 IF #IN = '.' 0110 THEN 0120 STOP 0130 END-IF 0140 DISPLAY (1) #IN 0150 WRITE WORK 1 #IN 0160 #A 0170 END-REPEAT 0180 END 0190 0200 ....+..Current Source Size: 303 Char. Free: 223194 ...+... S 18 L 1 d2P  f  f   0l 0P~ m CMSYNIN vs CMOBJINx    0d00 FIn-stream Data(2r  S \x   H  0޽h ? y___PPT10Y+D=' = @B +^  0 }`l(  l l 0 $"`@0  r//CMSYNIN DD * LOGON ZZUTIL %Q NC-BT-04 FIN /* //CMOBJIN DD * INPUT1 INPUT2 . /* t  f  f G  l 0T<0P~ m CMSYNIN vs CMOBJINx   l 0L?00 FIn-stream Data(2r l S Ix   H l 0޽h ? y___PPT10Y+D=' = @B +A   0 h ` T (  T T 0,R"`@0  z1NEXT LOGON ZZUTIL NEXT NC-BT-04 1#IN DATA INPUT1 1#IN DATA INPUT2 1#IN DATA . 1NEXT FIN 1NAT9995 NATURAL SESSION TERMINATED NORMALLY ******************************** Bottom of Data ********************************{  f  f  f  T 0T0P~ m CMSYNIN vs CMOBJINx   T 0_00 FIn-stream Data(2/ T 0 k"` @0 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----> 1Page 1 05/20/04 13:18:17 0 #IN ---------- 0NC-BT-04 DATA: 0 INPUT1 INPUT2 ******************************** Bottom of Data ********************************x r T S nx   H T 0޽h ? y___PPT10Y+D=' = @B +W   0 ~ v \ (  \ \ 0"`@0 41NEXT LOGON ZZUTIL *CF* %Q 1NEXT NC-BT-04 DATA INPUT1 DATA INPUT2 DATA . 1NEXT FIN 1NAT9995 NATURAL SESSION TERMINATED NORMALLY ******************************** Bottom of Data ********************************@W  f  \ 0l0P~ m CMSYNIN vs CMOBJINx   \ 0Ȋ00 FIn-stream Data(2/ \ 0"` @0 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----> 1Page 1 05/20/04 13:18:17 0 #IN ---------- 0NC-BT-04 DATA: 0 INPUT1 INPUT2 ******************************** Bottom of Data ********************************x r \ S px   H \ 0޽h ? y___PPT10Y+D=' = @B +  0   P(  P P 0ث @  W If AVGREC=U, assigns LRECL=133 x  P 00 ISpace Allocations(2 P 0"` v ]%// SPACE=(CYL,(10,5),RLSE)&& P 0t"`  _'// SPACE=(TRK,(100,50),RLSE)(( P 0"`  }E// SPACE=(133,(200000,10000),RLSE), // AVGREC=UFF P 0@ @  m% If BLKSIZE=0, allocates 32 cylinders&x&hhr  P S x   H P 0޽h ? y___PPT10Y+D=' = @B +U  0 |t  X (  X X 0t0@~ M AVGREC not specifiedx X 00 ISpace Allocations(2 X 0"` v -// SPACE=(133,(200000,10000),RLSE)@.  X 0@   Allocates 200,000 blocks of 133:!xhh  X 0XP @  l$ Primary allocation of 185 cylinders%x%hh3  X 0p @V k If printer/WORK not closed, RLSE ignored Explicitly closed only if explicitly opened, as in CODEB example :*xBx*B hr  X S x   H X 0޽h ? y___PPT10Y+D=' = @B +x  0 @  `/(  ` ` 0@ S Smaller primary allocationx ` 0X0 ISpace Allocations(2 ` 0"`0 | G// SPACE=(133,(1,200000),RLSE), // UNIT=(SYSDA,5)@H  &r  ` S x   H ` 0޽h ? y___PPT10Y+D=' = @B + t 0 `(    0 P N Questions?( (2 r  S .x   H  0޽h ? y___PPT10Y+D=' = @B +  0 @~(  $  08 PP  j On-line vs batch Methods Concerns JCL considerations Mechanism WORK and print records Sample sourcekxk `  0< 0 @Overview (2 r  S ` x   H  0޽h ? y___PPT10Y+D=' = @B +   0 7/` (    0?0 jOn-line vs Batch(2  0D V On-line abend,x  0N  l$ User verifies preceding transaction,%x$  0$P 8  `& How many records processed/remaining?'x'  0Q,  e Batch abend. x    0d!  y#ET logic eliminates partial updates,$x#   0j b User re-tries transaction,x   0m C  S Values of counts/totals?x   0p N  V Disposition of output filesxr  S ox   H  0޽h ? y___PPT10Y+D=' = @B +|  0  3(    0|}PP [# Re-run until successful completion$x$  00 ?Methods(2  0P O Restore files/databasex  04P^ H Set update flagx  0̌pP  P Build-in restartabilityxr   S x   H  0޽h ? y___PPT10Y+D=' = @B +  0  (    0ܩP m#Read Personnel file for a 10% raise$x$ 8  00 @Examples (2   0з cRestore file and re-runx 8  0ȿ eSet INCREASE-APPLIED flagx 8  0^  iSubsequent step to reset flagx 8   0P   cBuild-in restartabilityx 8   0   p$Read CUST-MAST for 10% fee reduction%x% 8R   0 2 Without built-in restartability, consider cost of re-run if abend of  Zbrog recordTxT 8r   S hx   H  0޽h ? y___PPT10Y+D=' = @B +  0  (    04PP L System availabilityx  0D0 @Concerns (2   08P6 N Concurrent processingx  0 P v>  Threshold records backed-out x r  S  x   H  0޽h ? y___PPT10Y+D=' = @B +  0 <4(    0PPP L Step restartabilityx  00 JJCL Considerations(2  0"P T Single program per job stepxr  S $x   H  0޽h ? y___PPT10Y+D=' = @B +  0  (    0p7PP @ ET data x   0;0 A Mechanism (2   0`?P E Control filexr  S Bx   H  0޽h ? y___PPT10Y+D=' = @B +g  0  (    0SPP N DSN ABEND dispositionx  0W0 NWORK and Print Records(2  00\pP  Q Single contiguous reportx  0`P < MODx  0d Pn C Duplicates x r  S fx   H  0޽h ? y___PPT10Y+D=' = @B +#  0 JB@ (    0w0 E Sample Source(2{  08|"`   ZZLIST LEN Consulting LLC 04/01/2002 10:10 Natural Utilities ZZUtils v2.0 Natural Source Module Listing Page: 1 Library: ZBROG Program: ZZRESTRT Natural: 2.2 0008 Saved by ZBROGRG on 01/02/06 10:10:10 Termid: 5274 * Module: ZZRESTRT * Function: Skeleton Program - Demonstrates restartability * Author: Ralph G. Zbrog * Date: 01/01/90 * * Date * Name * Summary of Changes ************************************************************************ * * * ************************************************************************ *  s;r  S ؄x   H  0޽h ? y___PPT10Y+D=' = @B +  0 &` (    00 O Sample Source&(2M  0P"` v  DEFINE DATA LOCAL /* Constants 1 #C 2 BLANK (A1) CONST <' '> * LOCAL /* ET data 1 #ET (A28) 1 REDEFINE #ET 2 PROGRAM (A8) 2 CONTROL (N7) 2 ISN (P8) 2 FIELD (N7) 2 FLAG (L) 1 #RESTART 2 CONTROL (N7) 2 ISN (P8) 1 #TRACE (L) INIT END-DEFINE */  r  S x   H  0޽h ? y___PPT10Y+D=' = @B +  0  =(    0P0 E Sample Source(2  0"`   p8* * Restartability Code * IF *DATA > 0 /* Trigger to revoke RESTART THEN INPUT (AD=O IP=OFF) *PROGRAM /* Clear the ET data 'REFRESHED' 60T *DATU *TIME(AL=8) END TRANSACTION #C.BLANK CALLNAT 'ZZNABEND' /* Abend the job END-IF * GET TRANSACTION DATA #ET * 99 r  S tx   H  0޽h ? y___PPT10Y+D=' = @B +  0  (    00 E Sample Source(2K  0"` \  DECIDE FOR FIRST CONDITION WHEN #ET.PROGRAM = #C.BLANK /* First pass through the program INPUT (AD=O IP=OFF) *PROGRAM 'EXECUTED' 60T *DATU *TIME (AL=8) ASSIGN #ET.PROGRAM = *PROGRAM RESET #ET.CONTROL ASSIGN #ET.FIELD = VALUE WHEN #ET.PROGRAM = *PROGRAM /* This is a RESTART INPUT (AD=O IP=OFF) *PROGRAM 'RESTARTED' 60T *DATU *TIME (AL=8) // 'CONTROL:' #ET.CONTROL // ' FIELD:' #ET.FIELD ASSIGN #RESTART.CONTROL = #ET.CONTROL ASSIGN #RESTART.ISN = #ET.ISN >   r  S hx   H  0޽h ? y___PPT10Y+D=' = @B +:  0 aY (    0X$0 E Sample Source(2  0("`   $WHEN NONE /* This is a problem INPUT (AD=O IP=OFF) *PROGRAM 'TERMINATED' 60T *DATU *TIME(AL=8) // 'INCONSISTENT RESTART DATA' / 'ET DATA:' #ET (EM=X(8)X(7)X(5)X(7)X) * END TRANSACTION #C.BLANK /* Clear ET data (dangerous) CALLNAT 'ZZNABEND' /* Terminate the job END-DECIDE */ r  S *x   H  0޽h ? y___PPT10Y+D=' = @B +  0  X(    0E0 E Sample Source(2  0pJ"`   S* ... /* Normal initialization * RBAT. READ BATCH BY XXX FROM #RESTART.CONTROL * AT START OF DATA /* Ignore last processed record * REJECT IF BATCH.CONTROL = #RESTART.CONTROL /* Assumes unique * END-START /* key values REJECT IF BATCH.CONTROL = #RESTART.CONTROL /* Ignore processed AND *ISN (RBAT.) <= #RESTART.ISN /* duplicate keys * * ... /* Normal processing * TT r  S Px   H  0޽h ? y___PPT10Y+D=' = @B +  0   E(      0j0 E Sample Source(2   0ln"` B x@ IF *COUNTER (RBAT.) = 50 /* ET threshold THEN RESET *COUNTER (RBAT.) ASSIGN #ET.CONTROL = BATCH.CONTROL ASSIGN #ET.ISN = *ISN (RBAT.) ASSIGN #ET.FIELD = BATCH.FIELD ASSIGN #ET.FLAG = BATCH.FLAG IF #TRACE THEN INPUT (AD=O IP=OFF) *PROGRAM 'EXECUTING ET' 60T *DATU *TIME (AL=8) // 'CONTROL:' #ET.CONTROL / ' ISN:' #ET.ISN / ' FIELD:' #ET.FIELD / ' FLAG:' #ET.FLAG (EM=TRUE) END-IF END TRANSACTION #ET END-IF END-READAA r   S ux   H   0޽h ? y___PPT10Y+D=' = @B +  0  Q(    00 E Sample Source(2  0"` 7  L* * /* End-of-job processing WRITE WORK 1 #CTL /* Control record INPUT (AD=O IP=OFF) *PROGRAM 'ENDED' 60T *DATU *TIME (AL=8) // 'CONTROL:' #ET.CONTROL / ' FIELD:' #ET.FIELD / ' FLAG:' #ET.FLAG (EM=TRUE) END TRANSACTION #C.BLANK END MM r  S x   H  0޽h ? y___PPT10Y+D=' = @B +  0 @ `(    0P N Questions?( (2 r  S Px   H  0޽h ? y___PPT10Y+D=' = @B + 0L0 q(  ~  s *l`@0    0X  P H r&Natural Conference 2006 Training Track0'8 lKP'    0  `H yRalph Zbrog RGZbrog@ZZUtils.com. 0 lKP  HHH  0޽h ? 33___PPT10i.ߥ +D=' = @B +s 0 R(  d  c $xXK     s *x N)   <Z H  0.k ? ̙33t 0 4(  d  c $xXK     s *5x N)    H  0.k ? ̙33u 0 T(  d  c $xXK     s *0 x N)   >  H  0.k ? ̙33v 0 R(  d  c $xXK     s *`5x N)   <  H  0.k ? ̙33w 0 0P(  d  c $xXK     s *|Yx N)   : H  0.k ? ̙33x 0 P R(   d   c $xXK      s *nx N)   <  H   0.k ? ̙33y 0 p(P(  (d ( c $xXK    ( s * x N)   : H ( 0.k ? ̙33z 0 0R(  0d 0 c $xXK    0 s *R x N)   <  H 0 0.k ? ̙33{ 0 8R(  8d 8 c $xXK    8 s *h x N)   <  H 8 0.k ? ̙33| 0 @R(  @d @ c $xXK    @ s *8Wx N)   <  H @ 0.k ? ̙33} 0 HR(  Hd H c $xXK    H s *x N)   <  H H 0.k ? ̙33 0 0XR(  Xd X c $xXK    X s *x N)   <  H X 0.k ? ̙33 0 P`R(  `d ` c $xXK    ` s *x N)   <  H ` 0.k ? ̙33 0 phR(  hd h c $xXK    h s * x N)   <  H h 0.k ? ̙33 0 pR(  pd p c $xXK    p s *LSx N)   <  H p 0.k ? ̙33 0 xR(  xd x c $xXK    x s *zx N)   <  H x 0.k ? ̙33 0 R(  d  c $xXK     s *h x N)   <  H  0.k ? ̙33 0 R(  d  c $xXK     s *\x N)   <  H  0.k ? ̙33 0 V(  d  c $xXK     s *x N)   @  H  0.k ? ̙33 0 0P(  d  c $xXK     s *x N)   : H  0.k ? ̙33 0 P4(  d  c $xXK     s *;x N)    H  0.k ? ̙33 0 pP(  d  c $xXK     s *pyx N)   : H  0.k ? ̙33 0 T(  d  c $xXK     s *`x N)   >x  H  0.k ? ̙33 0 T(  d  c $xXK     s *Lx N)   >x  H  0.k ? ̙33 0 T(  d  c $xXK     s *x N)   >  H  0.k ? ̙33 0 T(  d  c $xXK     s *,x N)   >  H  0.k ? ̙33 0  T(  d  c $xXK     s *Ix N)   >  H  0.k ? ̙33 0 0 T(  d  c $xXK     s *p:x N)   >  H  0.k ? ̙33 0 P R(  d  c $xXK     s *x N)   <  H  0.k ? ̙33 0 p T(  d  c $xXK     s *Px N)   >  H  0.k ? ̙33 0  T(  d  c $xXK     s *(x N)   >  H  0.k ? ̙33 0  T(  d  c $xXK     s *H x N)   >  H  0.k ? ̙33 0  T(  d  c $xXK     s *l;x N)   >  H  0.k ? ̙33 0  T(  d  c $xXK     s *_x N)   >  H  0.k ? ̙33 0  R(  d  c $xXK     s *xyx N)   <  H  0.k ? ̙33 0 0 P(  d  c $xXK     s *x N)   :  H  0.k ? ̙33 0 P  P(   d   c $xXK      s *x N)   :  H   0.k ? ̙33 0  0R(  0d 0 c $xXK    0 s *x N)   <  H 0 0.k ? ̙33 0  8R(  8d 8 c $xXK    8 s *$x N)   <  H 8 0.k ? ̙33 0  @T(  @d @ c $xXK    @ s *x N)   >  H @ 0.k ? ̙33L 0   T(  Td T c $xXK    T s *Xx N)T  <4___PPT9 B-  H T 0.k ? ̙33J 0  0 \(  \d \ c $xXK    \ s *x N)T  <4___PPT9 @- H \ 0.k ? ̙33J 0  P d(  dd d c $xXK    d s *%x N)T  <4___PPT9 @- H d 0.k ? ̙33 0 p lR(  ld l c $xXK    l s *x N)   <  H l 0.k ? ̙33 0  tR(  td t c $xXK    t s *dGx N)   <  H t 0.k ? ̙33 0  R(  d  c $xXK     s *lx N)   < H  0.k ? ̙33 0  P(  d  c $xXK     s *,x N)   : H  0.k ? ̙33 0 p 4(  d  c $xXK     s *:x N)    H  0.k ? ̙33 0  P(  d  c $xXK     s * x N)   : H  0.k ? ̙33 0  R(  d  c $xXK     s *$x N)   <  H  0.k ? ̙33 0 0 4(  d  c $xXK     s *Mx N)    H  0.k ? ̙33 0  P(  d  c $xXK     s *Tx N)   : H  0.k ? ̙33 0 H4(  Hd H c $xXK    H s *\ x N)    H H 0.k ? ̙33 0 P4(  Pd P c $xXK    P s *TNx N)    H P 0.k ? ̙33 0 XP(  Xd X c $xXK    X s *ux N)   : H X 0.k ? ̙33 0 0`P(  `d ` c $xXK    ` s *x N)   : H ` 0.k ? ̙33 0 ppP(  pd p c $xXK    p s *< x N)   : H p 0.k ? ̙33@ 0  P(  d  c $xX\     s *x*5   : H  0.k ? 3380___PPT10.#/@ 0 @P(  d  c $xX\     s *$x*5   : H  0.k ? 3380___PPT10.#/ 0 pR(  d  c $xXK     s *x N)   <Z H  0.k ? ̙33r8M=S`p`=VcP ZtG3?I@qR& F, p&].4Q[cmw   wzvT?\UĤj #-!9#E%Q'])i+s-{/`1nw3o5a7}h9oI<D|>i@@BD@FH0+JL 8N PRKTDCWVX\7DSZX\\3_=a1Oh+'0Ux   $ 0 <HPNatural Conference 2006Batch Topics R G Zbrog Ralph Zbrog330Microsoft PowerPoint@;i@{n=X@`@„ GS;  )'  A  """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___www4'A x@(xKʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwwüüsüüüüüüXyysyyysyyysysyQssKtstsstsyÙyssKKKtstKsstsKKKynnosKstKQKtsKstsstKsE?ooEoonoEsKKKJsKttssJüllllllllllllllllllllllllllllll՜.+,D՜.+,<     On-screen ShowLEN Consulting LLC<< ATimes New RomanArial Wingdings Courier New1_Echo Batch Topics Overview WORK Files WORK Files WORK Files WORK Files WORK Files WORK Files WORK Files WORK Files WORK Files WORK FilesWORK Files & PrintersWORK Files & PrintersWORK Files & Printers Printers Printers PrintersWORK Files & PrintersWORK Files & PrintersWORK Files & PrintersSortingSortingSortingSortingSortingSortingSortingSortingSortingSortingJCLJCLJCLJCLJCLJCLJCLJCLJCLSorting & JCLRestartRestartRestartRestartRestartRestartRestartRestartRestartRestartRestartRestartRestartRestartRestartRestartRestart Batch Topics  Fonts UsedDesign Template Slide Titles< 8@ _PID_HLINKSAthttp://www.zzutils.com/train#_}c Ralph ZbrogRalph Zbrog  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)PicturesCurrent UserSummaryInformation(0UPowerPoint Document(QcDocumentSummaryInformation8