@CAT,P 1024-001-001.,///10000 @ASG,T TEMP.,///10000 @ELT,OI TEMP.1024-001-001,,,130203053241,000 )@@G@@**PF**@@@^&!@@@@@@@@@@@[@TO@@@]FE^?5@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]O@@@@@@@@@@@@@@@@@@@@@@@@AB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@@&@@@AC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@U@@@@@@@@@@@@@@@@@@@@6@@@@@@@@@@@3@@@@@S@@@AD )@@G@@@@'@@@@@@@@@@@@@@\@@@@@@@@?@@@@@+@@R@@@@@@@]O@@@@@@@@@@@H@@@@@@@@@@@@@@@AE )@@G@@@@@@@@@@@@@%@@@@@@@@;@@@@@@@@Y@@@@@@@@@@@(@@@@@@@@@@@@@@T@@@@@@@@@@@@@@@AF )@@G@@@@@@@@@@L@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@J@@@@@@@]A@@!@@"@@@@@5@@]@@I@@@AG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]B@@@@@@@@@@@C@@@@@@@[+@@@@@@@@Q@@@@@@@@@AH )@@G@@@@@@@@@@@@@@@@@@]H@@^@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AI )@@G@@@@@@@7@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@P@@*@@@@@@@@@@@@@@@AJ )@@G@@@@@@@.@@@@]F@@@@@@@]J@@@@@@@@_@@@@@8@[<@@@@@@@@@@@@@@@@@@@@@@@@@@Z@@M@@@AK )@@G@@@@V@@@@]@@@@@@@@@O@@K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-@@@@@@@@@@@@@@@@@@AL )@@G@@@@@@@1@@@@@@@@@@@@@@E@@@@@@@@<@@@@@@@@@@@@@[@@@@@@@@@F@@N@@:@@@@@@@@@@@@AM )@@G@@@@@@@X@@@@@@@@2@@@@@@@@@@@@@@@@@/@@@@@@@@9@@>@@@@@@@@D@@#@@@@@@@@@@@E@]OAN )@@G@@DEBUG @@@@@@@@[@[H @ @@@[]@@@^T@@@@W@G2@^YFPF$AM AO )@@G@@@@@@@,@@[@[* @ @@@[[@@@]5@@@@)TDF$ AFBLDT$F @@@@@@@@[@[]AP )@@G@@ @ @@@[[@@@@J@@@@ @ @#@^]@@@@W@@@[+\CO!DBEDUMMY BI )@@G@@@@@@@@@@[@[L @ @@@[[@@@@[@@@[JIT[NGUNLOAD @@@@@@@@[@[_BO )@@G@@ @ @[@][@@@@8@@@[?DDOG]]GCF$AM @@@@@@@@[@[^ BP )@@G@@@ @[@]]@@@[K@@@[![DH_]NGCHKPT @@@@@@@@[@[A @ @]@#[@@@@!BQ )@@G@@@@@[,LC?"]OGCONF-2 @@@@@@@@[@[E @ @B@ [@@@]@@@@[,"CT_]TGBR )@@G@@SORT @@@@@@@@[@[5 @ @@@[[@@@@4@@@[0"C2*#FGPATCH BS )@@G@@@@@@@@@@[@[& @ @B@ [@@@]2@@@[12F8J#NGRELERR @@@@@@@@[@[\BT )@@G@@ @ @[@][@@@^*@@@[4=B_,#RGSCAN @@@@@@@@[@[3 BU )@@G@@@ @ @ [@@@A?@@@[9GG#N#SGRELOAD @@@@@0@@[@[0 @ @@@[]@@@L;BV )@@G@@@@@[_8HO!#YGCOMPACT @@@@@@@@[@[C @ @@@[[@@@@R@@@]L3C9Y[IGBW )@@G@@DECALC @@@@@@@@[@[I @ @@@[[@@@@_@@@]MEC94[IGDLTPGE BX )@@G@@@@@@@@@@[@[K @ @@@[[@@@[<@@@]NDC'#[IGREORDLT @@@@@@@@[@[1BY )@@G@@ @ @@@[[@@@@3@@@]O?C'([IGDBP$APS @@@@@@@@[@[G BZ )@@G@@@ @@@[[@@@@X@@@]PZCX:[QGINPUT @@@@@@@@[@[V @ @@@[[@@@@8CA )@@G@@@@@]P/C"(#JGRESTORE @@@@@@@@[@[2 @ @@@[[@@@] @@@]Q4C[&#LGCB )@@G@@ART @@@@@@@@[@[[ @ @@@[[@@@ @@@]S9CT5#ZGIIKREORG CC )@@G@@@@@@@@@@[@[U @ @@@[[@@@@?@@@]X"H_Y^DGMAINREORG @@@@@@@@[@[-CD )@@G@@ @ @@@[[@@@A/@@@]Y%I[C^DGDF$AMR @@@@@@@@[@[J CE )@@G@@@ @@@[[@@@[Q@@@]>&I]&^DGSYM$AM @@@@@@@@[@[6 @ @@@[[@@@[TCF )@@G@@@@@]&/I#8^DGEDIT$WK @@@@@@@@[@[M @ @@@[[@@@[,@@@]*PG/L[JGCG )@@G@@ERROR @@@@@@@@[@[N @ @@@[[@@@@N@@@]%#HY"[NGCHANGE CH )@@G@@@@@@@@@@[@[ @ @@@[[@@@[>@@@]%QE"W]FGGETSET @@@@@@@@[@[QCI )@@G@@ @ @@@[[@@@[S@@@]:;H8S]FGLOCATE @@@@@@@@[@[Z CJ )@@G@@@ @@@[[@@@#Q@@@]!ND#6#]GLET @@@@@@@@[@[Y @ @@@[[@@@ XCK )@@G@@@@@]0(F%(#KGGETRSV @@@@@@@@[@[P @ @@@[[@@@[G@@@]6AJ[C#MGCL )@@G@@MAINED @@@@@@@@[@[) @ @@@[[@@@[O@@@]7MIA&^DGRDCTBL CM )@@G@@@@@@@@@@[@[, @ @@@[[@@@@3@@@]8&GYD^JGIIKED @@@@@@@@[@[TCN )@@G@@ @ @@@[[@@@@\@@@]9TC/^^KGCOMMON @@@@@@@@[@[B CO )@@G@@@ @@@[]@@@@>@@@]'CG_*BTFART @@@@@@@@ @@@ @@@];S@@#@@:CP )@@G@@@@@]'!CY-^NGBLDT$F @@@@@@@@ @@@ @@@];Y@@[@@#@@@];VCY&^NGCQ )@@G@@CALL$WK @@@@@@@@ @@@ @@@];>@@[@@A@@@];ZCY%^NGCF$AM CR )@@G@@@@@@@@@@ @@@ @@@];7@@^@@L@@@];&CY\^NGCHANGE @@@@@@@@ @@@CS )@@G@@ @@@]/D@@#@@I@@@];;CY4^NGCHKPT @@@@@@@@ @@@ CT )@@G@@@@@]/S@@#@@G@@@]/GCY'^NGCOMMON @@@@@@@@ @@@ @@@]/+@@#@@BCU )@@G@@@@@]/VCZ]^NGCOMPACT @@@@@@@@ @@@ @@@]/(@@]@@^@@@]/>CZA^NGCV )@@G@@CONF-1 @@@@@@@@ @@@ @@@].M@@A@@$@@@]/:CZR^NGCONF-2 CW )@@G@@@@@@@@@@ @@@ @@@].:@@#@@N@@@].SCZZ^NGDB$AM @@@@@@@@ @@@CX )@@G@@ @@@].8@@#@@E@@@].,CZ1^NGDBP$APS @@@@@@@@ @@@ CY )@@G@@@@@]._@@[@@^@@@].;CZ4^NGDEBUG @@@@@@@@ @@@ @@@]_ @@#@[ CZ )@@G@@@@@]"@C)[^NGDECALC @@@@@@@@ @@@ @@@]_N@@#@@F@@@]_CC)B^NGDA )@@G@@DF$AMR @@@@@@@@ @@@ @@@]_%@@^@@O@@@]_QC)K^NGDLTPGE DB )@@G@@@@@@@@@@ @@@ @@@#@@@@A@@M@@@]_,C)*^NGDUMMY @@@@@@@@ @@@DC )@@G@@ @@@#@B@@[@@[@@@#@AC):^NGEDIT$WK @@@@@@@@ @@@ DD )@@G@@@@@#@U@@ @@M@@@#@CC)6^NGERROR @@@@@@@@ @@@ @@@#@Z@@[@@@DE )@@G@@@@@#@ZC-[^NGF$ASG @@@@@@@@ @@@ @@@#@<@@]@@#@@@#@)C-B^NGDF )@@G@@GETRSV @@@@@@@@ @@@ @@@#@1@@]@@G@@@#@>C-H^NGGETSET DG )@@G@@@@@@@@@@ @@@ @@@#@_@@]@@G@@@#@3C-M^NGGETVAR @@@@@@@@ @@@DH )@@G@@ @@@#[D@@[@@C@@@#[[C-R^NGIFWKR @@@@@@@@ @@@ DI )@@G@@@@@#[N@@[@@D@@@#[EC-Z^NGIIKED @@@@@@@@ @@@ @@@#[<@@^@@JDJ )@@G@@@@@#[OC-(^NGIIKREORG @@@@@@@@ @@@ @@@#['@@^@@N@@@#[$C-6^NGDK )@@G@@INPUT @@@@@@@@ @@@ @@@#]A@@[@@C@@@#["C-;^NGINTRP DL )@@G@@@@@@@@@@ @@@ @@@#]G@@#@@ @@@#]BC+-^NGLD$TBL @@@@@@@@ @@@DM )@@G@@ @@@#]K@@[@@[@@@#]JC+6^NGLET @@@@@@@@ @@@ DN )@@G@@@@@##H@@#@@/@@@#]LCD^NGRELOAD @@@@@@@@ @@@ EC )@@G@@@@@#GT@@K@]D@@@#EKC>%^NGREORDLT @@@@@@@@ @@@ @@@#G3@@ @@EED )@@G@@@@@#G(C>,^NGRESTORE @@@@@@@@ @@@ @@@#HL@@#@@T@@@#G8C>6^NGEE )@@G@@SCAN @@@@@@@@ @@@ @@@#IF@@#@@7@@@#HOC&]^NGSF$AM EF )@@G@@@@@@@@@@ @@@ @@@#I%@@ @@W@@@#IIC&H^NGSORT @@@@@@@@ @@@EG )@@G@@ @@@#I'@@#@@F@@@#I\C&O^NGSYM$AM @@@@@@@@ @@@ EH )@@G@@@@@#JK@@#@@N@@@#I.C&U^NGTF$C @@@@@@@@ @@@ @@@#JT@@#@@AEI )@@G@@@@@#JNC&X^NGTF$CPY @@@@@@@@ @@@ @@@#J)@@[@@^@@@#JWC&)^NGEJ )@@G@@TF$DBP @@@@@@@@ @@@ @@@#J%@@]@@D@@@#J-C&>^NGTF$DLT EK )@@G@@@@@@@@@@ @@@ @@@#J1@@]@@ @@@#J?C&*^NGTF$IA @@@@@@@@ @@@EL )@@G@@ @@@#K@@@^@@H@@@#J3C&?^NGTF$IB @@@@@@@@ @@@ EM )@@G@@@@@#KA@@[@@]@@@#K^C&\^NGTF$MVE @@@@@@@@ @@@ @@@#KH@@]@@AEN )@@G@@@@@#KBC&2^NGTF$RMR @@@@@@@@ @@@ @@@#LG@@K@@.@@@#KJC$ ^NGEO )@@G@@UNLOAD @@@@@@@@ @@@ @@@#L>@@#@@D@@@#LWC$E^NGCONF-3 EP )@@G@@@@@@@@@@[@]] @ @^@ [@@@^$@@@#L*D4D^NGCLSEG @@@@@@@@[@]#EQ )@@G@@ @ @[@][@@@@S@@@#QJD4*^NGCONF-3 @@@@@@@@ @@@ ER )@@G@@@@@#RI@@^@@$@@@#Q$D5N^NGCLSEG @@@@@@@@ @@@ @@@#RU@@^@@CES )@@G@@@@@#RMD5Y^NGMAPREORG @@@@@@@@[@@@ @ @@@[[@@@@E@@@#RYFQ@^OGET )@@G@@MAPED @@@@@@@@[@@@ @ @@@[[@@@@G@@@#R*FQ*^OGEQUATE EU )@@G@@@@@@@@@@ @]C @@@#R4@@D@@@@@@#R4F%>^OGSNO @@@@@@@@ @@@EV )@@G@@ @@@#(F@@]@LI@@@#R.G$5^QGEQUATE @@@@@@@@[@@@ EW )@@G@@@ @[@][@@@]E@@@#(HJAV^RGMERGE @@@@@@@@[@]E @ @#@^]@@@[REX )@@G@@@@@#:RDA=^UGMERGE @@@@@@@@ @@@ @@@#?9@@]@@F@@@#?,DBF^UGEY )@@G@@DF$AMW @@@@@@@@[@]G @ @@@[[@@@]S@@@#?;BY# ^GDF$AMW EZ )@@G@@@@@@@@@@ @@@ @@@#\?@@^@@T@@@#\NB+W ^GBLDD$F @@@@@@@@[@]IFA )@@G@@ @ @[@][@@@@K@@@#\0C!5 ^GBLDD$F @@@@@@@@ @@@ FB )@@G@@@@@#0#@@[@@#@@@#0@C,O ^GINSERT @@@@@@@@[@]K @ @C@ [@@@DFFC )@@G@@@@@#0^G!5 GINSERT @@@@@@@@ @@@ @@@#'I@@^@@_@@@#9JG,7 GFD )@@G@@ED @@@@@@@@A@@@ )@@]@@@@@@S$@@@#'MG7C GKF$AM FE )@@G@@@@@@@@@@[@]N @ @[@][@@@^;@@@^M9B?Y CGKF$AM @@@@@@@@ @@@FF )@@G@@ @@@^S+@@^@@,@@@^R4B?5 CGREORG @@@@@@@@A@@@ FG )@@G@@)@@]@@@@@@IB@@@^S&B8H CGKF$AM @@@@@@@@[@@@ @ @[@][@@@^;FH )@@G@@@@@^&2B?Y CGKF$AM @@@@@@@@ @@@ @@@^?V@@^@@,@@@^:!B?5 CGFI )@@G@@REORG @@@@@@@@A@@@ )@@]@@@@@@IB@@@^?ZB8H CG@@@@@@@@@@@@FJ )@@G@@@]V@@@)@ @@@ @@@^(V@@[@@#@@@^(SB@@@HX )@@G@@O[K@@,R[K@@D[@@@@DC@^)@@[@@@[^AK@@@A)[?[EK0CSK0--#]A^G@@@@@@Q[)@@:R[)@@WHY )@@G@@R[@@@?R@0@@&R[K@@%R@)@@*C_)@@[G@@@@]C/@__"AL@@@A)[5[MK0CS[#@@@@@@@1@@@@IHZ )@@G@@*@@@@I"^>@@@C@)@@E[@#@@@"@#@@@[@@@@EC@^@@@[#)@@^[@@@[^AM@@@A)[_[N@K0]A@KIA )@@G@@^G@@@@[@]@@@C@@@@E/K@@]D1@@@@G*@@@@G"^@@@EC@]@@@[@>@@@C@)@@E/K@@]]AN@@@AIB )@@G@@)]D[F#]@CSK0-)K0-)@@@@@@O]@@@!R]@@@A[@@@[ Q[0@@?R[0@@WG@@@@^C/@__"/K@@]UIC )@@G@@*@@@@[AO@@@A)]M[MK0@--#]@--#@@"C@@@EC@@@@E8LK@]K[@)@@AG@)@@AC/)@@[[@C@@@ID )@@G@@"@C@@@"C@@@EC@B)@@AP@@@A)]W@'@@@@@@@)@G@K@@@@@@@______RDIN 1G_)@@[O.@@@[IE )@@G@@O/0@@[O.K@@[O/)@@[[@A)@@"@A@@@AQ@@@A)]<[F@K=--@K0CSK^@@@@@@@/C@@@4/@@@]\IF )@@G@@H@@@@CC/@@@[@]L@@@@<@@[@@I/,0@@@[@)@@@C/)@@[/K@@#E1@@@@I*@@@@IG/)__.IJ )@@G@@C@)@@#AU@@@A)#D@F])@@@@@)@I[@@@@@@@@ESS THAUSE LED BEC OMITTATIONSCALCULIK )@@G@@***** (074H0'^@@@@AV@@@A)@Q@0@@@@@@@)#E@V@K^G@@@@](@@[@)@[^AD@@@AQY )@@G@@)@*[F#^GK1#^G^GK1#@@@@@@G@)@@EC@)@@+H@@@@EC@@@@@[#@@@EN[@@@&Q@K@@-R@K@@QQZ )@@G@@R@)@@)AE@@@A)@1[N#^GK0[#^GK1#@"^@@@^C@@@@@[@@@@^"C@@@C"@@@@IE@-@@[E@]@@[RA )@@G@@ @@@@F[@)@@*[@@@@$AF@@@A)@;[M^[#^GK1#^GK0@E@#@@[[#)@@GN[K@@$R@0@@*C#)@@ERB )@@G@@[@@@@@C@@@@^/K@@[@1@@@@G*@@@@GAG@@@A)[ [N#@K@K^GK0@@@@(@@@@GH@@@@EC@@@@GRC )@@G@@8LK@[#G_)@@[O/0@@[/K@@[G0@@@@G*@@@@G"^@@@@AH@@@A)[J[N@^G^@K1#[#@@@G@)@@ERD )@@G@@C/)@@[[@@@@FG@@@@FC/@@@[/K@@ +(@@@@GH@@@@FC/@@@Y/K@@^KAI@@@A)[T[N#[#^GK0RE )@@G@@K0^G@@][@@@ "H@@@M" #@@["D)@@RC[+@@[O@0@@C_0@@]8L@@@?G_@@@[O/)@@[[@[)@["@@@@]C@[@@[SB )@@G@@/K@@[KBC@@@A)^T[EK1#^GK1#[#^G@@@@@@@]@@@@DH@@@@JC/@@@[[@)@@$[@@@@>G@)@@JSC )@@G@@C@)@@R@0@@$C#)@@JSD )@@G@@[@)@@ C@=@@[O[@@@[@=@@@C@?@@@G@@@@PG@@@@@T@@@@VG@@@@#AK@@@A)[:[F#^GK1#^AI )@@G@@GK0K0@@@@@@@C.)__"G@)@@PG/)@@[O@0@@RR@0@@@G[@@@@C[@@@PT@)@@VG@)@@@AL@@@AAJ )@@G@@)[4[N#^GK1#^G@^G@@[@@@@X[@@@[ []@@@^'M@@@K;]@@@MC]@@@VG[)@@PG[)@@@T[)@@VAK )@@G@@G[)@@#AM@@@A)["[N#^GK0K0^GK1@@8LK@][[@@@@C"@@@@C"C^)@@[@^@@@"G@@@EC@^@@@AL )@@G@@[[)@@)[[@@@Z[@)@@YAN@@@A)]C[N#[#^CK1#[#[#@]@@@@BD@@@@G0@@@@AE@@@@G@[:@@JAM )@@G@@@@@@@C/,0@@@[@)@@AC@=@@@R[@@@)AO@@@A)]M[F#[#^GK1#^GK1#@@@@@@" @@@AC[@@@BAN )@@G@@"C)@@E]@)@@C"^)@@C"C)@@AC@)@@B]@#@@@"C@@@EAP@@@A)]V[MK0K1#[#[#^G@@Q[K@@MAO )@@G@@R[K@@F[@@@@^'K@@@Z;@@@@MC@@@@VR@0@@YC_)@@[ @@@@A][^@@@AQ@@@A)]>[F#^GK0K1AP )@@G@@#^GK1#@@@@@@G@)@@PH@)@@VG@)@@[C@)@@VG@@@@[C/@__"[#)@@[]@)@@-N[K@@XAR@@@AAQ )@@G@@)],[N#^G^G^GK0K0@@[@)@@A'K)@@Z;@)@@MC@)@@V @@@@B[@#@@@"G@@@-C@^@@@[@)@@)@@C@=)@@[@ @@@"G@@@CC@@@@B8L)@#W[@@@@B"@@@@BAX@@@AAX )@@G@@)#*[M^[#^G^G^G@@@@C_0@@[G[@@@#C.@__"[@)@@D"G)@@K"[@@@CC[@@@C8LK@]$G_)@@[AY )@@G@@O/0@@[AY@@@A)#2[F#^G^GK0K1#^G@@@@@@@G@)@@[C@)@@VG@@@@[C/@__"[#0@@[[[@@@=AZ )@@G@@[[@@[ R[0@@ZR[)@@MAZ@@@A)#;[N#^GK1#[#^G^G@]@A@@@]@@@@B"^A@@@"C@@@D[@@@@ABA )@@G@@C@B@@@[@)@@&[@@@@>G@)@@PH@)@@VBA@@@A)^ [N#[#[#^GK0K0@@[@)@@ 'K)@@&;@)@@MBB )@@G@@C@)@@VQ[@@@MR[@@@F[@)@@#'K)@@Z;@)@@MC@)@@VBB@@@A)^J[N#[#@K0^@@@@@@O.)@@[BC )@@G@@8L)@^K]@>)@@"@)@@G"C)@@BC@<)@@"^ @@@"C@@@AC@^)@@N[)@@>BC@@@A)^T[N#[@K0K0BD )@@G@@K0K0@@"C@@@EC@#@@@N[K@@=[@@@@#'K@@@Z;@@@@MC@@@@V8LK@#6G_0@@[O[0@@VBD@@@ABE )@@G@@)^<[MK^GK1#@K@@@@@ @]@@@ @[@@@8L@@[#G_@@@[[@^@@@C@@@@CO[@@@TR[@@@@8LK@^-BF )@@G@@[@#)@@BE@@@A)^![M[#^G^GK1#^G@@H@@@@VG@@@@@C@@@@V[#)@@@[@@@[^R[)@@NR[K@@UBG )@@G@@C_)@@[G@@@@@C/@__"BF@@@A)^7[F#^GK0K1#^GK0@@@@@@@C/@@@[[@)@@$[@@@@WG@)@@PBH )@@G@@H@)@@VG/)@@[T@)@@@C@)@@VG@@@@PBG@@@A) @[F#^GK1#^G^G^@@@@@@@@/K@@ 1(@A@@@BI )@@G@@G[@@@#C.@__"G@)@@VD@)@@#T@@@@V]@@@@#H@@@@@BH@@@A) D[F#^GK1#^GK1#[#@@@@@@BJ )@@G@@'L)@@W;[)@@MC[)@@VQ[@@@QR[@@@FQ@0@@QR@0@@FQ[0@@$R[0@@FBI@@@A) M[M^GK1#^GBK )@@G@@K0^G@@"@@@@B"C^)@@C@C)@@N[)@@% @@@@B[[@@@%[@)@@(]@@@@*[[@@[ [[)@@CBJ@@@ABL )@@G@@) W[N#^[#[#@K^G@@@'O)@@BC^)@@#8L)@ Z]@#)@@"^#@@@"C@@@BC@B)@@N[)@@%8L)@ TBM )@@G@@[@@@@BBK@@@A) &[MK0^G[#@@@@@@@]@)@@C'O)@@CC^)@@*[@)@@^'K)@@^C^)@@([@)@@#BN )@@G@@'K)@@#C^)@@(]@)@@BBL@@@A) 0[N@[#^GK1#^GK0@G.@@@[T[@@@@C[@@@VG@)@@PH@)@@VBO )@@G@@G@)@@@C@)@@V[@A@@@C@ @@@8LK@ RBM@@@A) '[N#^GK0K0K[@@@@C/@__"/K@@AJ*@@@@GBP )@@G@@/C@@A#G/@__"C@@@@#[[>@@@C[)@@GG[@@@PH[@@@VBN@@@A)A^[N#^G^G@@@@@@@@ @#)@@BQ )@@G@@ @^)@@[@@@[ [[@@@^'L@@@I;[@@@MC[@@@VQ@0@@KR@0@@FG@@@@#BO@@@A)AI[N@K0^[@KBR )@@G@@^GK1#@9!)@@:R]0@@K@#[@@J/K@@AQN@0@AP8L@@^3G_)@@[O.)@@[O[K@@O8LK@AGBP@@@ABS )@@G@@)AS[F#^GK1#^GK1#^GK0@@@@R[)@@8R[K@@7R[@@@6R@0@@5R@)@@4R@K@@39\)@@19\@@@\BT )@@G@@9,@@@!BQ@@@A)A-@3#^GK1#^GK0@@@)@H@C@@@@@@@@@@@@@@@F@@B*4@K@HN[)@@.N[K@@/BU )@@G@@N[@@@;R]@@@'R[0@@9BR@@@A)A$@N#^D@@@@)@J@K@)A(@<#^GK1#@9:@@@\9%@@@!9()@@:BV )@@G@@AA0@@K@#[@@]S1TRD2/K@@@@/K@K@HBS@@@A)A![F#^GK1#^GK1#^GK0@@@@A]@@@'A[0@@9BW )@@G@@A[)@@8A[K@@7A[@@@6A@0@@5A@)@@4A@K@@39:)@@1BT@@@A)A6[N#^GK0K0K^[@K@[^@@@_BX )@@G@@[^@@@9[^@@@.[^@@^,C8FK@[[@K@@VC@VK@@^[)@@.^[K@@/^[@@@;BU@@@A)B@@3@^G^GK@BY )@@G@@)@F@K@@@@@@@@@@@@@KG@@@@@@[@@@/K@@@@[@@@@MC8FK@^[@@@@NC8FK@#[^@@@UBV@@@ABZ )@@G@@@@^@@]@@A@@]@@E@@[@@I@@@@@]@@"@C@@BASQRT NERR3$ S1TRD2 CA )@@G@@@@[@@@@@@@A(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[S@@@*SDFF*@A@@@@ SUBROUTINE S1VLSD(VN,N,$CC )@@G@@) @ @@@@ IMPLICIT INTEGER(A-Z) @^@@@@ DIMENSION VN(1) CD )@@G@@@[@@@@C @F@@@@C SUBROUTINE CALLED AT THE BEGINNING OF ANCE )@@G@@ALYSIS PHASE@F@@@@C TO DETERMINE INDICES OF VARIABLES TO BE PROCECF )@@G@@SSED BY THE @G@@@@C PROGRAM. VARIABLE NUMBERS ARE OBTAINED BY TECG )@@G@@STING THE BIT @C@@@@C FLAGS PUT UNDER TAG 'VARUSE' BY S1VLST.CH )@@G@@@[@@@@C @#@@@@ COMMON X(2) @[@@@@C @C@@@@ CALL S1GTAG(CI )@@G@@'VARUSE',FW,NWE,NEL,$999) @B@@@@ CALL S1GVAL('NVARS',NV,$999,$9CJ )@@G@@99) @]@@@@ N=0 @^@@@@ DO 100 I=1,NV @#@@@@ IW=(I-CK )@@G@@1)/36 @^@@@@ IBIT=I-36*IW-1 @ @@@@ TST=FLD(IBIT,1,X(FW+IW))CL )@@G@@@ @@@@ IF(TST .EQ. 0) GO TO 100@]@@@@ N=N+1 @#@@@@ VN(N)=CM )@@G@@I @#@@@@ 100 CONTINUE @]@@@@ RETURN@#@@@@ 999 RETURN 3 CN )@@G@@@]@@@@ END ___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@)@@@M@)@C@K@)@]@<#]^^GCS@@@@@@@@@@@@@@@@@C/,0@@@CQ )@@G@@[@@@@L______VARUSEG/@__"C8FK@@AA@@@A)@A@V#]A^@@@)@E@K@)@D@V#]^OG@@@@@@@ECR )@@G@@/,0@@@@[ @@I______NVARS /K@@@3@@@@@]@@@@@[AB@@@A)@G[N#]@)CS[#@CS@@[#)@@^CS )@@G@@[@@@[^C_)@@[G@@@@#C/@__" @@@@@@[A@@I/K@@@3/K@@@3@@@@@#AC@@@A)@Q[MK0]A^GCCT )@@G@@S^G@@@H/@@@[G@@@@^T/@@@=O@K@@ R@K@@@]@@@@ W/@@@=;O@@@=H@@@@^C/@@@[AD@@@ACU )@@G@@)@)[N##2-)K0--@@@@[[@@@@G[@@@@C.@@@[/K@@@,(@@@@B[@)@@B;C)@@<;))K@AC@-J_"CV )@@G@@[@@@@AAE@@@A)@%[MK0-)^[@K^G@@@C8)@@#@[O@@I/K@@@;N@0@@28L@@@PG_)@@[[[-@@@CW )@@G@@C[)@@^O@K@@LR@K@@@AF@@@A)@4[F@K^GCSK=CSK0-)@@@@@9!)@@MR]0@@J[^)@@GH8)@@[CX )@@G@@/K@@@@!^)@@G@[P@@I/K@@@7N@0@@6AG@@@A)@.@<#]A^GCS@@@@@@)@G@C@)[[@N#]^0@@@CY )@@G@@/K@@@@/K@K@G@@F@@@*4@K@GN[@@@RR@K@@Q9\)@@OAH@@@A)@I@K@)[#@'K0--#]A^GCS@@CZ )@@G@@^[@@@RA@K@@Q9:)@@O9()@@M[^@@@GAA0@@JC8@@@^@[P@@#S1VLSDAI@@@A)[E@2K^[@K^@DA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/K@@@@[^@@@K[^@@@*[^@@@([^@@@%C8FK@[AJ@@@ADB )@@G@@@@^@@#@@B@@^@@J@@[@@N@@[@@#@@S@C@@[K@@@@@]S1GTAG S1GVAL NERR4$DC )@@G@@ NERR3$ S1VLSD @@[@@@@@@@[#BLANK$ ^@@@C@@]@@@@@@@@@@DD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[S@@@*SDFF*@D@@@@ SUBROUTINE S1STDZ(DATADE )@@G@@,STANDV,LENSTD,MDATA) @[@@@@C @B@@@@ DIMENSION DATA(1),STANDF )@@G@@DV(6,1) @ @@@@ LOGICAL MDATA,MLE @#@@@@ INTEGER VNDG )@@G@@@[@@@@C @B@@@@C STANDV(1,I) IS VARIABLE NUMBER @A@@@@C DH )@@G@@ STANDV(2,I) IS DESIRED MEAN @C@@@@C STANDV(3,I) IS DESIRED STANDADI )@@G@@RD DEVIATION@C@@@@C STANDV(4,I) IS COUNT OF NON-MISSING DATA @E@@@@DJ )@@G@@C STANDV(5,I) IS SUM OIF DATA OR MEAN DURING S1STDI @G@@@@C DK )@@G@@ STANDV(6,I) IS SUM OF SQUARES OR STANDARD DEVIATION DURING S1STDI@^@@@@DL )@@G@@ DO 10 I=1,LENSTD@ @@@@ VN=BOOL(STANDV(1,I) ) @G@@@@ DM )@@G@@ IF(MDATA.AND.(DATA(VN).EQ.0.AND.FLD(1,1,DATA(VN)).EQ.1)) GO TO @B@@@@DN )@@G@@ 1 10 @B@@@@ STANDV(5,I)=DATADO )@@G@@(VN)+STANDV(5,I) @D@@@@ STANDV(6,I)=DATA(VN)*DATA(VN)+STANDV(6,IDP )@@G@@) @A@@@@ STANDV(4,I)=STANDV(4,I)+1 @#@@@@10 CONTINUE DQ )@@G@@@#@@@@ RETURN @[@@@@C @[@@@@C @^@@@@ ENTRY S1STDR )@@G@@DC @^@@@@ MLE=.FALSE. @B@@@@ CALL S1GTAG('MLE',FW,NDS )@@G@@EL,NWE,$20) @#@@@@ MLE=.TRUE.@#@@@@20 CONTINUE @^@@@@ DT )@@G@@ DO 30 I=1,LENSTD@^@@@@ NP=STANDV(4,I)-1@^@@@@ IF(MLE)NP=DU )@@G@@NP+1 @C@@@@ IF(NP.EQ.0.OR.STANDV(4,I).EQ.0) GO TO 30@^@@@@ DV )@@G@@ SUM=STANDV(5,I) @C@@@@ STANDV(5,I)=STANDV(5,I)/STANDV(4,I) DW )@@G@@@E@@@@ STANDV(6,I)=SQRT((STANDV(6,I)-(STANDV(5,I)*SUM) @#@@@@DX )@@G@@ 1 )/NP) @#@@@@30 CONTINUE @#@@@@ RETURN @[@@@@DY )@@G@@C @[@@@@C @B@@@@ ENTRY S1STDI(DATA,STANDV,LENSTD) @^@@@@DZ )@@G@@ DO 40 I=1,LENSTD@ @@@@ VN=BOOL(STANDV(1,I) ) @F@@@@ EA )@@G@@ IF(MDATA.AND.(DATA(VN).EQ.0.AND.FLD(1,1,DATA(VN)).EQ.1)) @#@@@@ 1EB )@@G@@ GO TO 40 @F@@@@ DATA(VN)=((DATA(VN)-STANDV(5,I))/STANDV(6,I))*EC )@@G@@STANDV(3,I)+@^@@@@ 1 STANDV(2,I) @#@@@@40 CONTINUE @#@@@@ED )@@G@@ RETURN @A@@[@ ENTRY S1STDS(STANDV,LENSTD) @^@@[@ EE )@@G@@ DO 50 I=1,LENSTD@^@@[@ STANDV(4,I)=0 @^@@[@ STANDV(5,IEF )@@G@@)=0 @^@@[@ STANDV(6,I)=0 @#@@[@50 CONTINUE @#@@[@ EG )@@G@@ RETURN @]@@@@ END ___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)@@[MK0^G^G^GK0@@@R@)@@[EI )@@G@@[@@@@[C@[@@@[@)@@O[@@@[^R@K@@MG/)__9C8:K@@G@@@@NC/@__"AA@@@A)@E[V#@@@@@@EJ )@@G@@ @@@@I*@]@@ C/)@@[ @@@@K*@@@@IG/)__"C.@@@[;C)@@<;))@@[C@+@@ O@)@@OAB@@@AEK )@@G@@)@P[U[@@@@@@[[[@@ "[[@@ "D]@@ C[]@@ [@-@@^"@-@@^C@+@@ /=0@@<+@)@@LC@)@@@EL )@@G@@+[@@@IAC@@@A)@)[]K0^[@K^G@@@@@)@C@C@MLE @[K@@J/K@@]GN@0@@$8L@@@BO/K@@AEM )@@G@@[@-@@#"@)@@EC@-@@#AD@@@A)@D@C@)@*[##^CK1#^GK1@K0@[N@@J/K@@@2@@@@@ @@@@@^EN )@@G@@@@@@@#@@@@@C/,0@@@ @@@@@______AE@@@A)@0[MK0K1#@K1#@@@@"K@@@G"@@@@F"^@@@EEO )@@G@@C@]@@#[@@@[^R@)@@MG@@@@NC/@__"[@@@@@C/@@@[AF@@@A)@'[MK1#^@K1#[#@@@ @@@@GEP )@@G@@*@@@@AC/@@@[[@@@@AG@@@@AC/@@@[/)@@[[C@@@@@[@K@@A;)W@@DAG@@@A)[^[M@K[#@K0EQ )@@G@@@@@@@@"C@@@B[@]@@^"G]@@#[@@@@BC@]@@^/=K@[R)@@@@I @@@@I*@]@@#C/)@@[AH@@@AER )@@G@@)[I[M^G^GK>#^G@@@@O/)@@A[@]@@ @[)@@J@@@@@O/,0@@@]@@@@O"G@@@J"O)@@AC/)@]VES )@@G@@"^]@@ AI@@@A)[S[N@K^[#[#^G^G@@[@@@[^R@K@@MG/)__9C@)@@PG@@@@NC/@__"@[<@@JET )@@G@@/K@@]GN@0@[V8L@@@6AJ@@@A)[+[N#[#^GK0@@@@@@G/)__"C.@@@[;C)@@<;))@@[C@+@@ EU )@@G@@O@)@@OR@)@@[[@@@@[C@[@@@[@)@@OAK@@@A)[?[U@@^@@@@"^-@@^C@+@@ /=0@[;+@)@@LEV )@@G@@C@)@@@+[@@@I @@@@I*@]@@ C/)@@[ @@@@K*@@@@IAL@@@A)[7[M@^[@K^G@@@@@@C/@__"EW )@@G@@@[\@@J/K@@]GN@0@[_8L@@[AC@@@A)@Y[F#@K0K0^G^G[#@@@@@@@[@@@[,G_)__:IW )@@G@@C#)@[>[#)@[!G_)__:C#)@[&[#)@[?G_)__:C#)@[$AD@@@A)@$@3#[#[#[#[#[#@@)@@@S@IX )@@G@@LIHOODM LIKEMAXIMU[#@@[4[])@[3[]@@[2[[)@[1[[@@[0[@)@[\AE@@@A)@#[S@@@@@@@IY )@@G@@ IMATESED ESTUNBIAS ATES ESTIMAF@@@AIZ )@@G@@)@I[S@@@@@@@CED WI REPLAG DATAMISSIN DATA MISS.OD FORE METHBSAMPLATE SUJA )@@G@@BIVARIAG@@@A)@T@S@)@6@K@)@!@V#[][#@@@@@@@@@@@@@6/,0@@@[#)@[5______DSTATVJB )@@G@@ORITHMNS ALGTH MEAAH@@@A)@0[F#[#[#[@K0K0K0K0@@@@G/@__2T@@@@XC@@@@YR[K@@WJC )@@G@@@[E@[X/K@@B$@@@@@Y@@@@@X@@@@@WAI@@@A)@9[EKB>#H[K3KOG4^@@@@@@C[>@@][[@@@]JD )@@G@@C[ @@[[@)@@[C@>@@@[@@@@@C@ J_"/K@@B$*@@@@GAJ@@@A)[][F#H[K3KOG4 #H[K3@@@@JE )@@G@@[#)@@BC#>@@A[#@@@AC# @@ [])@@ C]>@@^[]@@@^C] @@#[[)@@#AK@@@A)[F[F[K3KL[^JF )@@G@@^KK@@@@@@@@@C] @@F[[)@@@C[>@@D[[@@@@C[ @@E[@)@@@C@>@@C[@@@@CC@ @@BAL@@@AJG )@@G@@)@8@K@)[O@'K)K0K3K0K0K@@/K@@B$@@@@@Y@@@@@X@@@@@D@@@@@8/,0@@@[]@@@@______JH )@@G@@IDMAT AM@@@A)[V[F#@K3K3^G^G4@@@@@@@@C/@@@]/K@@[>*@@@@A[@)@@ZC/)@@[[@@@@DJI )@@G@@G@@@@DC/@@@]@[U@[XAN@@@A)[=[F#[#@^G^G@Y0@@@@@@@@C@A\_7N.@@@AQ[)@@GR[)@[QJJ )@@G@@R[K@[PG/@@@[T/@@@BC@@@@Z[@@@@ZAO@@@A)[![F#H@K3K3K[#[#H@@@@@@/K@@[8(@@@@#JK )@@G@@[@)@@ZC/)@@#/K@@]](@@@@] @@@@L8L@@[?[@ )@DAP@@@A)[6[MK0K0[#[#@B?@@C@A\_7JL )@@G@@N.@@@AQ[)@@GR[)@[QR[K@[PG/@@@[T/@@@BC@@@@Z[@@@@ZC/@@@^AQ@@@A)]@[F#H@K0K3JM )@@G@@K[#GK3@@@@@@G@)@@@C/)__"[@@@@BC/@@@[/K@@])*@@@@B @@@@-8L@@[_[@ )@KAR@@@AJN )@@G@@)]D[N#[#@K0^@^G^G@Q[)@[(R[)@[QC_)@@[ @[@@@8L@@]H @ )@N[@)@[6N.@@@NQ[K@[,JO )@@G@@R[K@[QAS@@@A)]N[N#[#[#@^[#G@@@ @#@@@ @^@@@[@+@@@C@)@@@8L@@]OG_)@@[[@A)@NJP )@@G@@C@@@@<[#)@@C/@@@[@]]@[X@@@@@=@@@@[S@@@@[SAV@@@A)]?[EK0K0K3K[@K^G@@@@@@@JS )@@G@@@@@@[R/,0@C9/K@@AD*@@@@G/G@@]3H@@@@B[@@@@&G@@@@&C/@@@[AW@@@A)]5[F#[@K0K0JT )@@G@@K[@^G@@@@@@@[@@@@-C/@@@[/K@@#>*@@@@G/G@@]/D@@@@(@]E@[X/K@@B,@@@@@(AX@@@AJU )@@G@@)]"@:]D#[#[#[#@@@@)@/@C@)##@F]O@@@@@'^@@@@(I6) @@K@@(@]I@[X@@@@@/@@[@@%JV )@@G@@/,0@@@AY@@@A)#^[F#[#[#@^G@K0@@@@@@@@[#)@@+N.@@@ C_)@@[[@)@@:C/)@@][@ @@NJW )@@G@@C@@@[TO[K@[\R[K@@&AZ@@@A)#H[F]H#[#[#[#[#[#[#[#@@H@@@[TC@@@@?O[)@[\R[)@@&JX )@@G@@@]R@[X@@@@@?@@@@@+@@@@@%/,0@@@BA@@@A)#Q[MK[@K=K^G^G^G@C/@@@[@]U@[X@@@@@?JY )@@G@@@@@@@:@@@@#V/,0@@@^^K@#VN8Q@@N/K@@#+(@@@@GBB@@@A)#)[F#[#@K^[#[#@K0@@@@@@JZ )@@G@@C@@@@& @ @@NO[K@[\R[K@@&/K@@#*8L@@#GG_)@@[[@@@@:G@@@@:BC@@@A)#([EK0^[@K0KA )@@G@@K^[#@@@@@@@@@])@[X/K@@B,@@@@#\@@@@[U/,0@C9^^K@#\N8W@@@G@@@[2T/@@@OBD@@@AKB )@@G@@)#2[F@K0K0K^G^G^[#[#@@@@O[)@[\R[)@@&/K@@^[(@@@@!@]-@[X/K@@B,@@@@@!@@@@[RKC )@@G@@/,0@C9BE@@@A)#;[MK[#[#@K0K[#G@G@@@@@C/@__"/K@@^(*@@@@![@&@@NC@)@[T[@@@@-KD )@@G@@C/@@@[/K@@^[*@A@@NBF@@@A)^ [F#[#[#[#[#[#@K3@@@@@*@@@@IH@)@@CC/)@@]O[0@[0KE )@@G@@R[0@@&O[)@[3R[)@@&O[K@[1R[K@@&BG@@@A)^I[N@K3^G@^G^G^G@O[0@[?R[0@@>[#)@@+KF )@@G@@[@@@[^C_)@@[[[ @@NC[@@@>[@$@@NC@)@@@/K@@]?BH@@@A)^S[N#@^G^G[@[#G@@G[@@@@KG )@@G@@C.@@@[ @A@@N8L@@^PG_)@@[[@)@@>G@)@@>C/)@@[[@B@@NC@@@@+BI@@@A)^+[F#GK0K3KKH )@@G@@3K0K^[#@@@@@@@@@[R/,0@C9/K@@ 0[[)@@\T[)@@@C[)@@@[[@@@,;L@@@[T[@@@@BJ@@@AKI )@@G@@)^:[F#[@K0K0K0K0^G^G@@@@O[0@[1R[0@@&[@ @@NC@@@@0O[K@[0R[K@@&@]9@[X/K@@B,KJ )@@G@@@@@@@0BK@@@A)^4[F#@K0K0^[@K0K@@@@@@@@@@@^/@@@@@0/,0@C9^^K@^/N8Q@@NO[)@[?KK )@@G@@R[)@@>[@$@@NC@)@@>BL@@@A)^.[F@K0K0K0K0^G[@@@@@@@/K@@ M(@@@@IH@)@@!C/)@@]KL )@@G@@[@@@@>G@@@@>C@@@@0@]/@[X/K@@B,BM@@@A) A[F#[#@^G^G[#[#@@@@@@@C[@@@0[@)@@,KM )@@G@@;K)@@[T@)@@0G@)@@0C/)@@[ @ @@NO[K@[3R[K@@&BN@@@A) J[F#[#[@K^G^G^[#[#@@@@KN )@@G@@R[0@@&@#^@[X/K@@B,@@@@@1@@@@[R/,0@C9/K@@ 0[[@@@\T[@@@0BO@@@A) S[F#[#@K0KKO )@@G@@0K0^G^G@@@@@O[K@[?R[K@@>[@&@@NC@)@@>O[)@[4R[)@@&[@B@@NC@@@@1O[0@[3BP@@@AKP )@@G@@) -[EK^[#[@K^G^G^G@@@@@@G@@@@>C@@@@1@#B@[X/K@@B,@@@@ >@@@@@1/,0@C9^^K@ >KQ )@@G@@N8P@@NBQ@@@A) %[F#[#[#[#@K0K0K0@@@@@ @B@@NO[0@[*R[0@@&[@)@@\;@)@@<[@)@@,KR )@@G@@T@)@@0C@)@@1[@@@@>BR@@@A) 3[F#@K0^[#@K0K3@@@@@@@(@@@@]A[0@[6[@B@@NC@@@@$KS )@@G@@/K@@]?*@G@@NG@@@[2T/@@@OC@@@@&BS@@@A) /[F@K0^G@K0K0K0@@@@@@@[@@@@$G@@@@$KT )@@G@@C@@@@,[@A@@NG@A@@NR[)@[6;@@@@MC@@@@*/K@@A]BT@@@A)A [F#[#[#[@K3K3^@@@@@@@KU )@@G@@C/@__"/K@@A>*@@@@GH@@@@@C@@@@[/K@@]?[@)@@*G@)@@*C@)@@\BU@@@A)AI[F#GK0[#[KV )@@G@@#@K0@@@@@@@@[@)@[6[@@@[^R[0@[(R[K@[:C_)@@[ @@@@I(@@@@-C/)@@[G@@@@@BV@@@AKW )@@G@@)AR[N#[#@K0K^G@@@@G_)@@[O.0@@[O.K@@[[@ @@NC@@@@C/@@@[@#Y@[XKY )@@G@@/K@@B_N@0@A=8L@@ARBX@@@A)A%[N#[@^G^G[#@K@@C_)@@[8L@@A1 @A)@N]@@@[6[@)@[^KZ )@@G@@Q[)@[:R[)@[QH/@__"/K@@B5(@@@@2BY@@@A)A4[N#[#[#@K0^@@@@C/@@@[ @@@@I*@@@@GLA )@@G@@/G@@A.C/)@@[[@@@@3C@ @@N[#)@@+N[@@[6R[K@[%BZ@@@A)A"[N#H#@@K^G^G@@@C/@@@[LB )@@G@@O[0@[!R[0@@3/=0@B5)@)@@G @@@@G1@@@@K*@@@@KH[@@@3C[@@@@CA@@@A)BC[M[@K0^G1LC )@@G@@#@@@@@[@)@[^R[)@[:C_)@@[G@)@@@C/)__" @@@@48L@@A6G_)@@[O.K@@[[@B@@NCB@@@ALD )@@G@@)BM[F#@K[#[#[#[#[#@@@@@@C@)@@@:@K0K&K0K0@@@@)@.@S@@@@@@@TAGGED***** (037H0LG )@@G@@@#.@[X@@[@@./,0@@@@#/@[X/K@@B_CE@@@A)[@@*@@@@@@@)B%@V]P]X#@@@@@@@@@@@@[TLH )@@G@@/,0@@@'^@@@@) S2LOADOR IN GE ERR STORACF@@@A)B!@<#[]T#[#@@@@@@)[ @)@LI )@@G@@@@@@@@LOADIN DRUM ***** (036H0@^[@[X@@[@[ /,0@@@@^@@[XCG@@@A)[D@S@)B1@3]LJ )@@G@@P]X#[#[]T#@@@@[@[G/,0@@@@^^@[X@@@@[T/,0@@@'^@@@@2LOAD)R IN SG ERROCH@@@ALK )@@G@@)B7@F#@@@@@@)[G@8@@@@@@@@@@@@@AD) N S2LOUBLE ING TRO LOADI***** (033H0LL )@@G@@@^ @[XCI@@@A)B8[F]P]X#[#[@K^G^G^G@@@9!)@[7R]0@[Y@^C@[X/K@@B_N@0@B"@^C@[XLM )@@G@@@@@@[T/,0@@@'^@@@@CJ@@@A)C[[F#[#[#[#[#[#[#[#[#@@R[K@] R[@@]^R@0@]#R@)@]]LN )@@G@@R@K@][9\)@[_9\@@[.9,)@[;9,@@[9CK@@@A)CE@<#[#[#[#@@@@@@)[V@C@)CI@N#[])@@@LO )@@G@@/K@@@@/K@K[V@@F@@J*4@K[VN[@@]CR[0@]BR[)@]ACL@@@A)[X@K@)CK@3#[#[#[#[#[#@@LP )@@G@@@@@@@@9:)@[_9:@@[.9%)@[;9%@@[99()@[7AA0@[Y@^C@@]S2LOADCM@@@A)CQ[##[#[#[#LQ )@@G@@[#[#[#[#@@@@@@@@@@^[@@]CA[0@]BA[)@]AA[K@] A[@@]^A@0@]#A@)@]]A@K@][CN@@@ALR )@@G@@)[N@K@)CY@;@K-K0K0[#@@@@@@@@@5@@@@@@@@@@@@@@@@[N@@@@[R/,0@@@/K@@D[______LS )@@G@@READ CO@@@A)C>[F#[#[@^[@K^G@@@@@@@@C8)@@#@^K@[-/K@@C5N@0@C?/K@@C!*@@@@GLT )@@G@@/G@@C%D@@@@5@^I@[-CP@@@A)C,[F@K^G^G^EL#[#[#@@@@@*4@K[ZR]0@[+[^)@[ZH8)@@[LU )@@G@@/K@@@@!^)@[Z@^L@[-/K@@C1N@0@C0CQ@@@A)[Z@C@)C7@N#[])@@@)[-@K@)C9@MK0@@@@@LV )@@G@@AA0@[+C8@@@^@^L@@]VREAD /K@@@@/K@K[Z@@F@@@CR@@@A)C;[N#@K[@K[#@K0@@[@@@[>LW )@@G@@C8FK@][@@@[=C8FK@@/K@@CZ[^@@C[@&@@NC@)@@>O[)@[4R[)@@&MA )@@G@@[@B@@NC@@@@1O[0@[3BP@@@A@@^@@^@@C@@E@@W@@[@@)@@]@@^@]E@C@@DM@@@@@]@@@@@SMB )@@G@@S1GTAG S1IODR NCOD$ S1PRFT S1PRST NIO2$ MC )@@G@@NPRT$ NSTOP$ NERR3$ NERR4$ S2LOAD @@[@@@@@@@CKMD )@@G@@BLANK$ ^@@@C@@]@@@@S2ABLK ]@@@C@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@ME )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MF )@@G@@*[S@@@*SDFF*@D@@@@ SUBROUTINE S6COEF (A,Q,B,P,X,Z,SD,NMS,MV,MVV,XM)MG )@@G@@@[@@@@C @D@@@@C COMPUTE AND OUTPUT COEFFICIENTS FOR FACTOR SCORES MH )@@G@@@[@@@@C @D@@@@C REVISED FEBRUARY, 1969 (FOR 1108) MI )@@G@@@[@@@@C @G@@@@ COMMON/ S6BLK /INP,NX ,NC,VECT, RAW, RES,TCOP,TMJ )@@G@@PAK,TRAW,TROT, @G@@@@ 1PCOP,PPAK,PRAW,PROT, MAX,QMAX,MLE,FPCA,MK )@@G@@NF,DET ,NRF,ITER,EPS, @G@@@@ 2DELTA,CRIT,PROC,IO(4),ITERS ,IORTHML )@@G@@,SCORES,DF,NOBS,INCOM,H(200), @^@@@@ 3ICALC,E(4),F(4) @E@@@@ MM )@@G@@COMMON/S6FMTS/NAMPRO(7),SUBNAM(7),DATFMT(5),VECFMT(2),@F@@@@ *NAMCOVMN )@@G@@(7),GATFMT(6),GECFMT(3),FUMFMT(6),GUMFMT(3),LUMFMT(6),@E@@@@ *MUMFMTMO )@@G@@(6),NUMFMT(4),NAMFMT(6),OFORM(5),QFORM(5),IBLANK@ @@@@ COMMON /S63BMP )@@G@@LC/ C(200) @D@@@@ DIMENSION A(MV,2),Q(MVV,2),B(2),P(2),X(2),Z(2) MQ )@@G@@@^@@@@ DIMENSION SD(2) @^@@@@ DIMENSION XM(2) @ @@@@ MR )@@G@@EQUIVALENCE (KEMP,TEMP) @B@@@@ INTEGER Z,QMAX,PROC,SUBNAM,SCORES MS )@@G@@@^@@@@ INTEGER EPS,DELTA @]@@@@ NV=MV @^@@@@ SUBNAM(1)=6HMT )@@G@@F A C @^@@@@ SUBNAM(2)=6HT O R @^@@@@ SUBNAM(3)=6H S C @^@@@@MU )@@G@@ SUBNAM(4)=6HO R E @^@@@@ SUBNAM(5)=6HS (R@^@@@@ SUBNAMMV )@@G@@(6)=6HAW) @^@@@@ SUBNAM(7)=IBLANK @G@@@@C RESET OVERFLOW INDICAMW )@@G@@TOR---------------------------------------------@#@@@@ CALL S1VFWC MX )@@G@@@B@@@@C BRANCH ON RAW OR ROTATED FACTORS@ @@@@ IF (MAX.NE.0MY )@@G@@) GO TO 6830@A@@@@ IF (QMAX.NE.0) GO TO 6830 @A[@@@ IF (PRMZ )@@G@@OC .EQ. 1) GO TO 6820 @C@@[@C RESCALE OR IMAGE - RESCALE EIGENVNA )@@G@@ECTORS@^[@@@ DO 6815 J=1,NV @^@@@@ TEMP=1.0/P(J) @^@@@@NB )@@G@@ DO 6815 K=1,NRF @^@@@@6815 Q(J,K)=Q(J,K)*TEMP@A@@[@ IF (PRNC )@@G@@OC .NE. 3) GO TO 6820 @^@@[@ DO 6817 K=1,NRF @ @@[@ 6817 B(K)=BND )@@G@@(K)*B(K)/(B(K)-1) @C@@@@C RAW FACTORS - COMPUTE COEFFICIENTS NE )@@G@@@^@@@@6820 DO 6825 K=1,NRF @ @@@@ TEMP=1.0/SQRT (B(K)) @^@@@@NF )@@G@@ DO 6825 J=1,NV @^@@@@6825 A(J,K)=Q(J,K)*TEMP@G@@@@C TEST OVERNG )@@G@@FLOW INDICATOR++++++++++++++++++++++++++++++++++++++++++++++@A@@@@ NH )@@G@@CALL S1VFWT(6HCOEF 1,$6900) @#@@@@ GO TO 6850 @D@@@@C SENI )@@G@@T OUTPUT LABEL FOR ROTATED FACTOR SCORES @^@@@@6830 SUBNAM(6)=6HOTATEDNJ )@@G@@@^@@@@ SUBNAM(7)=6H) @C@@@@C ROTATED FACTORS - COMPUTE NK )@@G@@COEFFICIENTS@ @@@@ IF (PROC.EQ.1)GO TO 6835@D@@@@C RESCALE NL )@@G@@Q AND SUBTRACT ONE FROM B FOR IMAGE @^@@@@ DO 6832 J=1,NV @^@@@@NM )@@G@@ TEMP=1.0/P(J) @A@@[@ IF (PROC .EQ. 3) GO TO 6831 @^@@@@NN )@@G@@ B(J)=B(J)-1.0 @#@@[@ 6831 CONTINUE @^@@@@ DO 6832 K=1,NO )@@G@@NRF @^@@@@6832 Q(J,K)=Q(J,K)*TEMP@B@@@@C FORM F PRIME Q ON TONP )@@G@@P OF A=F @^@@@@6835 DO 6840 I=1,NRF @^@@@@ DO 6838 K=1,NRF NQ )@@G@@@#@@@@ TEMP=0.0 @^@@@@ DO 6836 J=1,NV @ @@@@ TEMP=TNR )@@G@@EMP+ A(J,I)*Q(J,K)@#@@@@6836 CONTINUE @#@@@@6838 X(K)=TEMP @^@@@@NS )@@G@@ DO 6840 K=1,NRF @#@@@@6840 A(K,I)=X(K) @E@@@@C FORM TRANT )@@G@@NSFORMATION MATRIX ON TOP OF ITSELF IN A @^@@@@ DO 6846 I=1,NRF NU )@@G@@@^@@@@ DO 6844 J=1,NV @#@@@@ TEMP=0.0 @^@@@@ DO 684NV )@@G@@2 K=1,NRF @A@@@@ TEMP=TEMP+Q(J,K)*A(K,I)/B(K) @#@@@@6842 CONTINNW )@@G@@UE @#@@@@6844 X(J)=TEMP @^@@@@ DO 6846 J=1,NV @#@@@@6846 NX )@@G@@A(J,I)=X(J) @G@@@@C TEST OVERFLOW INDICATOR++++++++++++++++++++++++++++NY )@@G@@++++++++++++++++++@A@@@@ CALL S1VFWT(6HCOEF 2,$6900) @C@@@@C NZ )@@G@@ OUTPUT COEFFICIENTS FOR FACTOR SCORES @A@@@@6850 IF (ICALC .EQ. 2) OA )@@G@@GO TO 6855 @^@@@@ DO 6853 J=1,NV @#@@@@ JJ=Z(J) @#@@@@OB )@@G@@ DIV=SD(JJ) @^@@@@ DO 6853 K=1,NRF @^@@@@ 6853 A(J,K)=A(J,KOC )@@G@@)*DIV @#@@@@6855 CONTINUE @ @@@@ CALL S1HED3(NV,NRF,10,0)@G@@@@OD )@@G@@ CALL S1PRCM (A,NMS,0,Z,C,40HC O E F F I C I E N T S - FACTOR SCOE )@@G@@@D@@@@ *ORES,NAMPRO,NAMCOV,GATFMT,0,FUMFMT,10,NV,NRF,NV)@D@@@@ OF )@@G@@IF(EPS .EQ. 0 .AND. DELTA .EQ. 0) GO TO 6900 @#@@@@ NR2=NRF OG )@@G@@@A@@@@ IF(INP .GT. 2) GO TO 68575 @^@@@@ DO 6857 J=1,NV OH )@@G@@@#@@@@ JJ=Z(J) @^@@@@ A(J,NRF+1)=XM(JJ) @^@@@@ A(J,NROI )@@G@@F+2)=SD(JJ) @#@@@@ 6857 CONTINUE @#@@@@ NR2=NRF+2 @#@@@@68575 OJ )@@G@@CONTINUE @ @@@@ IF (EPS.EQ.0) GO TO 6860@^@@@@ CALL S1HEDC(OK )@@G@@20) @G@@@@ CALL S1TRCM(A,NV,NR2,QFORM,6,13HSCORE COEFFS ,2HSC,7HSOL )@@G@@COEFFS,1) @A@@@@ IF(INP .LE. 2) PRINT 6858,NRF @G@@@@ 6858 FORMATOM )@@G@@( /10X,'THE MEAN AND STANDARD DEVIATION OF THE JTH VARIABLE@G@@@@ -ON )@@G@@ ARE OUTPUT AFTER THE',I3,' COEFFICIENT VALUES'/12X,'IN RECORD J. @G@@@@OO )@@G@@ - USE THE MEANS AND STANDARD DEVIATIONS TO STANDARDIZE DATA BEFORE OP )@@G@@@B@@@@ -APPLYING THE'/12X,'COEFFICIENTS.') @A@@@@ 6860 IF(DELTA .EQOQ )@@G@@. 0) GO TO 6900 @#@@@@ NT=DELTA @^@@@@ CALL S1HEDC(20) OR )@@G@@@G@@@@6870 CALL S1TRCM(A,NV,NR2,QFORM,6,13HSCORE COEFFS ,2HSC,7HSCOEFFSOS )@@G@@,NT) @A@@@@ IF(INP .LE. 2) PRINT 6858,NRF @]@@@@ 6900 RETURN@]@@@@OT )@@G@@ END ___ SET OUTPUT LABEL FOR ROTATED FACTOR SCORES @^@@@@OU )@@G@@6830 SUBNAM(6)=6HOTATED@^@@@@ SUBNAM(7)=6H)@@[U@@@@@@@H]FK@DG]FK@DOV )@@G@@C"@@@[G.)__"C9:K@AG.@__"C9FK@@G/)__"C8:K@EG/@__"C8FK@[AA@@@A)@F[M@K0^G^GOW )@@G@@^G^G@@[]@@[%[[)@[([[@@[*[@)@[$G[@@@G[[@@[&H@FK@CG@FK@CC/@@@[G]@@@GAB@@@AOX )@@G@@)@P[EK0K0K3K0K3K0K3K0@@@C]@@[L[[)@@DC[)@[K[[@@@CC[@@[J[@)@@BC@)@[I[@@@@@OY )@@G@@C@FK@CAC@@@A)@Y[F#H#[#H#[#H#H#H][#@@@[N@[Z/,0@@@[#)@@HC#)@[I[#@@@GC#@@[NOZ )@@G@@[])@@FC])@[M[]@@@EAD@@@A)@$[N[K[#@KO #@KK@*@@@@JH.@@@[T[@@[:C[@@@OG@)@@OPA )@@G@@C/)__"G@@@@@C/@__"/K@@]^*@@@@IAE@@@A)@1[N@^^K^G^G[#@@@[[)@@]'L)@[%;[)@@MPB )@@G@@C[)@[:R@K@[+/K@@[T(@@@@MH[)@@TC.)@@[/K@@]^AF@@@A)@;[EK0K0K0^G^G[#@@@@@@@PC )@@G@@"C@@[HC@]@@@N[K@[?[@@@[H"G[@@@C@@@[O][@@[![@)@[?[@@@[^AG@@@A)[^[MK^G@^@KPD )@@G@@K@@@@@*@@@@IH@)@@TC/)@@#8L@@@"O/K@@[[@)@@]'K)@@]C^)@[!8LK@[][@])@@AH@@@APE )@@G@@)[I[N@K0K0K0@K0@@@[@[)@@"G@@@I"^)@[OC@-@@@"C[@@@C@[@@@N[@@[?Q@K@[H.@@@[BF@@@AQG )@@G@@)^![F#[#[#@K0K0^G@@@@@@@[@])@@"C@@@ C@]@@@N[K@[\[@)@@ C@>@@@O[K@[(R[K@@^QH )@@G@@[@@@@^BG@@@A)^6[N@K0@K^C=G^ #@@@@@[S@@@@@O@@@@@@/,0@@@8L@@^?O/K@@[[@)@@]QI )@@G@@'K)@@]C^)@[18LK@^3BH@@@A) @@F#@@@@@@)@G[@@@@@@@@______ORES TOR SC - FACQJ )@@G@@N T S C I E F F I C O E @@@@[TBI@@@A) [[F#[]G^G[#L#[#G@@@@@@@@@@@@@@@@@GQK )@@G@@@@@@@@@@@@@@@@@@[T@@@@@@@@@@@@/,0@@@@#]@[ZBJ@@@A) E[F#H#H#[#H#[#[[K0K0@@QL )@@G@@@##@[Z@@@@@@@@@@@O@@@@@@@@@@[S@@@@@>@@@@[T@@@@@W@@@@@PBK@@@A) N[MKKKKK^ QM )@@G@@#@@@@@[@@@@AC@@@@O/=K@A7+@@@@I @@@@I*@@@@RC/)@@[ @@@@G*@@@@QC/@@@[BL@@@AQN )@@G@@) X[N#@K0^ #@K0^G@G[@@[&G.@@@[G@@@[&G/@@@[T[@@[,G[@@@OC.@@@[G@)@@@C/)__"QO )@@G@@T@@@[,BM@@@A) $[MKO@K^G[#@K0@@R[K@[PQ[@@@GR[@@[PQ@0@@KR@0@[P/K@@A[*@@@@MQP )@@G@@/D)@ ?H[)@@@C.)@@]BN@@@A) 1[F#@^G^G^G@K0@@@@@@@@R@)@@^[@=)@@C@-@@@O@K@[$QQ )@@G@@R@K@@^[@@@@^C@ )@@[@)@[^Q[K@[>BO@@@A) '[N#@^@KOG^ @K=@/,0@@@/K@@AV(@@@@QQR )@@G@@[@)@@AG@)@@OC/)@@]8L@@ 3[[#)@@C[]@@@O@)@[(BP@@@A)A^@F#@@@@@@)@O[@@@@@@@@QS )@@G@@S SCOEFF______SC ______ COEFFSSCORE @@@@[UBQ@@@A)@W@C@)A @;#QT )@@G@@[]OK0K0K3K0@@@@@@@@@@@[V@@@@[D@@@@@A@@@@@@@@@@@@/,0@@@@#P@[Z______BR@@@AQU )@@G@@)AG[F#[#[#[#[#@KO@@@@@@@*@@@@G/C@@AQH@@@@@C/@@@]@#Q@[Z@@@@[W@@@@@U@@@@@SQV )@@G@@@@@@@OBS@@@A)AP@3@K$K0K0KOE@@@)@X@S@E MEAN072HTH(/10X,'^@@@@@@K@@O@#S@[ZQW )@@G@@@@[@@X/,0@@@/K@@AVBT@@@A)@)[S@@@@@@@ THE,I AFTEROUTPUTE ARE ARIABL JTH VQX )@@G@@OF THEATION D DEVITANDAR AND SBU@@@A)@:[S@@@@@@@S AND E MEANUSE THD J. QY )@@G@@ RECOR091HINS/12X, VALUEICIENT COEFF3,019HBV@@@A)@6[S@@@@@@@12X,01G THE/QZ )@@G@@PPLYINFORE AATA BEDIZE DTANDARS TO SIATIONRD DEVSTANDABW@@@A)[[@S@)AV@3[RA )@@G@@K^ #[]L#@@@@@@@@[U/,0@@@[@@@@BC@@@@R/K@@A7(@@@@RTS.) FICIEN3HCOEFBX@@@ARB )@@G@@)[^[C@@@@@@@@@@[C@@@@@@@______S SCOEFF______SC ______ COEFFSRC )@@G@@SCORE BY@@@A)A-[F#[]OK0K0K3K0K0K0@@@@@@@[C@@@@[^@@@@[V@@@@[D@@@@@A@@@@@@RD )@@G@@@@@@@@/,0@@@@#Z@[ZBZ@@@A)A%[F#[#[#@KO@K^D0@@@@@@/,0@@@/K@@A7*@@@@G/C@@A2RE )@@G@@H@@@@@C/@@@]@#)@[Z@@@@@B@@@@[ECA@@@A)A3[F#[#[[K*K^[#[#[#@@@@9!)@[3R]0@[)RF )@@G@@@#>@[Z/K@@A'N@0@A9'^@@@@@@K@@O@#+@[Z@@[@@XCB@@@A)A/[F#[#[#[#[#[#[#[#[#@@RG )@@G@@R[K@][R[@@]@R@0@[_R@)@["R@K@[.9\)@[;9\@@[99,)@[79,@@[5CC@@@A)B @<#[#[#[#RH )@@G@@@@@@@@)[X@C@)BD@N#[]=@@@/K@@@@/K@K[X@@F@@G*4@K[XN[)@]^N[K@]#N[@@]]CD@@@ARI )@@G@@)[Z@K@)BF@3#[#[#[#[#[#@@@@@@@@9:)@[;9:@@[99%)@[79%@@[59()@[3AA0@[)@#>@@]RJ )@@G@@S6COEFCE@@@A)BL[F#[#[#[#[#[#[#[#@@@@C8FK@@^[)@]^^[K@]#^[@@]]A[K@][A[@@]@RK )@@G@@A@0@[_A@)@["A@K@[.CF@@@A)BU[N@K^@K0^G[#@@@C8FK@ [@@@[=C8FK@^[@@@[+C8FK@#RL )@@G@@[@@@[[^@@ ACH@@@A)[I[S@@@@@@@@@@@@E) RN )@@G@@OTATED@@[@@@KG@@@@AW) S (RO R E S C T O R F A C CI@@@A)[T@)@@@@@@@RO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[@@@@@A@@@@@O@@@@@@CJ@@@ARP )@@G@@@@^@@ @@D@@E@@X@@[@@-@@#@@^@] @C@@B!@@@@#5@@@@[J@@@@#CS1VFWC S1VFWTRQ )@@G@@ S1HED3 S1PRCM S1HEDC S1TRCM SQRT NPRT$ RR )@@G@@ NIO2$ NERR3$ S6COEF @@[@@@@@@@BFS6BLK ]@@@C@RS )@@G@@@]@@@@S6FMTS ]@@@C@@#@@@@S63BLC ]@@@C@@^@@@@^@1A)8AS7^@5A))^@3RT )@@G@@^@1AS)^@1^@)^@,A@)^@)^@)^@)^@3AS)AC9^@)B@4^@)^@)*[S@@@*SDFF*@G@@@@ RU )@@G@@SUBROUTINE S63AMD(MV,MVV,B,A,Q,P,R,S,T,U,V,W,X,Y,Z,XM,SD,NMS, @B@@[@RV )@@G@@ - BABUF,BAVBUF,BAVAR,TEST,IPRNT,ZZ)@[[@@@C @[@@@@C @D@@@@RW )@@G@@C MAIN FACTOR ANALYSIS ROUTINE FOR FACTOR3. @D@@@@C PRX )@@G@@ERFORMS COMPLETE ANALYSIS FOR 1 MODEL. @[@@@@C @#@@@@ COMMONRY )@@G@@ IX(2)@G@@@@ COMMON/ S6BLK /INP,NX ,NC,VECT, RAW, RES,TCOP,TPAK,TRRZ )@@G@@AW,TROT, @G@@@@ 1PCOP,PPAK,PRAW,PROT, MAX,QMAX,MLE,FPCA,NF,DETSA )@@G@@ ,NRF,ITER,EPS, @G@@@@ 2DELTA,CRIT,PROC,IO(4),ITERS ,IORTH,SCORESB )@@G@@S,DF,NOBS,INCOM,H(200), @^@@@@ 3ICALC,E(4),F(4) @[@@@@C @E@@@@SC )@@G@@ COMMON/S6FMTS/NAMPRO(7),SUBNAM(7),DATFMT(5),VECFMT(2),@F@@@@ *SD )@@G@@NAMCOV(7),GATFMT(6),GECFMT(3),FUMFMT(6),GUMFMT(3),LUMFMT(6),@E@@@@ *SE )@@G@@MUMFMT(6),NUMFMT(4),NAMFMT(6),OFORM(5),QFORM(5),IBLANK@D@@@@ COMMONSF )@@G@@ /S63FMT/EATFMT(5),MAMFMT(6),BUMFMT(6) @[@@@@C @E@@@@ COMMONSG )@@G@@ /S63NBK/IPCOEF,IRPCOR,MAXCOR,NRMLZE,BWEPS,BWDEL@B@@@@ COMMON /S63SSH )@@G@@BH/NEWHED(7),CUTOFF @ @@@@ DIMENSION IBUFSV(7) @[@@[@C SI )@@G@@@D@@[@ COMMON /S63BSV/ NADD,BANKSC(2),BANCHR,BANEXT @[@@@@C SJ )@@G@@@G@@@@ DIMENSION R(2),A(MV,MV),Q(MVV,2),B(2),NMS(2),S(2),T(2),U(2),SK )@@G@@V(2), @D@@@@ *W(2),X(2),Y(2),Z(2),P(2), XM(2),SD(2) @C@@[@SL )@@G@@ DIMENSION BABUF(2),BAVBUF(2),BAVAR(2) @^@@@@ DIMENSION ZZSM )@@G@@(1) @[@@@@C @C@@@@ INTEGER PROC,QMAX,RAW,SUBNAM,Z,SCORES,FPCASN )@@G@@@#@@@@ INTEGER RES @A@@@@ EQUIVALENCE (BLANK,IBLANK) @[@@@@SO )@@G@@C @F@@@@C R LOWER TRIANGULAR ARRAY TO HOLD AND SAVE CORRELATION SP )@@G@@MATRIX@G@@@@C A SQUARE ARRAY TO FUNCTION AS WORK SPACE FOR BUMP AND SQ )@@G@@FACTOR1 @F@@@@C Q SQUARE ARRAY TO HOLD EIGENVECTORS AND RAW FACTSR )@@G@@OR MATRIX @ @@@@C B VECTOR OF EIGENVALUES @B@@@@C H VECTOR OF SS )@@G@@CURRENT COMMUNALITIY @A@@@@C V VECTOR OF CURRENT UNIQUENESS@E@@@@ST )@@G@@C S, T, V, W, X, Y, AND ZZ ARE USED AS TEMPORARY ARRAYS @F@@@@C T SU )@@G@@INITIALLY CONTAINS RATIOS FOR USE IN CHECKING INVERSION @B@@@@C Z SV )@@G@@ IS THE VECTOR OF VARIABLE NUMBERS @B@@@@C NMS IS VECTOR OF NAMES OF SW )@@G@@VARIABLES @G@@@@C P IS VECTOR OF SCALE FACTORS FOR RESCALING PROCEDUSX )@@G@@RES - RESERVED @E@@@@C PROC IS FLAG FOR TYPE OF FACTORING PRSY )@@G@@OCEDURE @C@@@@C 1 PRINCIPAL COMPONENTS @B@@@@SZ )@@G@@C 2 PRINCIPAL FACTOR @C@@@@C 3 TA )@@G@@UNIQUENESS RESCALING @ @@@@C 4 ALPHA @ @@@@C TB )@@G@@ 5 IMAGE @E@@@@C INCOM IS FLAG FOR TYPE OF COMMUNTC )@@G@@ALITY ESTIMATES @C@@@@C 1 ONE MINUS S SQUARED TD )@@G@@@ @@@@C 2 INPUT @E@@@@C ICALC IS FLAG FOR TYTE )@@G@@PE OF PRINCIPAL COMPONENTS @B@@@@C 1 COVARIANCE MTF )@@G@@ATRIX @B@@@@C 2 CORRELATION MATRIX@C@@@@C NFTG )@@G@@ IS THE NUMBER OF FACTORS REQUESTED @C@@@@C NX IS THE NUMBER OF TH )@@G@@FACTORS EXTRACTED @[@@@@C @ @@@@ EQUIVALENCE (BUF,SUBNAM)@D@@@@TI )@@G@@ DIMENSION GAMFMT(3)/18H(16X,10(A6,A2,3X))/ @[@@@@C @ @@@@TJ )@@G@@ DIMENSION MLEMAT(7) @E@@@@ DIMENSION NAMFM2(5)/'(10X,4HNATK )@@G@@ME,3X,12(1X,A6,A2))'/ @G@@@@ DIMENSION COMEST(7)/'C O M M U N A LTL )@@G@@ I T Y E S T I M A T E S -'/ @[@@@@C @B@@@@ DIMENSION FNAM2(2)TM )@@G@@/'FT3$$2 '/ @[@@@@C @[@@@@C @C@@@@ CALL S1GTAG('OVERFTN )@@G@@L',LVFW,DUM,DUM,$6999) @]@@@@ NV=MV @^@@@@ ASSIGN 6006 TO ISWTO )@@G@@@^@@@@ CALL S1HEDC(100) @[@@@@C @A@@@@C SET PROCEDTP )@@G@@URE NAME @[@@@@C @C@@@@ GO TO (6001,6002,6003,6004,6005),PROTQ )@@G@@C @^@@@@6001 NAMPRO(1)=6HPRINCI@^@@@@ NAMPRO(2)=6HPAL CO@^@@@@TR )@@G@@ NAMPRO(3)=6HMPONEN@^@@@@ NAMPRO(4)=6HTS PRO@^@@@@ NAMPROTS )@@G@@(5)=6HCEDURE@ @@@@ GO TO ISW,(6006,6100) @^@@@@6002 NAMPRO(1)=6HTT )@@G@@PRINCI@^@@@@ NAMPRO(2)=6HPAL FA@^@@@@ NAMPRO(3)=6HCTOR P@^@@@@TU )@@G@@ NAMPRO(4)=6HROCEDU@^@@@@ NAMPRO(5)=6HRE @#@@@@ GO TO TV )@@G@@6006 @^@@@@6003 NAMPRO(1)=6HUNIQUE@^@@@@ NAMPRO(2)=6HNESS R@^@@@@TW )@@G@@ NAMPRO(3)=6HESCALI@^@@@@ NAMPRO(4)=6HNG PRO@^@@@@ NAMPROTX )@@G@@(5)=6HCEDURE@#@@@@ GO TO 6006 @^@@@@6004 NAMPRO(1)=6HALPHA @^@@@@TY )@@G@@ NAMPRO(2)=6HFACTOR@^@@@@ NAMPRO(3)=6HING PR@^@@@@ NAMPROTZ )@@G@@(4)=6HOCEDUR@^@@@@ NAMPRO(5)=6HE @#@@@@ GO TO 6006 @^@@@@UA )@@G@@6005 NAMPRO(1)=6HIMAGE @^@@@@ NAMPRO(2)=6HFACTOR@^@@@@ NAMPROUB )@@G@@(3)=6HING PR@^@@@@ NAMPRO(4)=6HOCEDUR@^@@@@ NAMPRO(5)=6HE UC )@@G@@@^@@@@6006 NAMPRO(6)=IBLANK @^@@@@ NAMPRO(7)=IBLANK @#@@@@6008 UD )@@G@@CONTINUE @]@@@@ NI=1 @^@@@@ DO 6015 J=1,7 @^@@@@6015 UE )@@G@@NAMCOV(J)=IBLANK @A@@@@ IF (ICALC .EQ. 2) GO TO 6020 @^@@@@ UF )@@G@@NAMCOV(1)=6HBASED @^@@@@ NAMCOV(2)=6HON COV@^@@@@ NAMCOV(3)=6HUG )@@G@@ARIANC@^@@@@ NAMCOV(4)=6HE MATR@^@@@@ NAMCOV(5)=6HIX @#@@@@UH )@@G@@6020 CONTINUE @[@@@@C @C@@@@C PRINT MATRIX IF NOT SUUI )@@G@@PPRESSED @[@@@@C @A@@@@ IF(IPRNT .EQ. 0) GO TO 6100 @A@@@@UJ )@@G@@ IF(ICALC .EQ. 2) GO TO 6080 @^@@@@ DO 6040 J=4,7 @^@@@@UK )@@G@@ 6040 MLEMAT(J)=IBLANK @A@@@@ IF(MLE .EQ. 0) GO TO 6050 @^@@@@UL )@@G@@ MLEMAT(1)='MAXIMU'@^@@@@ MLEMAT(2)='M LIKE'@^@@@@ MLEMATUM )@@G@@(3)='LIHOOD'@^@@@@ MLEMAT(4)=' ESTIM'@^@@@@ MLEMAT(5)='ATES' UN )@@G@@@#@@@@ GO TO 6060 @^@@@@ 6050 MLEMAT(1)='UNBIAS'@^@@@@ MLEMATUO )@@G@@(2)='ED EST'@^@@@@ MLEMAT(3)='IMATES'@ @@@@ 6060 CALL S1HED2(NV,9,0UP )@@G@@) @G@@@@ CALL S1PLTM(R,NMS,Z,42HCOVARIANCE MATRIX FOR THE MODELUQ )@@G@@ ,@C@@@@ - 0,MLEMAT,EATFMT,MAMFMT,BUMFMT,9,NV) @#@@@@UR )@@G@@ GO TO 6100 @ @@@@ 6080 CALL S1HED2(NV,12,0) @G@@@@ CALL SUS )@@G@@1PLTM(R,NMS,Z,42HCORRELATION MATRIX FOR THE MODEL ,@B@@@@ -UT )@@G@@ 0,0,DATFMT,NAMFMT,MUMFMT,12,NV) @[@@@@C @ @@@@C EXPAUU )@@G@@ND R TO A @[@@@@C @]@@@@6100 M=1 @^@@@@ DO 6115 J=1,NV UV )@@G@@@]@@@@ JJ=J-1@ @@@@ IF (JJ.EQ.0) GO TO 6112 @^@@@@ DO 611UW )@@G@@0 K=1,JJ @#@@@@ A(J,K)=R(M) @#@@@@ A(K,J)=R(M) @]@@@@6110 UX )@@G@@M=M+1 @#@@@@6112 A(J,J)=R(M) @]@@@@6115 M=M+1 @^@@@@ DO 6120 J=1,UY )@@G@@7 @ @@@@ 6120 NEWHED(J)=NAMPRO(J) @[@@@@C @B@@@@C UZ )@@G@@ COMMUNALITY SECTION @[@@@@C @B@@@@C BRANCH ON TYPEVA )@@G@@ OF PROCEDURE @A@@@@ 6150 IF(PROC .EQ. 1) GO TO 6300 @C@@@@C VB )@@G@@ BRANCH ON TYPE OF COMMUNALITY ESTIMATE@G@@@@ IF(INCOM .NE. 0 .VC )@@G@@OR. MAXCOR .NE. 0) CALL S1HED4(NV,12,NMS,0) @A@@@@ IF(INCOM .NEVD )@@G@@. 0) GO TO 6165 @A@@@@ IF(MAXCOR .EQ. 0) GO TO 6170 @ @@@@C VE )@@G@@ MAXIMAL CORRELATIONS@^@@@@ DO 6160 J=1,NV @]@@@@ CMAX=0VF )@@G@@@^@@@@ DO 6155 K=1,NV @ @@@@ IF(K .EQ. J) GO TO 6155 @^@@@@VG )@@G@@ CC=ABS(A(J,K)) @ @@@@ IF(CC .GT. CMAX) CMAX=CC@#@@@@ 6155 VH )@@G@@CONTINUE @#@@@@ H(J)=CMAX @^@@@@ 6160 U(J)=1.0-H(J) @A@@@@VI )@@G@@ CALL S1PRVC(H,NMS,Z,COMEST, @B@@@@ - 42HEQUAL TO MAXIMAL CVJ )@@G@@ORRELATIONS @C@@@@ - ,NAMPRO,VECFMT,MUMFMT,NAMFM2,12,NV) @]@@@@VK )@@G@@ IERR=0@#@@@@ GO TO 6200 @ @@@@C COMMUNALITY INPUT VL )@@G@@@A@@@@ 6165 CALL S1PRVC(H,NMS,Z,COMEST, @C@@@@ - 42HINPUT FROM TVM )@@G@@HE MODEL CONTROL CARD @C@@@@ - ,NAMPRO,VECFMT,MUMFMT,NAMFM2,12,NVN )@@G@@V) @]@@@@ IERR=0@^@@@@ DO 6168 J=1,NV @^@@@@6168 U(J)=1VO )@@G@@.0-H(J) @#@@@@ GO TO 6250 @C@@@@C S SQUARED ESTIMATES VP )@@G@@OF UNIQUENESS @^@@@@6170 MVFW=IX(LVFW) @B@@@@ CALL S1INV (VQ )@@G@@A,T,DET,IERR,TEST,NV,NV)@B@@@@C TEST IF OVERFLOW OCCURRED IN S1INV... VR )@@G@@@B@@@@ IF (IX(LVFW).NE.MVFW) GO TO 6999 @A@@@@ IF (IERR.NE.VS )@@G@@0) GO TO 6230 @^@@@@ DO 6175 J=1,NV @^@@@@ U(J)=1.0/T(JVT )@@G@@) @^@@@@6175 H(J)=1.0-U(J) @ @@@@ CALL S1HED4(NV,12,NMS,3)VU )@@G@@@G@@@@ CALL S1PRVC (U,NMS,Z,40HS S Q U A R E D UNIQUENESS ESTVV )@@G@@IMATES@]@@@@ *,0, @C@@@@ - NAMPRO,VECFMT,MUMFMT,NAMFM2,12,NVVW )@@G@@) @^@@@@ PRINT 6180,DET @G@@@@6180 FORMAT (/46H0D E T E R MVX )@@G@@ I N A N T OF CORRELATION MATRIX,E12.5) @B@@@@C TEST COMMUNALIVY )@@G@@TY AND UNIQUENESS @^@@@@6200 DO 6210 J=1,NV @E@@@@ IF (U(J) .LTVZ )@@G@@. 0.00 .OR. U(J) .GT. 1.00) GO TO 6240 @C@@@@ GO TO (6998,6210,6WA )@@G@@206,6202,6206) ,PROC @B@@@@6202 IF (U(J) .GT. .9995) GO TO 6240 WB )@@G@@@#@@@@ GO TO 6210 @A@@@@6206 IF (U(J) .LT..0005) GO TO 6240@#@@@@WC )@@G@@6210 CONTINUE @#@@@@ GO TO 6250 @D@@@@C ERROR DETECTEDWD )@@G@@ AT IERR-TH SWEEP IN S1INV @^@@@@6230 DO 6235 J=1,NV @#@@@@6235 WE )@@G@@X(J)=A(J,J) @ @@@@ CALL S1HED4(NV,10,NMS,4)@G@@@@ CALL S1PRVC WF )@@G@@ (X,NMS,Z,37HP I V O T S OF CORRELATION MATRIX ,@E@@@@ *37HFOLWG )@@G@@LOWING PARTIAL INVERSION ,0,GECFMT, @ @@@@ *GUMFMT,GAMFMWH )@@G@@T,10,NV) @^@@@@ PRINT 6237,E,IERR @#@@@@ GO TO 6245 @D@@@@WI )@@G@@6237 FORMAT (4A6, 5H 21. ,I3,19H-TH PIVOT TOO SMALL) @C@@@@C ERWJ )@@G@@ROR IN COMMUNALITY OR UNIQUENESS @^@@@@ 6240 CALL S1HEDC(4) @^@@@@WK )@@G@@ PRINT 6242,E,J @G@@@@6242 FORMAT (4A6, 5H 22. ,I3,35H-TH UNIQUWL )@@G@@ENESS TOO NEAR ZERO OR ONE) @A@@@@6245 IF (FPCA .EQ. 0) GO TO 6999 WM )@@G@@@D@@@@C FORCE PRINCIPAL COMPONENTS WHEN ALLOWED @^@@@@ WN )@@G@@ASSIGN 6100 TO ISW@]@@@@ ITER=0@#@@@@ PRINT 6248,F@G@@@@6248 WO )@@G@@FORMAT (4A6,47H 30. PROCEDURE CHANGED TO PRINCIPAL COMPONENTS ) @#@@@@WP )@@G@@ PROC = 1 @#@@@@ GO TO 6001 @E@@@@C SET WQ )@@G@@UP MATRIX TO BE DECOMPOSED SECTION @A@@@@6250 CALL S1TIMT(2,11HCOMMUNAWR )@@G@@LITY) @C@@@@ GO TO (6998,6260,6270,6290,6270),PROC @A@@@@C WS )@@G@@ PRINCIPAL FACTOR PROCEDURE@C@@@@C EXPAND R TO A AND REDUCE DWT )@@G@@IAGONAL @]@@@@6260 M=1 @^@@@@ DO 6265 J=1,NV @]@@@@ WU )@@G@@JJ=J-1@ @@@@ IF (JJ.EQ.0) GO TO 6264 @^@@@@ DO 6263 K=1,JJ WV )@@G@@@#@@@@ A(J,K)=R(M) @#@@@@ A(K,J)=R(M) @]@@@@6263 M=M+1 @^@@@@WW )@@G@@6264 A(J,J)=R(M)-U(J) @]@@@@6265 M=M+1 @#@@@@ GO TO 6300 @B@@@@WX )@@G@@C UNIQUENESS RESCALING PROCEDURE @]@@@@6270 M=1 @B@@@@C WY )@@G@@ FORM SCALE FACTORS AND RESCALE @G@@@@C RESET OVERFLOW INDICATOR---WZ )@@G@@------------------------------------------@#@@@@ CALL S1VFWC @^@@@@XA )@@G@@ DO 6275 J=1,NV @ @@@@ P(J)=1.0/SQRT (U(J)) @^@@@@ XB )@@G@@DO 6275 K=1,J @ @@@@ A(J,K)=P(J)*P(K)*R(M) @^@@@@ A(K,J)XC )@@G@@=A(J,K) @]@@@@6275 M=M+1 @G@@@@C TEST OVERFLOW INDICATOR++++++++++XD )@@G@@++++++++++++++++++++++++++++++++++++@A@@@@ CALL S1VFWT(6HANAL 2,$69XE )@@G@@99) @#@@@@ GO TO 6300 @ @@@@C ALPHA PROCEDURE @]@@@@XF )@@G@@6290 M=1 @G@@@@C RESET OVERFLOW INDICATOR---------------------------XG )@@G@@------------------@#@@@@ CALL S1VFWC @^@@@@ DO 6298 J=1,NV XH )@@G@@@ @@@@ P(J)=1.0/SQRT (H(J)) @]@@@@ JJ=J-1@ @@@@ IF (JJXI )@@G@@.EQ.0) GO TO 6296 @^@@@@ DO 6295 K=1,JJ @ @@@@ A(J,K)=P(J)*XJ )@@G@@P(K)*R(M) @^@@@@ A(K,J)=A(J,K) @]@@@@6295 M=M+1 @#@@@@6296 XK )@@G@@A(J,J)=1.0 @]@@@@6298 M=M+1 @G@@@@C TEST OVERFLOW INDICATOR++++++++++XL )@@G@@++++++++++++++++++++++++++++++++++++@A@@@@ CALL S1VFWT(6HANAL 3,$69XM )@@G@@99) @[@@@@C @B@@@@C DECOMPOSITION SECTION @[@@@@XN )@@G@@C @D@@@@C SET MAX NUMBER OF FACTORS TO BE EXTRACTED @]@@@@XO )@@G@@6300 NX=NV @C@@@@ IF (NF .GT. 0 .AND. NF .LT. NV) NX=NF @B@@@@XP )@@G@@C SET TOLERANCE FOR EIGENVALUES @#@@@@ TEMP = 0.0 @A@@@@XQ )@@G@@ IF (ICALC .EQ. 1) GO TO 6325 @C@@@@ GO TO (6315,6325,6320,63XR )@@G@@15,6315), PROC @A@@@@6315 IF (NF .NE. 0) GO TO 6325 @#@@@@6320 XS )@@G@@TEMP=1.0 @#@@@@6325 CONTINUE @^@@@@ MVFW=IX(LVFW) @E@@@@XT )@@G@@ CALL S1EIG (A,Q,B,NV,MVV,1,NX,TEMP,S,T,V,W,X,Y,ZZ) @B@@@@C TESXU )@@G@@T IF OVERFLOW OCCURRED IN S1EIG... @B@@@@ IF (IX(LVFW).NE.MVFW) GOXV )@@G@@ TO 6999 @[@@@@C @F@@@@C REFLECT EIGENVECTORS IF 'SIGXW )@@G@@NED SSQ' IS NEGATIVE @[@@@@C @^@@@@ DO 6330 K=1,NX @]@@@@XX )@@G@@ TEMP=0@^@@@@ DO 6326 J=1,NV @A@@@@ 6326 TEMP=TEMP+Q(J,K)*AXY )@@G@@BS(Q(J,K)) @A@@@@ IF(TEMP .GE. 0) GO TO 6330 @^@@@@ DO 632XZ )@@G@@8 J=1,NV @^@@@@ 6328 Q(J,K)=-Q(J,K) @#@@@@ 6330 CONTINUE @[@@@@YA )@@G@@C @C@@@@ CALL S1TIMT (4,19HEIGEN DECOMPOSITION) @G@@@@C YB )@@G@@ TEST IF NUMBER OF FACTORS EXTRACTED EQUALS NUMBER REQUESTED @A@@@@YC )@@G@@ IF(NF .LE. NX) GO TO 6340 @^@@@@ CALL S1HEDC(2) @#@@@@YD )@@G@@ PRINT 6335,F@G@@@@6335 FORMAT (4A6,49H 23. NOT ALL FACTORS REQUESYE )@@G@@TED COULD BE EXTRACTED) @[@@@@C @B@@@@C ITERATION YF )@@G@@SECTION @[@@@@C @A@@@@6340 IF (ITER.EQ.0) GO TO 6400 @]@@@@YG )@@G@@6345 NF=NX @C@@@@ GO TO (6998,6350,6360,6370,6998), PROC @F@@@@YH )@@G@@C PRINCIPAL FACTOR PROCEDURE - COMPUTE NEW COMMUNALITY @]@@@@YI )@@G@@6350 IERR=0@G@@@@C RESET OVERFLOW INDICATOR---------------------------YJ )@@G@@------------------@#@@@@ CALL S1VFWC @^@@@@ DO 6358 J=1,NV YK )@@G@@@#@@@@ TEMP=0.0 @^@@@@ DO 6352 K=1,NF @A@@@@6352 TEMP=TYL )@@G@@EMP+Q(J,K)*Q(J,K)*B(K) @C@@@@ IF (ABS (TEMP-H(J)).LT.CRIT) GO TO YM )@@G@@6356 @]@@@@6354 IERR=1@#@@@@6356 H(J)=TEMP @^@@@@6358 U(J)=1.0-TEMYN )@@G@@P @G@@@@C TEST OVERFLOW INDICATOR++++++++++++++++++++++++++++++++++YO )@@G@@++++++++++++@A@@@@ CALL S1VFWT(6HANAL 4,$6999) @#@@@@ GO TO YP )@@G@@6380 @F@@@@C UNIQUENESS RESCALING PROCEDURE - COMPUTE NEW UNIQUYQ )@@G@@ENESS @]@@@@6360 IERR=0@#@@@@ SEMP=0.0 @^@@@@ DO 6361 J=1,YR )@@G@@NV @^@@@@6361 SEMP=SEMP+1.0/U(J)@#@@@@ TEMP=0.0 @^@@@@ YS )@@G@@DO 6362 K=1,NF @^@@@@6362 TEMP=TEMP+B(K) @G@@@@C RESET OVERFLOW YT )@@G@@INDICATOR---------------------------------------------@#@@@@ CALL SYU )@@G@@1VFWC @ @@@@ SEMP=(NV-NF)/(SEMP-TEMP)@]@@@@ IERR=0@^@@@@ YV )@@G@@DO 6368 J=1,NV @#@@@@ TEMP=0.0 @^@@@@ DO 6364 K=1,NF YW )@@G@@@C@@@@6364 TEMP=TEMP+Q(J,K)*Q(J,K)*(SEMP*B(K)-1.0) @ @@@@ TEMP=1YX )@@G@@.0/(1.0+TEMP) @C@@@@ IF (ABS (TEMP-U(J)).LT.CRIT) GO TO 6366 YY )@@G@@@]@@@@6365 IERR=1@#@@@@6366 U(J)=TEMP @^@@@@6368 H(J)=1.0-TEMP YZ )@@G@@@G@@@@C TEST OVERFLOW INDICATOR++++++++++++++++++++++++++++++++++++++++ZA )@@G@@++++++@A@@@@ CALL S1VFWT(6HANAL 5,$6999) @#@@@@ GO TO 6380 ZB )@@G@@@D@@@@C ALPHA PROCEDURE - COMPUTE NEW COMMUNALITY @]@@@@6370 ZC )@@G@@IERR=0@G@@@@C RESET OVERFLOW INDICATOR---------------------------------ZD )@@G@@------------@#@@@@ CALL S1VFWC @^@@@@ DO 6378 J=1,NV @#@@@@ZE )@@G@@ TEMP=0.0 @^@@@@ DO 6372 K=1,NF @A@@@@6372 TEMP=TEMP+Q(ZF )@@G@@J,K)*Q(J,K)*B(K) @^@@@@ TEMP=TEMP*H(J) @C@@@@ IF (ABS (TEMZG )@@G@@P-H(J)).LT.CRIT) GO TO 6376 @]@@@@6374 IERR=1@#@@@@6376 H(J)=TEMP ZH )@@G@@@^@@@@6378 U(J)=1.0-TEMP @G@@@@C TEST OVERFLOW INDICATOR++++++++++ZI )@@G@@++++++++++++++++++++++++++++++++++++@A@@@@ CALL S1VFWT(6HANAL 6,$69ZJ )@@G@@99) @F@@@@C PRINT ITERATIVE ESTIMATES OF COMMUNALITIES - OPTIOZK )@@G@@NALLY @A@@@@6380 IF (ITERS.EQ.0) GO TO 6382 @]@@@@ ILST=1@^@@@@ZL )@@G@@6381 SUBNAM(1)=6HITERAT@^@@@@ SUBNAM(2)=6HION NU@^@@@@ SUBNAMZM )@@G@@(3)=6HMBER @^@@@@ SUBNAM(4)=IBLANK @^@@@@ SUBNAM(5)=IBLANK ZN )@@G@@@^@@@@ SUBNAM(6)=IBLANK @^@@@@ SUBNAM(7)=IBLANK @]@@@@ ZO )@@G@@ILN=1 @ @@@@ IF(NI .GT. 9) ILN=2 @ @@@@ IF(NI .GT. 99) ILNZP )@@G@@=4 @B@@@@ CALL S1ENCI(NI,SUBNAM(4),ILN,ILN,1) @ @@@@ CALL SZQ )@@G@@1HED4(NV,12,NMS,0)@G@@@@ CALL S1PRVC (H,NMS,Z,37HITERATIVE ESTIMAZR )@@G@@TES OF COMMUNALITIES , @D@@@@ - NAMPRO,SUBNAM,VECFMT,MUMFMT,NAMFMZS )@@G@@2,12,NV) @B@@@@ GO TO (6382,63901,63921,63941),ILST @B@@@@C ZT )@@G@@ CHECK FOR PROPER COMMUNALITY @^@@@@6382 DO 6383 J=1,NV @C@@@@ZU )@@G@@ IF (H(J).GT.1.0.OR.H(J).LT.0.0) GO TO 6390@C@@@@ GO TO (6998,ZV )@@G@@6383,63824,63826,6998),PROC @A@@@@63824 IF (H(J).GT.0.9995) GO TO 6390ZW )@@G@@@#@@@@ GO TO 6383 @A@@@@63826 IF (H(J).LT..0005) GO TO 6390 @#@@@@ZX )@@G@@6383 CONTINUE @A@@@@C CHECK FOR CONVERGENCE @A@@@@ ZY )@@G@@IF (IERR.EQ.0) GO TO 6392 @D@@@@C CHECK NUMBER OF ITERATIONSZZ )@@G@@ LESS THAN MAX @A@@@@6384 IF (NI.GE.ITER) GO TO 6394 @A@@@@C AA )@@G@@ PERFORM ANOTHER ITERATION @#@@@@6386 NI=NI+1 @C@@@@ GO TO AB )@@G@@(6998,6260,6270,6290,6998), PROC @C@@@@C DIAGNOSTIC FOR IMPROAC )@@G@@PER COMMUALITY @]@@@@ 6390 ILST=2@A@@@@ IF(ITERS .EQ. 0) GO TO 6AD )@@G@@381 @^@@@@63901 PRINT 6242,F,J @^@@@@ CALL S1HEDC(4) @#@@@@AE )@@G@@ GO TO 6396 @A@@@@C MESSAGE FOR CONVERGENCE @]@@@@ 6392 AF )@@G@@ILST=3@A@@@@ IF(ITERS .EQ. 0) GO TO 6381 @^@@@@63921 PRINT 6393,FAG )@@G@@,CRIT @^@@@@ CALL S1HEDC(4) @#@@@@ GO TO 6396 @G@@@@6393 AH )@@G@@FORMAT (4A6,40H 24. CONVERGENCE ACHIEVED WITH CRITERION,F8.5) @C@@@@AI )@@G@@C DIAGNOSTIC FOR TOO MANY ITERATIONS @]@@@@ 6394 ILST=4@A@@@@AJ )@@G@@ IF(ITERS .EQ. 0) GO TO 6381 @#@@@@63941 PRINT 6395,F@^@@@@ AK )@@G@@CALL S1HEDC(4) @F@@@@6395 FORMAT (4A6,43H 25. BOUND ON NUMBER OF ITEAL )@@G@@RATIONS ACHIEVED) @^@@@@6396 PRINT 6397,F,NI @G@@@@6397 FORMAT (4A6,AM )@@G@@31H 26. ITERATION TERMINATED AFTER,I4,11H ITERATIONS) @[@@@@C @C@@@@AN )@@G@@C OUTPUT SECTION @[@@@@C @#@@@@6400 AO )@@G@@CONTINUE @^@@@@ MVFW=IX(LVFW) @D@@@@ CALL S6OUT (A,Q,R,AP )@@G@@B,NMS,P,T,U,X,Y,Z,SD,MV,MVV) @B@@@@C TEST IF OVERFLOW OCCURRED IN S6OUAQ )@@G@@T... @B@@@@ IF(IX(LVFW).NE.MVFW) GO TO 6999 @C@@@@ CALL SAR )@@G@@1TIMT(4,19HROTATION AND OUTPUT) @^@@@@C UNNORMALIZE A@D@@@@AS )@@G@@ IF(ICALC .EQ. 2 .OR. NRMLZE .EQ. 0) GO TO 6505@^@@@@ DO 650AT )@@G@@0 J=1,NV @#@@@@ JJ=Z(J) @#@@@@ DIV=SD(JJ) @^@@@@ AU )@@G@@DO 6500 K=1,NRF @^@@@@ 6500 A(J,K)=A(J,K)*DIV @#@@@@6505 CONTINUE AV )@@G@@@[@@@@C @B@@@@C FACTOR SCORES SECTION @[@@@@C AW )@@G@@@G@@[@ IF(SCORES .EQ. 0 .AND. IPCOEF .EQ. 0 .AND. NADD .EQ. 0) AX )@@G@@GO TO @#@@[@ - 6740 @#[@@@ NOUT=NV*NRF @C@@@@ CALL SAY )@@G@@1VCSR('WRITE',FNAM2,A,NOUT,$6998) @^@@@@ DO 6510 J=1,7 @ @@@@AZ )@@G@@ 6510 IBUFSV(J)=SUBNAM(J) @D@@@@ CALL S6COEF (A,Q,B,P,X,Z,SD,NBA )@@G@@MS,MV,MVV,XM) @B@@@@C TEST IF OVERFLOW OCCURRED IN S6COEF... @B@@@@BB )@@G@@ IF(IX(LVFW).NE.MVFW) GO TO 6999 @D@@[@ IF(SCORES .EQ. 0 BC )@@G@@.AND. NADD .EQ. 0) GO TO 6520@F@@[@ CALL S63SCR(A,XM,SD,X,Y,Z,NMS,BD )@@G@@MV,NADD,BABUF,BAVBUF,BAVAR) @B]@@@C TEST IF OVERFLOW OCCURRED IN S6SCBE )@@G@@OR... @B@@@@ IF(IX(LVFW).NE.MVFW) GO TO 6999 @^@@@@ IPCH=ABF )@@G@@ND(SCORES,2)@^@@@@ ITAP=AND(SCORES,4)@D@@@@ IF(IPCH .EQ. 0 .OBG )@@G@@R. ITAP .EQ. 0) GO TO 6520 @^@@@@ KEMP=SCORES/4 @^@@@@ BH )@@G@@SCORES=KEMP*4 @F@@[@ CALL S63SCR(A,XM,SD,X,Y,Z,NMS,MV,0 ,BABUBI )@@G@@F,BAVBUF,BAVAR) @B[@@@ IF(IX(LVFW) .NE. MVFW) GO TO 6999 @B@@@@BJ )@@G@@ 6520 CALL S1TIMT(3,13HFACTOR SCORES) @C@@@@ CALL S1VCSR('READ'BK )@@G@@,FNAM2,A,NOUT,$6998) @^@@@@ DO 6530 J=1,7 @ @@@@ 6530 SUBNAMBL )@@G@@(J)=IBUFSV(J) @D@@@@ 6740 IF(RES .EQ. 0 .AND. IRPCOR .EQ. 0) GO TOBM )@@G@@ 6818 @^@@@@C SWAP A AND Q @^@@@@ DO 6746 J=1,NV @^@@@@BN )@@G@@ DO 6745 K=1,NRF @^@@@@6745 Q(J,K)=A(J,K) @#@@@@6746 CONTINBO )@@G@@UE @]@@@@6750 M=1 @G@@@@C RESET OVERFLOW INDICATOR---------------BP )@@G@@------------------------------@#@@@@ CALL S1VFWC @^@@@@ DO 677BQ )@@G@@5 I=1,NV @^@@@@ DO 6775 J=1,I @]@@@@ TEMP=0@^@@@@ BR )@@G@@DO 6770 K=1,NRF @ @@@@6770 TEMP=TEMP+Q(I,K)*Q(J,K) @#@@@@ A(M)=TBS )@@G@@EMP @]@@@@6775 M=M+1 @G@@@@C TEST OVERFLOW INDICATOR++++++++++++++++BT )@@G@@++++++++++++++++++++++++++++++@A@@@@ CALL S1VFWT(6HANAL 7,$6999) BU )@@G@@@A@@@@ IF(IRPCOR .EQ. 0) GO TO 6778 @A@@@@ IF(ICALC .EQ. 2) GBV )@@G@@O TO 6777 @ @@@@ CALL S1HED2(NV,9,0) @G@@@@ CALL S1PLTM(BW )@@G@@A,NMS,Z,42HR E P R O D U C E D COVARIANCE MATRIX FOR @C@@@@ - ,BUBX )@@G@@F,NAMPRO,EATFMT,MAMFMT,BUMFMT,9,NV) @#@@@@ GO TO 6778 @#@@@@ 6777 BY )@@G@@CONTINUE @ @@@@ CALL S1HED2(NV,12,0) @G@@@@ CALL S1PLTM(BZ )@@G@@A,NMS,Z,42HR E P R O D U C E D CORRELATION MATRIX FOR @C@@@@ - ,BUCA )@@G@@F,NAMPRO,DATFMT,NAMFMT,MUMFMT,12,NV)@A@@@@ 6778 IF(RES .EQ. 0) GO TO 680CB )@@G@@0 @]@@@@ M=M-1 @^@@@@ DO 6779 I=1,M @^@@@@ 6779 A(I)=RCC )@@G@@(I)-A(I) @A@@@@ IF(ICALC .EQ. 2) GO TO 67795 @ @@@@ CALL SCD )@@G@@1HED2(NV,9,2) @G@@@@ CALL S1PLTM(A,NMS,Z,39HR E S I D U A L CCE )@@G@@OVARIANCE MATRIX FOR @C@@@@ - ,BUF,NAMPRO,EATFMT,MAMFMT,BUMFMT,CF )@@G@@9,NV) @#@@@@ GO TO 67798 @#@@@@67795 CONTINUE @ @@@@ CALL SCG )@@G@@1HED2(NV,12,2) @G@@@@ CALL S1PLTM(A,NMS,Z,39HR E S I D U A L CH )@@G@@COVARIANCE MATRIX FOR, @C@@@@ *BUF,NAMPRO,DATFMT,NAMFMT,MUMFMT,12,NCI )@@G@@V) @G@@@@C COMPUTE SUM OF SQUARES OF OFF-DIAGONAL ELEMENTS OFCJ )@@G@@ RESIDUAL M @#@@@@67798 CONTINUE @#@@@@ TEMP=0.0 @]@@@@ CK )@@G@@M=2 @G@@@@C RESET OVERFLOW INDICATOR---------------------------------CL )@@G@@------------@#@@@@ CALL S1VFWC @^@@@@ DO 6785 J=2,NV @]@@@@CM )@@G@@ JJ=J-1@^@@@@ DO 6780 K=1,JJ @ @@@@ TEMP=TEMP+A(M)*A(MCN )@@G@@) @]@@@@6780 M=M+1 @]@@@@6785 M=M+1 @G@@@@C TEST OVERFLOW INDICATCO )@@G@@OR++++++++++++++++++++++++++++++++++++++++++++++@A@@@@ CALL S1VFWT(CP )@@G@@6HANAL 8,$6999) @A@@@@C COMPUTE DEGREES OF FREEDOM@^@@@@ CQ )@@G@@M=NV*(NV-1)/2 @^@@@@ PRINT 6790 ,M,TEMP@G@@@@6790 FORMAT (19H0CR )@@G@@SUM OF SQUARES OF ,I5,58H OFF-DIAGONAL ELEMENTS OF THE@B@@@@ * RESIDCS )@@G@@UAL COVARIANCE MATRIX ,G11.5)@D@@@@C COMPUTE AND OUTPUT RANKINGCT )@@G@@S OF FACTOR MATRIX@^@@@@6800 DO 6815 J=1,NV @^@@@@ DO 6810 K=1,CU )@@G@@NRF @^@@@@6810 A(J,K)=Q(J,K) @#@@@@6815 CONTINUE @#@@@@ 6818 CV )@@G@@CONTINUE @^@@@@C NORMALIZE A @D@@@@ IF(ICALC .EQ. 2 .CW )@@G@@OR. NRMLZE .EQ. 0) GO TO 6825@^@@@@ DO 6820 J=1,NV @#@@@@ CX )@@G@@JJ=Z(J) @#@@@@ DIV=SD(JJ) @^@@@@ DO 6820 K=1,NRF @^@@@@CY )@@G@@ 6820 A(J,K)=A(J,K)/DIV @#@@@@ 6825 CUTOFF=.3 @D@@@@ IF(ICALC .EQCZ )@@G@@. 2 .OR. NRMLZE .NE. 0) GO TO 6850@#@@@@ CUTOFF=0 @^@@@@ DA )@@G@@DO 6840 J=1,NV @^@@@@ DO 6830 K=1,NRF @A@@@@ 6830 CUTOFF=CUTOFDB )@@G@@F+ABS(A(J,K)) @#@@@@ 6840 CONTINUE @ @@@@ CUTOFF=CUTOFF/(NV*DC )@@G@@NRF) @#@@@@ 6850 CONTINUE @D@@@@ CALL S6RANK (A,Q,NV,NRF,Z,NMDD )@@G@@S, W,X,Y,BUF) @#@@@@6900 CONTINUE @^@@@@C NORMAL RETURN DE )@@G@@@]@@@@ RETURN@A@@@@C ERROR RETURN -CODING FLAW @C@@@@6997 DF )@@G@@FORMAT (4A6,21H 99. SEE A CONSULTANT) @#@@@@6998 PRINT 6997,E@ @@@@DG )@@G@@C NORMAL ERROR RETURN @#@@@@6999 PRINT 7000,F@]@@@@ RETURNDH )@@G@@@G@@@@7000 FORMAT (4A6,51H 27. ANALYSIS TERMINATED BECAUSE OF PREVIOUS DI )@@G@@ERRORS@]@@@@ *) @]@@@@ END ___T,B)@@[N#@@]A@K0CS@@@[@)@ &DJ )@@G@@[@@@ >G.)__"C[)@ /,0@@@^@K@@+DO )@@G@@N8K@[U[@@@@-C@@@@@@[U@ U/K@@X:AE@@@A)@U[F#AC] #@)C]@)@@@@@@/K@@[ /K@@@'DP )@@G@@/K@@@\/K@@@=@[Y@ U'^@@@@8];@@Y$'0@@ARA0@@TAF@@@A)@<[F@K0CT^G]AL#@-=K0CT@DQ )@@G@@[@)@@#C@)@^([@@@@]C@@@^*[@)@@[C@)@^$[@@@@@C@@@^&/K@@[KAG@@@A)@?[##@-=K0CDR )@@G@@S^G+A[#C-)@@@@@@@@C@@@^?[@)@@[C@)@^:[@@@@@C@@@^&/K@K@+[@@@@^C@@@^%AH@@@ADS )@@G@@)@4[F#C-)K2CS^G+@-)K2CS@C@)@^0[@@@@@C@@@^\/K@@[U[@@@@^C@@@^,[@)@@#C@)@^!DT )@@G@@[@@@@]AI@@@A)@.[F#C-)K2CS^G+A[#C)CS@C@@@^3/K@@[U[@@@@^C@@@^%[@)@@#C@)@^2DU )@@G@@[@@@@]C@@@^1[@)@@[AJ@@@A)[A[##C-)K2CS^G+A[#C-)@@@@@@@@C@@@^7[@)@@#C@)@^6DV )@@G@@[@@@@]C@@@^5[@)@@[C@)@^4[@@@@@AK@@@A)[I[F#C)CS^G+A[#C-)K2CS@C@)@^6[@@@@]DW )@@G@@C@@@^5[@)@@[C@)@^4[@@@@@C@@@^8/K@@[U[@@@@^AL@@@A)[R[F#C-)K2CT^G+AL#CCS@@DX )@@G@@[@@@@C/@@@[@]>@ U@@@@@-@@@@ E@@@@@4AY@@@A)];[N#@CS@^GEM )@@G@@@-)@@@;[)@@MC[)@ (C_)@@[G[@@ *H[@@@@G[@@@@C.@@@[G@@@ *H@@@@@[@@@ (AZ@@@AEN )@@G@@)# [M[#@-)^G@-)@@@C@)@@@G@@@ *H@@@@@G@@@@=C@@@@@[#)@@=[[@@ ([@)@[^[[)@@[EO )@@G@@'L)@@GBA@@@A)#J[F#@]A[#@-)^G]A@@@@@@]@@@@&H@@@@=C/@@@[[@)@ :[@@@ %G@)@ *EP )@@G@@H@)@@@G/)@@[T@)@@=BB@@@A)#S[N#@)]A[#@]A@@@]@@@[ [@)@@#'K)@ %;@)@@MC@)@@@EQ )@@G@@Q@)@ :R@)@ FH/@__"/K@@#?(@@@@&BC@@@A)#+[N#@-)@[#@-)K@@8LK@#+[@@@@>G@@@@>ER )@@G@@C/@@@[[@+)@@C@=@@@[@#)@@C@^@@@O[@@ >R[@@@>BD@@@A)#?[F#@-)@K0CS[@@@@@@@@@ES )@@G@@8L@@#DG_)@@[[@)@@>G@)@@>C/)@@[[@[)@@C@^@@@O[@@ >R[@@@>BE@@@A)#5[N#@JTB?'ET )@@G@@@CS1@@C/@@@[/K@@F0(@@@@IH@)@@TC/)@@[8L@@#7[@]\_"C@]J_"N.@@@AR@)@^9BF@@@AEU )@@G@@)#_[F#G]AG^[]C-)@@@@@@@@@@@@@-/,0@@@/)K@^G)@@@@I @@@@I(@@@@C/@@@[/K@@D)/K@@E-/K@@D)/K@@C+/K@@X+@^$@ U'^@@@@CU@@@A)C=[EK0]A@K0GQ )@@G@@]A[#@@@@@@@@Q@)@ -R@)@ FC_)@@[G@@@ *H@@@@@[@@@ (G@@@@@G@)@@-C/)__"CV@@@AGR )@@G@@)C![N#@@CS[#@CS@@@G@@@ *H@@@@@G@@@@=C@@@@@[#)@@=[@)@[^[[@@@^'L@@@G;[@@@MGS )@@G@@C[@@ (CW@@@A)C7[EK0@-)K0CS[#@@@@@@@@H@@@@=C/@@@[[@)@ :[@@@ (G@)@ *H@)@@@GT )@@G@@G/)@@[T@)@@=C@)@@@CX@@@A)D@[F#@-)K[#@-)[#@@@@@@@'K)@ (;@)@@MC@)@@@Q@0@ :GU )@@G@@R@0@ FH/@__"/K@@DP(@@@@&]@@@@&CY@@@A)DD[M^G]A@@^G@@@@@G@@@@>C/@@@[[@<)@@GV )@@G@@C@>@@@[@[)@@C@ @@@O[K@ >R[K@@>]@@@[ [@)@@[CZ@@@A)DN[F#@)CS^G@@-)@@@@@@@@GW )@@G@@G@)@@>C/)@@[]@^)@@"^ @@@C@])@@O[K@ >R[K@@>8LK@DF[@@@@>DA@@@A)DW[F#@C]@CSGX )@@G@@^D]A@@@@@@@@C/@__"@^;@ U/,0@@@[@@@@>C/@@@[/K@@F08L@@C2G_)@@[[@)@@>DB@@@AGY )@@G@@)D>[F#@CS^G]A@K0]A@@@@@@G@@@@=C/@__"[#)@@=[@@@[^R[K@ ZR@0@ ZR@K@ -C_)@@[GZ )@@G@@G@@@@-DC@@@A)D,[MK0]A@K0@-)K0@[@@@ (G[@@ *H[@@@@G.@@@[T[@@@=C[@@@@G@)@ *HA )@@G@@H@)@@@G@)@@=C@)@@@DD@@@A)D8[F#@-)^[]%)CS^G@@@@@@"G)@@GC@)@ G@^_@ U@@@@D.HB )@@G@@/,0@@@^^K@D.N8L@@@[[@@ ?[@)@ :DE@@@A)E[[E[#@CS^G]A[#@@@@@@@@Q[)@ ZR[)@ FHC )@@G@@Q[@@ ?R[@@ F[@@@@]'K@@ :;@@@@MC@@@@@[@>@@@DF@@@A)EE[N#@-)K0@@@@@@@C/@@@[HD )@@G@@[@=)@@C@+)@@[@]@@@"CB@@@"CA)@@C@#@@@O[0@ >R[0@@>N[K@ (DG@@@A)EO@;#@-)K@@HE )@@G@@)]S@K@@@@@@@______ANAL 2G_)@@[O.K@@[O/0@@[O/K@@[8LK@EF[@@@@>G@@@@>DH@@@AHF )@@G@@)EV[F@K=*S^[#@)]A[]K@@@@/,0@@@[@@@@>C/@@@[/K@@F0@ C@ U/K@@X:@@@@]S/,0@@@HG )@@G@@8L@@D:DI@@@A)E=[N#@CS@K0]A[#@@R/)@@[R[0@ ZG@)@ *H@)@@@[@)@ (G@)@@@C/)@@[HH )@@G@@G@@@@-C/@__"@ F@ UDJ@@@A)E,[N#@-)@^G@-)@@@H@@@@@G@@@@=C@@@@@A@)@@=[@@@[^HI )@@G@@[[@@@A'L@@@I;[@@@MC[@@ (R[@@ ZDK@@@A)E8[F#@CS@K0CS^G]AG@@@@@N8M@@<[@)@ :HJ )@@G@@[@@@ (G@)@ *H@)@@@G/)@@[T@)@@=C@)@@@G@@@ *DL@@@A)F[[F@K%*]A[#@@-)@@@@@@@HK )@@G@@H@@@@=C/@@@[[@$@@@"G)@@GC@)@ G@ J@ U@@@@F#/,0@@@^^K@F#DM@@@A)FE[F#@-)K[#HL )@@G@@@-)[#@@@@@@@'L@@ (;[@@@MC[@@@@Q@K@ :R@K@ FH/@__"/K@@F<(@@@@&]@@@@&DN@@@AHM )@@G@@)FN[MK0CS[#@-)@@@@[@#@@@"CC@@@"C )@@C@^@@@O]@@ >R]@@@>]@@@[ Q[K@ ZR[K@ FHN )@@G@@[[@@@#DO@@@A)FX[M[#@-)K^G@CS@@G@)@@>C/)@@[[@A)@@C@@@ G8LK@FR[@@@@>G@@@@>HO )@@G@@C/@@@[[@-)@@C@<)@@DP@@@A)F$@<#@@@@@@)]U@K@)F:@N@K=)@@@/,0@@@8L@@E4______HP )@@G@@ANAL 3O.@@@[O/)@@[O.0@@[[@)@@>DQ@@@A)F![F#@)CS^G]AGK1*S@@@@@*@@@@IH@)@@-HQ )@@G@@C@)@@MC/@@@[[@@@@[C@@@@-@ X@ U/K@@X:@@@@]UDR@@@A)F6[M[#A@C]AG@@@@@C@@@@MHR )@@G@@/)K@G[+@@@@I @@@@I1@@@@K*@@@@KD[@@@MC/)@@[ @@@@G1@@@@IDS@@@A)G@[F#A-)^GSHS )@@G@@)CS1@@@@@@@@8];@GE$'0@@ARA0@@T/K@@GO(@@@@GH@@@#?C/@@@[ @@@@?[@@@@[DT@@@AHT )@@G@@)GD[F]+-)K^[@K^[#A)@@@@@/K@@GO*@@@@M/K@@GK/K@@GK/K@@GM/K@@GO/K@@GK@ =@ UHU )@@G@@'^@@@@DU@@@A)GM[F#@-)K0JEA[]O@@@@@@@@@@@@@@@@@@@@@@@@@/,0@@@[@@@@:C@CJ_"HV )@@G@@R]@@@Z[@@@@?C@@@ GDV@@@A)GV[N#@CS^GUA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HW )@@G@@@@@@@?@@@@@[@@@@ N@@@@@@@@@@@-DW@@@A)G>[M^G@-*@@@@G/C@@I1@@@@GFI@@@A)L:[##@-FK0CJP )@@G@@T^G]A[#@-)@@@@@@@@@B>@ U@@@@ N@@@@@\@@@@@\@@@@@E@@@@@JY )@@G@@$'0@@AFQ@@@A)M:[F#@-K@R[)[@@@M @@@@M*@@@@2C.)@@[ @@@@K*@@@@3LI )@@G@@C.@@@[[@0@@3+@)@@)GV@@@A)Q%[N#ACS[#A-J@@@@@@@@@@@@@@@@@@@@@@@@@@@@/,0@@@LJ )@@G@@[[@@@);[@@@+[[@@@4;L@@@]C[@@@)GW@@@A)Q4[M@K0@CSB=@@@@@C@[J_"@DN@ U@@@@@@LK )@@G@@@@@@@@@@@@@@@@@@ D@@@@@@@@@@@@@@@@@@@@@@@@GX@@@A)Q"@V#@C@@@@)#W@)@@@@@@@LL )@@G@@@@@@)@@@@@@@______S SCOREFACTOR/K@@X:*@@@@GH@@@@:GY@@@A)R[@V]I-)K0@LM )@@G@@)#)@K@)R^@V#@-HK0@@@@@#)/,0@@@@DQ@ U______READ @@@@#W@@@@ H/,0@@@GZ@@@ALN )@@G@@)RB[F#@CS^[#@-)B?]AK@@@@[@B)@AC@BJ_"N.@@@AR[0@^9@DR@ U/K@@X+@@@@@1@@@@@@LO )@@G@@@@@@@XHA@@@A)RK[N@^G0CS0K@@@@@C/@__"/=K@V8+@@@@I @@@@I*@@@@ C/)@@[ @@@@GLP )@@G@@*@@@@[C/@@@[8L@@RIHB@@@A)RU[N#ACS^GSCS0@@@C"@@@[H.)@@[T[)@@@C[)@@OH.@@@[LQ )@@G@@T[@@@@C[@@@OG@)@@-C/)__"G@@@@OHC@@@A)R=[M^G@]A@@@@@@@@'N@@@O;#@@@MC#@@@@LR )@@G@@G])@ $H])@@@G])@@@C")@@[G]@@ *H]@@@@G]@@@@HD@@@A)R,[M@[#@-)K0CS@@@][)@ ,LS )@@G@@][@@ :[@)@ ![@@@ ?[@)@[^[]@@@^'M@@@Q;]@@@MC]@@@@[#@@@#HE@@@A)R8[N#@-)[@KLT )@@G@@0@-)@@'K)@@^C^)@ :[@)@@#'K)@@#C^)@ ,8LK@R'[@^)@@C@#)@@N[K@ ?[])@ \HF@@@ALU )@@G@@)S][EK[#@-CK0CS0@@@@@@@@C/)__"T@@@@@C@@@@O@D%@ U/,0@@@[@)@@>C/)@@[8L@@R9LV )@@G@@[@)@@^HG@@@A)SF[F#A-)[#@-)K0CS@@@@@@C/@__"[#)@@5[@)@ :]@@@ !N[@@ !C_)@@[LW )@@G@@H/@@@[[@@@ ?G@)@@OHH@@@A)SO[F#@CS[#@-)K0@@@@@@@@;@@@@MC@@@@@[@)@ 0[@@@ ,LX )@@G@@G@)@ $H@)@@@G@)@@5C@)@@@G@@@@5HI@@@A)SX[F#@@-)^G]A[#@@@@@@@@G@@@@>C@@@ *LY )@@G@@N[K@ ,[@@@@A'K@@ 0;@@@@MC@@@@@[@@@@]'K@@ \HJ@@@A)S&[F#@-)K0@-)K0C]A@@@@@LZ )@@G@@R]@@ 18L)@S([@@@@?"@@@@?"C])@@C@A)@@N[)@ : @@@@?[@@@ 1HK@@@A)S\[M^G]A[#@MA )@@G@@]A@@@@][@@@A'P@@@AC @@ ?[[@@@]'L@@@]C @@ ![@)@@>G@)@@>C/)@@[[@C@@@HL@@@AMB )@@G@@)S9@N@@@@@@@)#+@K@)S;@<@K=*S^@/K@@X:@@@@#+/,0@@@8L@@SM______ANAL 7G_)@@[MC )@@G@@8LK@S=HM@@@A)S_[F#@-&K[#AC]^D#@@@@@@@@@@@-/,0@@@/K@@TT(@@@@GH@@@#?C/@@@]MD )@@G@@/K@@T:(@@@@[@D;@ UHN@@@A)TC@N#@-)@@@)#=@8@@@@@@@IX FORE MATRARIANCD COVME )@@G@@U C E R O D R E P @@@@ D@@@@ CHO@@@A)#:@C@)TE[##@-#@K0CT^G)@@@@@@@@@@@@BMF )@@G@@@@@@#=@@@@@@@@@@@@@@@@@@/,0@@@@E@@ U______HP@@@A)TM[F#E->K2*S^G]A[@K-CS@MG )@@G@@@@@@@-/,0@@@/K@@T:@E[@ U@@@@@-@@@@ C@@@@@F@@@@@ @@@@@@HQ@@@A)TV@N#@-)@@@MH )@@G@@)#?@8@@@@@@@IX FORN MATRELATIOD CORRU C E R O D R E P @@@@ D@@@@ EHR@@@AMI )@@G@@)#3@C@)TX[##@-#@K0CT^G)@@@@@@@@@@@@B@@@@#?@@@@@@@@@@@@@@@@@@/,0@@@@E^@ UMJ )@@G@@______HS@@@A)T>[F#C-=K2CS^G]A[#A)@@@C/@@@[/K@@VJ(@@@@ @E @ U@@@@@-@@@@ EMK )@@G@@@@@@@4@@@@@"@@@@@IHT@@@A)T,[F#@-)^G]A[#@-)@@@@@@C@[@@@]@@@[^Q@K@ H@@@@>HU@@@A)T7[M^@K1+@-]K0CS@@@@@ C@@@@@-/,0@@@MM )@@G@@/K@@UL(@@@@IH@)@#?C/)@@]8L@@T6]@[)@@"^ )@@HV@@@A)U[@F#@@@@@@)#4[@@@@@@@@MN )@@G@@______FOR ATRIX ANCE MCOVARIA L I D U R E S @@@@ MHW@@@A)U][F#@-#@K0MO )@@G@@CT^G+AO@@@@@@@@@@@@@@@@@@@@@@B@@@@#4@@@@@@@@@@@@@@@@@@/,0@@@@EK@ UHX@@@AMP )@@G@@)UF[F#E->K0CS^G]@-]K0CS@@@@@ E@@@@@-/,0@@@/K@@U<@EL@ U@@@@@-@@@@ C@@@@@FMQ )@@G@@@@@@@ HY@@@A)UO@F#@@@@@@)#/[@@@@@@@@______FOR ATRIX ANCE MCOVARIA L MR )@@G@@I D U R E S @@@@ MHZ@@@A)UP[F#@-#@K0CT^G+AK@@@@@@@@@@I@@@@@@@@@@@B@@@@#/MS )@@G@@@@@@@@@@@@@@@@@@@@/,0@@@@EO@ UIA@@@A)UY[F#C-=K0CS^G]A@K0CM@@/,0@@@[@@@@>MT )@@G@@C/@@@] @@@@?@EP@ U@@@@@-@@@@ E@@@@@4@@@@@"IB@@@A)U$[N#@CS@K0]A[#@@H/@__"MU )@@G@@]@@@@&H@@@@=C/@@@[[#)@@=[@@@[^C_)@@]G@@@@-C/@__.@ET@ UIC@@@A)U1[EK0CS@K0MV )@@G@@CS[#@@@@@@@@G@)@@>C/)@@[[@@@@?"@@@@?"CB@@@C@B@@@O[0@ *R[0@@>]@@@[ ID@@@AMW )@@G@@)U'@:#@)]A@@)^^@K@)U_@F@@@@@@@8L@@U?______ANAL 8G_)@@[[@)@@>G/)@@[8LK@U2MX )@@G@@[@)@@>IE@@@A)V@[F]M-)K^G@-)K0]A@@@@@]@@@@>;K@@@[T@@@@-H@@@@-C/@@@[@E&@ UMY )@@G@@/K@@X:@@@@^^/,0@@@IF@@@A)VD@3]=-)K0CS^G] G)^A@S@SQUAREUM OF (19H0S'^@@@@MZ )@@G@@@@)@@?@@K@@>@E*@ U@@[@^A/,0@@@IG@@@A)^D[S@@@@@@@E MATRARIANCAL COVRESIDUNA )@@G@@F THE ENTS OL ELEMIAGONA OFF-DI5,58HS OF ,IH@@@A)^O@K@)VJ@'K0]AH#A@@@@@@NB )@@G@@H.@@@[T[@@@@C[@@@OG@)@@OC/)__"G@@@@-C/@__"11.5) IX ,GII@@@A)VQ[N#A@]A@@NC )@@G@@@@@@@@H])@@@G])@@@C")@@[G]@@ $H]@@@@G]@@@@C"@@@[H.)@@[T[)@@@C[)@@OIJ@@@AND )@@G@@)V)[N#@@@@@@@@@@@@[@@@[^[]@@@^'M@@@Q;]@@@MC]@@@@[#@@@#'N@@@O;#@@@MC#@@@@NE )@@G@@G])@ *IK@@@A)V%[F#@-)K0CS@K^G@@@@@@@'K)@@#C^)@ !8LK@V,[@^)@@C@#)@@N[K@ \NF )@@G@@][)@ !][@@ ?[@)@ \IL@@@A)V3[MK0@)]A@K1*S0@C[@@@OG@)@@OC/)__"G@@@@-C/@__"NG )@@G@@8L@@V![@)@@^'K)@@^C^)@ ?[@)@@#IM@@@A)V.[M@^G@-&@@@@@@@C")@@[ @@@@O*@@@@#NH )@@G@@C"@@@[G[)@ *H[)@@@G[)@@@C.)@@[H.@@@[T[@@@@IN@@@A)WB[MK1)C]A@@@@@@@'M@@@MNI )@@G@@;]@@@MC]@@@@R]@@ +/&K@W>)]@@@Q @@@@Q*@@@@SH#@@#?C_@@@]IO@@@A)WL[E^G]A@K0NJ )@@G@@CS^G@@@@@@@@C@&@@@O[)@ &R[)@@&[@@@@&C@C@@@][@@ ?[@)@ \[@@@[^[]@@@]IP@@@ANK )@@G@@)WU[N#@-)^G@)CS@@@O"@@@[[@)@@]'K)@@]C^)@ ?8LK@WW[@])@@"G@@@0C@]@@@N[K@ \NL )@@G@@[@)@@0IQ@@@A)W=[N@K0CT1#G@-<@@*@@@@MH[)@#?C.)@@]C.@@@[ @@@@I(@@@@#C/)@@[NM )@@G@@[@@@@BC@@@ R8L@@WPIR@@@A)W,[M^[#ICS[#A-<@@T[@@@@C[@@@OG@)@@OC/)__"G@@@@-NN )@@G@@C/@__" @@@@B/=0@XN)@)@@K @@@@KIS@@@A)W8[M@K0@@@@@@@@@@[@@@[^[]@@@['M@@@MNO )@@G@@;]@@@MC]@@@@G[)@ *H[)@@@G[)@@@C.)@@[H.@@@[IT@@@A)X][F#@-)K0]AX#I)CS@@@@@NP )@@G@@'K)@@[C^)@ ?8LK@X [@@@@B"@@@@BE@[)@@N[K@ \][@@ ?[@)@ \IU@@@A)XF[MK^G]AG[NQ )@@G@@#I-K@@@@@@@@/,0@@@[@@@@B"G@@@L"P@@@IC.@@]VT@)@@OC@)@@-8L@@X^[@)@@[IV@@@ANR )@@G@@)XP[MK0CS0@K2CS@@@@FP@ U@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O@@@@@-NS )@@G@@@@@@@@IW@@@A)XZ@V@K^G@@@)^Q@*@@@@@@@@@@@@@LTANT) CONSU SEE A1H 99.(4A6,2NT )@@G@@@FR@ U/K@@X7N@0@X-IX@@@A)X+[F]=-)K0CS[#A-OK^ES@@'^@@@@8L@@X$'^)@@@C8 )#?NU )@@G@@N.@@@#R[K@^9@FT@ U@@[@^Q/,0@@@IY@@@A)X:[F]=-)K0CS[#A-OK^ES@@'^@@@@8L@@X0NV )@@G@@'^)@@@C8B)#0N.@@@#R[0@^9@FZ@ U@@[@^V/,0@@@IZ@@@A)X4[F@K^G]A[#@-)K0CS^G@@NW )@@G@@9\)@ '9\@@ 89,)@ 69,@@ 49!)@ 2R]0@ V@F>@ U/K@@X7N@0@X6JA@@@A)X.[##@-)K0CNX )@@G@@S^G]A[#@-)@@@@@@@@R]@@A#R[0@A]R[)@A[R[K@A@R[@@ _R@0@ "R@)@ .R@K@ /JB@@@ANY )@@G@@)Y @<#@-)K0CS@@@@@) S@C@)YD@N#@-Q@@@/K@@@@/K@K S@@F@@T*4@K SN[)@AAN[K@A NZ )@@G@@N[@@A^JC@@@A) U@K@)YF@3#@-)K0CS^G]A@@@@@@@9:)@ '9:@@ 89%)@ 69%@@ 49()@ 2OA )@@G@@AA0@ V@F>@@]S63AMDJD@@@A)YL[##@-)K0CS^G]A[#@-)@@@@@@@@A]@@A#A[0@A]A[)@A[OB )@@G@@A[K@A@A[@@ _A@0@ "A@)@ .A@K@ /JE@@@A)YT[F#@-)K0]@)C]@)@@@@@@[^@@VZ[^@@Q7OC )@@G@@[^@@C*[^@@C3[^@@C5C8FK@@^[)@AA^[K@A ^[@@A^JF@@@A)Y+[F@K^[@K^[@K^@@@@@@@@OD )@@G@@[^@@W@[^@@W[[^@@WI[^@@W7[^@@W'[^@@W;[^@@W.[^@@]'[^@@VYJG@@@A)Y:[F@K^[@K^OE )@@G@@[@K^@@@@@@@@[^@@VO[^@@^,[^@@R-[^@@R=[^@@]/[^@@]_[^@@#@[^@@V>[^@@V.JH@@@AOF )@@G@@)Y4[F@K^[@K^[@K^@@@@@@@@[^@@R>[^@@D2[^@@D5[^@@#E[^@@#G[^@@#I[^@@#L[^@@P'OG )@@G@@[^@@O0JI@@@A)Y.[F@K^[@K^[@K^@@@@@@@@[^@@E*[^@@OX[^@@E5[^@@O![^@@E%[^@@O1OH )@@G@@[^@@O"[^@@E9[^@@BAJJ@@@A)ZA[F@K^[@K^[@K^@@@@@@@@[^@@@N[^@@C7[^@@C'[^@@#XOI )@@G@@[^@@^J[^@@BE[^@@DA[^@@D,[^@@R:JK@@@A)ZJ[N@K^[@K^[@^[@@[^@@V-[^@@VUC8FK@[OJ )@@G@@[^@@FK[^@@E/[^@@D0[^@@E7[^@@C&[^@@E][^@@QMJL@@@A)ZT[F@K^[@K^[@K^@@@@@@@@OK )@@G@@[^@@H@[^@@J=[^@@I][^@@IB[^@@KX[^@@I'[^@@I;[^@@I[[^@@P;JM@@@A)Z+[F@K^[@K^OL )@@G@@[@K^@@@@@@@@[^@@RY[^@@SV[^@@SP[^@@GW[^@@SD[^@@K+[^@@VR[^@@G0[^@@G.JN@@@AOM )@@G@@)Z:[F@K^[@K^[@K^@@@@@@@@[^@@IG[^@@R\[^@@OY[^@@SR[^@@KR[^@@KS[^@@R*[^@@R(ON )@@G@@[^@@VVJO@@@A)Z4[N@K^[@^[#@)C@@C8FK@#[^@@P4[^@@GU[@@@ )[^@@OOC8FK@][^@@G\OO )@@G@@[^@@SZ[^@@G:[^@@JZJP@@@A)Z"[F#@)C]@)C]@)C@@@@@@@[^@@QF[^@@Q0[^@@U^[^@@P*OP )@@G@@[^@@OL[^@@UR[^@@ =[^@@GS[@@@ [@@@ XC8FK@C[^@@G)JT@@@AOT )@@G@@))>[MK[@K[@K^G]@@@[^@@Q3[@@@ Y[^@@XV[^@@OTC8FK@G[^@@G<[^@@XUC8FK@F[^@@G+OU )@@G@@C8FK@EJU@@@A))\[N@K^[@^[@K^[@@[^@@Q4[^@@G>[^@@OU[^@@XW[^@@QJC8FK@H[^@@BXOV )@@G@@[^@@G=[^@@P6[^@@QIJV@@@A))9[MK^[@K^[@K^[@@[^@@AE[^@@BZ[^@@XS[^@@^;[^@@QKOW )@@G@@[^@@]?[^@@UA[^@@OV[^@@UTC8FK@IJW@@@A)-#[N@K^[@K^[#@)]@[^@@P/C8FK@J[^@@TIOX )@@G@@[@@@ +[^@@L/[^@@Q5[^@@ E[^@@]T[^@@T-[^@@P7JX@@@A)-H[N@K[@K^[@^[@@@[^@@Q6OY )@@G@@[^@@^DC8FK@L[^@@QH[^@@Q2[^@@OW[^@@P8C8FK@K[^@@QG[^@@Q1JY@@@A)-R[F@K^[@K^OZ )@@G@@[@K^@@@@@@@@[^@@L;[^@@A^[^@@L6[^@@]:[^@@^'[^@@US[^@@U [^@@BT[^@@ADJZ@@@APA )@@G@@)-)[N@K^[@K^[@K^@@C8FK@M[^@@XT[^@@TH[^@@BY[^@@T)[^@@QL[^@@ D[^@@OP[^@@P9PB )@@G@@[^@@]SKA@@@A)-%[N@K[@K[@K[@@@@[^@@ *C8FK@P[^@@QQ[^@@Q;C8FK@O[^@@Q'[^@@QPPC )@@G@@C8FK@N[^@@Q9[^@@QOKB@@@A)-4@+K[@@@@@)^V@*@@@@@@@RMINATSIS TE ANALY1H 27.PD )@@G@@(4A6,5[^@@G&C8FK@R[^@@[3C8FK@QKC@@@A)^)@*@@@@@@@)-8@F@@@@@@@)^>@K@PRINCIPE )@@G@@@@@@[=/K@@@@RRORS)IOUS EF PREVAUSE OED BECKD@@@A)^$[S@@@@@@@ESCALINESS RPF )@@G@@UNIQUERE ROCEDUCTOR PPAL FACEDURETS PROMPONENPAL COKE@@@A)^2[S@@@@@@@PG )@@G@@ARIANCON COVBASED @@[@@[IMAGE E OCEDURING PRFACTORALPHA NG PROKF@@@APH )@@G@@)^.[S@@@@@@@IMATESED ESTUNBIASATES ESTIMLIHOODM LIKEMAXIMU@@[@@^IX PI )@@G@@E MATRKG@@@A) C[S@@@@@@@@@@@@]@@@@@^@@@@@EI4ADH5KB_\$V@@@@@#KG@@@@@@[@@@PJ )@@G@@@@@@@G@@@@@@@@@@@DKH@@@A) N@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PK )@@G@@J/3G3HMBER ION NUITERAT@@@@@[KI@@@A@@@@@@)YF@3#@-)K0CS^G]A@@@@@@@9:)@ 'PL )@@G@@9:@@ 89%)@ 69%@@ 49()@ 2AA0@ V@F>@@]S63AMDJD@@@A@@^@@D@@H@@R@@;@@[@@_@@BPM )@@G@@@@ @AB@C@@-9@@@@@]@@@@#5@@@@[J@@@@@L@@@@@A@@@@@C@@@@@ S1GTAG S1HEDCPN )@@G@@ S1HED2 S1PLTM S1HED4 S1PRVC S1INV S1TIMTPO )@@G@@ S1VFWC S1VFWT S1EIG S1ENCI S6OUT S1VCSRPP )@@G@@ S6COEF S63SCR S6RANK NERR2$ NPRT$ NIO2$ PQ )@@G@@ NIO1$ SQRT NERR3$ S63AMD @@[@@@@@@@YFBLANK$PR )@@G@@ ^@@@C@@]@@@@S6BLK ]@@@C@@#@@@@S6FMTS ]@@@C@@^@@@@S63FMTPS )@@G@@ ]@@@C@@ @@@@S63NBK ]@@@C@@A@@@@S63SBH ]@@@C@@B@@@@S63BSVPT )@@G@@ ]@@@C@@C@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PV )@@G@@)@ @K@)@@@;]]A^GCSK0)CS@@[ @@*/K@@@B@@@@@]@@@@@[@@@@@@@@@@@ /,0@@@______PW )@@G@@SYSERRAA@@@A)@B[N##2JC-)K0C@@@/@@@@OC@[@@@[#)@@#N.@@@IR@K@@:C_)@@[[@[J_"PX )@@G@@G/@@@[C@[J_"R@K@@@AB@@@A)@L[M^@K0--]MA^G@@C.)__"@[L@@*@@[@@B/,0@@@]@@@@#PY )@@G@@H@@@@#C/@@@[8L@@@IG_)@@[O/K@@[AC@@@A)@V@;#]A^G@-H@@@@@)@B@K@*****S(030H PZ )@@G@@8L@@@Z'^K@@@C8[)@@[[)@[^Q@K@@:R@K@@@F#@@@@@@QB )@@G@@)@I[@@@@@@@@UTPUT WITH OLTANT CONSU SEE APLEASE***** (052H @[S@@*AF@@@AQC )@@G@@)@Q[S@@@@@@@GES MA MESSAONEOUSG: ERRWARNIN *****./045HT DECK1HINPUUR ,01QD )@@G@@AND YOAG@@@A)@-@K@)@&@;]+^OGCS^GC@@@N@0@@,@[V@@*@@@@@@@@@@@>@@@@@=/,0@@@QE )@@G@@'^@@@@OW.) Y FOLLAH@@@A)@![#@K0--#]A^GCSK0@@@@@@@@@@@*4@K@&N[@@@1R@K@@0QF )@@G@@9\)@@,9!)@@?R]0@@(@[W@@*/K@@@\AI@@@A)@&@C@)@5@N#] K@@@)@*@K@)@7@N#]A@@@@QG )@@G@@9()@@?AA0@@(@[W@@#S1SERR/K@@@@/K@K@&@@F@@]AJ@@@A)@9@;#]A^G]@--@@@@)@<@K@QH )@@G@@@@@@@]@@[@@@/K@@@@[@@@@:[^@@@%C8FK@@^[@@@1A@K@@09:)@@,AK@@@A)@>@C@@@@@@@QI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@_AL@@@AQJ )@@G@@@@^@@#@@B@@A@@N@@[@@R@@[@@#@@2@C@@[@@@@@@[S1GTAG S1LOGP NPRT$ QK )@@G@@ NIO1$ NIO2$ NERR3$ S1SERR @@[@@@@@@@@7BLANK$QL )@@G@@ ^@@@C@@]@@@@@@@@@@*[@@@@*SDFF*@ @@@@ SUBROUTINE S1AUSP( SIG) QM )@@G@@@]@@@@C SJM @D@@@@C TITLE -PRINT OUTPUT MEDIUM MESSAGES(S1QN )@@G@@AUSP) @B@@@@C AUTHOR -ROGER VOYTECKI,NOV.1970 @B@@@@C PROGRAQO )@@G@@MMER-ROGER VOYTECKI,NOV.1970 @[@@@@C @#@@@@C 1.0 PURPOSE @G@@@@QP )@@G@@C S1AUSP PRINTS MESSAGES DESCRIBING MEDIUM-DEPENDENT ASPECTS OF QQ )@@G@@@A@@@@C OUTPUT PERFORMED BY S1AUS. @[@@@@C @^@@@@C 2.0 CALLINQR )@@G@@G SEQUENCE @G@@@@C S1AUSP IS CALLED WITH ONE PARAMETER WITH ONE OF QS )@@G@@TWO VALUES--- @^@@@@C A) CALLS1AUSP(K) @#@@@@C WHERE QT )@@G@@@C@@@@C K HAS THE INTEGER VALUE 1 OR 'BEGIN' @B@@@@C THIQU )@@G@@S CALL PRODUCES TWO LINES. @^@@@@C 1) (BLANK) @G@@@@C QV )@@G@@ 2)-----------------BEGIN CONTROL WORD OUTPUT TO MEDIUM---------@F@@@@QW )@@G@@C B) CALL S1AUSP(K) WHERE K HAS THE INTEGER VALUE 2 OR 'END' @A@@@@QX )@@G@@C THIS CALL PRODUCES 5 LINES @^@@@@C 1) (BLANK) @G@@@@QY )@@G@@C 2)--------------------END CONTROL WORD OUTPUT------------------QZ )@@G@@@G@@@@C 3)TOTAL OF N CARDS(OR CARD IMAGES) HAVE BEEN PUNCHED(OR WRA )@@G@@RITTEN@^@@@@C SOMEWHERE) @ @@@@C 4)MEDIUM DEPENDENT RB )@@G@@@#@@@@C 5)MESSAGE@[@@@@C @ @@@@C 3.0 NOTES/RELATIONSHIPS RC )@@G@@@B@@@@C REFERENCES TO TAGGED STORAGE-NONE. @ @@@@C ROUTINES CALRD )@@G@@LED-NONE. @G@@@@C THE CALL S1AUSP('BEGIN') MAY BE MADE ANYTIME AFTRE )@@G@@ER THE CALL TO @C@@@@C S1AUSI,AN ENTRY POINT IN ELEMENT S1AUS. RF )@@G@@@F@@@@C THE CALL S1AUSP('END') MAY BE MADE ANYTIME AFTER THE CALL TORG )@@G@@@C@@@@C S1AUST,AN ENTRY POINT IN ELEMENT S1AUS. @[@@@@C @]@@@@RH )@@G@@C ENDSJM@ @@@@ IMPLICIT INTEGER( A-Z) @G@@@@ COMMON / AUSRI )@@G@@PBK / FNAM(2), CW(2), MODEL, DEVICE, ERRFLG, STATUS, @G@@@@ 2 RJ )@@G@@ NCARDS @^@@@@ RK )@@G@@DATA MODEL/'USER'/@[@@@@C @B@@@@C S1AUSP--PRINT MESSAGES FOR RL )@@G@@S1AUS @F@@@@C SIG=1 OR 'BEGIN', PRINTS ----BEGIN OUTPUT---- MESRM )@@G@@SAGE. @E@@@@C MAY BE CALLED ANY TIME AFTER S1AUSI IS CALLED RN )@@G@@@E@@@@C SIG=2 OR 'END', PRINTS ----END OUTPUT--- MESSAGE @G@@@@RO )@@G@@C MAY BE CALLED ANY TIME AFTER CALL TO S1AUST (AND AFTER RP )@@G@@@B@@@@C CALL TO S1AUSP('BEGIN') ) @[@@@@C @[@@@@C RQ )@@G@@@A@@@@ DATA PUNCH/1/ TAPE/2/ DRUM/3/@ @@@@ DATA DASH/'------RR )@@G@@'/ @D@@@@ DIMENSION DNAME(3)/'CARDS', 'TAPE', 'DRUM'/ @[@@@@RS )@@G@@C @A@@@@ IF( MODEL .EQ. 'USER') RETURN @D@@@@ IF( SIG .NE.RT )@@G@@ 1 .AND. SIG .NE. 'BEGIN') GO TO 40@ @@@@C PRINT BEGIN MESSAGE RU )@@G@@@A@@@@ IF( MODEL .LE. 0) GO TO 30 @G@@@@ PRINT 2000, (DASH,RV )@@G@@I=1,7), CW, MODEL, DNAME(DEVICE), (DASH ,J=1,5) @G@@@@2000 FORMAT('0', RW )@@G@@7A6, 'BEGIN ', 2A6, ' MODEL', I6,' OUTPUT TO ',A5,5A6)@]@@@@ RETURNRX )@@G@@@F@@@@30 PRINT 3000, (DASH,I=1,7), CW, DNAME(DEVICE),(DASH,J=1,7) RY )@@G@@@E@@@@3000 FORMAT('0', 7A6, 'BEGIN ', 2A6, ' OUTPUT TO ', A5,7A6)@]@@@@RZ )@@G@@ RETURN@[@@@@C @ @@@@C PRINT END MESSAGE @A@@@@40 SA )@@G@@IF( ERRFLG .NE. 0) GO TO 80 @C@@@@ PRINT 4000, (DASH,I=1,7), CW, SB )@@G@@(DASH,J=1,9)@E@@@@4000 FORMAT('0', 7A6, 'END ', 2A6, ' OUTPUT', 8A6, A5SC )@@G@@) @B@@@@ IF( DEVICE .NE. PUNCH) GO TO 50 @ @@@@ PRINT SD )@@G@@4001, NCARDS, CW @G@@@@4001 FORMAT( 30X,'TOTAL OF', I7, ' CARDS HAVE BSE )@@G@@EEN PUNCHED FOR ', 2A6, @^@@@@ 2 ' OUTPUT',//) @]@@@@ RETURNSF )@@G@@@C@@@@50 PRINT 5000,NCARDS, DNAME(DEVICE), FNAM, CW@F@@[@5000 FORMATSG )@@G@@( 30X, I7, ' CARD IMAGES HAVE BEEN WRITTEN TO ', @D[@@@ 2 A4, 'SH )@@G@@ FILE ', 2A6, ' FOR ', 2A6, ' OUTPUT') @A@@@@ IF( DEVICE .EQ. TASI )@@G@@PE) GO TO 70@^@@@@C -- DRUM -- @^@@@@ PRINT 6000, FNAM SJ )@@G@@@E@@@@6000 FORMAT( 30X, 'DRUM FILE ', 2A6, ' HAS BEEN REWOUND'/) @]@@@@SK )@@G@@ RETURN@^@@@@C -- TAPE -- @^@@@@70 PRINT 7000, FNAM SL )@@G@@@G@@@@7000 FORMAT( 30X, 'TAPE FILE ', 2A6, ' HAS BEEN DOUBLY HARDWARE ESM )@@G@@NDFILE@F@@@@ 2D AND BACKSPACED OVER', /, 53X, 'SECOND END-OF-FILE MASN )@@G@@RK') @]@@@@ RETURN@^@@@@C -- ERRORS -- @ @@@@80 IF( STSO )@@G@@ATUS) 81, 82, 83 @^@@@@81 PRINT 8100, FNAM @G@@@@8100 FORMAT('0***SP )@@G@@**UNRECOVERABLE OUTPUT ERROR--OUTPUT OPERATIONS ON FIL@A@@@@ 2E ', 2SQ )@@G@@A6, ' DISCONTINUED') @]@@@@ RETURN@#@@@@82 PRINT 8200 @F@@@@SR )@@G@@8200 FORMAT('0STATJOB SYSTEM ERROR IN S1AUS--SEE CONSULTANT') @]@@@@SS )@@G@@ RETURN@A@@@@83 GO TO( 81, 84, 85, 81), STATUS@#@@@@84 PRINT ST )@@G@@8400 @G@@@@8400 FORMAT('0*****FILE OUTPUT ERROR--OUTPUT DISCONTINUED DSU )@@G@@UE TO') @C@@@@ PRINT 8401, DNAME(DEVICE),NCARDS, FNAM @G@@@@SV )@@G@@8401 FORMAT( 11X, 'END-OF-', A4, ' ENCOUNTERED AT CARD ', I7, ' OF FILESW )@@G@@@#@@@@ 2 ', 2A6) @]@@@@ RETURN@#@@@@85 PRINT 8400 @ @@@@SX )@@G@@ PRINT 8500, NCARDS, FNAM@G@@@@8500 FORMAT( 11X, 'HARDWARE, PARITYSY )@@G@@, OR CHARACTER COUNT ERRORS ENCOUNTE@B@@@@ 2RED AT CARD ', I7, ' OF SZ )@@G@@FILE ', 2A6)@]@@@@ RETURN@]@@@@ END ___ANY TIME AFTER CALL TTA )@@G@@O S1AUST (AND AFTER @B@@@@C CALL TO S1AUSP('BEGIN') ) TB )@@G@@)@^@G@)@@@8@@@@@@@@@@@8@@@@@@@DRUM TAPE CARDS ------@@@@@#@@@@@]@@@@@[TC )@@G@@USER AA@@@A)@@[N[K0)*S^[@K^G@C/@@@[@[J@]-/K@@#XN@0@@C/K@@@D*@@@@GH@@@]WTD )@@G@@C@@@@^A@K@]=R@K@@ AB@@@A)@E[UK0@@]@@/=K@[D+@@@@I @@@@I(@@@@KH[@@@@C.@@@[TE )@@G@@C/)@@[ @@@@G(@@@@IH@)@]XC@)@@@AC@@@A)@P[N[[@K)--#@--]C'^K@@@C8@@@#N.@@@ATF )@@G@@@[O@]-@@[@@D/,0@@@/K@@@21@@@@G*@@@@GD@@@@^AD@@@A)@Z[F@K0CE^O[[K+-)@@@@@@TG )@@G@@R@K@]='^K@@@C8@@@^8L@@@+'^K@@@C8[)@[N.@@@[R@K@]Y8L@@@XAE@@@A)@*@3#]^L#]^TH )@@G@@O@@@@@)@D@S@06HBEG,7A6,0(001H08L@@@:'^K@@@C8@@@#N.@@@^'^K@@@C8[@@#AF@@@ATI )@@G@@)@G[@@@@@@@@)@,@F]K@@@@@'^@@@@A6) ,A5,5PUT TO1H OUT,I6,01 MODEL6,006HTJ )@@G@@IN ,2AAG@@@A)@\[F@K^GCKK0--[^G@@@@@@C8@@@#N.@@@AR@K@@ @[&@]-@@[@@O/,0@@@TK )@@G@@@[>@]-/K@@#XN@0@@1AH@@@A)@8[F]E@-)KOC*]A^C)@@@@@'^K@@@C8[@@#8L@@@/'^K@@@TL )@@G@@C8])@[N.@@@[R@)@]Y8L@@@7'^K@@@AI@@@A)[[@+K0- @@@)@O@*@@@@@@@6,011HIN ,2ATM )@@G@@06HBEG,7A6,0(001H08L@@[]'^K@@@C8@@@#N.@@@AAJ@@@A)@T@)@@@@@@@)[ @<]M@)CS@TN )@@G@@@@@@@@@[6@]-/K@@#XN@0@[C'^@@@@) A5,7A6T TO , OUTPUAK@@@A)[D[F[K^CCSKTO )@@G@@0CSK+)@@@@@@8L@@[J'^K@@@C8@@@#N.@@@A@[9@]-@@[@@X/,0@@@/K@@]U*@@@@AAL@@@ATP )@@G@@)[M[F#@)*LK[#]^O@@@@@@@@8L@@[S'^K@@@C8@@@#N.@@@C8L@@[O'^K@@@C8])@[N.@@@[TQ )@@G@@R@)@]YAM@@@A)@X[@@@@@@@@)[V@F]K@@@@@'^@@@@) 8A6,A5UTPUT,007H O ,2A6,TR )@@G@@04HEND,7A6,0(001H0AN@@@A)[W[F#]]C]^^GCSKOG@@@@@@R@K@]Y@@K@@C@]E@]-@@[@@>TS )@@G@@/,0@@@/K@@[!*@@@@GH@@@@ C@@@@@AO@@@A)[>@+KOC*@@@)@>@*@@@@@@@H CARDI7,029TT )@@G@@AL OF,08HTOT(30X,08L@@[&'^K@@@C8[)@[N.@@@[AP@@@A)@%[@@@@@@@@)[(@F]K@@@@@TU )@@G@@'^@@@@/) TPUT,/07H OU,2A6,0D FOR PUNCHE BEEN S HAVEAQ@@@A)[%[F@K^GCE^TV )@@G@@^GCSKOG@@@@@@@M@@#@@K@@C@]N@]-@@[@@2/,0@@@R@)@@ @]M@]-/K@@#XN@0@[?AR@@@ATW )@@G@@)[3[F#@/*LK^G]]-^@@@@@@@'^K@@@C8])@[N.@@@[R@)@]Y8L@@[5'^K@@@C8[\_"N.@@@[TX )@@G@@R@K@]YAS@@@A)[/@F@@@@@@@)@2[@@@@@@@@ TO ,ARITTENBEEN W HAVE IMAGES CARD TY )@@G@@7,034H(30X,I8L@@['AT@@@A)@'[@@@@@@@@)[.@F]K@@@@@'^@@@@) OUTPUT,007H TZ )@@G@@R ,2A605H FO,2A6,0 FILE 4,006HAU@@@A)["[F#]]C]^^GCSK0@@@@@@@N.@@@[R@K@]YUA )@@G@@@]+@]-@@[@[]/,0@@@/K@@]I(@@@@GH@@@@ C@@@@[AV@@@A)]B@V9K+)@@@)[]@0@@@@@@@UB )@@G@@AS BEE017H H ,2A6,M FILE10HDRU(30X,08L@@]B'^K@@@C8[\_"AW@@@A)[C@K@)]E@;]UC )@@G@@M@)CSK)--#@@@]%@]-@@[@[E/,0@@@@](@]-/K@@#XN@0@]H'^@@@@UND/) N REWOAX@@@AUD )@@G@@)]L@:#@/*LK@)[E@)@@@@@@@ ,2A6,E FILE10HTAP(30X,08L@@]N'^K@@@C8]\_"N.@@@[UE )@@G@@R@)@]YAY@@@A)[I[S@@@@@@@,53X,0OVER,/PACED BACKSED ANDENDFILDWARE LY HARUF )@@G@@N DOUBAS BEE054H HAZ@@@A)[T@*@@@@@@@)]Q@<]M@)CS@@]1@]-/K@@#XN@0@]T'^@@@@UG )@@G@@RK) ILE MAD-OF-FOND EN23HSECBA@@@A)]U[F[K^[]]A^GCSB=@@@@@@C8[\_"N.@@@[UH )@@G@@R@K@]Y@]5@]-@@[@[Y/,0@@@/C@@]0/@@@](C@@@@BBB@@@A)]<@N]E@@@@@)[Y@8@@@@@@@UI )@@G@@R--OUTT ERRO OUTPUERABLENRECOV*****U(060H08L@@]+'^K@@@BC@@@A)[>[@@@@@@@@UJ )@@G@@)]>@F]K@@@@@'^@@@@UED) CONTIN3H DIS2A6,01FILE ,NS ON ERATIOPUT OPBD@@@AUK )@@G@@)]&@3@K^GCKK0-)@@@)[!@S@B SYSTSTATJO(046H0@].@]-@@[@[!/,0@@@@]/@]-/K@@#XUL )@@G@@N@0@]*BE@@@A)[0@0@@@@@@@)]?@V]M@)@@@/K@@#XN@0@]\'^@@@@ANT) ONSULT-SEE CUM )@@G@@S1AUS-OR IN EM ERRBF@@@A)]\[F#]]C]^4GC]@)@@@@@@@/K@@#G/K@@]9/K@@]X@#[@]-UN )@@G@@'^@@@@8];@]4$'0@@ RA0@@B@#@@]-BG@@@A)]8@<@K)--#@)[6@*@@@@@@@RROR--TPUT EUO )@@G@@ILE OU*****F(051H0@#]@]-@@[@[6/,0@@@/K@@]XBH@@@A)[;@*@@@@@@@)]/@<]M]-[#@UP )@@G@@@@[@]@/,0@@@R@)@@ '^@@@@TO) D DUE NTINUE DISCOOUTPUTBI@@@A)#@[##]A^ #@UQ )@@G@@/*LK@@)]@@C@(11X,08L@@# '^K@@@C8[\_"N.@@@[R@K@]Y@@K@@C@@M@@#@# @]-BJ@@@AUR )@@G@@)][[S@@@@@@@) E ,2A6OF FIL,009H RD ,I7 AT CANTERED ENCOU4,021H-OF-,AUS )@@G@@07HENDBK@@@A)#C[F]M@)CSK)--#]^=C@@@@/,0@@@'^@@@@@#J@]-@@[@[6/,0@@@@#I@]-UT )@@G@@/K@@#XN@0@#F'^@@@@BL@@@A)#L[##]A^ #@/*LK@@)]G@C@(11X,08L@@#Q'^K@@@C8]\_"UU )@@G@@N.@@@[R@)@]Y@@K@@C@#L@]-@@[@]GBM@@@A)]H[S@@@@@@@T CARDERED ANCOUNTRORS EUV )@@G@@UNT ERTER COCHARACY, OR PARITDWARE,64HHARBN@@@A)]S@)@@@@@@@)#T@<]M@)CS@UW )@@G@@@@@@@@@#T@]-/K@@#XN@0@#W'^@@@@,2A6) FILE 09H OF ,I7,0BO@@@A)#X@:#]A^GCSUX )@@G@@K0@@@@)]Z@C@)#+@F#@@@@@@/K@K]Z@@F@@]*4@K]ZN[@@]$R@)@]&R@K@]>R]0@]+BP@@@AUY )@@G@@)#<@F])@@@@@)]-@K@)#=@<#]A^GCS@@@@@@^[@@]$A@)@]&A@K@]>AA0@]+@#T@@]S1AUSPUZ )@@G@@/K@@@@BQ@@@A)#*@+K^[@@@@)]W@S@@@@@@@@@@@@@@@@@@@@@[@@[BEGIN USER /K@@@@VA )@@G@@[^@@@E[^@@@KC8FK@@BR@@@A@@^@@#@@B@@ @@L@@[@@P@@[@@#@]*@C@@#?@@@@@DNPRT$ VB )@@G@@ NIO1$ NIO2$ NERR2$ NERR3$ S1AUSP @@[@@@VC )@@G@@@@@@#=AUSPBK ]@@@C@@]@@@@@@@@@@@@@@@@@@@@@@*[@@@@*SDFF*@G@@@@ VD )@@G@@SUBROUTINE S1RCOP( SUM, XMIN, XMAX, PROD, DF, NV, PREC, IERR) @]@@@@VE )@@G@@C SJM @D@@@@C TITLE - READ CARRY-OVER PACKAGE(S1RCOP) VF )@@G@@@C@@@@C AUTHOR - JANA VRABEC, JANUARY, 1971 @B@@@@C PROGRAVG )@@G@@MMER - ROGER VOYTECKI, 1969 @[@@@@C @#@@@@C 1.0 PURPOSE @G@@@@VH )@@G@@C S1RCOP READS A SINGLE- OR DOUBLE-PRECISION STATJOB CARRY-OVER VI )@@G@@@G@@@@C PACKAGE AND STORES RESULTS IN EITHER PRECISION, CONNECTING IVJ )@@G@@F @G@@@@C NECESSARY. HAS BUILT IN THE CAPABILITY TO ACCUMULATE VK )@@G@@TWO OR MORE @G@@@@C CARRY-OVER PACKAGES INTO ONE CARRY-OVER PACKAGE,VL )@@G@@ WHEN THE COP'S @B@@@@C ARE SEPARATED BY COPCOMBIN CARDS @[@@@@VM )@@G@@C @^@@@@C 2.0 CALLING SEQUENCE @D@@@@C 2.1 S1RCOP IS CALLED BY A STVN )@@G@@ATEMENT OF THE FORM @E@@@@C CALL S1RCOP(SUM,XMIN,XMAX,PROD,DFVO )@@G@@,NV,PREC,IERR) @]@@@@C WHERE @E@@@@C SUM IS VECTOR WHERE THVP )@@G@@E NV SUMS ARE TO BE STORED @F@@@@C XMIN VECTOR WHERE THE NV MINIVQ )@@G@@MUM VALUES ARE TO BE STORED @F@@@@C XMAX VECTOR WHERE THE NV MAXIVR )@@G@@MUM VALUES ARE TO BE STORED @F@@@@C PROD VECTOR WHERE THE NV(NV+1VS )@@G@@)/2 PRODUCTS ARE TO BE STORED @G@@@@C DF VARIABLE WHERE NUMBER OFVT )@@G@@ OBSERVATIONS IS STORED AS A REAL @#@@@@C VALUE @A@@@@C VU )@@G@@NV NUMBER OF VARIABLES @G@@@@C PREC HAS TWO POSSIBLE VALUES.VV )@@G@@ 'SINGLE' DENOTES OUTPUT SHOULD BE @G@@@@C OF TYPE SINGLE, 'DVW )@@G@@OUBLE' DENOTES OUTPUT OF TYPE DOUBLE. @B@@@@C IERR NUMBER OF ERVX )@@G@@RORS ENCOUNTERED @G@@@@C 2.2 INITIALIZATION ENTRY POINT S1RCPI IS CALLEVY )@@G@@D BY A STATEMENT OF THE @#@@@@C FORM @A@@@@C CALL SVZ )@@G@@1RCPI(GO,IERR) @]@@@@C WHERE @F@@@@C GO IS A FLAG, RETURNED AWA )@@G@@S 1 IF NO ERRORS OCCURRED DURING @C@@@@C INITIALIZATION ANDWB )@@G@@ AS 0 OTHERWISE. @G@@@@C IERR IS A FLAG RETURNED AS 0 IF NO ERRORS WC )@@G@@DURING INITIALIZATION @A@@@@C AND READING, 1 OTHERWISE @F@@@@WD )@@G@@C 2.3 INITIALIZATION ENTRY POINT S1RCPJ, CALLED WHEN SEVERAL@G@@@@WE )@@G@@C CARRY-OVER PACKAGES ARE TO BE READ BEFORE END OF ANALYSIS, BUT AREWF )@@G@@@G@@@@C NOT TO BE COMBINED (SOME MAY BE COMBINED). THIS ENTRY IS CALWG )@@G@@LED BY@G@@@@C THE PROGRAM BEFORE ALL BUT THE FIRST CALL TO S1RCOP. SWH )@@G@@1RCPI IS @G@@@@C CALLED BY S1GDST AS PART OF STANDARD INITIALIZATWI )@@G@@ION DONE ONCE PER @F@@@@C DATA SET. S1RCPJ HAS THE SAME CALLING SEQUWJ )@@G@@ENCE AS S1RCPI. @[@@@@C @ @@@@C 3.0 NOTES/RELATIONSHIPS @G@@@@WK )@@G@@C REFERENCES TO TAGGED STORAGE - TAG 'ERVEC' IS USED TO GET LOCATIONWL )@@G@@@G@@@@C OF VECTOR WHERE ERROR CODES FROM S1INDC WM )@@G@@ARE TO@A@@@@C BE STORED,@G@@@@C WN )@@G@@ UNDER TAG 'INROUT' A FLAG IS STORED WHICH @D@@@@C WO )@@G@@ TELLS THE TYPE OF INPUT @G@@@@C ROUTINES CALLED - WP )@@G@@S1COPI AND S1COPS, FIRST ONE TO INITIALIZE, @G@@@@C WQ )@@G@@ SECOND ONE TO STORE 5 DOUBLE OR 10 SINGLE @D@@@@C WR )@@G@@ PRECISION VALUES EACH CALL. @G@@@@C WS )@@G@@S1GTAG AND S1GVAL TO RETRIEVE INFORMATION FROM @B@@@@C WT )@@G@@ TAGGED STORAGE @C@@@@C S1GTFN TO GET FILEWU )@@G@@ NAME @F@@@@C S1INDC TO DECODE VALUES OF INPUT VARWV )@@G@@IABLES@G@@@@C S1INHC AND S1INHS TO PROVIDE HEADINGWW )@@G@@ OR SKIPPING@D@@@@C LINES WHEN PRINTING MESSAGESWX )@@G@@@F@@@@C S1INEP TO PRINT STANDARD MESSAGE HEADINGS WY )@@G@@@E@@@@C WHEN ERRORS FOUND IN INPUT RECORD @F@@@@WZ )@@G@@C S1INR1 TO GET NEXT RECORD FROM INPUT FILE @F@@@@XA )@@G@@C S1INP1 TO PRINT ONE CARD FROM INPUT RECORD@G@@@@XB )@@G@@C S1PRFT AND S1PRST TO CORRECT DATA SET LABEL IF XC )@@G@@@A@@@@C NECESSARY @F@@@@C XD )@@G@@S1RED TO GET ONE CARD FROM INPUT FILE @G@@@@C XE )@@G@@ERPROC INTERNAL SUBROUTINE TO PROCESS ERRORS @B@@@@C XF )@@G@@ FROM S1INDC @[@@@@C @G@@@@C THE STATJOB CARRY-OVER PXG )@@G@@ACKAGE CONSISTS OF CARD-IMAGE RECORDS AS @#@@@@C FOLLOWS: @[@@@@XH )@@G@@C @G@@@@C A) BEGINDATA CARD CONTAINING DATA SET LABEL OF INPUXI )@@G@@T DATA SET @B@@@@C FROM WHICH COP WAS GENERATED. @B@@@@C XJ )@@G@@ B) COP HEADER CARD CONTAINING ---@A@@@@C 1 - 4 4HCXK )@@G@@OP @F@@@@C 5 - 10 FIRST FIVE CHARACTERS OF DATA SETXL )@@G@@ LABEL@C@@@@C FOLLOWED BY BLANK. @E@@@@C XM )@@G@@ 11 - 14 FOUR ZEROES (SEQUENCE NUMBER) @C@@@@C XN )@@G@@ 15 - 18 NUMBER OF VARIABLES @B@@@@C 19 - 28 10HXO )@@G@@ VARIABLES @D@@@@C 29 - 35 NUMBER OF OBSERVATIONS XP )@@G@@@C@@@@C 36 - 54 19H OBSERVATIONS RUN@A@@@@C XQ )@@G@@ 55 - 56 RUN I.D. @A@@@@C 57 - 58 BLANK @C@@@@XR )@@G@@C 59 - 66 MM/DD/YY (DATE) @A@@@@C XS )@@G@@67 - 68 BLANK @D@@@@C 69 - 74 6HSINGLE OR 6HDOUBLXT )@@G@@E @A@@@@C 75 - 80 6H PREC. @[@@@@C @B@@@@C XU )@@G@@ C) DATA CARDS CONTAINING --- @A@@@@C 1 - 4 4HCXV )@@G@@OP @F@@@@C 5 - 9 FIRST FIVE CHARACTERS OF DATA SETXW )@@G@@ LABEL@A@@@@C 10 BLANK @E@@@@C XX )@@G@@11 - 14 CARD SEQUENCE NUMBER (ZERO FILE) @A@@@@C 15 - 2XY )@@G@@0 BLANK @G@@@@C 21 - 80 TEN A6 FIELDS CONTAINING DAXZ )@@G@@TA, 10 SINGLE @F@@@@C PRECISION OR 5 DOUBLEYA )@@G@@ PRECISION VALUES.@G@@@@C DATA CARDS CONTAIN SUMS, MINIMUMS, MAYB )@@G@@XIMUMS, AND THE LOWER @G@@@@C TRIANGULAR PORTION (BY ROW) OF YC )@@G@@THE RAW PRODUCTS MATRIX, IN @G@@@@C THAT ORDER. EACH OF THESYD )@@G@@E FOUR TYPES OF OUTPUT BEGINS ON A @ @@@@C NEW CARD IMAGE. YE )@@G@@@[@@@@C @ @@@@C D) AN ENDOFDATA CARD @[@@@@C @]@@@@C YF )@@G@@ENDSJM@ @@@@ IMPLICIT INTEGER (A - Z)@^@@@@ INCLUDE INBK, LISTYG )@@G@@@#@@@@ COMMON C(1) @#@@@@ LOGICAL RERR@#@@@@ REAL DF YH )@@G@@@[@@@@C @E@@@@ DIMENSION HEDFMT(18), DATFMT(26), DATA(13), BUF(YI )@@G@@10) @ @@@@ DIMENSION COPCOM(14) @D@@[@ DIMENSION SAVDSL(1YJ )@@G@@4)/'BEGINDATA*******',11*1H / @[@@@@C @A@@@@ DATA MSK1 / O7777YK )@@G@@77777700 / @#@@@@ DATA CL/0/ @[@@@@C @A@@@@ DATA (HEDFMTYL )@@G@@(I), I=1,18) / @ @@@@ 1 O1000001,O004 06 00 00,@ @@@@ 2 O1000YM )@@G@@005,O011 06 00 00,@ @@@@ 3 O1000013,O016 05 00 00,@ @@@@ 4 O1000YN )@@G@@020,O022 05 00 00,@ @@@@ 5 O1000035,O043 05 00 00,@ @@@@ 6 O1000YO )@@G@@067,O070 06 00 00,@ @@@@ 7 O1000073,O100 06 00 00,@ @@@@ 8 O1000YP )@@G@@101,O102 06 00 00,@ @@@@ 9 O1000105,O112 06 00 00/@[@@@@C @A@@@@YQ )@@G@@ DATA ( DATFMT(I), I=1,26) / @ @@@@ 1 O1000001,O003 06 00 00,YR )@@G@@@ @@@@ 2 O1000005,O011 06 00 00,@ @@@@ 3 O1000013,O016 05 00 00,YS )@@G@@@ @@@@ 4 O1000025,O032 06 00 00,@ @@@@ 5 O1000033,O040 06 00 00,YT )@@G@@@ @@@@ 6 O1000041,O046 06 00 00,@ @@@@ 7 O1000047,O054 06 00 00,YU )@@G@@@ @@@@ 8 O1000055,O062 06 00 00,@ @@@@ 9 O1000063,O070 06 00 00,YV )@@G@@@ @@@@ * O1000071,O076 06 00 00,@ @@@@ 1 O1000077,O104 06 00 00,YW )@@G@@@ @@@@ 2 O1000105,O112 06 00 00,@ @@@@ 3 O1000113,O120 06 00 00/YX )@@G@@@[@@@@C @#@@@@ GO TO 20 @[@@@@C @G@@@@C*****************YY )@@G@@******************************************************@G@@@@C***********YZ )@@G@@ *************@G@@@@C*****ZA )@@G@@***** INITIALIZATION ENTRIES *****************@G@@@@ZB )@@G@@C********** *******************ZC )@@G@@@[@@@@C @ @@@@ ENTRY S1RCPI(GO,IERR) @B@@@@ CALL S1GTAG(ZD )@@G@@'DSL',CL,DUM,DUM,$999) @#@@@@ CH=CL+10 @C@@@@ CALL S1GTAG(ZE )@@G@@'BEGDAT',FWBEG,DUM,DUM,$999) @B@@[@ CALL S1TCHS(C(FWBEG),1,SAVDSL,ZF )@@G@@17,64)@][@@@ INIT=1@#@@@@ GO TO 910 @[@@[@C @ @@@@ ZG )@@G@@ENTRY S1RCPJ(GO,IERR) @ @@@@ IF(CL.EQ.0) GO TO 999 @]@@@@ ZH )@@G@@INIT=2@A@@@@ IF(TYPE.EQ.3) GO TO 905 @#@@@@ PRINT 9013 ZI )@@G@@@#@@@@ GO TO 123 @C@@[@ 905 CALL S1TCHS(C(LCARDS),17,C(FWBEG),1,ZJ )@@G@@64) @#[@@@ 910 CONTINUE @[@@@@C @C@@@@ CALL S1GTAG( 'ERVEZK )@@G@@C', ERVEC, X, X, $999) @C@@@@ CALL S1GVAL('INROUT', INROUT, $999, ZL )@@G@@$999) @#@@@@ IERR =0 @]@@@@ GO = 1@#@@@@ BEGIND = 1 ZM )@@G@@@#@@@@ IFIRST = 1 @#@@@@ COUNT = 0 @A@@@@ IF(INIT.EQ.1ZN )@@G@@) CALL S1INHC(0)@^@@@@ CALL S1INEP(1) @B@@[@1000 CALL S1TCHS(ZO )@@G@@C(FWBEG),1,C(CL),1,66) @ @@[@ IF(INROUT.EQ.1) GO TO 10@^@@[@ ZP )@@G@@FWBEG2=FWBEG+10 @^@@[@ CALL S1INHC(1) @B@@[@ PRINT 1001,(ZQ )@@G@@C(I),I=FWBEG,FWBEG2) @B@@[@1001 FORMAT(' BEGINDATA*******',11A6) ZR )@@G@@@ @@[@ CALL S1GTFN(FILENM,$123)@[[@@@C @[@@@@C @C@@@@C ZS )@@G@@ READ FIRST CARD--HEADER CARD FOR COP @G@@@@C OR POSSIBLY BZT )@@G@@EGINDATA CARD IN WHICH CASE OLD DSL REPLACED @[@@@@C @B@@@@10 ZU )@@G@@CALL S1RED( C(LCARDS), TYPE, RERR) @ @@@@ IF( .NOT. RERR) GO TO 11ZV )@@G@@@^@@@@101 CALL S1INEP( 3) @#@@@@ GO TO 123 @^@@@@11 JUMP =ZW )@@G@@ TYPE + 1 @E@@@@ IF( INROUT .NE. 1 .AND. BEGIND .EQ. 1) GO TO 1ZX )@@G@@11 @G@@@@ GO TO ( 120, 121, 120, 129, 124, 125, 125, 120, 120, 1ZY )@@G@@4, 120),JUMP@G@@@@111 GO TO ( 120, 126, 127, 128, 127, 127, 127, 127, ZZ )@@G@@127, 127,127),JUMP@^@@@@120 CALL S1INEP(3) @#@@@@ PRINT 9000 AA )@@G@@@#@@@@ GO TO 123 @#@@@@121 PRINT 9001 @#@@@@122 PRINT 9002 AB )@@G@@@D@@[@C READ AHEAD ONE CARD TO GET IN SINC WITH S1GDST @B@@[@123 AC )@@G@@CALL S1REDC(C(LCARDS),TYPE,RERR) @#@@[@ PRINT 9003 @][@@@ AD )@@G@@GO = 0@#@@@@ IERR = 1 @]@@@@ RETURN@^@@@@124 CALL S1INHS(AE )@@G@@3) @#@@@@ CALL S1INP1 @#@@@@ GO TO 122 @^@@@@125 CALL SAF )@@G@@1INHS(3) @#@@@@ CALL S1INP1 @#@@@@ GO TO 121 @#@@@@126 AG )@@G@@PRINT 9013 @#@@@@ GO TO 121 @#@@@@127 PRINT 9013 @#@@@@ AH )@@G@@GO TO 123 @A@@@@128 IF( BEGIND .GT. 1) GO TO 120 @ @@@@C CHECK IF AI )@@G@@NEW DSL IS BLANK @E@@@@ IF(FLD(24,12,C(LCARDS+2)).NE.'@@@@ ') GO AJ )@@G@@TO 1283 @#@@@@ JJ=LCARDS+3 @#@@@@ JK=LCARDS+12@^@@@@ AK )@@G@@DO 1282 J=JJ,JK @A@@@@ 1282 IF(C(J).NE.1H ) GO TO 1283 @E@@@@ AL )@@G@@IF(FLD(0,12,C(LCARDS+13)).NE.'@@@@ ') GO TO 1283 @#@@@@ GO TAM )@@G@@O 1284@#@@@@1283 CONTINUE @[@@@@C @[@@@@C @G@@@@C NOW CHECKAN )@@G@@ IF D.S.L. AFTER FILE NAME ON CTL STREAM WAS BLANK. IF SO,@G@@@@C REPAO )@@G@@LACE TAG 'DSL' STORAGE WITH NO-BLANK D.S.L. FOUN ON INPUT FILE. @[@@@@AP )@@G@@C @G@@@@C S1GTFN MAY HAVE ALTERED 'DSL' TAGGED STORAGE, SO CHECK 'BAQ )@@G@@EGDAT' AREA.@[@@@@C @#@@[@ NNBLK=0 @^@@[@ DO 12832 J=1AR )@@G@@,63 @A@@[@ CALL S1PRFT(C(FWBEG),J,CHAR) @A@@[@ IF(CHAR.NE.1AS )@@G@@H ) GO TO 12831 @A@@[@ IF(NNBLK.EQ.0) GO TO 12832 @#@@[@ AT )@@G@@GO TO 12833 @^@@[@12831 NNBLK=NNBLK+1 @#[@@@12832 CONTINUE @#@@@@AU )@@G@@ GO TO 1284 @ @@[@12833 IF(J.EQ.1) GO TO 999 @^@@[@ DO 128AV )@@G@@34 JJ=J,64 @A@@[@ CALL S1PRFT(C(FWBEG),JJ,CHAR) @A#@@@ IF(CHAAW )@@G@@R.NE.1H ) GO TO 1284 @#@@@@12834 CONTINUE @G@@@@C 'BEGDAT' WAS BLAX )@@G@@ANK EXCEPT FOR FILE NAME --- TRANSFER C(LCARDS) TO @ @@@@C 'DSL' TAGAY )@@G@@GED STORAGE AREA. @#@@@@ 1281 C(CL+10)=6H @B@@@@ CALL S1TCHS(C(LCARAZ )@@G@@DS),17,C(CL),1,64)@#@@@@1284 CONTINUE @^@@[@ DO 1286 I=1,14 BA )@@G@@@ @@[@ 1286 SAVDSL(I)=C(LCARDS+I-1) @#@@@@ BEGIND = 2 @#@@@@ BB )@@G@@GO TO 10 @[@@@@C @^@@@@ 129 CALL S1INHS(2) @#@@@@ PRINT BC )@@G@@1291 @G@@[@ 1291 FORMAT('0***** EXTRA BEGINDATA CARD FOUND IN COP. BD )@@G@@ LAST ONE U@][@@@ *SED.')@#@@@@ GO TO 1281 @#@@@@132 GO TO BE )@@G@@123 @#@@@@14 CONTINUE @GG@@@ CALL S1INDC( C(LCARDS), WORDS,BF )@@G@@ HEDFMT,9, DATA, ERFLAG, C(ERVEC)) @A@@@@ IF( ERFLAG .EQ. 0) GO TOBG )@@G@@ 15 @B@@@@ CALL ERPROC( C(ERVEC), HEDFMT, 9) @#@@@@ GO TO BH )@@G@@132 @[@@@@C @[@@@@C @[@@@@C @^@@[@ 15 F5DSL=DATA(2) BI )@@G@@@^@@[@ PRINT 5,SAVDSL @ @@[@ 5 FORMAT('0 ',13A6,A2) @AF@@@BJ )@@G@@151 IF( DATA(3) .EQ. 0) GO TO 152 @]@@@@ GO = 0@^@@@@ CALL SBK )@@G@@1INEP(3) @#@@@@ PRINT 9005 @#@@@@152 SGLDBL = 0 @C@@@@ BL )@@G@@IF( DATA(9) .EQ. 'SINGLE') SGLDBL = 1 @C@@@@ IF( DATA(9) .EQ. 'BM )@@G@@DOUBLE') SGLDBL = 2 @A@@@@ IF( SGLDBL .NE. 0) GO TO 153 @]@@@@BN )@@G@@ GO = 0@^@@@@ CALL S1INEP(3) @#@@@@ PRINT 9006 @ @@@@BO )@@G@@153 IF( GO .EQ. 0) GO TO 132@G@@@@ PRINT 160, DATA(9), DATA(5), DBP )@@G@@ATA(4), DATA(6), DATA(7), DATA(8) @C@@@@160 FORMAT('0CARRY-OVER PACKBQ )@@G@@AGE INPUT',/, @G@@@@ 2 ' OF ', A6, ' PRECISION DATA FOR BR )@@G@@', I7, ' OBSERVATIONS OF@F@@@@ 2 ',I3,' VARIABLES, PRODUCED DURING RBS )@@G@@UN ',A2,' ON ',A6,A2) @A@@@@ IF( IFIRST .EQ. 0) GO TO 20 @]@@@@BT )@@G@@ RETURN@G@@@@C************************END OF INITIALIZATION *******BU )@@G@@******************@G@@@@C***********************************************BV )@@G@@************************@[@@@@C @[@@@@C @A@@@@20 IF( NV .EQ. BW )@@G@@DATA(4) ) GO TO 21@^@@@@ CALL S1INHC(1) @ @@@@ PRINT 9007, BX )@@G@@DATA(4), NV @#@@@@ GO TO 132 @#@@@@21 CONTINUE @[@@@@C BY )@@G@@@ @@@@ KDIV = 5*(3-SGLDBL) @A@@@@ IF(IFIRST.EQ.1) DF=DATA(BZ )@@G@@5) @A@@@@ IF (IFIRST.EQ.0) DF=DF+DATA(5)@[@@@@C @C@@@@C CA )@@G@@INITIALIZATION CALL TO STORE ROUTINE... @G@@@@C IF IFIRST = 1, ICB )@@G@@T WILL RESET VALUES OF VECTORS TO BE ACCUMULATED@G@@@@C OTHERWISE NOCC )@@G@@T, AND NEXT COP WILL BE STORED ATOP PREVIOUS COP... @[@@@@C @D@@@@CD )@@G@@ CALL S1COPI( NV, SUM, XMIN, XMAX, PROD, BUF, @G@@@@ 2 CE )@@G@@ SUM, XMIN, XMAX, PROD, BUF, PREC,DATA(9),IFIRST)@[@@@@C CF )@@G@@@F@@@@ NREC = 3*(1+(NV-1)/KDIV) + 1 + ((NV*(NV+1))/2 - 1)/KDIV CG )@@G@@@]@@@@C BEGINLOOP @D@@@@C LOOP ON NO. OF DATA RECORDS IN THE COCH )@@G@@P @^@@@@ DO 40 I = 1, NREC @#@@@@ COUNT = I @B@@@@ CI )@@G@@CALL S1INR1( C(LCARDS), TYPE, RERR) @ @@@@ IF( RERR) GO TO 101 CJ )@@G@@@C@@@@ GO TO( 310, 311, 311, 32, 310, 311),TYPE @^@@@@310 CALL SCK )@@G@@1INEP(3) @#@@@@ PRINT 9008 @#@@@@ GO TO 132 @^@@@@311 CL )@@G@@CALL S1INHS(3) @#@@@@ CALL S1INP1 @^@@@@ M = NREC - I + 1 CM )@@G@@@^@@@@ PRINT 9010, M @A@@@@ IF( TYPE .EQ. 2) GO TO 132 CN )@@G@@@#@@@@ PRINT 9001 @#@@@@ GO TO 132 @[@@@@C @G@@@@32 CO )@@G@@CALL S1INDC( C(LCARDS), WORDS, DATFMT, 13, DATA, ERFLAG, C(ERVEC))@A@@@@CP )@@G@@ IF( ERFLAG .EQ. 0) GO TO 33 @B@@@@ CALL ERPROC( C(ERVEC), DCQ )@@G@@ATFMT, 13) @#@@@@ GO TO 132 @[@@@@C @B@@@@33 IF( DATA(2) CR )@@G@@.EQ. F5DSL) GO TO 335 @^@@@@ CALL S1INEP(3) @#@@@@ PRINT CS )@@G@@9012 @#@@@@ GO TO 132 @A@@@@335 IF( DATA(3) .EQ. I) GO TO 34 CT )@@G@@@^@@@@ CALL S1INEP(3) @#@@@@ PRINT 9009 @#@@@@ GO TO CU )@@G@@132 @^@@@@34 DO 341 J = 1, 10 @^@@@@341 BUF(J) = DATA(J+3)@[@@@@CV )@@G@@C @E@@@@C S1COPS WILL PROCESS ONE RECORD CW )@@G@@@[@@@@C @^@@@@ CALL S1COPS( IERR)@A@@@@ IF( IERR .NE. 0) GCX )@@G@@O TO 132 @#@@@@40 CONTINUE @[@@@@C @D@@@@C***** ENDOFLOOP -CY )@@G@@-- ALL DATA FOR THIS COP NOW STORED.@[@@@@C @ @@@@C***** GET ENDOFDACZ )@@G@@TA CARD @#@@@@ EXTRA=0 @B@@@@41 CALL S1INR1( C(LCARDS), DA )@@G@@TYPE, RERR) @ @@@@ IF( RERR) GO TO 101 @A@@@@ GO TO (42,50DB )@@G@@,42,43,42,44),TYPE@B@@@@42 IF( EXTRA .NE. 0) PRINT 9011, EXTRA @^@@@@DC )@@G@@ CALL S1INHS(3) @#@@@@ CALL S1INP1 @#@@@@ PRINT 9001 DD )@@G@@@#@@@@ GO TO 132 @^@@@@43 EXTRA = EXTRA + 1 @#@@@@ GO TO DE )@@G@@41 @B@@@@ 44 IF(EXTRA.NE.0) PRINT 9011,EXTRA @^@@@@ CALL SDF )@@G@@1INHS(2) @#@@@@ PRINT 9001 @#@@@@ GO TO 132 @[@@@@C DG )@@G@@@^@@@@C***** ENDOFDATA FOUND. @B@@@@50 IF( EXTRA .NE. 0) PRINT 9011, DH )@@G@@EXTRA @^@@@@ CALL S1INHS(1) @#@@@@ CALL S1INP1 @#@@@@C*****DI )@@G@@ CLOSE FILE @ @@@@ IF(INROUT.EQ.1) GO TO 52@B@@@@ CALL S1INR1(DJ )@@G@@C(LCARDS),TYPE,RERR) @^@@@@ IF(RERR) GO TO 101@ @@@@ IF(TYPDK )@@G@@E.EQ.6) GO TO 52 @#@@@@ PRINT 51 @G@@@@ 51 FORMAT('0***** ENDDL )@@G@@-OF-FILE NOT FOUND AFTER ENDOFDATA CARD OF THE C@ @@@@ *ARRY-OVER PADM )@@G@@CKAGE.') @#@@@@ GO TO 132 @#@@@@ 52 CONTINUE @A@@@@ DN )@@G@@IF( EXTRA .NE. 0) GO TO 132 @[@@@@C @A@@@@C***** CHECK FOR COPCOMBDO )@@G@@IN CARD. @B@@@@ CALL S1REDC(C(LCARDS),TYPE,RERR) @F@@[@C DONDP )@@G@@'T HANDLE ERROR NOW...S1GDST WILL GET SAME ERROR ON REREAD. @^@@[@ DQ )@@G@@IF(RERR) GO TO 500@A[@@@ IF (TYPE .NE.11) GO TO 500 @^@@@@ DR )@@G@@CALL S1INHS(2) @#@@@@ CALL S1INP1 @[@@@@C @C@@@@C***** INITIDS )@@G@@ALIZE FOR ACCUMULATION OF NEXT COP. @[@@@@C @F@@@@C***** SAVE COPCOMDT )@@G@@BIN CARD FOR DATA SET LABEL, REPLACED LATER. @#@@@@ DO 55 J=1,14DU )@@G@@@ @@@@ 55 COPCOM(J)=C(LCARDS+J-1) @[@@@@C @G@@@@C***** GET BEGINDADV )@@G@@TA CARD OF CARD COP OR BEGINDATA POINTER CARD FOR @#@@@@C FILE DW )@@G@@COP. @B@@@@ CALL S1REDC(C(LCARDS),TYPE,RERR) @#@@[@ COUNT=DX )@@G@@0 @ @@@@ IF( RERR) GO TO 101 @A@@@@ IF( TYPE .NE. 3) GDY )@@G@@O TO 127 @[@@@@C @ @@@@C***** REPLACE DATA SET LABEL.@^@@[@ DZ )@@G@@C(FWBEG+10)=6H @C@@[@ CALL S1TCHS(C(LCARDS),17,C(FWBEG),1,64) EA )@@G@@@# @@@ BEGIND = 1 @#[@@@ PRINT 7 @#@@@@ IFIRST=0 EB )@@G@@@#@@@@ GO TO 1000 @[@@@@C @D@@@@C***** ALL DONE READING COP(S)EC )@@G@@ FOR THIS DATA SET. @[@@@@C @A@@@@ 500 IF (IFIRST.EQ.1) GO TO 5ED )@@G@@50 @[@@@@C @F@@@@C***** REPLACE DATA SET LABEL WITH 17-80 OF LASTEE )@@G@@ COPCOMBIN CARD. @^@@@@ DO 510 J=1,64 @A@@@@ CALL S1PRFT(EF )@@G@@COPCOM,J+16,CHAR) @A@@@@ 510 CALL S1PRST(C(CL),J,CHAR) @A@@@@ EG )@@G@@CALL S1PRST(C(CL),65,1H ) @A@@@@ CALL S1PRST(C(CL),66,1H ) EH )@@G@@@]@@@@ 550 RETURN@G@@@@7 FORMAT( 1H0,/,'0THE FOLLOWING ACCUMULATED EI )@@G@@WITH THE ABOVE CARRY-OVE@A@@[@ 2R PACKAGE(S) FOR THIS RUN:'/) @G[@@@EJ )@@G@@9000 FORMAT(' ***** FIRST CARD OF CARRY-OVER PACKAGE INPUT IS NOT A COPEK )@@G@@@^@@@@ 2 HEADER CARD') @F@@@@9001 FORMAT(' ***** ENDOFDATA CARD EL )@@G@@IS MISSING OR OUT OF ORDER') @D@@@@9002 FORMAT(' ***** NO INPUT RECORDEM )@@G@@S IN DATA SET') @G@@@@9003 FORMAT('0***** ANALYSIS ABANDONED BECAUSE EN )@@G@@OF ERRORS IN INPUT') @G@@@@9004 FORMAT(' ***** CARRY-OVER PACKAGE HEEO )@@G@@ADER ERROR. COLUMNS 5 - 9 ON @F@@@@ 2COP HEADER DO NOT MATCH COLUMNEP )@@G@@S 17-21 OF BEGINDATA CARD') @G@@@@9005 FORMAT(' ***** CARRY-OVER PACKEQ )@@G@@AGE HEADER ERROR. SEQUENCE NUMBER (@E@@@@ 2COLS 11-14) FOR COP HEADER )@@G@@ER MUST BE ZERO (0000) ') @G@@@@9006 FORMAT(' ***** CARRY-OVER PACKES )@@G@@AGE HEADER ERROR. PRECISION TYPE (S@F@@@@ 2INGLE OR DOUBLE) NOT PROET )@@G@@PERLY SPECIFIED IN COLUMNS 69-74') @G@@@@9007 FORMAT(' ***** CARRY-OVEEU )@@G@@R PACKAGE HEADER ERROR. NO. OF VARIABLES @G@@@@ 2(', I3, ') DOES NEV )@@G@@OT EQUAL NVARS(', I3, ') AS PUNCHED ON THE INPU@#@@@@ 3T CARD') EW )@@G@@@F@@@@9008 FORMAT(' ***** ABOVE CARD IS NOT A CARRY-OVER PACKAGE CARD')EX )@@G@@@G@@@@9009 FORMAT(' ***** ABOVE CARD HAS IMPROPER SEQUENCE NUMBER IN COEY )@@G@@LUMNS @#@@@@ 211-14') @F@@@@9010 FORMAT(' ***** CARRY-OVER PACKEZ )@@G@@AGE MISSING', I4, ' CARDS') @F@@@@9011 FORMAT(' ***** CARRY-OVER PACKFA )@@G@@AGE HAS', I4, ' EXTRA CARDS') @G@@@@9012 FORMAT(' ***** ABOVE CARD HAS FB )@@G@@DATA SET ID (COLS 5 - 9) DIFFERENT F@ @@@@ 2ROM THAT ON COP HEADER')FC )@@G@@@G@@@@9013 FORMAT(' ***** BEGINDATA CARD IS MISSING OR OUT OF SEQUENCE'FD )@@G@@) @#@@@@999 PRINT 998 @A@@@@998 FORMAT('0ERROR IN S1RCOP') FE )@@G@@@]@@[@ STOP @[#@@@C @[@@@@C @[@@@@C @[@@@@C @B@@@@FF )@@G@@ SUBROUTINE ERPROC( ERRVEC, FMT, N) @C@@@@ DIMENSION ERRVEC(1FG )@@G@@), FMT(6,N), MSG(5) @[@@@@C @G@@@@C INTERNAL SUFH )@@G@@BROUTINE TO PROCESS ERRORS FROM S1INDC @[@@@@C @^@@@@ CALL SFI )@@G@@1INEP(3) @^@@@@ DO 2 I = 1, N @A@@@@ IF( ERRVEC(I) .EQ.FJ )@@G@@ 0) GO TO 2 @C@@@@ CALL S1INER( MSG, FLD(24,6,ERRVEC(I))) @^@@@@FK )@@G@@ CALL S1INHC(1) @A@@@@ ICOLM1=FLD(18,18,FMT(1,I)) @A@@@@FL )@@G@@ ICOLM2=FLD(0,18,FMT(2,I)) @A@@@@ PRINT 1,ICOLM1,ICOLM2,MSFM )@@G@@G @F@@@@1 FORMAT(' ***** ERROR IN COLUMNS', I4, 1H-, I3, 3H --, FN )@@G@@5A6) @#@@@@2 CONTINUE @]@@@@ RETURN@]@@@@ END ___00 FO )@@G@@IF (IFIRST.EQ.1) GO TO 550 @[@@@@C @F@@@@C***** REPLACE DATA SET FP )@@G@@LABEL WITH 17-80 OF LAST COPCOMBIN CARD. @^@@@@)[M[S@@@@@@@ FQ )@@G@@ **** ATA***BEGINDAA@@@A)[X@*@@@@@@@FR )@@G@@)@[@)@@@@@@@@@DA@@@@[@@ @@^A@@@@[@@[@@@@@@_____@ AB@@@AFS )@@G@@)@ [S@@@@@@@@@[@[[@[@A@@@@[@@;@@8A@@@@[@@7@@< @@@@[@@X@@M @@@@[@@K@@I @@FT )@@G@@@@[@@FAC@@@A)@K[S@@@@@@@@@UA@@@@[@@P@@I @@@@[@@F@@DA@@@@[@@ @@#A@@@@[@@[FU )@@G@@@[EA@@@@[@[ @[]A@@AD@@@A)@V[S@@@@@@@@@[@@9@@8A@@@@[@@3@@2A@@@@[@@!@@?A@@FV )@@G@@@@[@@$@@&A@@@@[@@-@@)A@@@@[@@VAE@@@A)@&@8@@@@@@@)]]@K@@@@@@@______DSL FW )@@G@@@[KA@@@@[@[F@[EA@@@@[@[ @[^A@@@@[@@_@@"A@@AF@@@A)@@[F@K)CS^G]A[#@)CS@@@@FX )@@G@@C/@@@E@[S@A3/K@@HC@@@@[<@@@@[<@@@@[-@@@@]]/,0@@@/K@@B[AG@@@A)@D@F#@@@@@@FY )@@G@@)]^@K@)@E@<#@-@K0CS@@@@@@@@@[>@@@@]^/,0@@@[@@@[=______BEGDATG@@@[-AH@@@AFZ )@@G@@)@I[F#@-)K^G]A[9K^CE@@@@@@@@@Q/,0@@@^^K@@QN8LJ_"R@K@[>@[U@A3/K@@HC@@@@[@@@@@^^K@@3N8LJ_"GD )@@G@@^^K@@5N8MJ_"R@)@[>R@K@@G/K@@#E'^@@@@@[>@A3AL@@@A)@2@;]])CS^[#@-)K0@@@@@@GE )@@G@@)]A@C@ERVEC @[*@A3@@@@A=@@@@A+@@@@@5@@@@A<@@@@@3/,0@@@AM@@@A)]B@C@)@9@3]GF )@@G@@@-)K0CS^G]@@)]C@C@INROUT/K@@HC@@@@[(@@@@[(@@@@[*@@@@]A/,0@@@______AN@@@AGG )@@G@@)]D@C@)@_@;#@-]K0CS4[@K0@@@@@@@[:@A3/K@@HC/K@@HC@@@@@^@@@@]C/,0@@@@[%@A3GH )@@G@@______AO@@@A)[A[M[#@-)K1+A@K@@/K@@[N*@@@@GH@@@[&C/@@@[ @@@@S[@@@[:[@@@[%GI )@@G@@[@@@@@C/@@@[ @@@@@AP@@@A)[K[F]A-)K0CL^G]A[#@-)YKN8LJ_"R@K@[-R@)@[>@[3@A3GJ )@@G@@@@@@A+/,0@@@@[2@A3@@@@A>/,0@@@AQ@@@A)[T[F@YO[]])CS^[#@-)@@@@@@@@A&@@@@A+GK )@@G@@@@@@[Z@@@@A+@@@@[X/,0@@@^^K@[XN8MJ_"^^K@[ZAR@@@A)[+[F#@CS1@^G]A[]A@@@@@@GL )@@G@@/,0@@@[@@@[?G@@@[>C/@@@E/K@@[.(@@@@GH@@@@^C/@@@[@[4@A3AS@@@A)[:[##@-)K**GM )@@G@@S^G]A[#@-)@@@@@@@@R@K@A$H[)@[>C[)@[?@[9@A3@@[@]E/,0@@@@[8@A3@@@@A+AT@@@AGN )@@G@@)[3@:#@JE H@@@@@@@)]E@S@@@@@@@ATA***BEGIND(017H 8L@@[5'^K@@@C8[\_"[[)@[^GO )@@G@@Q@K@[>AU@@@A)]H@K@)[8@3]=- K0C]A[#A@@@@@@@R@)@@G@]@@A3/K@@#E@@@@[!/,0@@@GP )@@G@@'^@@@@1A6) ****,1AV@@@A)["[F9K^C2@-)K0CS^G]@@@@/=@@]FD@@@@@@][@A3@@@@@@GQ )@@G@@@@@@[$@@@@][/,0@@@^^K@][N8MJ_"AW@@@A)]B[F]C-)K0C@-)K0@@@@@@@C.@@@[C/)@@[GR )@@G@@[@@@[,G@@@[$C/@@@[/K@@#E@]^@A3@@@@A*/,0@@@AX@@@A)]K[N#A@CS@^@@@@@@/=0@]%GS )@@G@@+@)@@K @@@@K*@@@@MH[)@[%C.)@@[C.@@@[ @@@@I(@@@@KH[@@@^AY@@@A)]U[F#@C] L#GT )@@G@@@)C]@)@@@@@@/K@@ -/K@@]'/K@@#]/K@@]'@]D@A3'^@@@@8];@]Y$'0@@GRA0@[,AZ@@@AGU )@@G@@)]<[N@K^[@K^[@K0]@8];@],$'0@@GRA0@[,/K@@]'/K@@ %/K@@]'/K@@]'/K@@#+/K@@#+GV )@@G@@/K@@#WBA@@@A)]![F]*-)K^[@K^[@K@@@@@@/K@@#!/K@@#!/K@@#!/K@@#2/K@@#!/K@@#*GW )@@G@@/K@@]'@]E@A3'^@@@@BB@@@A)]6[F@K^[@K+CS^G] #@@@@@@[@#U/,0@@@@]F@A3@@@@A*GX )@@G@@/,0@@@/K@@#!/K@@#!/K@@#!/K@@#!BC@@@A)]_[F#@-MK^EEA[#@-MK**S@@@[@#0/,0@@@GY )@@G@@'^@@@@@]J@A3@@[@#$/,0@@@/K@@#E'^@@@@@]G@A3BD@@@A)#C[F#@-MK1\E@-BK^G]A@@@GZ )@@G@@@@@@@@@@@@[$@@@@#I/,0@@@^^K@#IN8LJ_"R@K@@G'^@@@@@]L@A3BE@@@A)#L[F#@-LK0CHA )@@G@@S^EK]@@@@@@@N@0@#V[@@@@@C/@@@[ @@@@@'^@@@@@]O@A3@@[@#7/,0@@@@]N@A3BF@@@AHB )@@G@@)#U[F@K0CM^G]A[]M-)K^D@@/,0@@@/K@@#A@]U@A3/,0@@@@]T@A3@@@@A*/,0@@@@]S@A3HC )@@G@@/K@@HMBG@@@A)#<[F#@-)K=*S^[]+-)K0CO)'^@@@@@]Z@A3@@[@AF/,0@@@/K@@#]@]X@A3HD )@@G@@/,0@@@@]W@A3@@@@A*BH@@@A)#?[F@K**S^G] D@^G]@@@@@/C@@#7H@@@[%C/@@@[/K@@#EHE )@@G@@'^@@@@@]+@A3@@[@AF/,0@@@/K@@#]BI@@@A)#5[MK^GU]@C@@@@@@C/@@@#/K@@^O*@@@@GHF )@@G@@G/@_'';C@@@S;)@@@SC@]@@[R@)@@G/K@@]'*@@@@GBJ@@@A)#_[F#A-)^GUA[#@-)^G@@@@HG )@@G@@A@K@[1]@@@[^R@K@[\H@@@[0[@)@[0G@)@@GC/)@@G[@@@[\G@@@@GBK@@@A)^C[N9K0]@C]HH )@@G@@]@@@@@*@@@@GG/@_'';C@@@SC@]@@G8L@@^BO/K@@[/K@@^O*@@@@GH@@@A(C@[J_"BL@@@AHI )@@G@@)^M[F@K^G@CS^G]A[#@@@@@@R@)@A'A@K@A'R@K@[>[#)@[1N.@@@"C_)@@[ @@@[2/K@@ PHJ )@@G@@/K@@^OBM@@@A)^V[F9K^DM@-)K0CS^G]A@@@H@@@A(C@@@[3@]9@A3@@@@[3@@@@[1@@@@^YHK )@@G@@/,0@@@^^K@^YN8MJ_"BN@@@A)^=[MK^G]@)]A[#@C@8L@@^RG_)@@[[@@@[2G@@@[2C/@@@[HL )@@G@@/K@@^\/K@@^?(@@@[2/K@@^(*@@@@GBO@@@A)^,[N@^G@)]A[#@CS@[#)@[\[@@@[^C#)@[1HM )@@G@@H@@@[1C/@@[@/K@@HC(@@@@GH@@@[1C/@@@[/K@@ PBP@@@A)^8[F#@/*]^(@K0CS^G]A@@@HN )@@G@@C@@@[3@#C@A3@@@@[3@@@@[\@@@@^//,0@@@^^K@^/N8LJ_"R@K@[>BQ@@@A) [[F#@C@)CSHO )@@G@@^G]]-<@@@@@@R@K@@G[@]@@DC@@@A(R@)@[-8L@@^7G_)@@[/K@@ P*@@@@GH@@@A(BR@@@AHP )@@G@@) E[F9KB>@K)*]A[@K0@@@@@@@@@A+@@@@ L@@@@A<@@@@ J/,0@@@^^K@ JN8LJ_"^^K@ LHQ )@@G@@N8MJ_"BS@@@A) N[F#@-)^GUA[#@#2@@@@@@C@[\_.N.@@@HQ@K@@GR@K@A$R@)@A%G@@@@GHR )@@G@@C/@@@[@#I@A3@@@@A=BT@@@A) W[F#@)]A[@K=CS^G] ^@@@/,0@@@@#R@A3@@@@A:/,0@@@HS )@@G@@/K@@[.[@)@[%C/)@@]8L@@ V[@])[LBU@@@A) >@N#@-)@@@)]J@8@@@@@@@ND IN RD FOUHT )@@G@@ATA CABEGINDEXTRA ***** (062H0@#S@A3@@[@]JBV@@@A)]Q@*@@@@@@@) $@<]=)C]A@HU )@@G@@R@K@[*/K@@#E/K@@ A'^@@@@.) E USEDAST ON LCOP. BW@@@A) :[F#A/*#2)HV )@@G@@CM4[#A-)@@@@@@@@@[@@@@@J@@@@ 1/,0@@@^^K@ 1N8MJ_"^^K@ 7N8LJ_"R@)@@GBX@@@AHW )@@G@@) 4[F#@-)K0C]A[#@-)KB=@@N8LJ_"/K@@A^(@@@[4R@K@[*@#Y@A3@@@@ 7@@@@[4@@@@@!HX )@@G@@@@@@A?BY@@@A) .[F@K^[#@-)K0C]A[#@@@@[@@@[5C@@@@,/K@@ (@#-@A3@@@@A?@@@@@[HY )@@G@@@@@@ _/,0@I<^^K@ _BZ@@@A)AA[#]+-)K0CS[#@-NK@@@@@@@@@@@8L@@AF'^K@@@C8])[LHZ )@@G@@N.@@@HR@)@A%@#=@A3@@[@]V/,0@@@CA@@@A)]V@)@@@@@@@)AI@<]=-)K@@@@@@@@ @@@@@IA )@@G@@/K@@AT(@@@@\'^@@@@) 3A6,A2 ,1(005H0CB@@@A)AM[#]C-)K0COOG]A[]=-)@@IB )@@G@@@@@@@@ @@@[6'^@@@@@#\@A3@@[@^P/,0@@@@#,@A3@@@@A*/,0@@@CC@@@A)AU[F#@-)^@KIC )@@G@@0CS^G@@@@@@@*@@@@GH@@@A,C@@@@5[@@@[6C/@@@[/K@@A)*@@@@GH@@@A!C@@@@5CD@@@AID )@@G@@)A<[F@^G]A[@^C+A[#@@@@@@@#9@A3@@@@A*/,0@@@ @@@@@/K@@A0*@@@[6[@@@[6C/@@@]IE )@@G@@/K@@A&CE@@@A)A?[F]+-)K0CO-@K**S^G@@@@#"@A3@@[@]Z/,0@@@/K@@ ((@@@@@'^@@@@IF )@@G@@@#'@A3@@[@^*/,0@@@CF@@@A)A5@3#@-)K0CS^G]A@)]Z@S@OVER PCARRY-(025H0@@K@@4IG )@@G@@@@K@@3@@K@@2@@K@@0@@K@@1@@K@@5CG@@@A)]+[S@@@@@@@H OBSEI7,017 FOR ,N DATAIH )@@G@@ECISIO20H PR ,A6,0H OF,/,006 INPUTACKAGECH@@@A)]![S@@@@@@@ ON ,A2,004HII )@@G@@RUN ,AURING UCED D, PRODIABLES2H VAR,I3,03NS OF RVATIOCI@@@A)]8@C@)A;[#]IJ )@@G@@=-)K^[@K0CS@H@@@@@C@@@@0@^D@A3/K@@HMN@0@B@/K@@B[(@@@[:'^@@@@6,A2) CJ@@@AIK )@@G@@)B#[EK^CUA[#@-LK0CS^G@@@@@K@@0@^H@A3@@[@^//,0@@@@^G@A3@@@@A+/,0@@@/K@@BJIL )@@G@@(@@@@GCK@@@A)BG[MK(C@-)^G@-)@@*@@@@GH@@@[:C/@@@[[@@@[7T/@@@ H@@@[6C/@@@#IM )@@G@@/K@@ ('^@@@@@@K@@@CL@@@A)BQ[N@^G@-)K[#@@@@"@@@@@C@@@@H"O@@@1C/@@]V/K@@B-IN )@@G@@*@@@[:[@K@@@"O@@@1C/@@]V/K@@BUCM@@@A)B)[MK&@@-)@@@@@@@@@@@@@@@@@@@@@@@@'IO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/,0@@@[@@@@@CN@@@A)B%[M^G@-)K0CS@@@@T@@@@@IP )@@G@@G@@@@@C/@@@[@^S@A3@@@@[:@@@@@5@@@@@@@@@@@'@@@@@@@@@@@@CO@@@A)B4[M[#@@-)@IQ )@@G@@@@@@@@T/)@@#G/)__"W@)@[7;O)@@=H@)@@@C/)@@[W@@@[7;O@@@=G/@__";K@@@[CP@@@AIR )@@G@@)B"[M^G@]A[#A-)K0@C@@@[+A@K@A'R@K@@G[#)@[+[@@@[^C_)@@[G/@__"[@@@[8H@@@@IIS )@@G@@G/)__"CQ@@@A)CC[F#A-)YO[]U)CS^G]A@@@@^Y@A3@@@@@@@@@@[$@@@@CH/,0@@@^^K@CHIT )@@G@@N8MJ_"R@)@A'[@@@@SCR@@@A)CL[F#@)CS[@K%CS^[@@@@@@/K@@C&/K@@CY@^-@A3'^@@@@IU )@@G@@8];@CR$'0@@BRA0@[$/=@@]BC@@@@@CS@@@A)CU[F@K^[@K+CS^G] #@@@@@@[@ N/,0@@@IV )@@G@@@^+@A3@@@@A*/,0@@@/K@@C&/K@@CY/K@@C./K@@C&CT@@@A)C<[F#@-MK^D]A[#@-DK0CS@IW )@@G@@C@@@[8@^$@A3/,0@@@@^&@A3@@@@A*/,0@@@/K@@ ('^@@@@@^<@A3CU@@@A)C?[F#@CS^EEIX )@@G@@A[#@-)K(@@@@C/@@@]'^@@@@@@K@[9@^(@A3@@[@ (/,0@@@[@@@[9G/@@@[H@@@[+CV@@@AIY )@@G@@)C5[F#@C] #@-)K(C]AG@@@R@K@@G/K@@ ('^@@@@@^,@A3@@[@#$/,0@@@/K@@ ((@@@@GIZ )@@G@@H@@@[$CW@@@A)C"[F#@/*#2)CM4[#A-)@@@@@@@@@N@@@@@J@@@@D^/,0@@@^^K@D^N8LJ_"JA )@@G@@^^K@DEN8MJ_"R@)@[*CX@@@A)DB[F#@-)K0C]A[#@-)KB=@@N8MJ_"/K@@DR(@@@[4R@)@[*JB )@@G@@@^1@A3@@@@DE@@@@[4@@@@@!@@@@A\CY@@@A)DK[F@K^[#@-)K0C]A[#@@@@H@@@[5C@@@@,JC )@@G@@/K@@ (@^4@A3@@@@A\@@@@@N@@@@DM/,0@I<^^K@DMCZ@@@A)DT[EK^C+A[#@-LK0CS^EK@@JD )@@G@@'^@@@@@^9@A3@@[@ //,0@@@@^8@A3@@@@A*/,0@@@/K@@D<(@@@@GDA@@@A)D+[F@K0CS[@JE )@@G@@K+CS^G] ^@@@/,0@@@@^"@A3@@@@A*/,0@@@/K@@D\(@@@@GH@@@[+C@@@@\/K@@ (DB@@@AJF )@@G@@)D:[F#@-)K(C]A@K0CS^@@@@8LK@D1[@[)@9C@[@@\N.K@@DR@K@A%/K@@ ('^@@@@@^_@A3JG )@@G@@@@[@ XDC@@@A)D4[F]WCS[@^[#@-<@@@@@@@R@)@@G @@@['8L@@C^G_)@@[/K@@ (*@@@@@JH )@@G@@@ B@A3@@@@@@/,0@@@DD@@@A)D.[F9K^D%@-)K0CS^G]@@@@/=@@]BC@@@@@@ H@A3@@@@@@JI )@@G@@@@@@[$@@@@E@/,0@@@^^K@E@N8MJ_"DE@@@A)EA[F#@C] L#@)C]@)@@@@@@/K@@E+/K@@ELJJ )@@G@@/K@@E5/K@@EL@ K@A3'^@@@@8];@EE$'0@@BRA0@[$DF@@@A)EJ[F@K^G]@-LK0CS^G] C@@JK )@@G@@'^@@@@@@K@['@ M@A3@@[@ 2/,0@@@/K@@ES(@@@['/K@@E&/K@@ELDG@@@A)ES[#]K-)K0CJL )@@G@@MOG] #@-)@@@@@@@@@ R@A3@@[@#$/,0@@@@ Q@A3/,0@@@@ P@A3@@@@A*/,0@@@DH@@@AJM )@@G@@)E)[F]=)]A[#@)CS^[]+@@@@/,0@@@/K@@E!(@@@['/K@@D/[@@@['G@@@['C/@@@[/K@@ (JN )@@G@@'^@@@@DI@@@A)E([##@-)K0CO=D]A[#@-L@@@@@@@@/,0@@@@ )@A3@@@@A:/,0@@@'^@@@@JO )@@G@@@@K@['@ X@A3@@[@ 2DJ@@@A)E1[F#@-)K(C]A[@K**S^G@@@ >@A3@@[@ 2/,0@@@/K@@E/JP )@@G@@(@@@['/K@@ ('^@@@@@ -@A3@@[@#$DK@@@A)E'[F#@-MK=CS^G]^>#@-<@@C/@@@[R@K@@GJQ )@@G@@@ (@A3/,0@@@@ *@A3@@@@A+/,0@@@'^@@@@@@K@['DL@@@A)F#[F#AC#2)CNO[#@-)@@@@@JR )@@G@@@@@@@@@@@@[$@@@@FD/,0@@@^^K@FDN8LJ_"/K@@FS(@@@@GH@@@@^DM@@@A)FG[F#@-)K[#JS )@@G@@@C] #@@@@@@@@[@]9/,0@@@/K@@FS(@@@@IH@)@[$C/)@@A/=@@]BC@@@@@@ ?@A3DN@@@AJT )@@G@@)FP@F#@@@@@@)]9[@@@@@@@@DOFDATTER ENUND AFNOT FO-FILE END-OF***** (076H0JU )@@G@@@ 1@A3DO@@@A)#[@0@@@@@@@)FQ@V]=)CS0@R@)@@G/K@@ ('^@@@@GE.) PACKAY-OVERJV )@@G@@E CARR OF THA CARDDP@@@A)FT[F#@)JE@-BK^G]A[#@@@@@ 8@A3@@@@@@@@@@[$@@@@FYJW )@@G@@/,0@@@^^K@FYN8MJ_"/K@@ (*@@@['DQ@@@A)F+[F#@)]A@K^D]A[#@@@@@@@ .@A3@@@@A:JX )@@G@@/,0@@@/K@@GW*@@@@IH@)@[$C/)@@F/=@@GWC@@@@@DR@@@A)F:[F]M-)^GUAH#@-)@@@@@@JY )@@G@@N.@@@HQ@0@@GR@0@A$R@)@A%R@K@@GG@@@@GC/@@@[@ "@A3/,0@@@DS@@@A)F4[F9K0C#2)JZ )@@G@@CL4[#@-)@@@@@@@@@@@@@@[$@@@@F'/,0@@@^^K@F'N8LJ_"8L@@F4[@])[#C@#\_.DT@@@AKA )@@G@@)F.[F#@-R@)@@GKB )@@G@@@A^@A3DU@@@A)GA[F@K0CF2)JE@-[K@@@@@@@@@@GI/,0@@@^^K@GIN8MJ_"^^K@GKN8NJ_"KC )@@G@@[@<@@DC@)@A(/K@@#!DV@@@A)GJ[F#@)CS^G]A@K0COOG@@@@@[@#F/,0@@@[@@@[%C/@@@[KD )@@G@@@AF@A3@@@@A=@@@@A+@@@@GK@@@@A[S@@@@@@@LB )@@G@@NG,I4, MISSIACKAGEOVER PCARRY-***** (033H 14) NS 11- COLUMBER INER@@@ALC )@@G@@) 0[S@@@@@@@ CARDS EXTRA4,012H HAS,IACKAGEOVER PCARRY-***** (029H ARDS) LD )@@G@@006H CES@@@A) ;[S@@@@@@@FFEREN 9) DILS 5 -ID (COA SET AS DATCARD HABOVE LE )@@G@@***** (080H ) ET@@@A)AA[S@@@@@@@MISSINRD IS ATA CABEGIND***** (051H LF )@@G@@R) HEADEON COP THAT T FROMEU@@@A)AL@)@@@@@@@)HC@V]+-)K0@)AP@C@(016H0LG )@@G@@@A:@A3@@[@AP/,0@@@CE) SEQUENUT OF G OR OEV@@@A)AQ@S@)HF@3]=-PK0CS^[@@@LH )@@G@@/K@@HMN@0@HL@A,@A3@@@@A(/,0@@@'^@@@@COP) IN S1RERROR EW@@@A)HL[##@-)K0CLI )@@G@@S^G]A[#@-)@@@@@@@@N[@@B]R@0@B[R@)@B@R@K@A_9\)@A.9!)@A;R]0@A4@A,@A3EX@@@ALJ )@@G@@)HT@N#@-)@@@)A1@C@)HV@N#@-Q@@@)A3@K@@A,@@]S1RCOP/K@@@@/K@KA1@@F@@@*4@KA1LK )@@G@@N[K@B#EY@@@A)HX[##@-)K0CS^G]A[#@-)@@@@@@@@^[@@B]A@0@B[A@)@B@A@K@A_9:)@A.LL )@@G@@9()@A;[^@@A1AA0@A4EZ@@@A)H>[N#@]@)]@)]@@@@/\K@HXC8@@@#/K@@JJ/\K@HXC8@@@#LM )@@G@@/K@@I0/\K@HXC8@@@D/KH@@@^[K@B#FA@@@A)H\[F@K+CS^G@-)K0]A@@@@@R@K@BAG/)__'LN )@@G@@C@)@B G@@@BBC/@__"@A3@A7@@@@A*/,0@@@/K@@JVFB@@@A)H8[E[@^G] [#@-)@@@@@@@@LO )@@G@@@@@@BC@@@@[;/,0@@@[@@@BCC=]@@ /K@@IO(@]@@ [@@@[^R@)@@IFC@@@A)I[[F#@-#K0CLP )@@G@@S[#@CS^EC@@@/,0@@@[@)@][CC-@@[[@@@]@C^[@@@@A'@A7@@@@A+/,0@@@@A9@A7FD@@@ALQ )@@G@@)IE[F#@-)K0CS^G@-)K(*@@@8LK@IK'^K@@@C8#)['N.K@@^R@0@A%@@K@][@@K@]@@A.@A7LR )@@G@@@@[@ATFE@@@A)IN@V]=@@@@@)AT@0@@@@@@@4,1H-,UMNS,IIN COLERROR ***** (023H LS )@@G@@O/)@@[O/K@@A'^@@@@FF@@@A)AZ@S@)IQ@3@K^[#@-)K0@@@R@K@BDR]0@A8@BC@A7/K@@IULT )@@G@@N@0@IT8L@@H') --,5A6I3,3H FG@@@A)IW@:#@-)K0CS^G@@@)A5@C@)I-@F#@@@@@@LU )@@G@@/K@KA5@@F@@^*4@KA5N[K@BHN[@@BGR@0@BFR@)@BEFH@@@A)I+@F]?@@@@@)A7@K@)I<@<#LV )@@G@@@-)K0CS@@@@@A@0@BFA@)@BEA@K@BDAA0@A8@BC@@]ERPROC/K@@@@FI@@@A)I$[F#@-)^G@LW )@@G@@-)^G]@@@@@@@/K@@H0[@K@BBC@VK@][@@@BAC8FK@[[@@@B C8FK@@^[K@BH^[@@BGFJ@@@ALX )@@G@@)I0[MK^@K^@K^@@@@@C8FK@#[^@@B%[^@@B>C8FK@][^@@B=[^@@B(C8FK@[[^@@B*[^@@B@[%/K@@[@3#@)C]A[QL )@@G@@#@@@@@)@'@K@@@@@@@______BLOCKOC/@@@[ @@@@P@[$@[%/K@@AN/K@@AN@@@@@OAP@@@AQM )@@G@@)[:[F#@-[K0CS^G]A[@K0CS@R@K@@D@[%@[%/K@@["@@@@@E@@@@@R@@@@@D@@@@@'/,0@@@QN )@@G@@[@@@@QAQ@@@A)[4[F9K0CS[#@C]A[[@@@@@@C@[@@@R@K@[!/K@@["*@@@@GH@@@@RC/@@@]QO )@@G@@A@K@[![@@@@QC@[J_"AR@@@A)[.@F#@@@@@@)@/@K@)["@<]@-)K0C@@@@@@/K@@AN@@@@@SQP )@@G@@@@@@@//,0@@@______VISBUF[@@@@PAS@@@A)]]@N@K0@@@@)@"@K@)]^@V#@-@K0@@@@@@@QQ )@@G@@@@@@@"/,0@@@ @@@@T______MDATA @[\@[%/K@@ANAT@@@A)]B[F#@)C]A[]^-)K0]A@@@@QR )@@G@@H@@@@BC/@@@^@[3@[%@@@@@U/,0@@@@[1@[%/K@@]F/K@@]F@@@@@TAU@@@A)]K@E@)[@@K@QS )@@G@@)]L@:@K)*S^G]A@@@@@@@@@R@@@@@D@@@@[@/,0@@@/K@@]2______ODFNAM(@@@@GAV@@@AQT )@@G@@)]Q@;#@)CS^G#2-)KK)[]@K@______OCHARSC@-@@@[@@@@]C@[J_"R@K@@D@[6@[%/K@@ANQU )@@G@@@@@@@EAW@@@A)]X@;#@-@K0CS^[@K0@@@@@@)[^@C@SEQ @[9@[%/K@@AN/K@@AN@@@@@VQV )@@G@@@@@@[]/,0@@@[@)@@#AX@@@A)[ @C@)]=@;#@-@K0CS^[@K0@@@@@@@[;@[%/K@@]:/K@@]:QW )@@G@@@@@@@W@@@@[^/,0@@@ @@@@W______AY@@@A)[A@K@)]:@3]@-)K0C]@-)@@@@@@@@@[.@[%QX )@@G@@/K@@]2/K@@]2@@@@@X@@@@[A/,0@@@______NOSEQ AZ@@@A)]1[F#@CS[@^G]A@@@@@@@@@QY )@@G@@C/)__"[@@@@ZG@@@@FC/@@@[/K@@#5(@@@@GH@@@@BC/@@@^ @@@@YBA@@@A)]'[F#@-)@^GQZ )@@G@@]A[#@@@@@@@@[#)@@)[[@@[\[@@@[![@)@[^C_)@@[T/@@@AG.@__8C[@@[,G@)@@FBB@@@ARA )@@G@@)##@;#@CS^G]A[#@-)@@@@@@)[C@C@REA [@@@[0O@K@[\O@K@[!R@K@@)G@@@[\T/@@@ARB )@@G@@C@@@@)BC@@@A)[D@C@)#E@;#@-#K0CS^G]A[#@@@@@@@@@@E@@@@@@@@@@[&@@@@[C@@@@[>RC )@@G@@/,0@@@A@K@[1______BD@@@A)#L[F#@-)K0]A@K0]A@@@@@@C*)@@[[@[@@#CC@@@[[@-@@]RD )@@G@@C^)@@@[@[@@[R@K@[0CC@@@@@]A@[%BE@@@A)#U[MK0]A@^G]A@@@@G/@__9C@[@@^R@K@[0RE )@@G@@[@@@@-C/@@@[[@-@@AC))@@[[@[@@ C=@@@[[@-@@^BF@@@A)#=[MK^G]A[#@CS@@@*@@@@IRF )@@G@@G/)__'C@-@@^R@K@[0[@[@@@R@K@[1C@@@@- @@@@-/K@@#$*@@@@GBG@@@A)#,[N@@[@K0]RG )@@G@@A@@@@@H@@@@BC/@@@^R@K@@S8L@@#]G_)@@[ @[@@A @[@@ [@-@@^C/)@@#/K@@#3BH@@@ARH )@@G@@)#8[EKB>@YO[]C)C@@@@@@@@@@@@^@@@@@#_/,0@@@^^K@#_N8LJ_"^^K@^@N8LJ_"/K@@^BRI )@@G@@(@@@@GBI@@@A)^[[F#@-)K0CS^[#@-)K0@@@C/)@@^[@@@@ZC@@@@F@]W@[%/K@@AG@@@@@URJ )@@G@@@@@@@T@@@@@F@@@@[$BJ@@@A)^E[F#@C@-)^[]E-)@@@@@@@@@@@@Z/,0@@@^^K@^NN8W@@@RK )@@G@@G@@@[,T/@@@A/K@@^>(@@@@IH@)@@BBK@@@A)^N[F@^G]A[#@-)^@@@@@@@@C/@@@[/K@@^XRL )@@G@@*@@@@GH@@@@FC@@@@Z @@@@+@]-@[%@@@@@@@@@@^NBL@@@A)^W[F#@CS[@K^[#@)@@@@@@@RM )@@G@@/K@@^5@]&@[%/K@@AXN@0@^[#]E-)[#@RN )@@G@@-)K0@@)[E@C@S13OUT*@@@@GH@@@@FC@@@@Z@]*@[%@@@@@@@@@@@@@@@@@Z/,0@@@BN@@@ARO )@@G@@)[F[S@@@@@@@TPUT. ANK OUH STJBED WIT ALLOWNE NOT ROUTIOUTPUTPLIED ER-SUPRP )@@G@@ - USBO@@@A)[Q@C@)^![#@K*S^G]@-GK0@@@@@@@@@@@@@@@@@@RZ )@@G@@@@@@@/,0@@@A@K@[1______BD@@@A@@^@@#@@B@@K@@$@@#@@3@@[SO )@@G@@@@ @[8@C@@BD@@@@@[S1GVAL S1GTAG URRNID S1IODR S1BAAISP )@@G@@ TRINT S1SERR S1OTIN S1BAAO S1OTOB TROUT SQ )@@G@@ S1BAAC S1OTCL TREND NERR4$ NERR3$ S13INTSR )@@G@@ @@[@@@@@@@A,S13OUT @@[@@@@@@@A;S13CLS @@[@@@@@@@B]BLANK$SS )@@G@@ ^@@@C@@]@@@@@@@@@@*[@@@@*SDFF*@G@@@@ SUBROUTINE S17ANO(NVARS,ST )@@G@@OBS,FLGARR,R,DR,ROUT,STOR,IAVAIL,H,IH, @F@@@@ *MAXH,MDATA,HIST,ALSU )@@G@@PHMD,CODE,NAM,NAMES,CIALPH,BASE,SCR,NWSCR,@B@@@@ *NHIST, VALUE,NMOBSSV )@@G@@,NVALUE,IHA,IPAR) @[@@@@C @A@@@@C SUBROUTINE FOR OTF OPTION SW )@@G@@@B@@@@C NVARS IS NUMBER OF VARIABLES @D@@@@C OBS VESX )@@G@@CTOR TO CONTAIN ONE OBSERVATION @F@@@@C FLGARR VECTOR CONTAINSY )@@G@@ING FLAGS TELLING VARIABLE TYPE @B@@@@C R,DR ARRAYS DESCRIBSZ )@@G@@ED IN S17CPT@G@@@@C NVALUE VECTOR CONTAINING NUMBERS OF LEVELS FOTA )@@G@@R ALPHN. VARIABLES@G@@@@C VALUE ARRAY CONTAINING LEVELS FOUND FOTB )@@G@@R ALPHANUMERIC VARS @[@@@@C @#@@@@ COMMON X(2) @G@@@@ TC )@@G@@DIMENSION OBS(2),FLGARR(2),R(10,2),DR(4,2),ROUT(2),STOR(2),H(2), @G@@@@TD )@@G@@ *IH(2),NAMES(2,2),BASE(2),NHIST(2),NVALUE(2),SCR(2),VALUE(50,2) TE )@@G@@@D@@@@ DIMENSION IPAR(2),NMOBS(2),IHA(2),IOVER(100) @B@@@@ TF )@@G@@DOUBLE PRECISION DR,DXBAR,DD,DS2,DS3@ @@@@ INTEGER FLGARR,BASE TG )@@G@@@E@@@@ LOGICAL MDATA,ALPHMD,HIST,NAM,FIRST,IPAR ,FRST1 @^@@@@TH )@@G@@ DATA NALHST/50/ @ @@@@ EQUIVALENCE (OBSM,NMS) @[@@@@C TI )@@G@@@^@@@@C INITIALIZATION @[@@@@C @#@@@@ FRST1=.TRUE.@]@@@@TJ )@@G@@ NOBS=0@^@@@@ MNOB=99999999 @C@@[@ CALL S1GTAG('NOBS'TK )@@G@@, IFW, NWE, NEL, $318) @ [@@@ MNOB = BOOL(X(IFW)) @D@@@@ TL )@@G@@IF( NWE .EQ. 2) MNOB = BOOL(X(IFW+1)) - MNOB + 1@#@@[@ GO TO 320 TM )@@G@@@C@@[@ 318 CALL S1GTAG('STJBIN',IFW,DUM,DUM,$320) @^@@[@ MNOB=BTN )@@G@@OOL(X(IFW)) @#@@@@320 CONTINUE @^@@@@ DO 30 J=1,NVARS @#@@@@TO )@@G@@ IOVER(I)=0 @^@@@@ R(8,J)=1.0E38 @^@@@@ R(9,J)=-1.0ETP )@@G@@38 @^@@@@ IPAR(J)=.FALSE. @ @@@@ IF(MDATA)R(7,J)=0 TQ )@@G@@@#@@@@ DO 25 I=1,4 @#@@@@ DR(I,J)=0 @#@@@@ 25 CONTINUE TR )@@G@@@#@@@@ 30 CONTINUE @B@@@@ IF(FLD(0,6,ROUT(1)).EQ.63) GO TO 32 TS )@@G@@@^@@@@ DO 31 J=1,NVARS @C@@@@ IF(FLD(24,6,ROUT(J)).EQ.1) IPATT )@@G@@R(J)=.TRUE. @#@@@@ 31 CONTINUE @#@@@@32 CONTINUE @[@@@@C TU )@@G@@@F@@@@C DETERMINE HOW MANY OBSERVATIONS CAN BE KEPT IN BUFFER TV )@@G@@@ @@@@C BEFORE CALLING S17CPT@[@@@@C @ @@@@ MAXNOB=IAVAITW )@@G@@L/NVARS @G@@@@ CALL S17PRN(XBAR,S2,S3,S4,DUM,NMOBS,NIOBS,NAMES,TX )@@G@@NAM,ROUT,DUM, @A@@@@ *CIALPH,MDATA,.TRUE.,TALPHA) @#@@@@ TY )@@G@@FIRST=.TRUE.@]@@@@ IBUF=1@[@@@@C @E@@@@C IF HISTOGRAMS STZ )@@G@@PECIFIED, RETRIEVE INFO ABOUT THEM @[@@@@C @ @@@@ IF(.NOT.HISTUA )@@G@@) GO TO 321 @E@@@@ CALL S17RHI(SCR,NWSCR,MAXH,H,BASE,BASE,NVARS,$99UB )@@G@@7) @]@@@@ IBEG=1@#@@@@ 321 IBEG1=1 @#@@@@ IALPN=0 UC )@@G@@@^@@@@ DO 35 I=1,NVARS @A@@@@ IF(FLGARR(I).EQ.0) GO TO 33 UD )@@G@@@^@@@@ IALPN=IALPN+1 @^@@@@ NVALUE(IALPN)=0 @#@@@@ UE )@@G@@NHIST(I)=0 @A@@@@ IF(BASE(I).NE.0) NHIST(I)=1 @^@@@@ BASE(IUF )@@G@@)=IBEG1 @^@@@@ IBEG1=IBEG1+NALHST@#@@@@ GO TO 35 @ @@@@UG )@@G@@ 33 IF(.NOT.HIST) GO TO 35 @F@@@@ CALL S17RHT(I,H(IBEG),H(IBEG),UH )@@G@@NHIST(I),DUM,DUM,IDIM,FRST1) @^@@@@ FRST1=.FALSE. @#@@@@ UI )@@G@@BASE(I)=IBEG@^@@@@ IBEG=IBEG+IDIM @#@@@@ 35 CONTINUE @ @@@@UJ )@@G@@ 40 CALL S1INOB(OBS,IEOF) @^@@@@ IF(IEOF+1) 70,,50 @]@@@@ UK )@@G@@RETURN@#@@@@ 50 NOBS=NOBS+1 @#@@@@ NSTOR=IBUF @^@@@@ DO 60 UL )@@G@@I=1,NVARS @^@@@@ STOR(NSTOR)=OBS(I)@^@@@@ NSTOR=NSTOR+MAXNOBUM )@@G@@@#@@@@ 60 CONTINUE @A@@@@ IF(NOBS.LT.MNOB) GO TO 65 @^@@@@UN )@@G@@ PRINT 61,NOBS @G@@@@ 61 FORMAT('0FIRST',I6,' OBSERVATIONS WEUO )@@G@@RE READ IN, READING OF DATA HA@ @@@@ *S BEEN TERMINATED.') @]@@@@UP )@@G@@ IEOF=1@#@@@@ GO TO 70 @#@@@@ 65 IBUF=IBUF+1 @D@@@@ UQ )@@G@@IF(IBUF.LE.MAXNOB .AND. IEOF.EQ.0) GO TO 40 @#@@@@ IBUF=IBUF-1 UR )@@G@@@#@@@@ 70 IALPN=0 @^@@@@ DO 80II=1,NVARS @]@@@@ I=II US )@@G@@@^@@@@ IND=(I-1)*MAXNOB+1@#@@@@ IND1=BASE(I)@A@@@@ IF(FLGUT )@@G@@ARR(I).EQ.0) GO TO 75 @]@@@@ NM=0 @^@@@@ IALPN=IALPN+1 UU )@@G@@@ @@@@ IF(.NOT.ALPHMD) GO TO 79@^@@@@ IFIN=IND+IBUF @]@@@@UV )@@G@@ JJ=IND@^@@@@ DO 78 J=IND,IFIN @A@@@@ IF(STOR(J).NE.CODEUW )@@G@@) GO TO 77 @#@@@@ NM=NM+1 @#@@@@ GO TO 78 @^@@@@ 77 UX )@@G@@STOR(JJ)=STOR(J) @#@@@@ JJ=JJ+1 @#@@@@ 78 CONTINUE @ @@@@UY )@@G@@ NMOBS(I)=NMOBS(I)+NM @#@@@@ 79 NM=IBUF-NM @G@@@@ CALL SUZ )@@G@@17ACP(STOR(IND),NM,IHA(IND1),VALUE(1,IALPN),NVALUE(IALPN), @]@@@@ *VA )@@G@@NN) @ @@@@ IOVER(I)=IOVER(I)+NN @#@@@@ GO TO 80 @G@@@@VB )@@G@@ 75 CALL S17CPT(STOR(IND),IBUF,R(1,I),R(1,I),DR(1,I),H(IND1),H(IND1), VC )@@G@@@G@@@@ *H(IND1),IPAR(I),HIST,.TRUE.,MDATA,NHIST(I),DUM,DUM,FIRST,IOVVD )@@G@@ER(I))@#@@@@ 80 CONTINUE @^@@@@ FIRST=.FALSE. @ @@@@ VE )@@G@@IF(IEOF.GT.0) GO TO 90 @]@@@@ IBUF=1@#@@@@ GO TO 40 @#@@@@VF )@@G@@ 90 IALPN=0 @^@@@@ DO 120 I=1,NVARS @A@@@@ IF(FLGARR(I)VG )@@G@@.EQ.0) GO TO 105 @^@@@@ IALPN=IALPN+1 @#@@@@ IND=BASE(I) VH )@@G@@@ @@@@ NIOBS=NOBS-NMOBS(I) @F@@@@ CALL S17ALP(I,NAMES(1,I)VI )@@G@@,NAM,NHIST(I),IHA(IND),DUMMY,NIOBS, @E@@@@ *NMOBS(I),VALUE(1,IALPN),VJ )@@G@@NVALUE(IALPN),.TRUE.,IOVER(I))@#@@@@ GO TO 120 @#@@@@ 105 OBSM=RVK )@@G@@(7,I) @^@@@@ NIOBS=NOBS-NMS @#@@@@ NMOBS(I)=NMS@ @@@@ VL )@@G@@IF(NIOBS.GT.1) GO TO 110@#@@@@ CALL ERR1 @#@@@@ GO TO 120 VM )@@G@@@ @@@@ 110 DXBAR=DR(1,I) /NIOBS @#@@@@ DS2=DR(2,I) @#@@@@ VN )@@G@@DS3=DR(3,I) @#@@@@ XBAR=DXBAR @^@@@@ DD=DXBAR*DXBAR @^@@@@VO )@@G@@ S2=DS2-DD*NIOBS @B@@@@ S3=DS3-3*DXBAR*DS2+2*NIOBS*DD*DXBAR VP )@@G@@@D@@@@ S4=DR(4,I)-4*DXBAR*DS3+6*DD*DS2-3*NIOBS*DD*DD @F@@@@ VQ )@@G@@CALL S17PRT(I,R(8,I),R(9,I),DUM,R(1,I),DUM,DUM,DUM,DUM,DUM, @#@@@@ *VR )@@G@@NHIST(I)) @A@@@@ IF(NHIST(I).EQ.0) GO TO 120 @#@@@@ IND=BAVS )@@G@@SE(I) @G@@@@ CALL S17HDR(I,NHIST(I),H(IND),H(IND),NIOBS,H(IND),NAM,VT )@@G@@NAMES(1,I), @#@@@@ *IOVER(I)) @#@@@@ 120 CONTINUE @]@@@@ VU )@@G@@RETURN@#@@@@ 997 PRINT 998 @E@@@@ 998 FORMAT('0*****ERROR IN S17ANO.VV )@@G@@ REPORT TO CONSULTANT.')@]@@@@ RETURN@^@@@@ SUBROUTINE ERR1 VW )@@G@@@^@@@@ CALL S1HEDC(2) @#@@@@ CALL S1PHED @ @@@@ PRINT VX )@@G@@1005, I,DR(1,I) @G@@@@ 1005 FORMAT('0*****UNISTAT1 ERROR.ONLY ONE OBSEVY )@@G@@RVATION WAS FOUND FOR VA@G@@@@ *RIABLE',I4,' ITS VALUE IS ',G10.5,'.VZ )@@G@@',/21X,'ANALYSIS FOR THIS VARI@ @@@@ *ABLE WAS DISCONTINUED.')@]@@@@WA )@@G@@ RETURN@]@@@@ END ___F=1@#@@@@ )@@[N#@CS^G@-)@K0@C]@@#>WB )@@G@@G.)__HC9:K@AG.@__IC[@@#XG/)__IC@)@#YR@K@#XG/@__RC@@@#ZAA@@@A)@E[M[#@@-)KWC )@@G@@0@@@@@G_)__JC#)@#&[#)@#$G_)__HC;:K@QG_@__HC#@@#YG")__HC':K@TG"@__IAB@@@AWD )@@G@@)@O[F#@-)^G]A@K0@@@@@@@@G_)__HC;:K@S[#)@#%G_)__IC#)@#)[#)@#(G_)__HC#)@#ZWE )@@G@@[#)@#*AC@@@A)@X[F#@-)^G]A@K0CS@@@@@@G_)__RC#)@#+[#)@#!G_)__HC#)@#+[#)@#?WF )@@G@@G_)__HC#)@#)[#)@#:AD@@@A)@&[F#@-)^G]A@K0CS@@@@@@G_)__PC#)@#Z[#)@#0G_)__IWG )@@G@@C#)@#-[#)@#\G_)__HC#)@#<[#)@#,AE@@@A)@\[F#@]A[#@CS^G@@@@@@@@G_)__HC#)@#=WH )@@G@@[#)@#3G_)__HC#)@#-[#)@#2G_)__HC;:K@C[#)@#1AF@@@A)@8[F#@-)^G]A@K0CS^G@@@@WI )@@G@@[[@@#8[@)@#7[@@@#6G_)__IC#)@#=[#)@#5G_)__IC#)@#<[#)@#4AG@@@A)[[@<#@-)K0CWJ )@@G@@S@@@@@)[\@C@)[ @N#@@@@@@C/@@@[[#)@#.@@@@@2[#@@#/[])@#;[]@@#'[[)@#9AH@@@AWK )@@G@@)[B@V#@-)K0@)]H@K@)[E@V#@-@K0@@@@@]H/,0@@@[@)@[1______NOBS C@)@#^ @@@[0WL )@@G@@[@@@[,AI@@@A)[H[F#@-)K0C]A[#@/*S^G@@A@)@#"[@@@[1C@]J_"R@)@[2@[I@#P/K@@[)WM )@@G@@@@@@[4@@@@[3@@@@[2AJ@@@A)[Q[EK0]@-)KOG@-)@@@@@@@[@@@[1G/@@@[H@@@[1C@]@@@WN )@@G@@R@)@#"/K@@[Z*@@@@GH@@@[3C/@@@]AK@@@A)[Z@F@@@@@@@)]J@K@)[)@<]@-)K0CS@@@@@WO )@@G@@@@@@[5@@@@[2@@@@]J/,0@@@______STJBIN/K@@[%AL@@@A)[=[F#@)CS^G#2-)[#@@@@@@WP )@@G@@R@)@#7G@@@@@C/@__"[@@@[1C@]J_"R@)@[2@[N@#P/K@@[%@@@@[5AM@@@A)[![F#@-)K0]WQ )@@G@@A[#@-)K0CS@@ @ @@@R[K@#_A[K@#_R[K@[7[@@@#"[@@@[^Q[@@#6R[@@# R@0@#,AN@@@AWR )@@G@@)[6[N#@@C@CS@@@@@@9*^)@*9?@@#BN.K@@# @#@@,/)@@[.C@@@@@ @]@@1]@#@@0[@#@@\WS )@@G@@C@@@#AAO@@@A)]@[N@[@@K^G]A@@@@R@)@#8R[K@#7/K@@]O(@@@@IG/)__@C4-@@@8L@@[2WT )@@G@@O/0@@EO/)@@[8LK@["AP@@@A)]E[N#@@)@]@@@@@@@8L@@]FO/)@@[O.K@@[[@ @@1C/@@@[WU )@@G@@/K@@]L*@@@@GG/@__"C=]@@1N[@@#"AQ@@@A)]O[F#@]A[]]-)K0CS^G@@@@@@@@[/@@@@[;WV )@@G@@@@@@['@@@@[9/,0@@@[@@@[8W@@@@@;O@@@=C@@@^@AR@@@A)]X[N#@CS@^G@CS@@@@@@@#DWW )@@G@@@@@@@@@@@@@@@@@@[5@@@@@@@@@@@@@@@@@@@@@@[.@@@@@@@@@@[5AS@@@A)]$[F#@-)^G]WX )@@G@@A@K^CK@@@@@@@@@@@@/,0@@@/=)@]'D@)@@@[@@@[_[@@@[!C/@@@[@[2@#P@@@@["AT@@@AWY )@@G@@)]0[M@[@K0]A@@@@@@[@@@]@C/@@@[@[7@#P/K@@EK@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WZ )@@G@@@@@@@@AU@@@A)]'[MK0CS@^G]A[#@@[@)@[^R@)@#%R[@@#.R@0@#5C_)@@[G@)@@@C/)__"XA )@@G@@ @@@]][@@@][C/@@@[AV@@@A)#^[F#@C@-)K0CS^G@@@@@@@ @ @@1O[K@#:R[K@]][@@@]]XB )@@G@@G@@@]]C/@@@[/K@@#R(@]@@1[#)@[7AW@@@A)#H[M^@^G@-)K0C@@@/K@@#0[@@@][G@@@[\XC )@@G@@[@^@@1C@@@][[@#@@1C/@@@[/K@@#M(@^@@1 @#@@1AX@@@A)#R[N#@-)^@K[@^@@@^^K@#>XD )@@G@@N8N@@1^^K@#@@@@#=@@@@#<@@@@[7/,0@@@AZ@@@AXF )@@G@@)#%[N#@-)K0]A[#@@@G_)@@[O/)@@[O.@@@[O/0@@[[@@@]@G@@@@@[@^@@1C@@@]@ @@@[,XG )@@G@@@]E@#PBA@@@A)#4[F@K+]A[#@CS^[@@@@@@@/G@@^0/@@@#"G@@@]#C/@@@[@]K@#P@@@@]#XH )@@G@@@@@@@@/,0@@@8L@@#^BB@@@A)#.[F@K^[#@CS^G]A[#@@@@@[@)@]^C@)@[_[@@@[0G@@@[0XI )@@G@@C/@@@[@]O@#P/K@@ERN@0@^@/K@@^[BC@@@A)^A[M^G]A@K0CS@K0@C@)@]^[@]@@1C@ )@1XJ )@@G@@O@)@#9R@)@]^[[@@[^Q[K@#'R[K@#EG[@@@@C.@__"BD@@@A)^K[F#@-)K^G]A[@^[]S@@@@XK )@@G@@/,0@@@/K@@^)*@@@@K/D@@^SH[@@[1C[@@[08L@@^F[@)@]^G@)@[8BE@@@A)^T@V#@-)K0@XL )@@G@@)]L@0@@@@@@@NS WERRVATIOH OBSEI6,064FIRST,(006H0@@K@[0@])@#P@@[@]LBF@@@AXM )@@G@@)]R[@@@@@@@@)^W@F]U@@@@@'^@@@@ATED.)TERMIN BEEN TA HAS OF DAEADING IN, RXN )@@G@@E READBG@@@A)^X[MK0C@-)K0]A@@@C.@@@[ @@@@I*@@@]#C/)@@[[@@@[_G@@@[_C/@@@[XO )@@G@@/K@@^0[@@@]#C/@@@[BH@@@A)^$[N#@)@C@-)K0CS@ @@@]]]@@@[_H@@@[_C/@@@[/=0@#5XP )@@G@@+@)@@K @@@@K*@@@@G/G@@^:H@@@[8BI@@@A)^1[E@K0CS^G]A[#@@@@@@@@O@0@#3R@0@[7XQ )@@G@@[@@@[7C@@@] [#)@] [@@@[^C_)@@[G@@@@@C/@__"BJ@@@A)^'[F#@-)K0CS[#@CS^G@@@@XR )@@G@@G@@@#9[@@@]AH/@__"T@@@[8H/@@@[O@)@#4R@)@[7O[@@#?R[@@[7BK@@@A) #[MK0]@-)^XS )@@G@@G]A@K@/>)@ (D[)@@@[[@@]]G[@@]]C.@@@[ @@@]C/K@@AE(@^@@1[@)@]BC@+@@1BL@@@AXT )@@G@@) H[F#@-)K0CS^G]A@@@@@@@C@ @@1[]@@[ R[K@@G[])@]EC])@]AH]@@]A[]@@]DG]@@[_XU )@@G@@C]@@]ABM@@@A) Q[M^@K0CS^[#@-)@C@ @@1O@)@#9R@)@]E/K@@ =[@@@]CG@@@]CC/@@@[XV )@@G@@/K@@ X*@@@@G"^@@@@BN@@@A) )[M^G]A@K[#@CS@@C@@@]C[@#@@1G@@@]CC@#@@18LK@ PXW )@@G@@O.K@@[[@)@]EG@)@]EC/)@@[[@]@@1BO@@@A) %[##@-)K0CS^G]A[#@-)@@@@@@@@O[K@#;XX )@@G@@R[K@]BO@)@#:R@)@]]O[@@#9R[@@]A]@@@]CH@@@[_BP@@@A) 2[N#@CS[@^@K@@@@N8M@@1XY )@@G@@^^K@A[N8Y@@@^^K@ "N8O@@1^^K@A@N8P@@1G@)@#$T/)@@2C@)@]]BQ@@@A) /[F@K+*]A[XZ )@@G@@@K^[#@-)@@@@@#A@#P@@@@]F@@@@A]@@@@A[@@@@A@@@@@]C@@@@ "/,0@@@^^K@A]BR@@@AYA )@@G@@)A [F#@-)K0CS^[#@-)K0CS@R@)@]BO[@@#9R[@@]AR[K@[7/K@@B@[@#@@@G@@@]FC@#@@@YB )@@G@@R@0@[7BS@@@A)AI[F#@-)K0CS^G]A@K0CS@@C@)@[7G@@@#!T/@@@EC@@@[7O[)@#\R[)@[7YC )@@G@@O@0@#/R@0@[7O@)@#2BT@@@A)AR[MK0]@C@)]@@@@@^^K@A2N8Y@@%^^K@A1N8W@@*^^K@A,YD )@@G@@N8O@@1^^K@A0N8W@@*G@)@#(;@)@@-BU@@@A)A-[MK[@^@K[@@@@@@^^K@A'N8Q@@1^^K@A6YE )@@G@@N8N@@1^^K@A5N8M@@1^^K@A4N8M@@1^^K@A3N8M@@1BV@@@A)A:[F#@)CL=[#@)C]@)@@@@@YF )@@G@@@@@@A3@@@@A2@@@@A1@@@@A0@@@@[_@@@@A,/,0@@@^^K@A"N8P@@@BW@@@A)A4[F@K^@K0]YG )@@G@@@-)K0@@@@@@@@@@@[5@@@@[5@@@@A'@@@@@@@@@@#D@@@@@@@@@@A6@@@@A5@@@@A4BX@@@AYH )@@G@@)A.[F#@)CS[@K0CS^@@@@@@@*@@@@G/C@@BBD@@@]# @@@[!8L@@^5G_)@@[@#D@#P@@@@A"YI )@@G@@@@@@[!BY@@@A)BA[N@^G]@-)@K0CS@R@0@#.R@)@#*R.@@@[G@@@@@C/@__" @@@]]/K@@#5YJ )@@G@@[@@@[_C/@@@[/K@@BEBZ@@@A)BK[F#@-)K0CS^G@-)^@@@@@/K@@CA(@D@@1A[@@[7[@@@[^YK )@@G@@R]K@#%R]@@#1R[0@#0R[K@#,R[)@#5CA@@@A)BT[EK0CS^G]A@K0]A@@@@@@[@)@]AC@<@@1YL )@@G@@G@@@#$T/@@@2O])@#:R])@]][@@@]]G@@@]]C/@@@[CB@@@A)B+[F#@-)K0]A[#@C@@@@@@@YM )@@G@@N8M@@0^^K@B;N8Q@@1][@@[.H[@@[0C[B@@1O])@#;R])@]AA])@#"CC@@@A)B:[N@^@K[@KYN )@@G@@0]@@@@^^K@C[N8U@@1R])@#"^^K@C@N8W@@@^^K@B_N8R@@1^^K@B/N8U@@1^^K@B9CD@@@AYO )@@G@@)B5[F#@)CL4G]@C]@-)@@@@@@@@@]G@@@@B/@@@@B;@@@@@@@@@@B9@@@@[7/,0@@@^^K@C#YP )@@G@@N8O@@@CE@@@A)B"[F#@)C]@-)K^G]@@@@@@@C@ @@,/K@@E^@#U@#P@@@@C#@@@@#D@@@@C[YQ )@@G@@@@@@C@@@@@B_@@@@[.CF@@@A)CB[F#@-)K0CS^G@C@@@@@@@*@@@@I/G)@CLG/)__"[[B@@1YR )@@G@@C[@@##[@)@[.H@)@##C@)@[0[@@@##CG@@@A)CK[F@K^G]@-)K0@-)@@@@@@")@@#FD@@@@GYS )@@G@@0@@@@HC@K@[.C@@@#F/K@@E^@#-@#P/,0@FV/K@@COCH@@@A)CT[M^G@-)^G@-)K0@9!)@[>YT )@@G@@[@)@[9"/)@@I9(@@[:9!C@@,9*@@[(9?C@@?9*)@[>"?)@@G9?*@@%CI@@@A)C<[N#@-)K0CYU )@@G@@S@K0@@"/@@@G"=@@@M"()@@O"+@@#FD]@@@O0@@@@PC]K@[.C]@@#F9()@[$"()@[>CJ@@@AYV )@@G@@)C![F#@-)[#@]A[#@@@@@@@@"()@[$"-)@#FD[)@@M0@@@@NC[)@#F; )@@=;[)@@[[)@[;".)@@M"-)@@K">@@@O"%@@[(YX )@@G@@"%@@#H9,@@[>"()@[>CL@@@A)C_[F#@-)^G]A[#@CS@@@@@@T.@@@#C[@@[."&@@@K"%@@[(YY )@@G@@"%@@#L9,@@[$">C@@0"(@@[:"(@@#JCM@@@A)DC[MK0@-)K0CS@K0@][@@[/".@@@K">@@@OYZ )@@G@@"(@@[$"(@@[$"-@@#FD[@@@K0@@@@LC[@@#F; @@@=CN@@@A)DM[MK[@^@K^D]A@@@@@@@[7ZA )@@G@@/,0@@@^^K@D>N8Q@@1^^K@DZN8P@@*^^K@DWN8P@@\^^K@DXN8P@@0CO@@@A)DW[F@K^G]@-ZB )@@G@@)K0CS^G]A@@@@@@@[5@@@@[5@@@@[5@@@@[5@@@@[5@@@@DZ@@@@[5@@@@DX@@@@DWCP@@@AZC )@@G@@)D>[F@K0]@CS^G]A@@@@@@@@N8U@@1O])@#2R])@]A[@@@]AC@#@@1/K@@E^(@A@@1@#:@#PZD )@@G@@@@@@D>CQ@@@A)D,[N@^@K[@^[#@@@@N8O@@@^^K@E[N8M@@0^^K@D_N8U@@1^^K@D.N8U@@1ZE )@@G@@^^K@D;N8Q@@1^^K@D/CR@@@A)D8[F@K=*S^[@K^G]@@@@@@@@@@@@@@@@@D_@@@@[.@@@@D.ZF )@@G@@@@@@D/@@@@D;@@@@[7/,0@@@^^K@E]CS@@@A)E[[N@K^G@@@@@@@@@O"@@@CO.0@@[O.K@@EZG )@@G@@O.)@@[O/0@@[O/)@@]O.@@@[@#\@#P@@@@E]@@@@E[CT@@@A)EF[]K^[@K0CN^G]A@)]Z@C@ZH )@@G@@(044H0@#3@#P@@[@]Z/,0@@@@#2@#P/K@@ERN@0@EJ8L@@BQO"K@@[CU@@@A)])[@@@@@@@@ZI )@@G@@)EN@F]U@@@@@'^@@@@.) ULTANTO CONSPORT TNO. REN S17ARROR I*****ECV@@@AZJ )@@G@@)EO[F@K^G]A[#@-)K0CS^G@@9\)@^D9\@@^B9,)@^ 9,@@^#9!)@^[R]0@#Q@#6@#P/K@@ERZK )@@G@@N@0@EQCW@@@A)EX[##@-)K0CS^G]A[#@-)@@@@@@@@R]@@^MR[0@^LR[)@^KR[K@^JR[@@^IZL )@@G@@R@0@^HR@)@^GR@K@^FCX@@@A)E>@:#@-)K0CS^G@@@)#N@C@)E%@F#@@@@@@/K@K#N@@F@@WZM )@@G@@*4@K#NN[K@^QN[@@^PR])@^OR]K@^NCY@@@A)E:@F]W@@@@@)#P@K@)E?@<#@-)K0CS@@@@@ZN )@@G@@9%)@^ 9%@@^#9()@^[AA0@#Q@#6@@]S17ANO/K@@@@CZ@@@A)E0[##@-)K0CS^G]A[#@-)@@ZO )@@G@@@@@@@@A[)@^KA[K@^JA[@@^IA@0@^HA@)@^GA@K@^F9:)@^D9:@@^BDA@@@A)E8[F#@-)K0CZP )@@G@@S^G]A[@K0@@@G/@__HC@@@#Z/K@@FZ^[K@^Q^[@@^PA])@^OA]K@^NA]@@^MA[0@^LDB@@@AZQ )@@G@@)F[[##@-EK0CS^DUA[]S-)@@@@@@@@@@[@]*/,0@@@@#;@#U/,0@@@@#'@#U@@@@#R/,0@@@ZR )@@G@@[@@@^SDC@@@A)FD[##@-)K0]A@^D8@)]*@C@(064H0'^0@@@C8[@@%[[)@@[G[)@^S;[)@@-ZS )@@G@@C[)@[7@@K@[7@#/@#UDD@@@A)]([S@@@@@@@BLE,I4 VARIAND FORAS FOUTION WBSERVAZT )@@G@@ ONE OR.ONLY1 ERRONISTAT*****UDE@@@A)]4[S@@@@@@@ARIABLTHIS VS FOR NALYSIZU )@@G@@,044HA.,/21X5,001H ,G10.LUE ISITS VA,014H DF@@@A)]_@)@@@@@@@)FL@<]U)C]A@ZV )@@G@@@@@@@@@^[@#U/K@@FPN@0@FO'^@@@@.) TINUEDDISCONE WAS DG@@@A)FP@<#@-)K0CZW )@@G@@S@@@@@)#S@C@)FT@N#@-I@@@/K@@@@/K@K#S@@F@@[*4@K#SR@K@^V9!)@^TR]0@#VDH@@@AZX )@@G@@)#U@K@)FV@;#@-)K0C@)C@@@[^@@]5[^@@]"C8FK@@/K@@E_A@K@^V9()@^TAA0@#V@^[@@]ZY )@@G@@ERR1 DI@@@A)F+[N@K^[@K[@K0]A@[@@@#)C8FK@][@@@#>[^@@#6C8FK@[[^@@^2[^@@[:ZZ )@@G@@[^@@]Q[^@@^B[^@@BGDJ@@@A)F?[MK0]A@K^G@-)@@C8FK@C[@K@^@C@VK@B[@@@#X[^@@]+AA )@@G@@C8FK@ [@@@#ZC8FK@^[@@@#+C8FK@#DK@@@A)F6[N@^@K^[@^[@@@@[^@@A7[^@@]?C8FK@GAB )@@G@@[^@@]>[^@@['[^@@A9C8FK@F[^@@]1C8FK@E[^@@]2DL@@@A)G@[N@^@K[@K^@@@@@C8FK@KAC )@@G@@[^@@E@[^@@]-[^@@B'C8FK@J[^@@ QC8FK@I[^@@ FC8FK@H[^@@#TDM@@@A)GE[N#@)]@C]AD )@@G@@@-)^@@[^@@]\C8FK@N[@@@#=[^@@]4[^@@]3C8FK@M[^@@]=C8FK@L[^@@])[@@@#&DN@@@AAE )@@G@@)GO[MK[#@CS^@K0C@@/K@@@@[@@@#YC8FK@U[^@@]Y[@@@#-C8FK@R[@@@#[[)@[;AI )@@G@@".)@@M"-)@@K">@@@O"%@@[("%@@#H9,@@[>"()@[>CL@@@A@@^@@#@@B@@K@@$@@[@@:@@[AJ )@@G@@@@ @^W@C@@GY@@@@@]S1GTAG S17PRN S17RHI S17RHT S1INOBAK )@@G@@ S17ACP S17CPT S17ALP S17PRT S17HDR S1HEDCAL )@@G@@ S1PHED NPRT$ NIO2$ NERR3$ NIO1$ S17ANOAM )@@G@@ @@[@@@@@@@E?BLANK$ ^@@@C@@]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[S@@@*SDFF*@G@@@@ SUBROUTINE S63ANL(B,A,Q,AO )@@G@@P,R,S,T,U,V,W,X,Y,Z,XM,SD,TSTRAT,SDSV, @B@@@@ - ZZ,NAM,BABUF,BAAP )@@G@@VBUF,BAVAR,NMS) @ @@@@ IMPLICIT INTEGER (A-Z) @F@@@@ DIMENSAQ )@@G@@ION B(1),A(1),Q(1),P(1),R(1),S(1),T(1),U(1),V(1),W(1) @B@@@@ DIMENSAR )@@G@@ION X(1),Y(1),Z(1),XM(1),SD(1)@^@@@@ REAL XM,T,X,Y,V,SD@]@@@@ AS )@@G@@REAL R@A@@@@ DIMENSION TSTRAT(1),SDSV(1) @^@@@@ REAL TSTRAT,AT )@@G@@SDSV @B@@@@ DIMENSION NAM(2,1),NMS(2,1),ZZ(1) @#@@@@ REAL ZAU )@@G@@Z @C@@@@ DIMENSION BABUF(1),BAVBUF(1),BAVAR(1) @[@@@@C AV )@@G@@@[@@@@C @D@@@@C ANALYSIS CONTROL ROUTINE FOR FACTOR3. AW )@@G@@@[@@@@C @[@@@@C @A@@@@ REAL DF,TEMP,SUM,SSQ,DFBETA @ @@@@AX )@@G@@ EQUIVALENCE (TEMP,KEMP) @^@@@@ REAL TEST,TSTVAL @[@@@@C AY )@@G@@@#@@@@ COMMON IX(2)@[@@@@C @G@@@@ COMMON/ S6BLK /INP,NX ,AZ )@@G@@NC,VECT, RAW, RES,TCOP,TPAK,TRAW,TROT, @G@@@@ 1PCOP,PPAK,PRAW,PROBA )@@G@@T, MAX,QMAX,MLE,FPCA,NF,DET ,NRF,ITER,EPS, @G@@@@ 2DELTA,CRIT,PBB )@@G@@ROC,IO(4),ITERS ,IORTH,SCORES,DF,NOBS,INCOM,H(200), @^@@@@ 3ICALC,BC )@@G@@E(4),F(4) @B@@@@ DATA E /'0***** FACTOR3 ERROR NO.'/ @B@@@@ BD )@@G@@DATA F /'0***** FACTOR3 NOTE NO.'/ @[@@@@C @E@@@@ COMMON/S6FMTBE )@@G@@S/NAMPRO(7),SUBNAM(7),DATFMT(5),VECFMT(2),@F@@@@ *NAMCOV(7),GATFMT(6BF )@@G@@),GECFMT(3),FUMFMT(6),GUMFMT(3),LUMFMT(6),@E@@@@ *MUMFMT(6),NUMFMT(4BG )@@G@@),NAMFMT(6),OFORM(5),QFORM(5),IBLANK@ @@@@ DATA IBLANK/6H / BH )@@G@@@F@@@@ DATA ( DATFMT(I),I=1,5)/30H(1X,I3,1X,A6,A2,1X,12F9.3) / BI )@@G@@@C@@@@ DATA ( VECFMT(I),I=1,2)/12H(14X,12F9.3)/ @D@@@@ DATA (BJ )@@G@@ NUMFMT(I),I=1,3)/18H(14X,12(4X,I3,2X))/ @G@@@@ DATA ( MUMFMT(I),IBK )@@G@@=1,6)/36H(14H VARIABLE NO. ,12(4X,I3,2X)) / @G@@@@ DATA (NAMFMTBL )@@G@@(I),I=1,6) /36H(14H NO. NAME ,3X,12(1X,A6,A2)) / @F@@@@ DATA (BM )@@G@@ GATFMT(I),I=1,6)/31H(1X,I3,1X,A6,A2,1X,10G11.5)/ @C@@@@ DATA (BN )@@G@@ GECFMT(I),I=1,3)/13H(14X,10G11.5)/ @F@@@@ DATA ( LUMFMT(I),I=1,6)/BO )@@G@@32H(14H VAR. / FACTOR,12(4X,I3,2X))/@F@@@@ DATA ( FUMFMT(I),I=1,6)/BP )@@G@@32H(14H VAR. / FACTOR,10(5X,I3,3X))/@D@@@@ DATA(GUMFMT(I),I=1,3)/BQ )@@G@@18H(11X,10(5X,I3,3X))/ @E@@@@ DATA ( OFORM(I),I=1,5)/25H8F8.5) BR )@@G@@ /@B@@@@ DATA ( QFORM(I),I=1,5)/25H6E10.5) @[@@@@BS )@@G@@C @D@@@@ COMMON /S63FMT/EATFMT(5),MAMFMT(6),BUMFMT(6) @C@@@@BT )@@G@@ DATA EATFMT/'(1X,I3,1X,A6,A2,2X,9G12.5)'/ @E@@@@ DATA MAMFMT/BU )@@G@@'(14H NO. NAME ,5X,9(A6,A2,4X))'/ @E@@@@ DATA BUMFMT/'(14H BV )@@G@@VARIABLE NO. ,9(6X,I3,3X)) '/ @[@@@@C @ @@[@ COMMON /S63BBW )@@G@@LC/ C(300) @E[@@@ COMMON /S63NBK/IPCOEF,IRPCOR,MAXCOR,NRMLZE,BWEPSBX )@@G@@,BWDEL@^@@@@ REAL BWEPS,BWDEL @[@@@@C @D@@@@ COMMON /S63BBY )@@G@@SV/ NADD,BANKSC(2),BANCHR,BANEXT @[@@@@C @^@@@@ DIMENSION ETBZ )@@G@@MES(6)@E@@@@ DATA ETMES /36HEND OF COMPUTATIONS FOR MODEL /CA )@@G@@@[@@@@C @B@@@@ DIMENSION FNAM(2)/'FT3$$1 '/ @[@@@@C CB )@@G@@@^@@@@ EXTERNAL S1SVOB @[@@@@C @[@@@@C @^@@@@C CC )@@G@@ INITIALIZE@[@@@@C @^@@@@ CALL S1HEDC(0) @B@@@@ CALL SCD )@@G@@1GVAL('INTYPE',INP,$99,$99) @B@@@@ CALL S1GVAL('CPTYPE',CPTYPE,$9CE )@@G@@9,$99)@B@@@@ CALL S1GVAL('NVARS',NV,$99,$99) @B@@@@ CALL SCF )@@G@@1GVAL('NMODEL',NMODEL,$99,$99)@E@@@@ IF(NMODEL .NE. 0) CALL S1IODR(CG )@@G@@1,'REWIND',0,0,DUM) @B@@@@ CALL S1GVAL('SCORES',SAVFLG,$99,$99)CH )@@G@@@B@@@@ CALL S1GVAL('BANEXT',BANEXT,$99,$99)@]@@@@ MLE=0 @A@@@@CI )@@G@@ CALL S1GVAL('MLE',MLE,$99,$40)@#@@@@ 40 CALL S1TIMI @^@@@@ CJ )@@G@@CALL S1INHC(2) @C@@@@ CALL S1GTAG('OVERFL',LVFW,DUM,DUM,$999) CK )@@G@@@C@@@@ CALL S1GTAG('IDMAT',LSUBHD,DUM,DUM,$999) @^@@@@ LSUBHDCL )@@G@@=LSUBHD+2 @ @@@@ IX(LSUBHD)=' ' @ @@@@ IX(LSUBHD+1)CM )@@G@@=' ' @#@@@@ LOCFNM=0 @C@@@@ CALL S1GTAG('FOTNMS',LOCCN )@@G@@FNM,DUM,DUM,$50) @^@@@@ 50 NAMES=NMS(1,1) @^@@[@ DO 60 J=1,30CO )@@G@@0 @][@@@ 60 C(J)=J@ @@@@ CALL S1VLSD(Z,NUSED,$99)@#@@@@ CP )@@G@@NVTOT=NV @#@@@@ NV=NUSED @A@@@@ IF(SAVFLG .NE. 0) SAVFLGCQ )@@G@@=NVTOT@#@@@@ DO 65 J=1,NV@]@@@@ K=Z(J)@^@@@@ NAM(1,J)=NMSCR )@@G@@(1,K) @^@@@@ NAM(2,J)=NMS(2,K) @#@@@@ 65 Z(J+NV)=Z(J)@^@@@@ CS )@@G@@NW=NV*(NV+1)/2 @#@@@@ GO TO 100 @ @@@@ 99 CALL S1SERR('FACTOCT )@@G@@R3.') @#@@@@ GO TO 999 @[@@@@C @^@@@@C INPUT DATACU )@@G@@@[@@@@C @]@@@@ 100 IERR=0@A@@@@ GO TO (102,120,150,160),INP CV )@@G@@@#@@@@ 102 KEMP=Z(1) @ @@@@ IF(NV .EQ. NVTOT) Z(1)=0@F@@@@ CW )@@G@@CALL S1RDI2(NV,0,SAVFLG,S1SVOB,DF,XM,T,X,Y,R,B,IERR,0,Z) @#@@@@ CX )@@G@@Z(1)=KEMP @A@@@@ IF(IERR .EQ. 0) GO TO 190 @#@@@@ 105 PRINT CY )@@G@@9100,E@B@@@@ 9100 FORMAT(4A6,' 15. ERRORS IN INPUT') @#@@@@ GO TO CZ )@@G@@999 @C@@@@ 120 CALL S1RCOP(XM,X,Y,R,DF,NV,'SINGLE',IERR) @A@@@@ DA )@@G@@IF(IERR .NE. 0) GO TO 105 @]@@@@ M=0 @^@@@@ DO 130 J=1,NDB )@@G@@V @]@@@@ M=M+J @#@@@@ 130 T(J)=R(M) @#@@@@ GO TO 190 DC )@@G@@@A@@@@ 150 CALL S1RLTM(NV,R,T,E,IERR,NVJ)@]@@@@ DF=0 @ @@@@ DD )@@G@@IF(NVJ .EQ. 0) GO TO 105@#@@@@ GO TO 190 @B@@@@ 160 CALL S1RLT2(DE )@@G@@NV,R,T,E,IERR,NVJ,SD) @]@@@@ DF=0 @ @@@@ IF(NVJ .EQ. 0) GO DF )@@G@@TO 105@^@@@@ DO 170 J=1,NVJ @ @@@@ SDSV(J)=SQRT(ABS(SD(J)))DG )@@G@@@^@@@@ 170 SD(J)=SDSV(J) @A@@@@ 190 CALL S1TIMA(2,'END OF INPUT') DH )@@G@@@[@@@@C @G@@@@C OUTPUT FOR ALL VARIABLES / SET UP TEST ADI )@@G@@ND SDV VECTORS @[@@@@C @]@@@@ 200 TCOP=0@]@@@@ PCOP=0@]@@@@DJ )@@G@@ RAW=0 @#@@@@ NOCOR=0 @#@@@@ COVAR=0 @B@@@@ DK )@@G@@CALL S1GVAL('FILECO',TCOP,$205,$205)@B@@@@ 205 CALL S1GVAL('CARDCO',PCODL )@@G@@P,$210,$210)@B@@@@ 210 CALL S1GVAL('PRODUC',RAW,$215,$215) @B@@@@ 215 DM )@@G@@CALL S1GVAL('NOCOR',NOCOR,$220,$220)@C@@@@ 220 CALL S1GVAL('COVARM',COVDN )@@G@@AR,$225,$225) @#@@@@ 225 CONTINUE @#@@@@ ICALC=2 @ @@@@DO )@@G@@ IF(INP .EQ. 3) GO TO 250@ @@@@ IF(INP .EQ. 4) GO TO 280@A@@@@DP )@@G@@ IF(CPTYPE .EQ. 2) ICALC=1 @#@@@@ NCORP=1 @ @@@@ DQ )@@G@@IF(NOCOR .NE. 0) NCORP=0@G@@@@ CALL S1MOP(NV,DF,XM,T,R,X,Y,XM,V,U,SDR )@@G@@D,R,NAM,Z,1,RAW,COVAR,NCORP, @B@@@@ - PCOP,TCOP,DUMMY,ICALC,MLE,IDS )@@G@@ERR) @A@@@@ IF(IX(LVFW) .NE. 0) GO TO 999 @A@@@@ IF(NMODEL .EDT )@@G@@Q. 0) GO TO 300 @E@@@@ IF(NMODEL .GT. 1) CALL S1VCSR('WRITE',FNAMDU )@@G@@,R,NW,$999) @F@@@@ IF(NMODEL .EQ. 1 .AND. ICALC .EQ. 1 .AND. NODV )@@G@@COR .EQ. 0) @C@@@@ - CALL S1VCSR('WRITE',FNAM,R,NW,$999) @#@@@@DW )@@G@@ CALL S1VFWC @^@@@@ DFBETA=DF*2**-26 @^@@@@ DO 230 J=1,NDX )@@G@@V @#@@@@ SSQ=T(J) @ @@@@ TSTRAT(J)=SSQ/(DF*V(J)) @^@@@@DY )@@G@@ SDSV(J)=SD(J) @#@@@@ SUM=XM(J) @ @@@@ TEMP=(DF*SSQDZ )@@G@@-SUM*SUM)/DF@A@@@@ IF(X(J) .EQ. Y(J)) TEMP=0 @C@@@@ IF(TEMEA )@@G@@P/SSQ .GE. 2.*DFBETA) GO TO 230 @^@@@@ SDSV(J)=1.0E+38 @#@@@@EB )@@G@@ 230 CONTINUE @A@@@@ CALL S1VFWT(6HANL 1,$999) @#@@@@ EC )@@G@@TEST=1.E7 @ @@@@ IF(INP .NE. 1) GO TO 245@^@@@@ DO 235 J=1,NED )@@G@@V @#@@@@ ZZ(J)=SD(J) @^@@@@ 235 ZZ(J+NV)=XM(J) @^@@@@ EE )@@G@@DO 240 J=1,NV @]@@@@ K=Z(J)@#@@@@ SD(K)=ZZ(J) @^@@@@ 240 EF )@@G@@XM(K)=ZZ(J+NV) @#@@@@ 245 CONTINUE @D@@@@ IF(ICALC .NE. 1 .EG )@@G@@OR. NOCOR .NE. 0) GO TO 300 @^@@@@ CALL COMCOR(R) @G@@@@ EH )@@G@@CALL S1PLTM(R,NAM,Z,37HC O R R E L A T I O N M A T R I X ,@B@@@@EI )@@G@@ - 0,0,DATFMT,NAMFMT,MUMFMT,12,NV) @B@@@@ CALL S1VCSR('READ'EJ )@@G@@,FNAM,R,NW,$999) @#@@@@ GO TO 300 @[@@@@C @D@@@@ 250 IF(NOCEK )@@G@@OR .NE. 0 .AND. IERR .EQ. 0) GO TO 260 @G@@@@ CALL S1PLTM(R,NMS,EL )@@G@@Z,37HC O R R E L A T I O N M A T R I X ,0, @F@@@@ - 'COMPUTED EEM )@@G@@LSEWHERE AND INPUT TO FACTOR3 ',DATFMT,NAMFMT, @^@@@@ - MUMFMT,12EN )@@G@@,NVJ) @A@@@@ IF(IERR .NE. 0) GO TO 105 @E@@@@ 260 IF(NMODEL .GEO )@@G@@T. 1) CALL S1VCSR('WRITE',FNAM,R,NW,$999) @A@@@@ 265 IF(NMODEL .EQ. 0) EP )@@G@@GO TO 300 @#@@@@ TEST=1.E5 @^@@@@ DO 270 J=1,NV @#@@@@EQ )@@G@@ 270 TSTRAT(J)=1.@#@@@@ GO TO 300 @[@@@@C @G@@@@ 280 IF(NOCER )@@G@@OR .NE. 0 .AND. IERR .EQ. 0 .AND. COVAR .EQ. 0) GO TO 285 @ @@@@ ES )@@G@@CALL S1HED2(NVJ,9,0) @G@@@@ CALL S1PLTM(R,NMS,Z,37HC O V A R I AET )@@G@@ N C E M A T R I X ,0,@D@@@@ - 'COMPUTED ELSEWHERE AND INPEU )@@G@@UT TO FACTOR3 ', @A@@@@ - EATFMT,MAMFMT,BUMFMT,9,NVJ)@#@@@@ EV )@@G@@COVAR=1 @A@@@@ IF(IERR .NE. 0) GO TO 105 @A@@@@ 285 IF(CPTEW )@@G@@YPE .NE. 2) GO TO 290 @G@@@@ IF(NMODEL .GT. 1 .OR. NOCOR .EQ. 0EX )@@G@@) CALL S1VCSR('WRITE',FNAM, @^@@@@ - R,NW,$999) @A@@@@ 290 EY )@@G@@IF(NOCOR .NE. 0) GO TO 295 @^@@@@ CALL COMCOR(R) @ @@@@ EZ )@@G@@CALL S1HED2(NV,12,0) @G@@@@ CALL S1PLTM(R,NMS,Z,37HC O R R E L AFA )@@G@@ T I O N M A T R I X , @B@@@@ - 0,0,DATFMT,NAMFMT,MUMFMT,12FB )@@G@@,NV) @E@@@@ IF(CPTYPE .EQ. 2) CALL S1VCSR('READ',FNAM,R,NW,$999) FC )@@G@@@A@@@@ 295 IF(CPTYPE .EQ. 2) GO TO 265 @B@@@@ IF(NOCOR .NE. 0) CFD )@@G@@ALL COMCOR(R) @E@@@@ IF(NMODEL .GT. 1) CALL S1VCSR('WRITE',FNAMFE )@@G@@,R,NW,$999) @#@@@@ GO TO 265 @[@@@@C @B@@@@C BEGIFF )@@G@@N LOOP TO PROCESS MODELS@[@@@@C @]@@@@ 300 NM=0 @A@@@@ IF(NMOFG )@@G@@DEL .NE. 0) GO TO 310 @#@@@@ PRINT 305 @E@@@@ 305 FORMAT('1THEFH )@@G@@RE IS NO FACTOR ANALYSIS TO BE PERFORMED')@]@@@@ RETURN@#@@@@ 310 FI )@@G@@NM=NM+1 @A@@@@ IF(NM .GT. NMODEL) RETURN @D@@@@ IF(NM FJ )@@G@@.NE. 1) CALL S1VCSR('READ',FNAM,R,NW,$999)@[@@@@C @C@@@@C FK )@@G@@ LOAD SPECS AND SET COMMON BLOCK @[@@@@C @B@@@@ CALL S1IODR(FL )@@G@@1,'READ',63,A,LEND) @A@@@@ IF(LEND .GE. 0) GO TO 330 @#@@@@FM )@@G@@ 325 PRINT 9325 @D@@@@ 9325 FORMAT('0***** DRUM LOADING ERROR IN S63AFN )@@G@@NL') @#@@@@ GO TO 99 @]@@@@ 330 NX=0 @]@@@@ NC=1 @#@@@@FO )@@G@@ VECT=A(52) @]@@@@ RAW=0 @#@@@@ RES=A(45) @#@@@@ FP )@@G@@IRPCOR=A(23)@]@@@@ TCOP=0@#@@@@ TPAK=A(54) @C@@@@ IF(TPAFQ )@@G@@K .NE. 0) TPAK=LOCFNM+2*(TPAK-1) @#@@@@ TRAW=A(28) @C@@@@ FR )@@G@@IF(TRAW .NE. 0) TRAW=LOCFNM+2*(TRAW-1) @#@@@@ TROT=A(33) @C@@@@FS )@@G@@ IF(TROT .NE. 0) TROT=LOCFNM+2*(TROT-1) @]@@@@ PCOP=0@#@@@@FT )@@G@@ PPAK=A(53) @#@@@@ PRAW=A(27) @#@@@@ PROT=A(32) @#@@@@FU )@@G@@ MAX=A(1) @ @@@@ IF(A(2) .NE. 0) MAX=A(3)@#@@@@ QMAX=AFV )@@G@@(4) @A@@@@ IF(A(5) .NE. 0) QMAX=A(6) @#@@@@ FPCA=A(8) FW )@@G@@@#@@@@ NF=A(15) @]@@@@ DET=0 @#@@@@ NRF=MAX+QMAX@]@@@@FX )@@G@@ ITER=0@D@@@@ IF(A(12) .NE. 0 .OR. A(16) .NE. 0) ITER=50 FY )@@G@@@A@@@@ IF(A(17) .NE. 0) ITER=A(18) @#@@@@ IPCOEF=0 @G@@@@FZ )@@G@@ IF(A(41) .NE. 0 .OR. A(42) .NE. 0 .OR. A(43) .NE. 0) IPCOEF=1 GA )@@G@@@#@@@@ EPS=A(42) @#@@@@ DELTA=A(43) @C@@@@ IF(DELTA .NEGB )@@G@@. 0) DELTA=LOCFNM+2*(DELTA-1) @#@@@@ TEMP=.005 @#@@@@ CRIT=KGC )@@G@@EMP @A@@@@ IF(A(19) .NE. 0) CRIT=A(19) @#@@@@ PROC=A(46) GD )@@G@@@#@@@@ ICALC=2 @A@@@@ IF(PROC .LT. 6) GO TO 340 @#@@@@GE )@@G@@ ICALC=1 @]@@@@ PROC=1@#@@@@ 340 IO(1)=0 @#@@@@ GF )@@G@@IO(2)=0 @#@@@@ IO(3)=0 @#@@@@ IO(4)=0 @#@@@@ GG )@@G@@ITERS=A(21) @#@@@@ IORTH=0 @#@@@@ SCORES=0 @A@@@@ GH )@@G@@IF(A(36) .NE. 0) SCORES=1 @B@@@@ IF(A(37) .NE. 0) SCORES=SCORESGI )@@G@@+2 @B@@@@ IF(A(38) .NE. 0) SCORES=SCORES+4 @#@@@@ KEMP=AGJ )@@G@@(38) @C@@@@ IF(KEMP .NE. 0) KEMP=LOCFNM+2*(KEMP-1) @ @@@@ GK )@@G@@SCORES=SCORES+8*KEMP @#@@@@ NOBS=DF @#@@@@ INCOM=A(48) GL )@@G@@@#@@@@ MAXCOR=A(49)@#@@@@ NRMLZE=A(56)@#@@@@ BWEPS=.00116GM )@@G@@@#@@@@ KEMP=A(58) @A@@@@ IF(A(57) .NE. 0) BWEPS=TEMP @#@@@@GN )@@G@@ BWDEL=0.0 @#@@@@ KEMP=A(60) @A@@@@ IF(A(59) .NE. 0) BGO )@@G@@WDEL=TEMP @#@@@@ NVSPEC=A(47)@#@@@@ MVAR=A(47) @ @@@@ GP )@@G@@IF(MVAR .EQ. 0) MVAR=NV @#@@@@ MODNUM=A(50)@A@@@@ IF(NVSPEC .EGQ )@@G@@Q. 0) GO TO 350 @B@@@@ CALL S1IODR(1,'READ',MVAR,ZZ,LEND) @A@@@@GR )@@G@@ IF(LEND .LT. 0) GO TO 325 @^@@@@ DO 346 J=1,MVAR @#@@@@GS )@@G@@ TEMP=ZZ(J) @^@@@@ DO 344 I=1,NV @B@@@@ IF(KEMP .NE.GT )@@G@@ Z(I+NV)) GO TO 344 @]@@@@ Z(J)=I@#@@@@ GO TO 346 @#@@@@GU )@@G@@ 344 CONTINUE @#@@@@ 346 CONTINUE @A@@@@ 350 IF(INCOM .EQ. 0) GGV )@@G@@O TO 360 @B@@@@ CALL S1IODR(1,'READ',MVAR,H,LEND) @A@@@@ GW )@@G@@IF(LEND .LT. 0) GO TO 325 @#@@@@ 360 NADD=A(61) @A@@@@ IF(NADGX )@@G@@D .EQ. 0) GO TO 370 @^@@@@ BANKSC(1)=A(62) @^@@@@ BANKSCGY )@@G@@(2)=A(63) @#@@@@ DO 364 K=1,9@ @@@@ CALL S1PRFT(BANKSC,K,CH)GZ )@@G@@@A@@@@ IF(CH .NE. ' ') GO TO 364 @#@@@@ BANCHR=K-1 @#@@@@HA )@@G@@ GO TO 365 @#@@@@ 364 CONTINUE @C@@@@ 365 CALL S1IODR(1,'REAHB )@@G@@D',NADD,BAVAR,LEND) @A@@@@ IF(LEND .LT. 0) GO TO 325 @#@@@@HC )@@G@@ 370 CONTINUE @[@@@@C @E@@@@C PREPARE MATRIX AND VECHD )@@G@@TOR T OF TEST RATIOS @[@@@@C @E@@@@ 400 IF(CPTYPE .EQ. 2 .AND. HE )@@G@@ ICALC .EQ. 2) CALL COMCOR(R) @A@@@@ IF(NAMES .EQ. 0) NAM(1,1)=0 HF )@@G@@@]@@@@ QUIT=0@A@@@@ IF(NVSPEC .EQ. 0) GO TO 420 @A@@@@ HG )@@G@@CALL S1SELT(R,NV,MVAR,Z,ZZ) @^@@@@ DO 410 J=1,MVAR @]@@@@ HH )@@G@@K=Z(J)@^@@@@ T(J)=TSTRAT(K) @F@@@@ IF(IERR .NE. 0 .AND. SHI )@@G@@DSV(K) .GT. 1.0E+37) QUIT=QUIT+1 @#@@@@ K=Z(NV+K) @]@@@@ HJ )@@G@@Z(J)=K@A@@@@ IF(NAMES .EQ. 0) GO TO 410 @^@@@@ NAM(1,J)=NMSHK )@@G@@(1,K) @^@@@@ NAM(2,J)=NMS(2,K) @#@@@@ 410 CONTINUE @#@@@@ HL )@@G@@GO TO 450 @^@@@@ 420 DO 425 J=1,NV @]@@@@ Z(J)=J@A@@@@ HM )@@G@@IF(NAMES .EQ. 0) GO TO 425 @^@@@@ NAM(1,J)=NMS(1,J) @^@@@@ HN )@@G@@NAM(2,J)=NMS(2,J) @^@@@@ 425 T(J)=TSTRAT(J) @#@@@@ QUIT=IERR HO )@@G@@@[@@@@C @E@@@@C SET PRINT FLAG AND MODEL NO. - CALL S6HP )@@G@@3AMD @[@@@@C @]@@@@ 450 PRNT=0@A@@@@ IF(A(22) .NE. 0) GO TO 4HQ )@@G@@70 @]@@@@ PRNT=1@A@@@@ IF(MVAR .NE. NV) GO TO 470 @^@@@@HR )@@G@@ DO 455 J=2,NV @A@@@@ IF(Z(J-1) .GT. Z(J)) GO TO 470@#@@@@HS )@@G@@ 455 CONTINUE @A@@@@ IF(ICALC .EQ. 1) GO TO 460 @ @@@@ HT )@@G@@IF(NOCOR .EQ. 0) PRNT=0 @ @@@@ IF(PRNT .NE. 0) NOCOR=0 @#@@@@ HU )@@G@@GO TO 470 @ @@@@ 460 IF(COVAR .NE. 0) PRNT=0 @ @@@@ IF(PRNT .NE.HV )@@G@@ 0) COVAR=1 @#@@@@ 470 TSTVAL=TEST @^@@@@ IX(LSUBHD)='MODEL'@#@@@@HW )@@G@@ AN=' ' @]@@@@ ICH=5 @A@@@@ IF(MODNUM .LE. 9999) ICHHX )@@G@@=4 @A@@@@ IF(MODNUM .LE. 999) ICH=3 @ @@@@ IF(MODNUM .LHY )@@G@@E. 99) ICH=2@ @@@@ IF(MODNUM .LE. 9) ICH=1 @B@@@@ CALL S1ENCI(HZ )@@G@@MODNUM,AN,ICH,ICH,1) @^@@@@ IX(LSUBHD+1)=AN @A@@@@ IF(QUIIA )@@G@@T .EQ. 0) GO TO 480 @#@@@@ CALL S1PHED @^@@@@ PRINT 9475,QIB )@@G@@UIT @G@@@@ 9475 FORMAT('0***** FOR',I4,' VARIABLE(S) THE VARIANCE IS ZIC )@@G@@ERO OR CANNO@A@@@@ -T BE COMPUTED ACCURATELY') @#@@@@ PRINT ID )@@G@@9476 @G@@@@ 9476 FORMAT(10X,' THUS THE CORRELATION MATRIX IS SINGULAR OIE )@@G@@R CANNOT BE @ @@@@ -COMPUTED ACCURATELY') @^@@@@ PRINT 9477,AIF )@@G@@N @F@@@@ 9477 FORMAT('0***** FACTOR ANALYSIS NOT PERFORMED FOR MODELIG )@@G@@ ',A5)@#@@@@ GO TO 310 @#@@@@ 480 CONTINUE @ @@@@ CALL SIH )@@G@@63AMD(MVAR,MVAR+1,@B@@@@ - B,A,Q,P,R,S,T,U,V,W,X,Y,Z,XM,SD, @#@@@@II )@@G@@ - NAM, @ @@@@ - BABUF,BAVBUF,BAVAR, @^@@@@ - TSTIJ )@@G@@VAL,PRNT,ZZ)@#@@@@ ETMES(6)=AN @ @@@@ CALL S1TIMA(6,ETMES) IK )@@G@@@#@@@@ GO TO 310 @[@@@@C @ @@@@C ERROR RETURNS IL )@@G@@@[@@@@C @#@@@@ 999 PRINT 9999,F@G@@@@ 9999 FORMAT(4A6,' 27. ANALYSIIM )@@G@@S TERMINATED BECAUSE OF PREVIOUS ERRORS') @]@@@@ RETURN@[@@@@C IN )@@G@@@[@@@@C @F@@@@C LOCAL SUBROUTINE TO COMPUTE CORR. MATRIX FROMIO )@@G@@ COVARIANCE @[@@@@C @ @@@@ SUBROUTINE COMCOR(R) @#@@@@ IP )@@G@@REAL R(1),TT@]@@@@ M=1 @^@@@@ DO 1010 I=1,NV @^@@@@ IQ )@@G@@DO 1000 J=1,I @ @@@@ TT=R(M)/SDSV(I)/SDSV(J) @ @@@@ IF(TT IR )@@G@@.GT. 1.) TT=1. @ @@@@ IF(TT .LT. -1.) TT=-1. @#@@@@ R(M)=TIS )@@G@@T @]@@@@ 1000 M=M+1 @#@@@@ 1010 CONTINUE @]@@@@ RETURN@]@@@@IT )@@G@@ END ___ .AND. SDSV(K) .GT. 1.0E+37) QUIT=QUIT+1 @#@@@@ IU )@@G@@)@@[N#@CS[#@CS[#@@G"@__"C]@@^HG.)__"C[)@^DG.@__.C[@@^DG/)__.C@)@^BG/@__"IV )@@G@@C@@@^EAA@@@A)@E[N#@CS[#@CS@K0@R@K@^MG_)__.C;:K@^[#)@^NG_)__"C#)@^FG_@__"IW )@@G@@C#@@^CG")__"C])@^BAB@@@A)@O[F#@-)K0]A[#@CS^G@@@@[#)@^QR@0@^IG_)__"C#)@^GIX )@@G@@[#)@^PG_)__.C#)@^H[#)@^OR@)@^LAC@@@A)@X[F#@CS^G@-)K0]A@@@@@@[#)@^TG_)__"IY )@@G@@C#)@^M[#)@^SG_)__.C#)@^G[#)@^RG_)__"C#)@^JAD@@@A)@&[F#@CS^G@-)K0]A@@@@@@IZ )@@G@@[#)@^WG_)__.C#)@^J[#)@^VG_)__"C#)@^K[#)@^UG_)__.C#)@^LAE@@@A)@\[F#@]A[#@JA )@@G@@-)K0CS^G@@@@[])@^+[]@@^-[[)@^)[[@@^Z[@)@^Y[@@@^XR9FK@[G_)__.C#)@^MAF@@@AJB )@@G@@)@8@V#@-)K0@)#!@6G@@@@@@ FACTO0*****OR NO.R3 ERR FACTO0*****A@K@^>[#)@^=JC )@@G@@[#@@^@YK@@@@@@FACTORAR. / (14H V)) ,I3,2X,12(4XFACTORAR. / (14H VAL@@@AJI )@@G@@)@*@6K@@@@@@)[^@YK@@@@@@ 8F8.5)3,3X))0(5X,I(11X,1)) ,I3,3XJJ )@@G@@,10(5XAM@@@A)[B@"K@@@@@@)@@@QO@@@@@@,1X,A6(1X,I3 ) JK )@@G@@6E10.5 AN@@@A)@][YO@@@@@@ARIABL(14H V4X)) A6,A2,,5X,9(AME JL )@@G@@O. N(14H N5) ,9G12.,A2,2XAO@@@A)@H@&O@@@@@@)@A@*@@@@@@@MODEL S FOR JM )@@G@@TATION COMPUEND OF) I3,3X),9(6X,E NO. AP@@@A)@F@S@)@;@V#@-[K0@)@,@K@JN )@@G@@@@@@@@______INTYPE@@@@#*/,0@@@A[@@^& FT3$$1 AQ@@@A)@"@3#@-]K0CJO )@@G@@S4[@@@)@0@K@@@@@@@______CPTYPE/K@@#D/K@@#D@@@@@@@@@@@,/,0@@@@][@^@AR@@@AJP )@@G@@)[^@3#@-]K0CS^[@@@)@2@K@@@@@@@______NVARS /K@@#D/K@@#D@@@@@I@@@@@0/,0@@@JQ )@@G@@@]]@^@AS@@@A)[E@3#@-]K0CS^[@@@)@4@K@@@@@@@______NMODEL/K@@#D/K@@#D@@@@@JJR )@@G@@@@@@@2/,0@@@@]#@^@AT@@@A)[K@3#@-]K0CS^[@@@)@6@K@@@@@@@______REWIND/K@@#DJS )@@G@@/K@@#D@@@@@K@@@@@4/,0@@@@]^@^@AU@@@A)[Q[F#@-)K^CUA[#@-)K0CS@@@@@@L@@@@#*JT )@@G@@@@@@#*@@@@@6@@@@#(/,0@@@/K@@[)(@@@@K@] @^@AV@@@A)@8@K@)[Z@3#@-]K0CS^[@@@JU )@@G@@@@@@@@/K@@#D/K@@#D@@@@@M@@@@@8/,0@@@@]B@^@______SCORESAW@@@A)@'@K@)[>@3#JV )@@G@@@-]K0CU^[@@@@@@@@@/K@@#D/K@@#D@@@@@^@@@@@'/,0@@@@]C@^@______BANEXTAX@@@AJW )@@G@@)[:@F#@@@@@@)@/@K@)[?@<#A-]K0CS0@@@@@@@@@K@@@@@//,0@@@ @@@@K______MLE JX )@@G@@@]D@^@AY@@@A)[0@;@K^G]^L#@- K0@@@@@@)@"@C@OVERFL@@@@#%/,0@@@@]G@^@/,0@@@JY )@@G@@@]F@^@/K@@[3/K@@#DAZ@@@A)@_@C@)[7@;#@-AK0CS^G]A[@@@@@@/K@@PW@@@@@L@@@@@LJZ )@@G@@@@@@@N@@@@@"/,0@@@@]H@^@______BA@@@A)[@@K@)["@3#@-AK0CS^G]A@@@@@@@@@@@@LKA )@@G@@@@@@@L@@@@@O@@@@[@/,0@@@@]I@^@______IDMAT BB@@@A)]^[F@K0]A[#@-)K0JE]@@@@KB )@@G@@[@-@@@[@-J_"C@)@#:R@K@@O[@@@@OG@@@@OC/@@@]@]J@^@/K@@PWBC@@@A)[]@K@)]H@3#KC )@@G@@@-AK0CS^G]A@@@@@@@@@@@@L@@@@@L@@@@@P@@@@[]/,0@@@ @@@@P______FOTNMSBD@@@AKD )@@G@@)]N[F@K0]A@^G]A[;G@@@@@@[@^J_"C@@@@RA[@@@RN.@@^:R.@@@[[@@@@QC@]@@@@]O@^@KE )@@G@@/K@@]PBE@@@A)]W[EK^C8-)K^G]A[#@@@@@@[@@@@TC@@@@J@]V@^@/K@@#D@@@@@S@@@@@@KF )@@G@@/,0@@@8L@@]TO.@@@[BF@@@A)]>[F#@-)[#@-)K0CS^G@@@@(@@@@M[[@@^*[@)@^$G[@@^=KG )@@G@@G[@@@JC.@@@[G/)__"[@)@@JC@)@@SBG@@@A)],[F@K0CS^G]A[#@-)K0CS@Q[K@^IR[K@#!KH )@@G@@Q[@@^TR[@@#?Q@K@^*R@K@#?[@@@@MC@@@@T/K@@]1BH@@@A)]7[N#@CS[#@@@@@@@C@^)@[KI )@@G@@[[ )@[C[G@@[[@>@@@C@?@@@G@@@^U;@@@@<[@@@@UC@^@@[N[@@^$BI@@@A)#[[]K[#@-)^KJ )@@G@@G]@@@@)[^@C@FACTOR/K@@#H[@)@@V;K)@@[T@)@@JG@)@@JC/)@@[8L@@]8[@[)@[BJ@@@AKK )@@G@@)[ @K@)#D@;]K-)K0C]A[#A@$'0@@ RA0@@@ @@@@W/K@@PW@]%@^@@@@@[^/,0@@@______KL )@@G@@3. BK@@@A)#K[F@K?*S^[@K^[#@@@@@@@C@[@@@R@K@^>/K@@^(/K@@^X/K@@#_/K@@#RKM )@@G@@@]!@^@'^@@@@8];@#MBL@@@A)#T[F#@-)K0]@-)^DEA@@@@@@@@@@J/,0@@@ @^@@@R[@@^>KN )@@G@@/K@@#)*@@@@GH@@@@JC@@@@T[@@@#$BM@@@A)#+[N#@-)K)CS0@@@@@@@@@@@@@@@@@@@@@@KO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@-@@@@@@@@@@@M@@@@#*BN@@@A)#?[F#@-)^G]A[#@CS^@@@@@KP )@@G@@/K@@ (@@@@W[@ @@@R[K@^>C@@@#$@]1@^@@@@@@@@@@@#*@@@@@WBO@@@A)#5[#]4-)K0CKQ )@@G@@S[#A-VK@@@@@@@@@@@8L@@#''^K@@@C8[)#?N.@@@#R@K@#,@]5@^@@@[@[B/,0@@@BP@@@AKR )@@G@@)[B@*@@@@@@@)#.@N]8)@@@@)[G@C@SINGLE/K@@PW'^@@@@INPUT)RS IN . ERRO20H 15KS )@@G@@(4A6,0BQ@@@A)[H@C@)#_[#]O@CS4G]A@@@@@@@@[G@@@@@J@@@@@-@@@@@@@@@@@@@@@@@@KT )@@G@@@@@@@@/,0@@@______BR@@@A)^B[F#@-)K0C]A@K0]A@@@@@R[@@#?C_)@@[G@@@@JC/@__"KU )@@G@@ @@@@X/K@@#5*@@@@W@].@^@@@@@@WBS@@@A)^K[F#@CS^G]A[#@-)K0@@@@C@>@@[O[K@^OKV )@@G@@R[K@@X[@@@@XG@@@@RC@@@@X[#)@@R[@@@[^Q[@@^VBT@@@A)^T[M^[@K>*S@K1*S@@@@@@WKW )@@G@@@@@@#!@@@@@@@@@@@@@@@@@J/,0@@@/K@@ 8L@@^MG_)@@[[@=)@[BU@@@A)^<[F#@-)K1*KX )@@G@@S^[@K&CS@@@@@@@@@@@@@@@J/,0@@@/K@@ /K@@#5(@@@@Y @@@@-@#C@^@@@@@@YBV@@@AKY )@@G@@)^?[EK1*S^G@-)K1*S^@@@@@/K@@#5(@@@@Y @@@@-@#H@^@@@@@@@@@@@@Y@@@@@W@@@@#!KZ )@@G@@@@@@@@BW@@@A)^5[EK0CS^G]A[#@]A@@@@@@[@@@^$E@ @@[[@@@[^Q[K@^)R[K@#?Q@K@^-LA )@@G@@R@K@#?G@@@@YC/@__"BX@@@A)^"@;]'-)K0@C@@@@@)[I@K@ INPUTEND OF8L@@^/[@>)@[LB )@@G@@C@-)@[[@[@@[@#O@^@@@@@^$/,0@@@BY@@@A)[K@C@) @;]U-)K0CS^GUAH#A@@@@ @@@@^LC )@@G@@ @@@@E @@@@A@#R@^@@@@@[I@@@@#%/,0@@@______BZ@@@A) G@F#@@@@@@)[L@K@) H@<#LD )@@G@@@-]K0CS0@@@@@@@@@A@@@@[L/,0@@@ @@@@)______FILECO @@@@ZCA@@@A) L@V@K^G@@@LE )@@G@@)[N@K@) O@V]^-)K1)@@@@@E@@@@[N/,0@@@______CARDCO@#X@^@/K@@ O/K@@ OCB@@@ALF )@@G@@) R@V@K^G@@@)[P@K@) U@V]^-)K1)@@@@@^@@@@[P/,0@@@______PRODUC@#Y@^@/K@@ ULG )@@G@@/K@@ UCC@@@A) X@V@K^G@@@)[R@K@) )@V]^-)K0@@@@@@Z@@@@[R/,0@@@______NOCOR LH )@@G@@@#Z@^@/K@@ )/K@@ )CD@@@A) <@V@K^G@@@)[T@K@) &@V]^-)K0@@@@@@)@@@@[T/,0@@@LI )@@G@@______COVARM@#)@^@/K@@ &/K@@ &CE@@@A) ([N@K^G@-<^GS)@@C/)@@^/K@@DJ(@@@@ILJ )@@G@@H@)@@@C/)@@#[@@@#?C/@@@]@#-@^@/K@@ ?/K@@ ?CF@@@A) 3[N#AC@-)^@K1)@@C/@@@[LK )@@G@@[@@@#?C/@@@[/K@@ /*@@@@GH@@@@IC/@@@]/K@@D_(@@@@IH@)@@@CG@@@A) .[F#@-)K^GLL )@@G@@]^9#@-<@@@@@@@@@@@@@@@@@@@@@@-@@@@@J/,0@@@ @@@@-/K@@A[(@@@@Z[@@@@-CH@@@ALM )@@G@@)AA[U@@@K0@@@@@@#(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LN )@@G@@@@@@@@CI@@@A)AL[##A-)K0CS4GUA[#A-<@@@@@@@@@@@@@K@@@@#?@@@@@+@@@@@A@@@@@ELO )@@G@@@@@@@-@@@@@)@@@@@^CJ@@@A)AT@3#@-)K0JE@-)@@)[V@K@@@@@@@______WRITE (@@@@KLP )@@G@@/K@@PW*@^J_"R[@@@N@#!@^@@@@@@WCK@@@A)AZ[N@^G@C]^.#@-)@@@@@@@@@@@@G@@@@[VLQ )@@G@@/,0@@@/K@@A?1@@@@G*@@@@GH@@@@KC/@@@[/K@@F\CL@@@A)A(@N#@)@@@@)[X@K@)A:@<#LR )@@G@@@]A@@@H@)@@KC/)@@[C/@@@[@#3@^@______WRITE /K@@PW@@@@@VCM@@@A)A\[M@K1)]A@LS )@@G@@@@@@@@*@@@@ZC/)@@[+@@@@I @@@@I*@@@@KH[@@#?C.@@@[C/)@@[ @@@@G*@@@@ICN@@@ALT )@@G@@)A9[M[@K$*S^G@-)K@/K@@PW@@@@@V@@@@@@@@@@@G@@@@[X/,0@@@/)K@B^+@@@@I;^@@@=LU )@@G@@ @@@@ICO@@@A)B#[F#@-KK0CS4G]A@K0CS@@R@K@^RG@)@@JC/)__"[@@@@]"G@@#\C@@@@-LV )@@G@@@#6@^@/,0@@@@#5@^@CP@@@A)BG[F#@-)K0CS^G]A[#@@@@@C@ @@[[@)@[^R])@^-R]K@^)@[C@&)@[[@^)@[C@[)@[[@)@^*[@@@^$CY@@@A)CX[F#@-)K0CMG )@@G@@S^G@-)K0CS@@O])@^YR])@@U[@@@@UC@B)@[N[@@^$Q]K@^*R]K@#?Q]@@^QR]@@#?CZ@@@AMH )@@G@@)C&[N#@-)@^@K0@@@@ @@@@G(@@@@ZC/@@@[8L@@C+[[E@@[C[D)@[[@-@@[C@*)@[O@K@^ZMI )@@G@@R@K@@UDA@@@A)C0[E^GS]@)@)[-@C@C O R @@@@@@/,0@RL/=K@F\)@@@@I @@@@I(@@@@KMJ )@@G@@H[@@#?C.@@@[C/)@@[DB@@@A)[+@8@@@@@@@)C9@N#@-M@@@/,0@@@@^V@^@______ MK )@@G@@ I X A T RO N MA T I R E L DC@@@A)C;[E[#@-)K0CT^G+AK@@@@@@@@@@4@@@@@"ML )@@G@@@@@@@I@@@@#*@@@@#*@@@@[-@@@@@@@@@@@@@@@@@@DD@@@A)D^@N#@-)@@@)[(@K@)DA@V#MM )@@G@@@-JK0@@@@@@@@@@@[(/,0@@@@^W@^@______READ @@@@@J@@@@#3DE@@@A)DD[N#@CS^[#MN )@@G@@@)]A@@C/)@@[ @@@@G*@@@@WC/@@@[/K@@F\@^X@^@/K@@PW@@@@@V@@@@@@@@@@@GDF@@@AMO )@@G@@)DN@V#@@@@@@)[:@0@@@@@@@ I X A T RO N MA T I R E L C O R +@@@@I @@@@IMP )@@G@@(@@@@ZDG@@@A)[1[K@@@@@@@@@@@@@______OR3 O FACTNPUT T AND IEWHEREED ELSMQ )@@G@@COMPUT______ DH@@@A)DQ[F@K(@CS^G]A[#C@@@@@@@@@@@I@@@@[3@@@@#*@@@@[:MR )@@G@@@@@@@@@@@@@@@@@@@@/,0@@@/=K@D&DI@@@A)DZ@;#C-=K0CS^G]A[@@@@@@)[;@C@WRITE MS )@@G@@/K@@#5*@@@@W@^-@^@@@@@@Y@@@@#3@@@@@4@@@@@"DJ@@@A)[/@C@)D&[]K0@)CN4G]A@@@MT )@@G@@@@@@@G@@@@[;/,0@@@/K@@D21@@@@G*@@@@GH@@@@KC/@@@[______DK@@@A)D,[EK0C]A[#MU )@@G@@@)CS^G@@@@@@C/)__"[@@@@#C@@@#4/K@@F\(@@@@K@^>@^@/K@@PW@@@@@V@@@@@@DL@@@AMV )@@G@@)D7[F#@-)K0]A@K^@@@@@@@@C/@@@[/K@@F\8L@@D;[@^)@[C@@@#5[@)@[^Q[@@^RR[@@#?MW )@@G@@G@)@@JDM@@@A)E@[N#@]A@[#@@@@@@+@)@@H @@@@I*@@@@)C/)@@[+@@@@I @@@@I(@@@@ZMX )@@G@@C/)@@[ @@@@G*@@@@WDN@@@A)EE@:@K(*S^G]A@@@@)[.@S@@@@@@@A N C A R I C O V MY )@@G@@@@@@#*@@@@#6@@@@@Y/,0@@@/=0@E-DO@@@A)]@[S@@@@@@@O FACTNPUT T AND IEWHEREMZ )@@G@@ED ELSCOMPUT______ X T R IE M ADP@@@A)]F@K@)EJ@;#@-M@K0CS@@@@NA )@@G@@@@@@#*@@@@[.@@@@@@@@@@@@@@@@@@/,0@@@@^1@^@______OR3 DQ@@@A)EQ[F#@->K2*NB )@@G@@TOG]A[#@CS@@[@@@@)C/@@@[@^2@^@@@@@@Y@@@@#6@@@@@F@@@@@ @@@@@@@@@@] DR@@@ANC )@@G@@)EZ@:#@)]A@@)]H@K@)E=@F@@@@@@@/K@@E7______WRITE *@@@@GH@@@@IC/@@@]/K@@#5ND )@@G@@*@@@@WDS@@@A)E>[MK0@CS@@@@@@@@)@@@@I @@@@I1@@@@K*@@@@KH[@@@KC.@@@[C/)@@[NE )@@G@@ @@@@G*@@@@ZC/@@@[DT@@@A)E\[F@K$*S^G@-)K^G]A@@@@*@@@@Z@^9@^@/K@@PW@@@@@VNF )@@G@@@@@@@@@@@@@G@@@@]H/,0@@@/)K@E7DU@@@A)E8[#@K[#@-NK0CS^G@@@@@@@@@@@@@@@@#*NG )@@G@@@@@@#3@@@@@J/,0@@@@^/@^@@@@@@@/,0@RL/K@@FTDV@@@A)]J[@@@@@@@@)F@@F#@@@@@@NH )@@G@@@^.@^@______ I X A T RO N MA T I R E L C O R DW@@@A)F[[F]=@-)K0NI )@@G@@CS^G+AK@@@@@@@@@@"@@@@@I@@@@#*@@@@#*@@@@]J@@@@@@@@@@@@@@@@@@/,0@@@DX@@@ANJ )@@G@@)FE@V#C-)K0@)]R@K@)FH@V#@CS@@@H@@@@IC/@@@]@^"@^@______READ @@@@@J@@@@#3NK )@@G@@@@@@@4DY@@@A)FK[EK^D'A[#@CS^[#@@@@@@@ @@^@/K@@PW@@@@@V@@@@@@@@@@@G@@@@]RNL )@@G@@/,0@@@/K@@FT*@@@@GDZ@@@A)FT[]K0]@-)K^@@@@@)]T@C@WRITE @@@@@@/,0@RL/K@@F+NM )@@G@@(@@@@Z/K@@D2(@@@@GH@@@@IC/@@@]EA@@@A)]U@C@)F-[##@CS@K^D'A@@@@@@@]T/,0@@@NN )@@G@@/K@@F,1@@@@G*@@@@GH@@@@KC/@@@[@ ^@^@______EB@@@A)F([F#@CS^[#@)CS^G]@@@@@NO )@@G@@/K@@F9*@@@@K @@@@@C@)G#[##@CS[@K$*S^G@@@@@@G@@@@]=/,0@@@/K@@GJNT )@@G@@(@@@@GH@@@@@@3R[K@^&[@@@@]C/@@@[ @@@@[/K@@#D'^@@@@NY )@@G@@63ANL)EK@@@A)G>[F#ACS1#I-<^GUAG@@@@@(@@@@B[]@@@BC] @@5 @@@@A[[)@@[C[>@@QNZ )@@G@@[[@@@ C[ @@? @@@@^EL@@@A)G,[F@^GS-)K1*S[#A@@@@@@[@@@@CC@A@@VR[)@^&]@@@@BOA )@@G@@H@@@@P;@@@@R[)@^&[@@@@)G@@@@)C/@@@]/K@@I_(@ @@=R[K@^&FB@@@AOS )@@G@@)J#[F#A-R@K@^&[@@@@)OT )@@G@@G@@@@)FC@@@A)JG[EK0CS^G@-C@^@@,R[@@^&FH@@@AOZ )@@G@@)J'@UK0CS@@@)]\@K@)J.@V@K-*S@@@@@@#(/,0@@@/K@@K:______READ (@@@@>[@@@@$PA )@@G@@C@ @@1FI@@@A)K@[F#@-)^G]A@K0]A@@@@@@G@)@@JC/)__"G@@@@&C/@__"@A3@^@@@@@@=PB )@@G@@@@@@@@@@@@@&@@@@]\FJ@@@A)KD[EK0CS^G]@C@-)@@@@@@@R[)@^TC_0@@[/K@@GU*@@@@MPC )@@G@@/H)@KKD[)@@=G[@@^=G[@@@JC.@@@[FK@@@A)KM[F#@CS^G]A@K0]A@@@@@@R])@^*C_)@@[PD )@@G@@[@@@#$C@[@@[[#0@@R[[@@^*[@)@^$[@@@[^R@K@^QFL@@@A)KV[N#@-)^G@)CS[@@O")@@[PE )@@G@@/K@@K$[@A@@[C@@@@ /K@@K=*@@@@GH@@@#$C@E@@[[#)@@ N[K@^$FM@@@A)K>@'K@^[#A@PF )@@G@@)]1@K@@@@@@@______READ (@@@@<8L@@KQG_0@@[O/K@@[O.)@@[8LK@KWG_)@@[FN@@@APG )@@G@@)K?[F@K-*S^G]A[#A-)K0CS@D@@@@=@BB@^@@@@@@=@@@@@=@@@@@&@@@@]1@@@@#(/,0@@@PH )@@G@@/K@@K8FO@@@A)K5[F@^[#@CU^H]@@@@@@@@@C@$@@./K@@LY(@@@@@[@@@@@C@B@@/R[0@^&PI )@@G@@/K@@GU*@@@@G/G@@K8FP@@@A)K"[F#KCU@K0CP^H]A@@@@@@@@@@@U@@@@@[/,0@@@[#)@@UPJ )@@G@@N.@@@CC_)@@[[[@@@]C[B@@"[@)@@[FQ@@@A)LB[F#@-)K0CS[@^G]A)@@@@]@@@@#H@@@@UPK )@@G@@C/@@@[/K@@LL*@@@@GH@@@#:C@@@@*@BM@^@@@@@@*FR@@@A)LK@V@^@@@@@)]3@K@)LN@V]PL )@@G@@A-)K0@@@@@]3@@@@#(/,0@@@______READ 8L@@L#G_)@@[/K@@LNFS@@@A)LQ[N#KCS^G]PM )@@G@@A[@^@@C/)@@]C/@@@[/K@@GU*@@@@G/G@@LYD@@@@=@BT@^@@@@@@=@@@@@@@@@@@@FT@@@APN )@@G@@)L)[N#A@CS@^@@@@@@/)K@L!+@@@@I @@@@I*@@@@KH[@@@IC.@@@]C/)@@[ @@@@G*@@@@IPO )@@G@@H@)@#?FU@@@A)L%[F@^G]A[@^G]A[@@@@@@@/K@@M\(@@@@> @@@@( @#@@@/K@@L0*@@@@QPP )@@G@@@BY@^@@@@@@@/,0@RLFV@@@A)L3[N]%CS^G@CS[#@@ @@@@G(@@@@WC/@@@[@B=@^@@@@@@@PQ )@@G@@@@@@@@@@@@@&@@@@@J@@@@@@/,0@@@FW@@@A)L.[EK0CS^G]A@K0]A@@@@@@[@@@@UC@D@@[PR )@@G@@[@@@^$[@)@[^R[@@^VR]K@^TR]@@^IG@)@@&C/)__"FX@@@A)MA[F#@-)K0CS^G]A[#@@@@@PS )@@G@@[@=@@[C@%@@[O[)@^=O[)@@UR[)@@JO@K@^PR@K@@UO])@^WR])@@UFY@@@A)MJ[N#@-)^G]PT )@@G@@A@@K0@+@@@^$ @@@@G1@@@@I*@@@@I"^>@@[R[K@^*C@)@#;C/@@@[A[)@^(A@K@^*FZ@@@APU )@@G@@)MT[F@^G]A[#@CS[#@@@@@@@G@@@^U;@@@@<[@@@@UC@B@@[R[0@^([@@@@(G@@@@(C/@@@[PV )@@G@@/)K@MXGA@@@A)M+[N#@CS^@@@@@@@@O"K@@[O"@@@][[*@@[C[?@@[[[C@@@C[G@@@/K@@M%PW )@@G@@(@@@@Q[@(@@[C@)@@UGB@@@A)M?[EK^@K0]A[#@-)@@@@@@@R[)@^IR@K@^TR])@^LC_)@@[PX )@@G@@G@@@@JC/@__"/K@@NG8L@@M^O.@@@[GC@@@A)M5[F#@-)K0CS[#@-)^G@@@@(@@@@Q[@[@@[PY )@@G@@C@@@@R[#)@@R[@@@[^Q[0@^VR[0@#?Q[K@^RR[K@#?GD@@@A)M"[V@@@@@@@G_)@@[O.)@@]PZ )@@G@@O/K@@[O")@@][@B)@[C@ )@[[[A@@[C[E@@[[@&@@@C@%@@@/K@@N#GE@@@A)ND[F@K0CS^GQA )@@G@@]A@K[#@@@@@@[@@@@%C/@@@[/K@@N6*@^@@PR[@@^& @@@@%[@)@@(C@)@@W8L@@M'GF@@@AQB )@@G@@)NM[F#@-)^@K0]A@@@@@@@@@[@)@[^R]@@^MC_)@@]G@)@@JC/)__./K@@N6*@@@@IH@)@@JQC )@@G@@C@)@@&GG@@@A)NV[N#@]@C@C@@@@@@C/@@@[8L@@NVG_)@@[O"@@@[/K@@N6*@@@@G/C@@N-QD )@@G@@H@C@@@C@C@@[[#)@@RGH@@@A)N>[F#AC]A[@K0CS^[#@@@@@ @@@@Z/K@@N,(@@@@% @@@@%QE )@@G@@/K@@N:*@@@@Z/K@@N\(@@@@GH@@@#?GI@@@A)N,[F@K0C]A[#@)]A[#@@@@@C@@@@#[@@@@)QF )@@G@@C/@@@[/K@@N6(@@@@% @@@@%/K@@N2(@@@@)/K@@N6GJ@@@A)N7[F#@-)K0JEA[#@CS@@@@@QG )@@G@@C/@]WJ[[)@@?C.)@@ [[@@@:C[@@#:[@(J_"C@)@#/R]K@@O[@@@@^GK@@@A)O@[N#@)]@CSQH )@@G@@[#@)@@*@@@@G/C@@OFH@@@@$C/@@J$[@@@@?C/@@@^/K@@OA*@@@@G/C@@O^H@@@@$GL@@@AQI )@@G@@)OE[N@^G@-)K[@^G@@[@@@@?C/@@@]/K@@OO*@@@@G/C@@OMH@@@@$C/@@[<[@@@@?C/@@@#QJ )@@G@@/K@@OHGM@@@A)OO[EK0C@)]A[]?-)@@@@@@@@@@@@$/,0@@@[@@@@?C/@@@[/K@@OV*@@@@GQK )@@G@@/C@@OTH@@@@$C/@@@DGN@@@A)OX[F#@-)K0CS^G]A[#@)*S@(@@@@([@[@@@C@@@@:R@K@@OQL )@@G@@@C=@^@@@@@#(@@@@@?@@@@@?@@@@@:GO@@@A)O&@;@K:*S^FMA[#@-)@@@@@)]5@C@(010H0QM )@@G@@@@K@@(@C(@^@@@[@]5/,0@@@@C*@^@/,0@@@/K@@O8GP@@@A)]6[S@@@@@@@ BE COCANNOTQN )@@G@@RO OR IS ZERIANCETHE VALE(S) VARIAB,066H FOR,I4***** GQ@@@A)#[@S@)O!@<]QO )@@G@@8-UK0CS@@@@@)#^@C@(10X,0@C!@^@@@[@#^/,0@@@'^@@@@ATELY) ACCURMPUTEDGR@@@AQP )@@G@@)# [S@@@@@@@PUTED BE COMANNOT R OR CINGULAX IS S MATRILATION CORREUS THEQQ )@@G@@73H THGS@@@A)#K@K@)O1@:]8-UK0CS^G@@@)#M@C@(047H0@@K@@:@C0@^@@@[@#M/,0@@@QR )@@G@@'^@@@@TELY) ACCURAGT@@@A)#N[C@@@@@@@@@@[C@@@@@@@5) DEL ,AFOR MOORMED QS )@@G@@T PERFSIS NO ANALYFACTOR***** GU@@@A)O6[F]8)]A[#@-SK0CS@@@@@@@@@@@@@@@^$QT )@@G@@@@@@@&/,0@@@[@@@^$G@@@@&C/@@@[/K@@F9'^@@@@GV@@@A)O_[U@@@@@@@@@@@@@@@@@@@QU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GW@@@A)PE[M@@K0CS@QV )@@G@@@@@@@@@@@@@@@@@@@%@@@@@^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GX@@@AQW )@@G@@)PO[F#@-)K0CNOG]A[#@)CQ)/,0@@@/K@@F9@C8@^@@@@@@A@@@@#./,0@@@[@@@@FC@@@@:QX )@@G@@@C6@^@GY@@@A)PX@;#@-)K0]AH]6)@)#W@K@51H 27(4A6,08L@@P-'^K@@@C8 )#0N.@@@#QY )@@G@@R[K@#,@C'@^@@@[@#WGZ@@@A)#Y[C@@@@@@@@@@[C@@@@@@@) ERRORSVIOUS OF PREQZ )@@G@@CAUSE TED BEERMINAYSIS T. ANALHA@@@A)P=[F]8)C]A[#@-)K0CS^G@@9\@@^09,)@^,RA )@@G@@9,@@^?9!)@^%R]0@^[@D[@^@/K@@P*N@0@P$'^@@@@HB@@@A)P![##@-)K0CS^G]A[#@-)@@RB )@@G@@@@@@@@R[0@^'R[)@^9R[K@^8R[@@^7R@0@^6R@)@^5R@K@^49\)@^2HC@@@A)P5@3#@-)K0CRC )@@G@@S^G]A@)#"@C@@@@@@@@@@@@@@@F@@S*4@K#"N[K@^_N[@@^"R])@^.R]K@^/R]@@^;HD@@@ARD )@@G@@)P;@N#@-Y@@@)^@@K@)P.@V#@-)K0@@@@@@@9%@@^?9()@^%AA0@^[@D[@@]S63ANL/K@@@@RE )@@G@@/K@K#"HE@@@A)Q@[##@-)K0CS^G]A[#@-)@@@@@@@@A[K@^8A[@@^7A@0@^6A@)@^5A@K@^4RF )@@G@@9:)@^29:@@^09%)@^,HF@@@A)QC[F#@-)K0CS^G]A[#@)@@@C/@__"/K@@RV^[K@^_^[@@^"RG )@@G@@A])@^.A]K@^/A]@@^;A[0@^'A[)@^9HG@@@A)QL[F#@-)^G]A@K0CS@@@@@@G/)__.C@)@ #RH )@@G@@[@@@@XC/@@@[[@)@ ][@@@ [G/)__"C@)@^HG@@@@JHH@@@A)QU[EK0CS^G]A@K0CS^G@@@@RI )@@G@@R@)@ ][@@@ G@@@@ C/@__"[#)@@ [@)@ ^N[@@ [R@K@ ]C_)@@[HI@@@A)Q<[F#@-)K0@RJ )@@G@@CS^G]A@@@@@@C@@@#5A@0@ A[@@@@!"G]@@["G[@@[C@#@@[O@0@ ^R@0@@XN[K@ HJ@@@ARK )@@G@@)Q?[F#@]@-)K0CS^G@@@@@@@*@@@@G"@@@#5C@@@@![@@@@!C@@@#5/K@@Q21@@@@G*@@@@GRL )@@G@@"^@@@!HK@@@A)Q5[EK^G]A[#@-)[#@@@@@@@G@)@@XC/)@@[[@#@@[R@0@ AC@@@@![@@@@!RM )@@G@@D@@@#5/K@@Q91@@@@GHL@@@A)Q"[N#@C@C]@)CS^G@R]0@^ @DR@^^/K@@RBN@0@RA8L@@QYRN )@@G@@G_)@@[O/K@@[8LK@Q=O/)@@[[@)@@XHM@@@A)RC@;#@-)K0CS^G]A[#@@@@@)^]@C@@@F@@]RO )@@G@@*4@K^]N[K@ HN[@@ GR@0@ FR@)@ ER@K@ D9\)@ BHN@@@A)RJ@N#@-Y@@@)^^@K@)RL@V#RP )@@G@@@-)K0@@@@@@@A@K@ D9:)@ BAA0@^ @DR@@]COMCOR/K@@@@/K@K^]HO@@@A)RO[F#@-)K0CRQ )@@G@@S[#@)]@@@@@@[^@@#:C8FK@@/K@@QK[@@@ #C8FK@@^[K@ H^[@@ GA@0@ FA@)@ EHP@@@ARR )@@G@@)RX[N@^[@^@K[@@@@@[^@@C8C8FK@^[^@@P[C8FK@#[^@@P@C8FK@][^@@O_[^@@GNC8FK@[RS )@@G@@[^@@O"HQ@@@A)R$[F@K^[@K^[@K^@@@@@@@@[^@@GF[^@@^:[^@@AA[^@@E3[^@@E'[^@@F]RT )@@G@@[^@@DE[^@@L:[^@@B@HR@@@A)R0[F@K^[@K^[@K^@@@@@@@@[^@@A*[^@@C;[^@@L4[^@@^#RU )@@G@@[^@@DS[^@@AH[^@@FP[^@@F)[^@@F%HS@@@A)R9[N@K^[@K[@^[#@@[@@@^K[^@@P^C8FK@ARV )@@G@@[^@@P#C8FK@ [^@@EL[^@@^Z[^@@#%[^@@P][^@@D,HT@@@A)S#[N@K^[@^[@^[@@@[^@@AERW )@@G@@[^@@PAC8FK@C[^@@P [^@@AFC8FK@B[^@@^)[^@@^?[^@@A [^@@#$HU@@@A)SH[N#@C@)CSRX )@@G@@^[@K@@C8FK@F[^@@#*[^@@PC[^@@AB[@@@^C[^@@^[C8FK@E[^@@PBC8FK@D[@@@^FHV@@@ARY )@@G@@)SR[F@K^[@K0]@-)K@@@@@@@[^@@#,[@@@^M[^@@AJC8FK@G[@@@^E[^@@#([^@@PD[^@@ACRZ )@@G@@[^@@^]HW@@@A)S)[N@K^[@K^[@^[@@[^@@A^[^@@ADC8FK@H[^@@DU[^@@PE[^@@F^[^@@ENSA )@@G@@[^@@L7[^@@C.[^@@]ZHX@@@A)S%[N@K^[#@CS^[@K@C8FK@J[^@@^0[^@@PG[^@@AG[@@@^DSB )@@G@@C8FK@I[@@@^B[^@@#&[^@@PF[^@@^@HY@@@A)S4[N#@CS[#@)C]@C@[^@@PHC8FK@M[^@@PNSC )@@G@@[^@@L8[^@@K][@@@^GC8FK@L[@@@^HC8FK@K[@@@^JHZ@@@A)S"[N@K0C@)]@C]@@@[^@@LRSD )@@G@@[^@@PKC8FK@P[^@@PJC8FK@O[^@@PIC8FK@N[^@@C/[@@@^I[^@@AIIA@@@A)TC@2K^[@K0CSE )@@G@@@@@@@@)#*@S@@@@@@]@@@@@[@@@@@@/K@@@@[@@@^L[^@@F#[^@@EM[^@@DTC8FK@QIB@@@ASF )@@G@@)#:[S@@@@@@@KG@@@@MIA*@@@@@@@GN^1FK@Z/?;NFKO@@@@NW@@@@@@[@@[@@]@@@@@[@@@SG )@@G@@ IC@@@A)#6[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AMODEL ZZ-Y8LI/0 =-NS@@@@SH )@@G@@JHB:-M@@@@@_@@@@@DID@@@A@@^@@D@@H@@Z@[F@@[@[J@@B@@ @ I@C@@TI@@@@@]@@@@#5SI )@@G@@@@@@[J@@@@@L@@@@^?@@@@@A@@@@@ S1SVOB S1HEDC S1GVAL S1IODRSJ )@@G@@ S1TIMI S1INHC S1GTAG S1VLSD S1SERR S1RDI2SK )@@G@@ S1RCOP S1RLTM S1RLT2 S1TIMA S1MOP S1VCSRSL )@@G@@ S1VFWC S1VFWT S1PLTM S1HED2 S1PRFT S1SELTSM )@@G@@ S1ENCI S1PHED S63AMD NERR2$ NPRT$ NIO1$ SN )@@G@@ NIO2$ SQRT NERR3$ S63ANL @@[@@@@@@@P.BLANK$SO )@@G@@ ^@@@C@@]@@@@S6BLK ]@@@C@@#@@@@S6FMTS ]@@@C@@^@@@@S63FMTSP )@@G@@ ]@@@C@@ @@@@S63BLC ]@@@C@@A@@@@S63NBK ]@@@C@@B@@@@S63BSVSQ )@@G@@ ]@@@C@@C@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*[S@@@*SDFF*@ @@@@ SR )@@G@@SUBROUTINE S2ANAL(FIRST,@B@@@@ - DINP,OUTS,SETID,MSET,MSETPT, SS )@@G@@@C@@@@ - IVARS,ROWN,ROWPT,COLN,COLPT,BDATA, @A@@@@ - VSUST )@@G@@M,VSSQ,VMIN,VMAX,XBAR) @ @@@@ IMPLICIT INTEGER (A-Z) @E@@@@ SU )@@G@@DIMENSION DINP(1),OUTS(1),SETID(1),MSET(1),MSETPT(1) @G@@@@ DIMENSSV )@@G@@ION IVARS(1),ROWN(1),ROWPT(1),COLN(1),COLPT(1),BDATA(1) @E@@@@ SW )@@G@@DIMENSION VSUM(1),VSSQ(1),VMIN(1),VMAX(1),XBAR(1) @B@@@@ DIMENSSX )@@G@@ION SDV(1),VAR(1),DELTA(1) @C@@@@ DIMENSION TSUM(1),TSSQ(1),TMINSY )@@G@@(1),TMAX(1) @D@@@@ DIMENSION TBAR(1),TSDV(1),TVAR(1),TDELTA(1) SZ )@@G@@@A@@@@ DIMENSION TNAM(1),TNUMB(1) @A@@@@ DIMENSION XPROD(1)TA )@@G@@,XSA(1) @A@@@@ DIMENSION VCONT(1),TCONT(1) @^@@@@ DIMENSTB )@@G@@ION KFLAG(1)@ @@@@ DIMENSION XSQ(1),XSB(1) @^@@@@ DIMENSION NATC )@@G@@MES(1)@[@@@@C @E@@@@C MAIN DSTAT2 SUBROUTINE. (TWO ENTRY POITD )@@G@@NTS ARE USED@E@@@@C BECAUSE OF THE LARGE NUMBER OF PARAMETETE )@@G@@RS.) @[@@@@C @[@@@@C @G@@@@ COMMON /S2ABLK/ NV,NVIN,MDATA,TF )@@G@@REPM,CODES,COPIN,MLE,NSET,PLAN, @A@@@@ - LSUBHD,MLEHED(7),MDDHTG )@@G@@ED(7) @[@@@@C @[@@@@C @]@@@@ RETURN@A@@@@ ENTRY S2ANL2TH )@@G@@(SDV,VAR,DELTA, @ @@@@ - TSUM,TSSQ,TMIN,TMAX, @A@@@@ - TBATI )@@G@@R,TSDV,TVAR,TDELTA, @^@@@@ - TNAM,TNUMB, @^@@@@ - XPRTJ )@@G@@OD,XSA, @^@@@@ - VCONT,TCONT, @#@@@@ - KFLAG, @#@@@@TK )@@G@@ - XSQ,XSB, @#@@@@ - NAMES) @[@@@@C @[@@@@C @B@@@@TL )@@G@@C INITIALIZE IF FIRST CALL @[@@@@C @A@@@@ IF(FIRTM )@@G@@ST .EQ. 0) GO TO 100 @B@@@@ CALL S2LOAD(OUTS,SETID,MSET,MSETPT, TN )@@G@@@C@@@@ - IVARS,ROWN,ROWPT,COLN,COLPT,BDATA, @ @@@@ - IDXTO )@@G@@T,IDSQ,ITSA,ITSB) @[@@@@C @ @@@@C COMPLETE DATA @[@@@@TP )@@G@@C @A@@@@ 100 IF(MDATA .NE. 0) GO TO 200 @A@@[@ CALL S2COMP(TQ )@@G@@DINP,DINP(NV+1), @A[@@@ - OUTS,SETID,MSET,MSETPT, @C@@@@ -TR )@@G@@ IVARS,ROWN,ROWPT,COLN,COLPT,BDATA, @ @@@@ - VSUM,VSSQ,VMIN,TS )@@G@@VMAX, @ @@@@ - XBAR,SDV,VAR,DELTA, @ @@@@ - TSUM,TSSQ,TMIN,TT )@@G@@TMAX, @A@@@@ - TBAR,TSDV,TVAR,TDELTA, @^@@@@ - TNAM,TNUMTU )@@G@@B, @^@@@@ - XPROD,XSA, @#@@@@ - NAMES) @]@@@@ TV )@@G@@RETURN@[@@@@C @D@@@@C MDATA - BIVARIATE SUBSAMPLE METHTW )@@G@@OD @[@@@@C @A@@@@ 200 IF(REPM .NE. 0) GO TO 300 @C@@[@ TX )@@G@@CALL S2BVSS(DINP,DINP(NV+1),DINP(2*NV+1), @A[@@@ - OUTS,SETID,MSETTY )@@G@@,MSETPT, @C@@@@ - IVARS,ROWN,ROWPT,COLN,COLPT,BDATA, @A@@@@TZ )@@G@@ - VCONT,VSUM,VSSQ,VMIN,VMAX, @ @@@@ - XBAR,SDV,VAR,DELTA, UA )@@G@@@A@@@@ - TSUM,TSSQ,TMIN,TMAX,TCONT, @A@@@@ - TBAR,TSDV,TVAR,UB )@@G@@TDELTA, @^@@@@ - TNAM,TNUMB, @ @@@@ - XPROD,IDXT,XSQ,UC )@@G@@IDSQ, @ @@@@ - XSA,ITSA,XSB,ITSB, @#@@@@ - KFLAG, @#@@@@UD )@@G@@ - NAMES) @]@@@@ RETURN@[@@@@C @B@@@@C MDATUE )@@G@@A - REPMEANS METHOD @[@@@@C @C@@[@ 300 CALL S2REPM(DINP,DINP(NVUF )@@G@@+1),DINP(2*NV+1), @A[@@@ - OUTS,SETID,MSET,MSETPT, @C@@@@ -UG )@@G@@ IVARS,ROWN,ROWPT,COLN,COLPT,BDATA, @A@@@@ - VCONT,VSUM,VSSQUH )@@G@@,VMIN,VMAX, @ @@@@ - XBAR,SDV,VAR,DELTA, @A@@@@ - TSUM,TSSQUI )@@G@@,TMIN,TMAX,TCONT, @A@@@@ - TBAR,TSDV,TVAR,TDELTA, @^@@@@ -UJ )@@G@@ TNAM,TNUMB, @ @@@@ - XPROD,IDXT,XSQ,IDSQ, @ @@@@ - XSAUK )@@G@@,ITSA,XSB,ITSB, @#@@@@ - KFLAG, @#@@@@ - NAMES) @]@@@@UL )@@G@@ RETURN@]@@@@ END ___ @A@@@@ DIMENSION VCONT(1),TCONTUM )@@G@@(1) @^@@@@ DIMENSION KFLAG(1)@ @@@@ DIMENSION XSQ(1),XSB(1) UN )@@G@@@^@@@@ DIMENSION NAMES(1)@[@@@@C @E@@@@)@@[N@K^G]@-@@@@@@@@@@@@UO )@@G@@@@@@@@@@@@@@@@@@@@/,0@@@/K@@@P(@@@@@@[K@@A/K@@]5N@0@@]AA@@@A)@E[M@[#]A^GUP )@@G@@CS@@@@@@@@@#@@@@@]@@@@@[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@@@AUQ )@@G@@)@O[N#]])CEA[@K+C@@@@@@X@@@@@@/,0@@@^^K@@XN8L@@@O@K@@DR@K@@@/K@@[[*@@@@]UR )@@G@@@[P@@AAC@@@A)@Y[U@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@US )@@G@@@@@@@@@@@@@@@@@@@@AD@@@A)@([U@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AE@@@A)@4[U@@[#]@@N@0@[@@[S@@A@@@@@@@@@@@@UU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AF@@@A)@_[N@K0)*]]--[^G@N8W@@@UV )@@G@@G@@@@D;@@@@C8FK@D[^@@@=[^@@]J[^@@@G[^@@[QAX@@@A)#0[N@K^[@^[@K^@@@C8FK@GVQ )@@G@@[^@@@$[^@@@J[^@@]M[^@@[TC8FK@F[^@@[S[^@@]L[^@@@I[^@@@&AY@@@A)#'[N@K^@K^[VR )@@G@@@^[@@@[^@@[X[^@@@%C8FK@I[^@@]P[^@@@([^@@[WC8FK@H[^@@@*[^@@]O[^@@[VAZ@@@AVS )@@G@@)^^[N@^[@K[@K^[@@@/K@@@@[^@@]S[^@@[Z[^@@@?C8FK@K[^@@[Y[^@@@:[^@@]RC8FK@JVT )@@G@@[^@@]QBA@@@A)^I[MK[@K^@K^[@@@@[^@@]U[^@@@,[^@@[-C8FK@[[^@@[)[^@@@![^@@]TVU )@@G@@C8FK@@/\K@]'C8@@@QBB@@@A)^S[MK^[@^[@K[@@@@[^@@]XC8FK@^[^@@@0[^@@[<[^@@]WVV )@@G@@C8FK@#[^@@[+[^@@]V[^@@@\C8FK@]BC@@@A)^+[N@K[@K^@K^[@@@[^@@]Z[^@@@3[^@@[&VW )@@G@@C8FK@A[^@@[>[^@@@2[^@@]YC8FK@ [^@@@1[^@@[=BD@@@A)^?[MK^[@^[@K[@@@@[^@@[%VX )@@G@@C8FK@D[^@@[([^@@@5[^@@]+C8FK@C[^@@]-[^@@@4[^@@[*C8FK@BBE@@@A)^6[N@K[@K^@VY )@@G@@K^[@@@[^@@]>[^@@[?[^@@@8C8FK@F[^@@[:[^@@@7[^@@]=C8FK@E[^@@@6[^@@][#)@]5G_)__!C#)@]Y[#)@]4AE@@@A)@\[F#[#@K0K0K0^G^G@@@@@C#)@]Z[#)@]9IN )@@G@@G_)__?C#)@])[#)@]8R@)@]YG_)__?C#)@]<[#)@]7AF@@@A)@8[MK0K0^G@K0K0@@G_)__?IO )@@G@@C#)@]?[#)@]/G_)__:C;:K@G[#)@];G_)__:C#)@]<[#)@]'G_)__?AG@@@A)[][F#[#[#@KIP )@@G@@0K0K0^G@@@@@[#)@]_G_)__:C#)@]([#)@]"R[@@]%G_)__?C#)@]W[#)@].R@0@]?AH@@@AIQ )@@G@@)[F[F#@K0[#[#@K0@@@@@@@@[#)@#]G_)__?C#)@]:[#)@#[G_)__:C;:K@^[#)@#@G_)__?IR )@@G@@C#)@]%AI@@@A)[O[F#@K0K0^G^G@@@@@@@@@G_)__:C;:K@#[#)@#^R[K@]:G_)__?C#)@]=IS )@@G@@[#)@##G_)__?C#)@]$AJ@@@A)[X[F#[#@K0K0^G^G^G@@@@@C#)@]%[#)@#BR[)@](G_)__:IT )@@G@@C#)@]?[#)@#AG_)__:C#)@]:[#)@# AK@@@A)[&[EK0K0K0K0K0K0K0K0@@@[#)@#J[#@@#IIU )@@G@@[])@#H[]@@#G[[)@#F[[@@#E[@)@#D[@@@#CG_)__:AL@@@A)[\[F#[#[#[#[#[#[#@K0@@@IV )@@G@@[@@@@BC@[@@@R@K@#K @@@@AA[)@#OA[K@#NA[@@#MA@0@#LA@K@#KAM@@@A)[8[F][#[#@KIW )@@G@@3^[] #G@@@@@@@@@@[/,0@@@/K@@]W(@@@@GH@@@@CC/@@@]@[V@[2@@@@[Y/,0@@@AN@@@AIX )@@G@@)][[EK3^G4G^G^G^G^G@@@@@@@@@@[@@@@[)@@@@[Y@@@@[Y@@@@[Z@@@@@[@@@@@@@@@@@CIY )@@G@@@@@@@@AO@@@A)]E[U@@@K0@@@@@@[Y@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IZ )@@G@@@@@@@@@@@@@@@@@@@@AP@@@A)]P[M[#H#[#[@K-K3@@@@@@@@@@@@[/,0@@@/K@@]8@[Y@[2JA )@@G@@@@@@@A@@@@@^@@@@@@@@@@@@@@@@@@AQ@@@A)]Z[V#G@[#@@@@@@@@@@@@@@@@@@@@@@@@@[JB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BAR@@@A)]%[U@@K0@@@@@@@@@@@@@@@JC )@@G@@@@@@@@@@@@[Y@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AS@@@A)]5[F#H#[#[#JD )@@G@@[@K^[#[#@@@@ @@@@ @[+@[2/K@@TBN@0@]//K@@].(@@@@A@[)@[2@@@@@A@@@@@^AT@@@AJE )@@G@@)]"[F#H@K0K0K+K0^G4G@@@@R@0@]8G@@@@[C/@__"@[&@[2/,0@@@[@@@@ C@@@[-/K@@#]JF )@@G@@*@@@@AAU@@@A)#B[F#[#[#[#[#[#[#[#[#@@R])@[+Q]K@],R]K@[+R]@@#CR[0@]'R@K@#DJG )@@G@@R[)@]1R[K@#ER[@@#FAV@@@A)#K[N#@^G^G^@K@@@@ @ @@N @D@@N/K@@#X*@@@@G/G@@#SJH )@@G@@"^@@[<[@@@@@C@B@@N[@@@[^Q])@]"AW@@@A)#U[M^@K0@^G@@@@@@"D@@@@C[#@@N"C&@@NJI )@@G@@C@&@@N[@C@@N"G@@@@C@A@@N/K@@^F[@C@@NC@A@@NAX@@@A)#=[MK0K0@K^G^G^G@[@@@@#JJ )@@G@@C@@@@] @@@@]/K@@#?*@@@@G"^^@@NC@[@@N]@)@@]"G)@@@"^)@@KAY@@@A)#,[N#[#[#[#JK )@@G@@@@K^G@D@@@@]/K@@^]0@@@@I*@@@@I"^)@@G"G#@@N"C)@[>[@)@@^"C)@[=C@)@@@AZ@@@AJL )@@G@@)#8[M^[#[#[@^[#[#@[@@@@#C@@@[&/K@@^]*@@@@G/C@@^@D@@@@# @@@@]/K@@#/0@@@@GJM )@@G@@*@@@@GBA@@@A)^][N#[#[#@[#[#@@@N8T)@N[@ @@N"G@@@#"C@@@^C@#@@N]@(@@N"G)@@GJN )@@G@@C@)@@]"^@@@@C@@@@ BB@@@A)^G[N@K*K^G@@@@@@@O/K@@[O.)@@[O.K@@[O.@@@[O/0@@[JO )@@G@@[@E)@N@]@@[2@@@@^I/,0@@@^^K@^IBC@@@A)^Q@+^[#@@@@)@'@K@)^U@N#[]G@@@/,0@@@JP )@@G@@[@)@@@______2BVSS1C@)@@[8L@@#MO"@@@[O.0@@[BD@@@A)^W[F#[@K0K0^G^G^G4G@@@@JQ )@@G@@H@@@@DC@@@@B[@@@@DG@@@@DC/@@@[ @@@@D@]#@[2/K@@T^@@@@@'BE@@@A)^>[E^[@K^G^JR )@@G@@C^G^G@@@@@@@@]C@[2@@@@[$/,0@@@@]B@[2/K@@TBN@0@^%/K@@^:1@@@@G*@@@@GBF@@@AJS )@@G@@)^,[F#[#@K0K3K0K^G@@@@@@(@@@@GH@@@[*/K@@^.(@@@@ER@0@@D[@@@@EC@[@@NO@K@#[JT )@@G@@R@K@@DBG@@@A)^7[F@K0YOG^ @K3K0YK@@@@[@^J_"C@@@[*R[@@@D/K@@ [[@<@@@C@)@@EJU )@@G@@[@#J_"C@@@[(/K@@^.BH@@@A) @[F[K0^G[#[#[@@@@@@@@@C/@@@E/K@@ )*@@@@E[@)@@FJV )@@G@@C@?@@NG@@@# T/@@@OC@@@@D[@^@@@BI@@@A) D[F#H#[][#[#[]K@@@@@@@@@@@@@@@@@@@JW )@@G@@@@@@@@/,0@@@@]Q@[2@@@@#P/,0@@@[@@@#PG@@@@@BJ@@@A) M[M@[#H#[#H#G@@@@@@@@LJX )@@G@@@@@@@E@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BK@@@A) W[F#[#[@K^JY )@@G@@G^G[#[#@@@@@R[)@@D[@@@@GC@ @@NO[K@]0R[K@@D/K@@A\/K@@^)*@@@@F@]R@[2BL@@@AJZ )@@G@@) >[F#@K0K0K0^[@K0@@@@@@@@@@@G/,0@W3^^K@ ,N8R@@NO[0@]!R[0@@H[@)@@HC@&@@NKA )@@G@@O[)@#HBM@@@A) ,[F@K0K0K0K0K0K0^G@@@@[@@@@JC@C@@NO]@@#IR]@@@D@]X@[2@@@@@IKB )@@G@@@@@@[Y@@@@[Y@@@@ ,BN@@@A) 7[F#[@K0K0^G^G^G@@@@@@N8U@@NO])@]!R])@@K[@)@@KKC )@@G@@C@(@@NO]K@#GR]K@@D/K@@AC(@@@@JBO@@@A)A@[F@K^G^[#[#[#[#@@@@@@C/@@@E@]+@[2KD )@@G@@@@@@@I@@@@@G@@@@[Z@@@@A#@@@@@J/,0@W3^^K@A#BP@@@A)AD[F#[#[][#[#[]K@@@@@@@KE )@@G@@@@@@@@@@@@@@@@@@@@/,0@@@@]<@[2@@@@#P/,0@@@[@@@#PG@@@@IBQ@@@A)AM[M@[#[#[#KF )@@G@@H#G@@@@@@@@L@@@@@E@@@@@@@@@@@I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BR@@@AKG )@@G@@)AW[F#[#[@K0K0K0K0K0@@@@(@@@@GH@@@@IG@@@@GC@@@@JO@K@]!R@K@@K/K@@^)*@@@@FKH )@@G@@@]=@[2BS@@@A)A>[F@^[@K0K^G^G^G@@@@@@@@@@@I@@@@@G@@@@[Y@@@@A%@@@@@J/,0@W3KI )@@G@@^^K@A%N8L@@N/K@@A\BT@@@A)A,[F#[#[@^G^G4G^G^G@@@@[@@@@M @@@@J[@)@@GC@)@@@KJ )@@G@@[@@@@LC/@@@[/K@@C>*@@@@E@](@[2BU@@@A)A7[F#@K0^G^G[#[#@@@@@@@G[)@#AG[)@#RKK )@@G@@C.)@@[G[@@]_G[@@#QC.@@@[G@@@#JG@@@@@[@@@@NBV@@@A)B@[M^G@K3@@@@@@@@C_)@@]KL )@@G@@C_@@@[ @@@@Q*@@@@SH#@@@BC_@@@[C")@@[G]@@#BG]@@@@C"@@@[BW@@@A)BE[N#G[@^G[KM )@@G@@#@@@@@;K)@@[T@)@@GG/)@@[[])@@LC")@@]/&0@B8)])@@S @@@@S*@@@@UH#)@@CBX@@@AKN )@@G@@)BO[F#@K0^G[#[#[#@@@@@@@R[)@[+Q[K@#@R[K@[+Q[@@@KR[@@[+Q@0@@GR@0@[+G/)__"KO )@@G@@[@)@@OBY@@@A)BX[N#@K0K0@^[#@@@C@@@@G8L@@B-[@=)@NC@<)@N[@A)@NC@ )@N[]@@#SKP )@@G@@[[)@#P[@)@[^Q[)@]\BZ@@@A)B$[F#[#@K0K0K0K0K0K0@@@Q]K@].R]K@[+Q]@@#]R]@@[+KQ )@@G@@Q[0@#PR[0@[+G/@__"[@@@@OT@@@@GCA@@@A)B0[N#[#@@^@@@@@@@C/@__" @]@@@8L@@B3KR )@@G@@[@$)@NC@%)@N[@C)@NC@D)@N[@@@[^Q])@#SR])@[+CB@@@A)B'[F#H#[#[#[#[#[#[#[#@@KS )@@G@@R]K@]2R]@@]1R[0@]8R[)@]'R[K@]9R[@@]6R@0@##R@K@#^G@@@@@CC@@@A)C#[N#[#[#@@KT )@@G@@@@@@@@[@ @@NC@C@@N[@<@@NC@&@@N[@^@@NC@[@@N[@@@[^[@)@#SC@)@]3R])@]5CD@@@AKU )@@G@@)CH[M^G^[#@^G@@@@@[@%@@NC@:@@NR]0@#S[@E@@MC@F@@MR]0@#S/K@@CR(@@@@B[@(@@NKV )@@G@@C@$@@NCE@@@A)CR[U@@[#@@@O"0@@]R]0@#SO")@@]O"K@@[O"@@@[O.0@@[O.)@@[O.K@@[KW )@@G@@O.@@@[O/0@@[O/K@@[CF@@@A)C+[F#[@K[#[#@K0K0@@@@@@O@K@]:R@K@#RG@)@@@C@)@]%KX )@@G@@G@@@@IC/@__"/K@@E'8L@@CBA]0@#SCG@@@A)C:[F#[#@K0K0K0K0K0K0@@@R[0@[+Q[)@]2KY )@@G@@R[)@[+O[K@]/R[K@@DO[@@]?R[@@@@O@0@](R@0@#QCH@@@A)C4[F#[#[#@K0^G^G^G@@@@@KZ )@@G@@O]K@]4R]K@@C[@@@@CC@C)@N[@)@#S[@@@[^Q]@@]6R]@@[+Q[0@]9CI@@@A)C.[MK0K0K0[LA )@@G@@#[#@@@[@A)@NC@D@@NO]K@];R]K@@C[[B)@NC[E@@NO])@]7R])@@C[@)@@CC@(@@NCJ@@@ALB )@@G@@)DB[F@^G[#[#[#[#@@@@@@@@C"@@@[[[0@@M+[)@@MC[)@[%[[@@@N;L@@@M[[@@@MC[ @@NLC )@@G@@8L@@C9CK@@@A)DK[F#@K3^@K0K0K@@@@@@@@/K@@D/*@@@@J[])@@LC")@@]/K@@E'(@@@@QLD )@@G@@H])@@CC")@@][]@@@LCL@@@A)DT[N#@K^G[@K0^@@@N8N@@@^^K@D2N8Q@@@R[)@#O^^K@D0LE )@@G@@N8T@@@R]K@#M^^K@D1N8U@@@R])@#SCM@@@A)D<[N@K0^@K^G[@@@@N8L@@@^^K@D7N8S@@@LF )@@G@@R]@@#N^^K@D5N8O@@@^^K@D4N8R@@@R[0@#L^^K@D3CN@@@A)D![N@K[@K^[@K^[#G@@@@@[LG )@@G@@@@@@D5@@@@D4@@@@D3@@@@D2@@@@D1@@@@D0@@@@@@/,0@%7^^K@D8CO@@@A)D7[F@K^G^G^LH )@@G@@[#[#@K0@@@@@[@@@@QG/@@@[T@@@@GC@@@@J/K@@E'@#<@[2@@@@@G@@@@D8@@@@D7CP@@@ALI )@@G@@)E@[F#[#@K0K0K0K0K0@@@@@R@K@@@O[@@]:R[@@#RO@0@]>R@0@@GO])@]?R])@@@O[K@](LJ )@@G@@R[K@#QCQ@@@A)ED[F#[#[#[#[#[#[#@K@@@@^^K@E?N8S@@@R]@@#MO[0@#AO[0@@QR[0@#RLK )@@G@@O[)@#AR[)@@QO@K@]%CR@@@A)EM[MK[@K0^@K^G@@@R]@@#L^^K@E\N8P@@@^^K@E,N8T@@@LL )@@G@@R]K@#O^^K@E!N8L@@@^^K@E:N8N@@@CS@@@A)EW[MK[@K0^@K@@@@@N8O@@@^^K@E6N8Q@@NLM )@@G@@^^K@E5N8N@@@R@0@#N^^K@E3N8U@@@^^K@E2N8S@@@CT@@@A)E&[N@^[@^[@K^[@@@@@@@E\LN )@@G@@@@@@E,@@@@E!@@@@E?@@@@E:@@@@@@/,0@,=^^K@E8N8R@@N^^K@E7CU@@@A)E0[F#[#[@K^LO )@@G@@G4[@K^@@@@@@@@@@E8@@@@E7@@@@E6@@@@E5@@@@@[@@@@E3@@@@E2@@@@@J@@@@@GCV@@@ALP )@@G@@)E9@F#@@@@@@)@/@*@@@@@@@)E'@F#@@@@@@R@K@@M______F9.0) ,A2,12,1X,A6(2X,I3LQ )@@G@@@#&@[2CW@@@A)E;[F#[#@K[@K>K^@@@@@@@@@@@@F#@@@@F]/,0@@@^^K@F]N8L@@N^^K@F#LR )@@G@@N8P@@@R[K@#OO@K@#JCX@@@A)F^[F#@^HOG4G^G^H^H@@@@@@@@@@A@@@@@@@@@@@/@@@@[YLS )@@G@@@@@@@L@@@@@W@@@@@@@@@@@@@@@@@LCY@@@A)FH[F#[#[#[#[#[#@K0@@@@@(@G@@@G@@@# LT )@@G@@T/@@@OC@@@@D@#$@[2@@@@@@@@@@@J@@@@@G@@@@[:CZ@@@A)FQ[N@K0K0^G^G[@^@^^K@F-LU )@@G@@N8U@@N^^K@F+N8S@@@O])@#JO])@@MR])@@@O]@@](R]@@#Q/K@@F1DA@@@A)F)[F]P@K^G@LV )@@G@@K5K3K0@@@@@@@@@@[Y@@@@@L@@@@@@@@@@@@@@@@@@@@@@@L@@@@F+@@@@F-/,0@@@DB@@@ALW )@@G@@)F([F#L#L#L#[#[#[#[#[#@@ @@@@R@#%@[2@@@@@@@@@@@J@@@@@G@@@@[?@@@@@S@@@@@MLX )@@G@@@@@@@YDC@@@A)F2[N#@K0K0K0^@K0@C/@@@[[@@@@RC/@@@[/K@@F;*@A@@]R[)@#S[@@@#SLY )@@G@@G@@@# T/@@@OC@@@@DDD@@@A)F/[N#@^G[#@@@@@@@(@B@@AC/)@@[ @@@@G(@B@@BR[0@#SLZ )@@G@@C/@@@[[@@@#P @@@@G(@^@@KR[@@#SDE@@@A)GA[M^@K0^G@@@@@@@C/)@@[ @@@@G(@#@@DMA )@@G@@R@0@#SC/@@@[[@@@@RC/@@@[/)K@GF)@@@@I @@@@IDF@@@A)GK[M[@^G[#@@@@@@@ @@@@GMB )@@G@@(@D@@ER]K@#SC/@@@[[@@@@RC/@@@[/)K@GQ)@@@@I @@@@I(@#@@CDG@@@A)GU[M@K[#@K0MC )@@G@@@@@@@@(@[@@LR@K@#SC/@@@[[@@@@RC/@@@[/)K@G-)@@@@I @@@@I(@D@@FC/)@@[DH@@@AMD )@@G@@)G=[MK0K[#[#@K0^G@*@@@@SC/)@@[[@@@@SC@C@@[R]@@#S[@@@@RC/@@@[/)K@G()@@@#PME )@@G@@ @@@@GDI@@@A)G,[M^G@K^C=G^G^@@/K@@H?*@@@@J@#9@[2/,0@@@/=0@NG+@)@@K @@@@KMF )@@G@@*@@@@RC.@@@[ @@@@IDJ@@@A)G8[F#[#[#[#@K0K0^G@@@@@O[@@@MR[@@@@O[)@#BO[)@@NMG )@@G@@R[)@@@O[K@#BR[K@@NO])@#JR])@@MDK@@@A)H[[N#@K0^@K[@@@@@N8P@@N^^K@HJN8U@@NMH )@@G@@^^K@HKN8O@@N/K@@HQ(@@@@GH@@@@LC/@@@]O[@@#JDL@@@A)HF[F@^[@K^[@K^G@@@@@@@@MI )@@G@@@@@@@G@@@@HM@@@@HL@@@@HK@@@@HJ/,0@Z1^^K@HMN8Q@@N^^K@HLDM@@@A)HO[F#[@K0K0MJ )@@G@@K0K0^[#@@@@@R]K@#O^^K@H&N8N@@@O@0@](R@0@#QO[0@]:R[0@#R/K@@I_@#"@[2DN@@@AMK )@@G@@)HX[MK^G[@^[@K^@@@@@@@H&@@@@H>/,0@Z1^^K@H*N8R@@@^^K@H$N8L@@@R@K@#N^^K@H>ML )@@G@@N8T@@@DO@@@A)H$[F@K^G^G^@K0^@@@@@@@@/K@@IU(@@@@GH@@@@LC/@@@]/K@@I_@^@@[2MM )@@G@@@@@@@G@@@@H*@@@@H$DP@@@A)H0[F#[#[#[#[#[#[#[#[#@@R])@@MO[@@#BR[@@@NO]@@#BMN )@@G@@R]@@@Q[@@@@QG@@@@NT@@@@GC@@@@JDQ@@@A)H9[F#@K0K0^G^G[#@@@@@@@O@0@@NR@0@@@MO )@@G@@O[)@#JO[)@@MR[)@@@O[K@#BO[K@@QR[K@@@O])@#JDR@@@A)I][N#@K[@^@K@@@@@N8N@@NMP )@@G@@^^K@INN8S@@N^^K@IMN8O@@N^^K@IKN8U@@N^^K@ILN8Q@@NO@0@#BDS@@@A)IG[N@^[@K^[MQ )@@G@@@K^[@@@@@@IP@@@@IO@@@@IN@@@@IM@@@@IL@@@@IK/,0@+M^^K@IPN8P@@N^^K@IODT@@@AMR )@@G@@)IQ[F#[#[#[@K0K0^G^G@@@@R[0@#Q[@@@@QG/@@@[T@@@@GC@@@@J/K@@I_@^ @[2@@@@@JMS )@@G@@@@@@@GDU@@@A)IZ[F#[#[#[#[#[#[#[#@@@@N8R@@@O[)@#AO[)@@QR[)@#RO]K@#AR]K@@QMT )@@G@@O@K@]:R@K@#RO[0@](DV@@@A)I*[N@K0^[#@K[@@@@N8L@@@^^K@I9N8T@@N^^K@I8N8O@@@MU )@@G@@R[@@#N^^K@I6N8U@@@R])@#O^^K@I7DW@@@A)I2[N@^[@K^[@K^[@@@@@@I;@@@@I'@@@@I9MV )@@G@@@@@@I8@@@@I7@@@@I6/,0@+M^^K@I;N8Q@@N^^K@I'DX@@@A)I/@V#[#[#@@)[[@K@)I_@V]MW )@@G@@H#[@@@/K@@T^@@@@[[/,0@@@______2BVSS2@^C@[2@@@@@J@@@@@GDY@@@A)J][F#[#[@K0MX )@@G@@K0^G^G@@@@@@N8S@@@O@0@#JO@0@@MR@0@@@O]@@](R]@@#Q/K@@JZ(@@@@S@^D@[2DZ@@@AMY )@@G@@)JF[N@^[]P@K^G@K5@@@@@@B@@@@@@@@@@@@@@@@@L@@@@JK@@@@JJ/,0@@@^^K@JJN8N@@NMZ )@@G@@^^K@JKEA@@@A)JP[F#H#H#L#L#L#[#[#[#@@@@@@@@@@@@@J@@@@@G@@@@[?@@@@@S@@@@@MNA )@@G@@@@@@@Y@@@@@E@@@@@LEB@@@A)JY[F#[#[@K+K0K0K0K^G@@@R[K@@M/K@@KL*@@@@J @@@@TNB )@@G@@@^J@[2/,0@@@/K@@^)(@@@@R@^G@[2EC@@@A)J$[F#@K0K0^G^G[#@@@@@@@H@@@@LC/@@@]NC )@@G@@O]K@#JO]K@@MR]K@@@O[0@#BO[0@@NR[0@@@O[K@#JED@@@A)J0[MK[@^@K^[@@@@@@@@@J9ND )@@G@@/,0@>I^^K@J;N8R@@N^^K@J9N8P@@N^^K@J'N8T@@N/K@@J_(@@@@GEE@@@A)J'[F@K^G^G^NE )@@G@@[#[#[#[#@@@@O[)@]:R[)@#RO@K@](R@K@#Q/K@@LL@^P@[2@@@@@G@@@@J;@@@@J'EF@@@ANF )@@G@@)K#[MK^G[@^[@K^@@@@@@@KG@@@@KF/,0@>I^^K@KHN8Q@@@^^K@KFN8O@@@R[@@#O^^K@KGNG )@@G@@N8L@@@EG@@@A)KH[F@K0K0K[#@K^G@@@@@@@C@@@@J/K@@K5(@@@@GH@@@@LC/@@@]/K@@LLNH )@@G@@@^R@[2@@@@@G@@@@KHEH@@@A)KQ[F#[#[#[#[#@K0K0@@@@@R@0@@@O]@@#BO]@@@QR]@@@@NI )@@G@@O])@#JR])@@M[@@@@QG@@@@NT@@@@GEI@@@A)KZ[N#[#@K0K0^@K@@N8T@@N^^K@K!N8U@@NNJ )@@G@@^^K@K,N8N@@NO]K@#BO]K@@NR]K@@@O@0@#JO@0@@MEJ@@@A)K([F@^[@K^[@K^G@@@@@@@@NK )@@G@@@@@@@G@@@@K0@@@@K\@@@@K,@@@@K!/,0@$:^^K@K0N8S@@N^^K@K\EK@@@A)K2[F#[#[@K0NL )@@G@@K0^G^G^G@@@@O[K@](R[K@#Q[@@@@QG/@@@[T@@@@GC@@@@J/K@@LL@^W@[2@@@@@JEL@@@ANM )@@G@@)K;[F#[#[#[#[#@K^G@@@@@@N8Q@@@R[)@#O^^K@LFN8P@@@O@K@#AO@K@@QR@K@#RO[0@]:NN )@@G@@R[0@#REM@@@A)L^[N@^@K^[@K^[@@@@@@@LH@@@@LG@@@@LF@@@@LE/,0@$:^^K@LHN8L@@NNO )@@G@@^^K@LGN8R@@@^^K@LEEN@@@A)LI@V#[#[#@@)[#@K@)LL@V]H#[@@@/K@@T^@@@@[#/,0@@@NP )@@G@@______2BVSS3@^Z@[2@@@@@J@@@@@GEO@@@A)LO[F#[#@K0^[#[#@@@@@@@@R@0@@@O[@@](NQ )@@G@@R[@@#Q/K@@L;*@G@@]G@@@# T/@@@OC@@@@D@^)@[2EP@@@A)LX[F#[#@K[@K>K^@@@@@@@@NR )@@G@@@@@@L>@@@@L=/,0@@@^^K@L=N8N@@N^^K@L>N8O@@@O@0@#JO@0@@MEQ@@@A)L&[F#@^HOG4NS )@@G@@G^H^H^H@@@@@@@@@@A@@@@@@@@@@@G@@@@[Y@@@@@L@@@@@I@@@@@@@@@@@@@@@@@LER@@@ANT )@@G@@)L\[F#[#[#[#[#[#[@K(K0@@@@[@[ /,0@@@/K@@L;(@@@@T@^<@[2@@@@@@@@@@@J@@@@@GNU )@@G@@@@@@[:ES@@@A)L8@V#[#[]*@)[ @0@@@@@@@86H EN.,I4,0 ERRORDSTAT2***** (020H0NV )@@G@@'^@@@@@@K@@T@^&@[2ET@@@A)[F[S@@@@@@@IONS ADEVIATNDARD SE STA BECAUE ZERONW )@@G@@RIX ARON MATRELATIIN CORTRIES EU@@@A)[Q[@@@@@@@@)L;@F#@@@@@@R])@#Q) NX )@@G@@ICIENTINSUFF6HARE 25X,01OUNTS/O OR CRE ZEREV@@@A)L/[N#@K0K0K0^G[@@N8T@@NNY )@@G@@^^K@MHN8U@@@G@@@# T/@@@OC@@@@DO]K@#JO]K@@MR]K@@@O])@](EW@@@A)MA[N@^@K^D=NZ )@@G@@[@K0@@@@@@@@@@@@@L@@@@MH@@@@MG/,0@@@^^K@MNN8W@@L^^K@MMN8W@@K^^K@MGEX@@@AOA )@@G@@)MK[F#[#[@K^G[#@K@@@@@@@/K@@M4(@@@@GH@@@@LC/@@@]@^%@[2@@@@MN@@@@MM@@@@@JOB )@@G@@@@@@@GEY@@@A)MT[F#[#[#@K0^G^G@@@@@@@N8W@@CO[K@#JO[K@@MR[K@@@G@@@# T/@@@OOC )@@G@@C@@@@DO]@@#JR]@@@MEZ@@@A)M+[N@^@K^D4[#[#@@@@@@@@@@@@@J@@@@@G@@@@M*/,0@@@OD )@@G@@^^K@M0N8S@@N^^K@M*N8P@@N^^K@M!FA@@@A)M?[EK^G^G4[@K0K^G@@@@@@R[0@#Q/K@@NGOE )@@G@@@^!@[2/K@@T^@@@@M0@@@@@L@@@@@@@@@@M!@@@@@@FB@@@A)M5[N#[#@K0^@K^G@@N8L@@@OF )@@G@@R@K@#O^^K@N[N8R@@@^^K@NAN8W@@CG@@@# T/@@@OC@@@@DO[0@](FC@@@A)M_[F@K$K^G^OG )@@G@@G@K^G@@@@@@@@@@@@@@@@@NA@@@@@@@@@@@@@@@@@J@@@@@G@@@@N[/,0@@@^^K@NDFD@@@AOH )@@G@@)NC[F#H@K^G^G[#@K@@@@@@@/K@@O!(@G@@ G@@@# T/@@@OC@@@@D@^\@[2/K@@T^@@@@NDOI )@@G@@@@@@@LFE@@@A)NL[F#[#[#[@K0^@K@@@@@@@^^K@NVN8Q@@N^^K@NWN8O@@@R[@@#N/K@@N?OJ )@@G@@*@@@@JO[)@#BR[)@@NFF@@@A)NU[F]P@K^G@K5K3K0@@@@@@@@@@[Y@@@@@L@@@@@P@@@@@@OK )@@G@@@@@@@@@@@@@L@@@@NW@@@@NV/,0@@@FG@@@A)N<[F#L#L#L#[#[#[#[#[@@@/K@@O!@^4@[2OL )@@G@@@@@@@@@@@@[!@@@@@G@@@@[?@@@@@S@@@@@M@@@@@YFH@@@A)N?[F#[#P#[#[#@K[@@@@@@@OM )@@G@@^^K@N6N8N@@N^^K@N7N8U@@@R])@#NO@0@#BR@0@@N[@@@@TC@@@[,FI@@@A)N5[F]P@K^G@ON )@@G@@K5K3K0@@@@@@@@@@[Y@@@@@L@@@@@P@@@@@@@@@@@@@@@@@L@@@@N7@@@@N6/,0@@@FJ@@@AOO )@@G@@)N"[F#L#L#L#[#[#[#[#[#@@C@@@[\@^7@[2@@@@@@@@@@@J@@@@@G@@@@[?@@@@@S@@@@@MOP )@@G@@@@@@@YFK@@@A)OB[F#P#[#[#[#[#[#@K0@@@[[@@@UG.@@@[C[@@#S[@)@@QG@)@@N[@)@#SOQ )@@G@@T@)@@GC@)@@J[@@@@TFL@@@A)OK[F#[#[#[#@K[@K0@@@@@@D[)@@G^^K@OVN8T@@N^^K@OWOR )@@G@@N8P@@NO[K@#AR[K@@UO]K@#BR]K@@QFM@@@A)OT[F#[]P@K^G@K5K3@@@@@@@@@@@L@@@@@POS )@@G@@@@@@@@@@@@@@@@@@@L@@@@OW@@@@OV/,0@@@[[)@#SFN@@@A)O+[F#[#L#L#L#[#[#[#[#@@OT )@@G@@@^;@[2@@@@@@@@@@@J@@@@#S@@@@[?@@@@@S@@@@@M@@@@@Y@@@@[YFO@@@A)O:[F#[#P#@KOU )@@G@@0^[#[#@@@@@@O]@@#BR]@@@N/K@@RW(@G@@AG@@@# T/@@@OC@@@@D[@@@@TC@@@[*FP@@@AOV )@@G@@)O4[N#[#[#[@^G[@^@^^K@P]N8S@@N/K@@PA(@@@@GH@@@@LC/@@@]/K@@P%*@@@@JO[0@#JOW )@@G@@R[0@@MFQ@@@A)O"[EK^[@K^G^G^[#@@@@@@@R@K@#N/K@@PL@ #@[2@@@@@G@@@@P]@@@@P[OX )@@G@@/,0@0Y^^K@P[N8R@@NFR@@@A)PB[EK^G[@K^[@K0@@@@@@@@@@@@@G@@@@PI@@@@PH/,0@0YOY )@@G@@^^K@PHN8Q@@@R[)@#O^^K@PIN8L@@@FS@@@A)PK[F#[#[#[#@K[@K>@@@@@@/,0@@@^^K@PTOZ )@@G@@N8O@@N^^K@PUN8N@@@R@0@#NO[@@#BR[@@@N@ @[2FT@@@A)PT[F@K^G@K5K3K0K4@@@@@@PA )@@G@@@@@@@Y@@@@[Y@@@@@L@@@@@<@@@@@@@@@@@@@@@@@L@@@@PU@@@@PTFU@@@A)P+[F#L#L#[#PB )@@G@@[#[#[#[@@@@@C/@@@]/K@@RW@ B@[2@@@@@@@@@@[!@@@@@G@@@@[?@@@@@S@@@@@MFV@@@APC )@@G@@)P:[F#@K^G^G^G^G^G^G@@@@O[K@#BR[K@@Q[@@@@QG@@@@NT@@@@GC@@@@J/K@@QA(@@@@GPD )@@G@@H@@@@LFW@@@A)P4[N#[#[#[#@K[@^@^^K@Q[N8P@@N^^K@P_N8T@@N^^K@Q@N8U@@NO])@#BPE )@@G@@R])@@NO]K@#JR]K@@MFX@@@A)P"[F@K^[@K0K0K0K^G@@@@@C@@@@J/K@@QV@ G@[2@@@@@JPF )@@G@@@@@@@G@@@@Q[@@@@Q@@@@@P_/,0@1:FY@@@A)QB[F#@K0K0K0K0^[#@@@@@@R@K@#O^^K@QQPG )@@G@@N8R@@@R[0@#NO]@@#AR]@@@Q[@@@@QG/@@@[T@@@@GFZ@@@A)QK[MK[@K^[@K^G^G@@@@@@JPH )@@G@@@@@@@G@@@@QR@@@@QQ@@@@QP/,0@1:^^K@QRN8S@@N^^K@QPN8L@@@GA@@@A)QU[F#[#[#P#PI )@@G@@[#[#@K@@@@@@N8Q@@N^^K@Q&N8O@@@R[@@#NO[)@#BR[)@@N[@@@@$C@@@[,@ J@[2GB@@@APJ )@@G@@)Q<[F@K>K^[#@^HOG0@@@@@@@@@@@L@@@@@<@@@@@@@@@@@@@@@@@L@@@@Q&@@@@Q>/,0@@@PK )@@G@@^^K@Q>GC@@@A)Q?[F#[#L#L#L#[#[#[#[#@@@ L@[2@@@@@@@@@@@J@@@@@G@@@@[?@@@@@SPL )@@G@@@@@@@M@@@@@Y@@@@[YGD@@@A)Q5[F#[#P#[#[#[#[#[#@@@@G.@@@[C[@@#S[@)@@QG@)@@NPM )@@G@@[@)@#ST@)@@GC@)@@J[@@@@$C@@@[\GE@@@A)Q"[F#[#[#[#[#@K[@@@@@@@^^K@REN8N@@NPN )@@G@@^^K@RFN8U@@NO])@#AR])@@UO@0@#BR@0@@Q[[@@@UGF@@@A)RB[F#[#[]P@K^G@K5@@@@@@PO )@@G@@@@@@@<@@@@@@@@@@@@@@@@@L@@@@RF@@@@RE/,0@@@[[)@#SD[)@@GGG@@@A)RK[F#H#[#L#PP )@@G@@L#L#[#[#[#@@@@@@@@@@@@@J@@@@#S@@@@[?@@@@@S@@@@@M@@@@@Y@@@@[Y@@@@@LGH@@@APQ )@@G@@)RT[F#[#[#P#@K0^[#@@@@@@R]K@#R/K@@^)(@G@@BG@@@# T/@@@OC@@@@D[@@@@$C@@@[*PR )@@G@@@ P@[2GI@@@A)R+[N#@K0K0K0K[@^@^^K@R!N8P@@N^^K@R,N8T@@@/K@@R"*@@@@JO[K@#BPS )@@G@@O[K@@NR[K@@@O]K@]:GJ@@@A)R?[F]P@K^G@K5K3K3@@@@@@@@@@@E@@@@@L@@@@@%@@@@@@PT )@@G@@@@@@@@@@@@@L@@@@R,@@@@R!/,0@@@GK@@@A)R5[F#L#L#L#[#[#[#[#[@@@/K@@^)@ V@[2PU )@@G@@@@@@@@@@@@[!@@@@@G@@@@[?@@@@@S@@@@@M@@@@@YGL@@@A)R"[F#[#P#[#@K0K0^@@@@@@PV )@@G@@^^K@SFN8L@@@O]@@#BO]@@@NR]@@@@O@K@]:R@K@#R[@@@@0C@@@[,GM@@@A)SB[MK^DO[@KPW )@@G@@0[#P#G@@@@@L@@@@@%@@@@@@@@@@@@@@@@@L@@@@SF@@@@SE/,0@@@^^K@SEN8S@@NGN@@@APX )@@G@@)SL[F#H#L#L#L#[#[#[#[#@@@ Y@[2@@@@@@@@@@@J@@@@@G@@@@[?@@@@@S@@@@@M@@@@@YPY )@@G@@@@@@@EGO@@@A)SU[F#[#P#[#[#[#[#[#@@@@G.@@@[C[@@#S[@)@@QG@)@@N[@)@#ST@)@@GPZ )@@G@@C@)@@J[@@@@0C@@@[\GP@@@A)S<[F#[#[#[#@K0K0^@@@@@@^^K@S2N8R@@NO[@@#BO[@@@QQA )@@G@@R[@@@@O[0@#AO[0@@UR[0@#R[[@@@UGQ@@@A)S?[MK^G^G^DO[@K0@@@@@@@@@@@@@@@@@@LQB )@@G@@@@@@S2@@@@S1/,0@@@[[)@#SD[)@@G^^K@S1N8O@@NGR@@@A)S6[F#P#H#H#L#L#L#[#[#@@QC )@@G@@@@@@@J@@@@#S@@@@[?@@@@@S@@@@@M@@@@@Y@@@@@E@@@@@L@@@@@%GS@@@A)S_[F#[#[#[#QD )@@G@@P@K^[#[#@@@@R]0@[3@ >@[2/K@@TBN@0@TA/K@@^)[@@@@0C@@@[*@ +@[2@@@@@@GT@@@AQE )@@G@@)TC[F#[#[#[#[#[#[#[#[#@@R[@@#&R@0@#>R@)@#=R@K@#<9\)@#-9\@@#Z9,)@#X9,@@#VQF )@@G@@9!)@#TGU@@@A)TL[##[#[#[#[#[#[#[#@@@@@@@@@@*4@K[0N[@@#!R])@#?R]K@#:R]@@#%QG )@@G@@R[0@#(R[)@#*R[K@#$GV@@@A)[0@C@)TT@N#[]?@@@)[2@K@)TV@N#[#@@@@9()@#TAA0@[3QH )@@G@@@ >@@]S2BVSS/K@@@@/K@K[0@@F@@?GW@@@A)TX[F#[#[#[#[#[#[#[#[#@@A[K@#$A[@@#&QI )@@G@@A@0@#>A@)@#=A@K@#<9:)@#-9:@@#Z9%)@#X9%@@#VGX@@@A)T&[F#[#[#[#[#[#[@^G@@@@QJ )@@G@@G@@@#\C/@__"/K@@1"^[@@#!A])@#?A]K@#:A]@@#%A[0@#(A[)@#*GY@@@A)T\[N#@K0^G[QK )@@G@@#@K0@@G")__:C])@#1G"@__:C]@@]>G.)__:C[)@]*G.@__?C[@@]>G/)__:C@)@#0GZ@@@AQL )@@G@@)T9[F#@K0^G^G[#[#@@@@@@@C#)@]Y[#)@#4G_)__:C#)@]W[#)@#3G_)__:C#)@#2G_@__:QM )@@G@@C#@@]THA@@@A)U][EK0K0^G^G[#[#@@@@@@@C#)@#9[#)@#8G_)__:C#)@]X[#)@#7G_)__:QN )@@G@@C#)@#6[#)@#5G_)__:HB@@@A)UF[EK0K0^G^G[#[#@@@@@@@C#)@]&[#)@#/G_)__:C#)@]$QO )@@G@@[#)@#;G_)__:C#)@]U[#)@#'G_)__:HC@@@A)UO[EK0K0^G^G[#[#@@@@@@@C#)@^@[#)@#_QP )@@G@@G_)__:C#)@]Z[#)@#"G_)__:C#)@]=[#)@#.G_)__:HD@@@A)UX[EK0K0^G^G[#[#@@@@@@@QQ )@@G@@C#)@^ [#)@^^G_)__:C#)@^#[#)@^]G_)__:C#)@]V[#)@^[G_)__:HE@@@A)U&[EK0K0K0KQR )@@G@@0K0K0K0K0@@@[#@@^G[])@^F[]@@^E[[)@^D[[@@^C[@)@^B[@@@^AG#)@]Y;#)@@RI )@@G@@R]@@^=R[0@^A]@@^=A[0@^SR )@@G@@C@A@@N @@@@&N[K@ HIX@@@A))_[N@^G^G[#[#@@@@]@ @@N"^ @@N"C[@@N[@)@@="G)@@>SS )@@G@@C@=@@N[@@@@<"G@@@>C@[@@N/K@@-VIY@@@A)-D[N#[@^@^G[#@@@@"^#@@N"C@@@=C@^@@NST )@@G@@[@@@@&C/@@@[ @ @@N/K@@-K*@@@@G/C@@-H"@@@[&IZ@@@A)-N[MK0K[@[#@K0@@@"C@@@=SU )@@G@@C@[@@N[@@@@&C/@@@[ @#@@N/K@@-V*@@@@G/C@@-S"@@@[&]@#@@NJA@@@A)-X[M^G^[#[#SV )@@G@@[#@K0@ @@@@G*@@@@&C/@@@[]@@@@>"^@@@>C@@@[-/)@@-=C@@@ R]@]@@N"^]@@NJB@@@ASW )@@G@@)-$[MK0@^@K@@@@@@@C@]@@N/K@@-3 @]@@N/=K@-0+@@@@I @@@@I1@@@@K*@@@@KD[@@@>SX )@@G@@C/)@@[JC@@@A)-1[F#@K0K0[#[#[@@@@@@@@8LK@)7O[)@ EO[K@ EO.@@@[O/0@@[O@)@ ESY )@@G@@O@K@ E[@]@@N"G@@@>JD@@@A)-'[F#[#[#[#[@K^[#[#@@@@R]0@[_@B\@["/K@@+]N@0@+[SZ )@@G@@8L@@)6O[)@ KO[K@ KO@)@ KO@K@ KJE@@@A)+#[F#[#[#[#[#[#[#[#[#@@R[K@ =R[@@ JG@@@A)["@K@)+M@3#TC )@@G@@[#[#[#[#[#@@@@@@@@A@K@ )9:@@ Y9%)@ W9%@@ U9()@ SAA0@[_@B\@@]COVRECJH@@@ATD )@@G@@)+S[F#[#[#[#[#[#[#@K0@@@[@@@ LC8FK@@^[K@ $^[@@ &A[)@ >A[K@ =A[@@ #N@0@>]8L@@<#G_0@@[8LK@#[F#[#[#[#[#[#[#[#[#@@*4@K]@N[K@ _N[@@ "R@0@ .R@)@ /R@K@ ;9\)@ 99!)@ 7TZ )@@G@@R]0@]#KA@@@A)]@@C@)>G@N#[]?@@@)]]@K@)>I@N#[#@@@@9()@ 7AA0@]#@C&@@]CORTRIUA )@@G@@/K@@@@/K@K]@@@F@@ KB@@@A)>K[F#[#[#[#[#[#@K0@@@@@C8FK@[[@@@ :C8FK@@^[K@ _UB )@@G@@^[@@ "A@0@ .A@)@ /A@K@ ;9:)@ 9KC@@@A)>T[N#@K0^G^@K0^G@G@)@A]C/)__"G@@@A[UC )@@G@@C/@__"/K@@+0[@K@ %C@VK@#[@@@ !C8FK@][@@@ ?KD@@@A)><[EK0K0K0K0[#[#@@@@@@@UD )@@G@@H]@@A[G]@@A[C"@@@[H.)@@[T[)@A[C[)@A]H[@@A]G[@@A]C.@@@[KE@@@A)>?[F#[#[#[#UE )@@G@@[#@K3^G@@@@@C@)@AC @@@@G*@@@@AC/@@@[[]@@AB][)@AA[[@@A [@)@A^[@@@A#KF@@@AUF )@@G@@)>5[EK0^G[#@K0K0@@@@@@@@G[)@ABG]@@A G"@__:C]@@AFG.)__:C[)@AEG.@__:C[@@ADUG )@@G@@G/)__:KG@@@A)>"[F#[#@@K0K0K0@@@@@@@@N[K@A^[@@@AGN[@@A#R[@@@MR@0@@IR@)@@KUH )@@G@@R@K@@OG[@@ABG@)@ABKH@@@A)&B[F#@K0K0K^G^G^G^G@@@@D@@@@:]@@@@:"^@@@:C@@@[-UI )@@G@@/)@@&JC@@@AG[@@@@:C@^@@N @@@@!KI@@@A)&K[M^@K0^G^@K@@@@/K@@&Y*@@@@G/G@@&UUJ )@@G@@"^@@[&[@#@@N"G@@@:C@#@@N/K@@&U1@@@@G*@@@@GKJ@@@A)&U[MK0^@K^E^[#@@@[@#@@NUK )@@G@@@D@@]A@@@@&-/,0@@@^^K@&-N8N@@N/K@@&= @#@@N[@@@@!C/@@@[KK@@@A)&=[N#@^@K0^UL )@@G@@G^@@@@*@@@@G/G@@&\"^@@[&[@[@@N"G@@@:C@[@@N/K@@&\1@@@@G*@@@@GD@@@@:KL@@@AUM )@@G@@)&,[N@^G[@^[]-@K0@@DD@]A@@@@&6/,0@@@^^K@&6N8L@@N/K@@$H @[@@N[@@@@!C/@@@[UN )@@G@@/K@@&3KM@@@A)&8[M@K0K0K0[@@@@@/K@@$^1@@@@G*@@@@G"^@@@?C@@@[-[@)@@?"G-@@NUO )@@G@@"G<@@NC@+@@N[@[@@NKN@@@A)$][F#[#[#[#@^[#[#@@@@@@[@@@@?D@@@[-/K@@$F1@@@@GUP )@@G@@*@@@@G"@@@[-C@@@@?[@@@@?C@@@[-KO@@@A)$F[N#@K0K@K0K0^G@O@)@A[O/K@@[[@@@@TUQ )@@G@@G@@@@TC/@@@[ @]@@N/K@@$N(@@@@![@]@@NC@@@@?KP@@@A)$P[F#[#[@K0K0K0K^[@@@@@UR )@@G@@/K@@$ZN@0@$Y8L@@&AO[@@AAO@0@AAO@)@AA8LK@&BO[@@A[O@0@A[KQ@@@A)$Y[F#[#[#[#US )@@G@@[#[#[#[#[#@@N[@@APR[@@AOR@0@ANR@)@AMR@K@AL9,@@AJ9!)@AHR]0@]B@DS@]AKR@@@AUT )@@G@@)$$@N#[#@@@@)]^@C@)$(@N#[]?@@@)]A@K@@DS@@]CORREC/K@@@@/K@K]^@@F@@B*4@K]^UU )@@G@@N[K@AQKS@@@A)$:[F#[#[#[#[#[#[#[#[#@@^[K@AQ^[@@APA[@@AOA@0@ANA@)@AMA@K@ALUV )@@G@@9%@@AJ9()@AHAA0@]BKT@@@A)$4[MK0^G[#@K0^G@@[@K@A[C@VK@^[@@@AFC8FK@#[@@@ACUW )@@G@@C8FK@][@@@ADC8FK@[[@@@AEC8FK@@KU@@@A)$"[MK0K[#[#@K0K0@C/@@@[[@)@AU[@@@ATUX )@@G@@G/)__:C@)@^@G@@@ASC/@__"/K@@>Z[@K@A]C@VK@ KV@@@A)*C[F#[#@K0^G[#@@@@@@@@@UY )@@G@@G"@__?C]@@AVG.)__:C[)@AYG.@__:C[@@AXG/)__:C@)@AW[@@@@,KW@@@A)*L[F#@K0^G[UZ )@@G@@#@K0@@@@@@@@[@@@AG/@__:VB )@@G@@C@@@A=KY@@@A)*<[F#[#[#[#[#@K0K0K0@@@G@)@@PC@)@ASG@@@@PC/@__"[#0@@P[#@@A?VC )@@G@@[])@A:[]@@A%[[)@A(KZ@@@A)*?[F#[#[#@K0K0K0K0K0@@@G[)@A!C[)@A?G@)@A<[@)@A!VD )@@G@@H[@@ASG.@@@[T[@@@PC[@@ASH@)@ASLA@@@A)*5[F#[#[#[#[#[#[#[#[#@@[]@@A1[[)@A0VE )@@G@@[[@@A\[@)@A,[@@@A!G]@@AO]@@A:R]@@@2G[@@@1T[@@A4LI@@@A)("[F#[#[#@^VN )@@G@@G@K0@@@@@@@@G@@@@,C/@@@[[@*@@NR]@@A3C@*@@NO])@@KR])@A&A])@A5O])@A>LJ@@@AVO )@@G@@)%B[N#@@K0K0^[#@@@R]@@A5/K@@%P(@@@@KH[@@@PC[@@@C[@>@@NC@(@@N[[A@@NC[B@@NVP )@@G@@[@@@@,LK@@@A)%L[M@@K0K0@@@@@@@G_)@@[O[)@ASO[K@ASO.@@@[O/0@@[O/)@@[[@+@@NVQ )@@G@@C@%@@N[[^@@NC[C@@NLL@@@A)%V[F@[@K^[#[#[#@@@@@@@@9!)@A6R]0@]F@D/@]E/K@@%+VR )@@G@@N@0@%-8L@@*$G_0@@[O/K@@[8LK@(FLM@@@A)%=[F#[#[#[#[#[#[#[#[#@@R[K@B^R[@@B#VS )@@G@@R@0@B]R@)@B[R@K@B@9\)@A"9\@@A/9,)@A'9,@@A8LN@@@A)%![##[#[#[#[#[#[#[#@@@@VT )@@G@@@@@@@@*4@K]CN[K@BFN[@@BER])@BDR]K@BCR]@@BBR[0@BAR[)@B LO@@@A)]C@C@)%5@N#VU )@@G@@[]?@@@)]E@K@)%7@N#[#@@@@9()@A6AA0@]F@D/@@]SELTRI/K@@@@/K@K]C@@F@@GLP@@@AVV )@@G@@)%9[F#[#[#[#[#[#[#[#[#@@A[K@B^A[@@B#A@0@B]A@)@B[A@K@B@9:)@A"9:@@A/9%)@A'VW )@@G@@9%@@A8LQ@@@A):][F#[#[#[#[#[#[#@K0@@@[@@@AVC8FK@@^[K@BF^[@@BEA])@BDA]K@BCVX )@@G@@A]@@BBA[0@BAA[)@B LR@@@A):F[MK0^G[#@K0^G@@[@@@A-C8FK@ [@@@AXC8FK@^[@@@AWVY )@@G@@C8FK@#[@@@AZC8FK@][@@@AYC8FK@[LS@@@A):P[MK0^G[#@K0^G@@[@K@ASC@VK@E[@@@A+VZ )@@G@@C8FK@D[@@@A)C8FK@C[@K@A4C@VK@B[@@@A=C8FK@ALT@@@A):Z[N@^G[#@K0K0K0@G.)__:WA )@@G@@C[)@^@H[@@BIG[@@BIC.@@@[G@)@BIC/)__"G@@@BHC/@__"/K@@*[LU@@@A):([F#[#@^G^WB )@@G@@G^G^G^G@@@@@[[@@BL[@)@BK[@@@BJH])@BHG])@BHC")@@[H"@@@[T]@@BHC]@@BILV@@@AWC )@@G@@):2[F#[#[#[#@K0^G@@@@@@@G.@__?C[@@BQG/)__:C@)@BRG/@__?C@@@BP[])@BO]]@@BNWD )@@G@@[[)@BMLW@@@A):;[N#@K0^G[#@K0@@G_)__:C#)@BWG_@__:C#@@BVG")__:C])@BUG"@__:WE )@@G@@C]@@BTG.)__:C[)@BSLX@@@A)? [F#[#@K0K0^G^G@@@@@@@G_)__:C#)@B+[#)@B-G_)__:WF )@@G@@C#)@B)[#)@BZG_)__:C#)@BY[#)@BXLY@@@A)?I[F#[#@K0K0K0K0K0K0@@@G])@BOG[)@BOWG )@@G@@G@)@BOG#)@BG_)__:C#)@B=[#)@BA])@B*O])@B-R])@@KA])@B$O])@B-R])@@IO]K@BZWR )@@G@@R]K@@6MI@@@A)!:[MK0^G@K0[#@@@@R]K@B*[@ )@NC@D@@NR]K@B$[@&)@NC@(@@NO])@B>WS )@@G@@R])@@KA])@B(O])@@IMJ@@@A)!5[M^G@@K^G@@@@@@C^@@BN8LK@?"O"@@@[[@+)@NC@%@@NWT )@@G@@[@#)@NC@D@@NR]K@B([@=)@NC@(@@NMK@@@A)!_[M^G@K0[#@@@@@@'K@@@BC^@@BN[@@@@AWU )@@G@@'K@@@AC^@@BN[@@@@ 'K@@@ C^@@BN[@@@@#'K@@@#ML@@@A),D[E^[@K^G^G^G^G@@@@@@@WV )@@G@@9,@@B?9!)@B%R]0@]J@EX@]I/K@@,JN@0@,I8L@@?6O/K@@[[@@@@BMM@@@A),M[F#[#[#[#WW )@@G@@[#[#[#[#[#@@R[)@B9R[K@B8R[@@B7R@0@B6R@)@B5R@K@B49\)@B29\@@B09,)@B,MN@@@AWX )@@G@@),V@;#[#[#[#[#[#[#@@@@@@)]G@C@@@F@@K*4@K]GN[K@B_N[@@B"R])@B.R]K@B/R]@@B;WY )@@G@@R[0@B'MO@@@A),+@N#[]?@@@)]I@K@),=@V#[#[#@@@@@@@@9%@@B?9()@B%AA0@]J@EX@@]WZ )@@G@@SELREC/K@@@@/K@K]GMP@@@A),$[F#[#[#[#[#[#[#[#[#@@A[)@B9A[K@B8A[@@B7A@0@B6XA )@@G@@A@)@B5A@K@B49:)@B29:@@B09%)@B,MQ@@@A),0[F#[#[#[#[#[#@K0@@@@@C8FK@[[@@@BPXB )@@G@@C8FK@@^[K@B_^[@@B"A])@B.A]K@B/A]@@B;A[0@B'MR@@@A),9[N#@K0^G[#@K0@@C@VK@AXC )@@G@@[@@@BSC8FK@ [@@@BRC8FK@^[@@@BVC8FK@#[@@@BTC8FK@][@@@BQMS@@@A)\#[N#@K0^G[XD )@@G@@#@K0@@C8FK@F[@K@B&C@VK@E[@@@B=C8FK@D[@@@B)C8FK@C[@K@BIC@VK@B[@K@BHMT@@@AXE )@@G@@)\H[N#@K0^G[#[@^G@G@@@C]C/@__"/K@@:)[@@@B+C8FK@I[@@@BYC8FK@H[@@@BWC8FK@GXF )@@G@@[@@@BUMU@@@A)\R[F#@K0K0^G@K0@@@@@@@@N[@@C[C_0@@[G.@__:C[@@C^G/)__:C@)@C#XG )@@G@@[@@@@8C/@@@[[@@@C[MV@@@A)\)[F#[#[#@K0K0K0K0K0@@@G@)@CAH@)@C]G@)@@PC@)@C]XH )@@G@@G@@@@PC/@__"[#0@@P[[@@CA[@)@C MW@@@A)\([F#[#@K0K0K0K0K0@@@@@C_)@@[[[@@CDXI )@@G@@[@)@CC[@@@CBG[@@CAH[@@C]G.@@@[T[@@@PC[@@C]MX@@@A)\2[F#[#[#[#[#[#[#[#@@@@XJ )@@G@@C@#@@NR@0@CEA@0@CEO@0@C R@0@@8[#)@@CN[K@CBR@)@CCR@K@CDMY@@@A)\;[F#[#[@^GXK )@@G@@[#[#@@@@@@@@(@@@@KH[@@@PC[@@@C[@+@@N"G)@@7C@+@@N/K@@0C(@@@@7[@@@@7MZ@@@AXL )@@G@@)0^[N@^G@K0K0^G@@@G_)@@[O@)@C]O/K@@[[@@@@8G@@@@8C/@@@[[[[@@N"H@@@7C[[@@NXM )@@G@@/K@@0CNA@@@A)0I[F@^[@K^G^G^G^G@@@@@@R@K@CH9\)@CFR]0@]N@E7@]M/K@@0ON@0@0NXN )@@G@@8L@@\+G_0@@[8LK@\5NB@@@A)0R@:#[#[#[#[#@@@@)]K@C@)0W@F#@@@@@@/K@K]K@@F@@^XO )@@G@@*4@K]KN[K@CLN[@@CKR@0@CJR@)@CINC@@@A)0X@F]?@@@@@)]M@K@)0Y@<#[#[#[#@@@@@@XP )@@G@@A@)@CIA@K@CH9:)@CFAA0@]N@E7@@]MEANTR/K@@@@ND@@@A)0+[F#[#[#@K0^G[#@@@@@@@XQ )@@G@@[@K@C]C@VK@][@@@C^C8FK@[[@@@C#C8FK@@^[K@CL^[@@CKA@0@CJNE@@@A)0:[F@^G[#@KXR )@@G@@0K0K0@@@@@@@C[)@COH[@@COG[@@COC.@@@[G@)@COC/)__"G@@@CNC/@__"/K@@\PNF@@@AXS )@@G@@)04[F#@^G^G^G^G^G^G@@@@@][)@CS[[@@CR[@)@CQ[@@@CPH]@@CNG]@@CNC"@@@[H.)@@[XT )@@G@@T[)@CNNG@@@A)0.[F#[#@K0^G[#[#@@@@@@@G@@@CTG[@@CRG.@__:C[@@CWG/)__:C@)@CVXU )@@G@@G/@__:C@@@CU[]@@CTNH@@@A)1A[N#@[#[#@K0K0K@/K@@1Q(@@@@9[@@@@9C@#@@NN[K@CQXV )@@G@@N[@@CPR@0@@GR@)@@IR@K@@KG@)@CTNI@@@A)1K[MK0[#@^G^G^@@@8LK@1GO@0@CNO@)@CNXW )@@G@@O/K@@[[[[@@N"H@@@9C[[@@N[@+@@N"G)@@9C@+@@NNJ@@@A)1U[F#[#[@K^[#[#[#[#@@@@XX )@@G@@9,@@CZ9!)@CXR]0@]R@FI@]Q/K@@1)N@0@1Z8L@@1FO@0@CSO@)@CSNK@@@A)1<@3#[#[#[#XY )@@G@@[#[#@@)]O@C@@@@@@@@@@@@@@@F@@A*4@K]ON[K@C>N[@@C=R@0@C^[@@C=YB )@@G@@A@0@CC8FK@G[^@@]=C8FK@F[^@@][^@@N'[^@@E%YQ )@@G@@[^@@FA[@@@]>[^@@Q([^@@S5[^@@RIOA@@@A)35[N@K^[@K^[@K^@@C8FK@-[^@@L*[^@@JNYR )@@G@@[^@@D\[^@@R1[^@@OZ[^@@M?[^@@PX[^@@N [^@@AOOB@@@A)3_[N#[@K[@K^[@K^@[^@@MYYS )@@G@@[^@@L.[^@@J:[^@@JB[^@@H.[^@@LWC8FK@+[^@@]K[^@@]![@@@]%OC@@@A)4D[N@K^[@K^YT )@@G@@[@K[#@[@@@]?C8FK@<[^@@C*[^@@EC[^@@],[^@@G_[^@@]L[^@@A8[^@@FT[^@@KYOD@@@AYU )@@G@@)4N[N@K[@K^[@K^[@@[^@@KV[^@@K-[^@@J*[^@@]0[^@@B[[^@@G/[^@@]NC8FK@=[^@@]\YV )@@G@@[^@@]MOE@@@A)4X[N@K^[@K^[@^G@@C@VK@&[@@@](C8FK@>[^@@C![^@@E][^@@H'[^@@R[S@@@@@@@PART 2PART 1YZ )@@G@@_____"@@@@@D@@@@@G@@@___SUBSET @@@@[=B592-#KO@@@@OI@@@A@@@@@@?@@@@@ZA )@@G@@)]M@K@)0Y@<#[#[#[#@@@@@@A@)@CIA@K@CH9:)@CFAA0@]N@E7@@]MEANTR/K@@@@ND@@@AZB )@@G@@@@^@@A@@E@@G@@+@@[@@&@@^@@^@C&@C@@43@@@@@]@@@@@S@@@@@%@@@@[HS1HEDC ZC )@@G@@S2MDIN S1VFWC S1VFWT S1DSP S2PMAT S2WCOR ZD )@@G@@S2CTRN SQRT NPRT$ NIO2$ NERR3$ S2BVSS ZE )@@G@@@@[@@@@@@@TVBLANK$ ^@@@C@@]@@@@S2ABLK ]@@@C@@#@@@@S2FMTS ZF )@@G@@]@@@C@@^@@@@S2HEDS ]@@@C@@ @@@@@@@@@@@@@@@@*[S@@@*SDFF*@A@@@@ ZG )@@G@@SUBROUTINE S2CDIN(NV,MSET, @D@@@@ - NBLOK,IVARS,IROWN,IROWPT,ICZH )@@G@@OLN,ICOLPT,IBDATA,@A@@@@ - DF,VSUM,VSSQ,VMIN,VMAX, @#@@@@ -ZI )@@G@@ XPROD, @^@@[@ - DINP,DINP2, @#[@@@ - IERR) @^@@@@ZJ )@@G@@ DIMENSION MSET(1) @F@@@@ DIMENSION IVARS(1),IROWN(1),IROWPT(1ZK )@@G@@),ICOLN(1),ICOLPT(1), @#@@@@ - IBDATA(1)@C@@@@ DIMENSION VSZL )@@G@@UM(1),VSSQ(1),VMIN(1),VMAX(1) @^@@@@ DIMENSION XPROD(1)@A@@[@ ZM )@@G@@DIMENSION DINP(1),DINP2(1) @[[@@@C @[@@@@C @E@@@@C ZN )@@G@@ COMPLETE DATA INPUT SUBROUTINE FOR DSTAT2. @[@@@@C @F@@@@C ZO )@@G@@ DESCRIPTIVE STATISTICS ARE ACCUMULATED FOR THE NV @C@@@@C ZP )@@G@@ VARIABLES SPECIFIED BY MSET. @F@@@@C CROSS PRODZQ )@@G@@UCTS ARE ACCUMULATED FOR THE NBLOK BLOCKS @D@@@@C SPECIZR )@@G@@FIED BY IROWN ... IBDATA. @[@@@@C @[@@@@C @^@@@@C ZS )@@G@@ INITIALIZE@[@@@@C @^@@[@ TIMP=URTIMF(DUM) @]@@@@ NOBS=0ZT )@@G@@@#@@@@ DO 50 I=1,NV@#@@@@ VSUM(I)=0 @#@@@@ VSSQ(I)=0 ZU )@@G@@@^@@@@ VMIN(I)=1.0E+38 @^@@@@ 50 VMAX(I)=-1.0E+38 @A@@@@ ZV )@@G@@IF(NBLOK .EQ. 0) GO TO 100 @^@@@@ DO 80 K=1,NBLOK @#@@@@ ZW )@@G@@J=IBDATA(K) @ @@@@ IF(J .EQ. 0) GO TO 80 @#@@@@ NA=IROWN(K) ZX )@@G@@@#@@@@ NB=ICOLN(K) @#@@@@ LEN=NA*NB @A@@@@ IF(LEN .EQ. ZY )@@G@@0) LEN=NA*(NA+1)/2@^@@@@ DO 70 I=1,LEN @#@@@@ XPROD(J)=0 ZZ )@@G@@@]@@@@ 70 J=J+1 @#@@@@ 80 CONTINUE @[@@@@C @A@@@@C AA )@@G@@ GET NEXT OBSERVATION @[@@@@C @ @@@@ 100 CALL S1INOB(DINP,IFLAG) AB )@@G@@@ @@@@ IF(IFLAG+1)160,150,200 @]@@@@ 150 IERR=1@#@@@@ GO TO AC )@@G@@350 @A@@@@ 160 IF(IFLAG .EQ. -2) GO TO 300 @#@@@@ GO TO 100 AD )@@G@@@[@@@@C @B@@@@C PROCESS NEXT OBSERVATION @[@@@@C AE )@@G@@@[@@@@C @#@@@@ 200 NOBS=NOBS+1 @#@@@@ CALL S1VFWC @^@@@@ AF )@@G@@DO 220 J=1,NV @#@@@@ I=MSET(J) @#@@@@ T=DINP(I) @^@@@@AG )@@G@@ VSUM(J)=VSUM(J)+T @ @@@@ VSSQ(J)=VSSQ(J)+T*T @A@@@@ AH )@@G@@IF(T .LT. VMIN(J)) VMIN(J)=T @A@@@@ IF(T .GT. VMAX(J)) VMAX(J)=T AI )@@G@@@#@@@@ 220 CONTINUE @[@@@@C @A@@@@ IF(NBLOK .EQ. 0) GO TO 2AJ )@@G@@75 @^@@@@ DO 260 K=1,NBLOK @#@@@@ J=IBDATA(K) @ @@@@ AK )@@G@@IF(J .EQ. 0) GO TO 260 @#@@@@ NA=IROWN(K) @#@@@@ LA=IROWPT(K)AL )@@G@@@#@@@@ NB=ICOLN(K) @]@@@@ LB=LA @ @@@@ IF(NB .EQ. 0) GO TAM )@@G@@O 240 @#@@@@ LB=ICOLPT(K)@]@@@@ JB=J @^@@[@ DO 222 JI=1,AN )@@G@@NB @#@@[@ JJ=IVARS(LB)@#@@[@ LB=LB+1 @^@@[@ 222 DINP2(AO )@@G@@JI)=DINP(JJ)@^@@@@ DO 230 I=1,NA @#@@@@ II=IVARS(LA)@#@@@@AP )@@G@@ T=DINP(II) @#@@@@ LA=LA+1 @][@@@ J=JB @^@@@@ AQ )@@G@@DO 225 JI=1,NB @A@@[@ XPROD(J)=XPROD(J)+T*DINP2(JI) @]#@@@ 225 AR )@@G@@J=J+NA@#@@@@ JB=JB+1 @#@@@@ 230 CONTINUE @#@@@@ GO TO AS )@@G@@260 @[@@@@C @^@@[@ 240 DO 242 I=1,NA @#[@@@ II=IVARS(LA)AT )@@G@@@#[@@@ LA=LA+1 @^@@[@ 242 DINP2(I)=DINP(II) @^@@[@ DO 250AU )@@G@@ I=1,NA @#@@[@ T=DINP2(I) @^[@@@ DO 245 JI=1,I @A@@[@AV )@@G@@ XPROD(J)=XPROD(J)+T*DINP2(JI) @]#@@@ 245 J=J+1 @#@@@@ 250 CONTINAW )@@G@@UE @[@@@@C @#@@@@ 260 CONTINUE @A@@@@ 275 CALL S1VFWT(6HCDINAX )@@G@@ 1,$150) @ @@@@ 280 IF(IFLAG-1)100,300,100 @[@@@@C @A@@@@C AY )@@G@@ ALL DONE - CLEAN UP @[@@@@C @]@@@@ 300 IERR=0@#@@@@ 350 AZ )@@G@@DF=NOBS @A@@[@ TIMP=(URTIMF(DUM)-TIMP)/1000. @^@@[@ PRINT BA )@@G@@380,TIMP @F@@[@ 380 FORMAT('0DATA INPUT AND ACCUMULATION TIME',F8.1,BB )@@G@@' SECONDS') @ @@@@ IF(NOBS .GE. 2) RETURN @]@@@@ IERR=1@#@@@@BC )@@G@@ PRINT 9350 @G@@@@ 9350 FORMAT('0***** CALCULATIONS OMITTED BECAUSBD )@@G@@E LESS THAN TWO OBSERVAT@^@@@@ -IONS WERE FOUND') @]@@@@ RETURNBE )@@G@@@]@@@@ END ___S=0@#@@@@ DO 50 I=1,NV@#@@@@ VSUM(I)=0 BF )@@G@@)@@[M@@^GCS@@@@@@@[@)@@_[@@@@"G.)__"C9:K@JG.@__"C9FK@IG/)__"C8:K@#G@FK@@BG )@@G@@C/@__"AA@@@A)@E[F#]A^CCSK0--#]A^G@@@Q@K@@7R@K@@: @@@@][@@@@@@[B@@0@@@@@[BH )@@G@@/,0@@@[[)@[[[[@@[@AB@@@A)@N[F#]A^GCSK0--#@@@@@@@ @#)@@ @^)@@N[@@@"Q[@@@5BI )@@G@@R[@@@:Q@0@@4R@0@@:Q@)@@6R@)@@:AC@@@A)@W[N#@C@)@--#@@@@R@)@@9R@K@@'G@)@@@BJ )@@G@@C/)__"/K@@[B(@@@@@8L@@@U]@[)@@[@])@@C@@@@?AD@@@A)@&[N#@CSK0)]A[#@@[[@@@BBK )@@G@@C[[@@@[@)@@AC@+@@@/K@@[#(@@@@ [@@@@ C@#@@@[@)@[^R@0@@8AE@@@A)@0[F#]A^GC@BL )@@G@@--#@-)@@@@@@[@@@@C;K@@@[T@@@@AG@@@@AC/@@@[/K@@@9*@@@@C[@)@@CT@)@@BAF@@@ABM )@@G@@)@9[MK0CSK0]A^GC@@8LK@@/[@@@@ G@@@@ C/@@@[ @^@@@O[@@[@R[@@@ [@@@[ G@@@@CBN )@@G@@C/@__"AG@@@A)[#[M[@K+CSK0CS@@@G@@@@DC/@@@[@[&@@0@@@@@D@@@@@@/,0@@@8L@@@*BO )@@G@@O/0@@[O/)@@[O/K@@[AH@@@A)[H[N@K^@^@K0C@@@@/K@@^E(@@@@GH@@@@DC/@__./K@@^FBP )@@G@@[@@@@@C/@@@[/K@@[S/G@@[N/@@@[KAI@@@A)[R[F@^GCSK=--#]A^G@@@@@R@)@@4R@K@@6BQ )@@G@@R[@@@7@[0@@0/,0@@@[@@@@]G@@@@]C/@@@[/K@@[BAJ@@@A)[)[F#]A^G]A^GCS^G@@@@@@BR )@@G@@[@)@@EC@&@@@O[)@[[R[)@@#[@@@@#C@ @@@N[@@@"R[K@@3R@0@@5AK@@@A)[([M^GCS[#@BS )@@G@@@@@@@@1@@@@G*@@@@G"^[@@@C@@@@E[[]@@@"[]@@@"D@@@EC[@@@E[@<@@@"@<@@@AL@@@ABT )@@G@@)[3[N@K0]A@K^G@@@@[@^@@@C@@@@E/K@@[.1@@@@G*@@@@G"^@@@EC@^@@@[@[@@@C@@@@EBU )@@G@@/K@@[6AM@@@A)[.[U@^@K@K0R[)@@'G@@@@@C/@__"/K@@^#(@@@@@8L@@[ ENTRY@E@@@@ J NR11 . $T WKV )@@G@@AS IT FOUND ? @E@@@@ J NR2 . $A YES,NR2KW )@@G@@ NO,NR11 @A@@@@NR10 L A0,(-1) . @G@@@@ KX )@@G@@ S,H1 A0,3,X8 . $P SET BAD LN # FLAG IN LENGTH IN PARAM @E@@@@KY )@@G@@ JNB A4,NR12 . $T IS THIS NEXT-LN FNC @C@@@@ KZ )@@G@@ . $A YES NO,NR12 @G@@@@NR11 SZ,H1 3,X8 LA )@@G@@ . $P PUT ZERO IN LENGTH OF PARAM @E@@@@ L A0,LB )@@G@@LNNUM . $P GET LAST LINE IN PROC @E@@@@ A A0,LNINC LC )@@G@@ . $P INC TO NEXT LINE @A@@@@ TG,U A0,2001 LD )@@G@@. @A@@@@ L,U A0,2000 . @A@@@@ S,H2 A0,LE )@@G@@2,X8 . @C@@@@NR12 SZ,H1 2,X8 . $P ZERO LINE-# LF )@@G@@@C@@@@ J *RETURN . $E RETURN @]@@@@ . LG )@@G@@@A@@@@ . ** PF$AMW ** @]@@@@ . @C@@@@ . LH )@@G@@ ROUTINE TO WRITE A LINE TO THE FILE @A@@@@ . FOR A PARLI )@@G@@TICULAR PROC@]@@@@ . @^@@@@ . CALL IS @A@@@@ . LJ )@@G@@ LX,U X10,PARAM @A@@@@ . LMJ X11,PF$AMW LK )@@G@@@C@@@@ . WHERE PARAM IS FOLLOWING @E@@@@ . LL )@@G@@ PARAM + PROC-NAME (2 WORDS) @G@@@@ . LM )@@G@@ + LINE-#,[NEXT-LINE-#] (N-L-# RETURNED)@E@@@@ . LN )@@G@@ + LENGTH,BUF-ADDR @]@@@@ . @G@@@@LO )@@G@@ . THE ROUTINE CHECKS TO SEE IF LINE-# HAS BEEN PREVIOUSLY LP )@@G@@@G@@@@ . ENTERED, AND IF SO REPLACES IT WITH THE NEW LINE LQ )@@G@@ @]@@@@ . @C@@@@PF$AMW*. . $H PF$AMW LR )@@G@@ @A@@@@ L A4,(-1) . @C@@@@ J RNWLS )@@G@@S . $J RNWS @]@@@@ . @E@@@@ . THIS PARLT )@@G@@T OF LOGIC HANDLES STORE OF LINE @C@@@@ . WHERE LINLU )@@G@@E # ALREADY EXISTS @]@@@@ . @E@@@@W1 L A2,LNCNT LV )@@G@@ . $P DECREMENT LINE COUNT @A@@@@ AN,U A2,1 LW )@@G@@. @A@@@@ S A2,LNCNT . @E@@@@ TG,U A1,LX )@@G@@1900 . $T IS LINE # < 1900 ? @G@@@@ SLJ LNWARN LY )@@G@@ . $W LNWARN - PRINT MAX LINE WARNING @A@@@@ AN,U A0,LZ )@@G@@1 . @E@@@@ L R3,A0 . $P SAVE INDEX ADMA )@@G@@DR FOR LINE @E@@@@ L A0,0,A0 . $P GET ADDR OF OLD LINMB )@@G@@E @A@@@@ LSSL A0,12 . @A@@@@ SSL A0,MC )@@G@@12 . @A@@@@ L A5,A0 . @E@@@@ MD )@@G@@ L,H1 A2,3,X8 . $P GET NEW LINE LENGTH @E@@@@ A,UME )@@G@@ A2,5 . $P ADD WORD FOR HEADER @A@@@@ SZ A1 MF )@@G@@ . @G@@@@ DI,U A1,6 . $P CONVERT LENGTMG )@@G@@H TO WORD LENGTH @A@@@@ A,U A1,1 . @E@@@@MH )@@G@@ L,H2 A3,0,A0 . $P GET OLD LINE LENGTH @E@@@@ MI )@@G@@ A,U A3,5 . $P ADD WORD FOR HEADER @A@@@@ SZ MJ )@@G@@ A2 . @G@@@@ DI,U A2,6 . $P CONVERTMK )@@G@@ LENGTH TO WORD LENGTH @A@@@@ A,U A2,1 . ML )@@G@@@G@@@@ TNE A1,A2 . $T ARE OLD & NEW WORD LENGTHS EQUAMM )@@G@@L ? @C@@@@ J W54 . $A NO YES,W54 @G@@@@ MN )@@G@@ TG A1,A2 . $T WILL NEW LINE FIT IN OLD SPACE ? @C@@@@MO )@@G@@ J W3 . $A YES NO,W3 @G@@@@ AN A2,MP )@@G@@A1 . $P CALCULATE EXTRA SPACE SIZE AND LOC @A@@@@ AU MQ )@@G@@ A2,A5 . @G@@@@ SLJ ADDSTK . $W ADDSTK MR )@@G@@- PUT EXTRA SPACE ON AVAIL STK@C@@@@ J W54 . $J WMS )@@G@@54 @G@@@@W3 L A3,A5 . $P GET SIZE AND LOC OFMT )@@G@@ OLD LINE @G@@@@ SLJ ADDSTK . $W ADDSTK - PUT MU )@@G@@SPACE ON AVAIL STACK @C@@@@ J W50 . $J W50 MV )@@G@@ @]@@@@ . @C@@@@ADDSTK + 0 . $H ADDSTK MW )@@G@@ @A@@@@ SZ A4 . @A@@@@ L R1,MX )@@G@@AVCNT . @E@@@@ L X10,(1,AVSTK) . $P SET PTR TO AVMY )@@G@@AIL STACK @E@@@@ SE,T1 A4,0,*X10 . $P FIND EMPTY SLOT ON MZ )@@G@@STACK @A@@@@ J ADD2 . @A@@@@ AN,U X10NA )@@G@@,1 . @A@@@@ J ADD3 . @A@@@@ADD2 NB )@@G@@ L A4,AVCNT . @A@@@@ TG,U A4,500 . NC )@@G@@@A@@@@ J *ADDSTK . @A@@@@ A,U A4,1 ND )@@G@@ . @A@@@@ S A4,AVCNT . @E@@@@ADD3 S NE )@@G@@ A3,0,X10 . $P PUT ENTRY INTO STACK @A@@@@ S,T1 A2,NF )@@G@@0,X10 . @C@@@@ J *ADDSTK . $E RETURN NG )@@G@@@]@@@@ . @E@@@@ . THIS SECTION OF LOGIC HANDLES WRITE FNNH )@@G@@C @C@@@@ . FOR THE CASE OF A NEW LINE-# @]@@@@NI )@@G@@ . @E@@@@W40 TG,U A1,1900 . $T IS LINE-# < 1900 ? NJ )@@G@@ @G@@@@ SLJ LNWARN . $W LNWARN - PRINT MAX LN WARNK )@@G@@NING @E@@@@ L A0,LNCNT . $P GET # LINES AS INDENL )@@G@@X CNT @A@@@@ SZ A4 . @G@@@@ TG,U A0,NM )@@G@@PRMXLN . $T HAVE MAX # LINES BEEN INPUT @C@@@@ J NN )@@G@@ NR10 . $A NO YES,NR10 @A@@@@ L R1,A0 NO )@@G@@. @E@@@@ L A0,INDXAD . $P GET START OF INDEX BLOCK NP )@@G@@@G@@@@ LXI,U A0,1 . $P SEARCH INDEX BLOCK FOR INSERT PNQ )@@G@@OINT @E@@@@ SG,T1 A1,0,*A0 . $T IS IT AT END OF BLOCK ? NR )@@G@@@C@@@@ J W41 . $A NO YES,W41 @E@@@@ A NS )@@G@@ A0,R1 . $P GET END OF INDEX BLOCK @G@@@@ LXI,U A0,NT )@@G@@-1 . $P SET INDICES TO SHIFT INDEX BLOCK @A@@@@ L NU )@@G@@ X9,A0 . @A@@@@ AN,U X9,1 . @E@@@@NV )@@G@@ L A2,R1 . $P GET SHIFT COUNT @A@@@@ NW )@@G@@ A,U A2,1 . @A@@@@ L R1,A2 . NX )@@G@@@G@@@@ BT A0,0,*X9 . $P SHIFT INDEX BLOCK TO ALLOW NEW NY )@@G@@ENTRY @A@@@@W41 L R3,A0 . @G@@@@W50 L,H1 A1,NZ )@@G@@3,X8 . $P GET LINE LENGTH FROM PARAM @E@@@@ A,UOA )@@G@@ A1,5 . $P ALLOW FOR HEADER WORD @A@@@@ SZ A0 OB )@@G@@ . @G@@@@ DI,U A0,6 . $P CONVERT LENGTOC )@@G@@H TO WORD LENGTH @A@@@@ A,U A0,1 . @G@@@@OD )@@G@@ TNZ AVCNT . $T IS THERE VACANT ALLOCATED SPACE ? OE )@@G@@@C@@@@ J W52 . $A YES NO,W52 @A@@@@ L OF )@@G@@ R1,AVCNT . @G@@@@ L A1,(1,AVSTK) . $P SET PTROG )@@G@@ TO AVAIL SPACE STACK @G@@@@ SE,T1 A0,0,*A1 . $T IOH )@@G@@S THERE VACANT SPACE OF NEEDED SIZE?@C@@@@ J W51 OI )@@G@@. $A YES NO,W51 @A@@@@ AN,U A1,1 . @G@@@@ OJ )@@G@@ L A2,0,A1 . $P GET VACANT SPACE ENTRY FROM STACK @E@@@@OK )@@G@@ SZ 0,A1 . $P CLEAR STACK ENTRY @G@@@@ OL )@@G@@ LSSL A2,12 . $P GET RELATIVE WORD ADDR OF SPACE @A@@@@OM )@@G@@ SSL A2,12 . @C@@@@ J W53 ON )@@G@@. $J W53 @A@@@@W51 L R1,AVCNT . @G@@@@ OO )@@G@@ L A1,(1,AVSTK) . $P SET PTR TO AVAIL SPACE STACK @G@@@@OP )@@G@@ SG,T1 A0,0,*A1 . $T IS THERE ENTRY WITH ENOUGH SPACE ? OQ )@@G@@@C@@@@ J W52 . $A YES NO,W52 @A@@@@ AN,OR )@@G@@U A1,1 . @E@@@@ L,T1 A4,0,A1 . $P GET # WOS )@@G@@ORDS VACANT @A@@@@ AN A4,A0 . @G@@@@ OT )@@G@@ L A2,0,A1 . $P GET REL WORD ADDR OF VACANT SPACE @A@@@@OU )@@G@@ LSSL A2,12 . @A@@@@ SSL A2,12 OV )@@G@@. @A@@@@ AU A2,A0 . @G@@@@ S A3,OW )@@G@@0,A1 . $P UPDATE AVAIL STK ENTRY TO GIVE LEFT @E@@@@ S,TOX )@@G@@1 A4,0,A1 . $ OVER VACANT SPACE @C@@@@ J W53OY )@@G@@ . $J W53 @G@@@@W52 L A2,NXTADR . $P GOZ )@@G@@ET NEXT UNALLOCATED SPACE FOR PROC @G@@@@ TNZ NXTADR PA )@@G@@. $T HAS NEW SPACE BUFFER BEEN GOTTEN @C@@@@ J W521 PB )@@G@@ . $A YES NO,W521 @G@@@@ AU A2,A0 . $P GET ENDPC )@@G@@ OF NEW LINE IN THIS BUFFER @E@@@@ TG A3,LSTADR . $T WPD )@@G@@ILL LINE FIT IN BUFFER @C@@@@ J W521 . $A YES NO,PE )@@G@@W521 @E@@@@ S A3,NXTADR . $P SAVE NEXT NEW ADDR PF )@@G@@@C@@@@ J W53 . $J W53 @E@@@@W521 L PG )@@G@@ A3,A0 . $P SAVE NEW LINE LENGTH @E@@@@ L A0,PH )@@G@@LAST$D . $P MCORE NEW SPACE BUFFER @A@@@@ A,U A0,1 PI )@@G@@ . @A@@@@ L A2,A0 . @A@@@@ A,UPJ )@@G@@ A0,512 . @G@@@@ S A0,LSTADR . $P SAVE ENPK )@@G@@D ADDR OF NEW BUFFER @A@@@@ AN,U A0,1 . PL )@@G@@@A@@@@ S A0,LAST$D . @A@@@@ ER MCORE$ PM )@@G@@ . @E@@@@ L A0,A3 . $P RESTORE NEW LINE LEPN )@@G@@NGTH @G@@@@ AU A2,A0 . $P GET END OF NEW LINE IN THPO )@@G@@IS BUFFER @E@@@@ S A3,NXTADR . $P SAVE NEXT NEW ADDR PP )@@G@@ @G@@@@W53 L X9,R3 . $P GET INDEX ENTRY ADDR FOR PQ )@@G@@LINE @E@@@@ S A2,0,X9 . $P SAVE ADDR IN INDEX PR )@@G@@ @E@@@@ L,H1 A1,2,X8 . $P GET LINE-# FROM PARAM PS )@@G@@@E@@@@ S,T1 A1,0,X9 . $P SAVE LINE # IN INDEX @A@@@@PT )@@G@@ L A0,A2 . @A@@@@W54 LXI,U A0,1 PU )@@G@@. @E@@@@ L,H1 A1,2,X8 . $P GET LINE-# FROM PARAM PV )@@G@@@E@@@@ S,H1 A1,0,A0 . $P SAVE IT IN LINE HEADER @G@@@@PW )@@G@@ TG A1,LNNUM . $T IS IT LESS THAN LAST-LINE-# ? PX )@@G@@@E@@@@ S A1,LNNUM . $P SAVE IT AS LAST-LINE-# @E@@@@PY )@@G@@ A A1,LNINC . $P INCREMENT LINE # @E@@@@ PZ )@@G@@ TG,U A1,2001 . $T IS NEXT # < 2001 @E@@@@ L,UQA )@@G@@ A1,2000 . $P SET NEXT # TO 2000 @G@@@@ S,H2 A1,QB )@@G@@2,X8 . $P PUT IT IN NEXT-LINE-# OF PARAM @E@@@@ L,HQC )@@G@@1 A2,3,X8 . $P GET LENGTH FROM PARAM @E@@@@ S,H2 A2,QD )@@G@@0,*A0 . $P SAVE IT IN LINE HEADER @G@@@@ AN,U A2,1 QE )@@G@@ . $P CONVERT CHAR LENGTH TO WORD LENGTH @A@@@@ SZ A1 QF )@@G@@ . @A@@@@ DI,U A1,6 . @A@@@@ QG )@@G@@ A,U A1,1 . @G@@@@ L R1,A1 . $P SQH )@@G@@AVE IT FOR TRANSFER COUNT @E@@@@ L,H2 X9,3,X8 QI )@@G@@. $P GET BUF-ADDR FROM PARAM @A@@@@ LXI,U X9,1 . QJ )@@G@@@G@@@@ BT A0,0,*X9 . $P TRANSFER LINE TO BLOCK BUFFER QK )@@G@@ @A@@@@ L A1,LNCNT . @E@@@@ A,U A1,QL )@@G@@1 . $P INCREMENT LINE COUNT @A@@@@ S A1,LNCNT QM )@@G@@ . @C@@@@ J *RETURN . $E RETURN @]@@@@QN )@@G@@ . @A@@@@ . ** PF$AMD ** @]@@@@ . QO )@@G@@@C@@@@ . ROUTINE TO DELETE A LINE FROM PS$FILE @]@@@@ . QP )@@G@@@^@@@@ . CALL IS @A@@@@ . LX,U X10,PARAM QQ )@@G@@@C@@@@ . LMJ X11,PF$AMD (PF$AMDN) @C@@@@ . QR )@@G@@ WHERE PARAM IS FOLLOWING - @E@@@@ . PARAM QS )@@G@@+ PROC-NAME (2WORDS) @E@@@@ . + LQT )@@G@@INE-#,[NEXT-LINE-#] @]@@@@ . @C@@@@PF$AMD*. QU )@@G@@ . $H PF$AMD @C@@@@ L,U A4,2 . $P SET FLAQV )@@G@@G @C@@@@ J RNWS . $J RNWS @C@@@@PF$AMDQW )@@G@@N*. . $H PF$AMDN @C@@@@ L,U A4,3 QX )@@G@@ . $P SET FLAG @C@@@@ J RNWS . $J RNWS QY )@@G@@ @E@@@@D1 TE,U A4,2 . $T IS THIS DEL NEXT FNC ? QZ )@@G@@@C@@@@ J D2 . $A NO YES,D2 @G@@@@ AN,RA )@@G@@U A0,1 . $P RESET TO INDEX ENTRY FOR THIS LINE @A@@@@ RB )@@G@@ ANU,U A0,1 . @A@@@@ SZ A5 . RC )@@G@@@A@@@@ TG A1,INDXAD . @E@@@@ L,T1 A5,0,A1 RD )@@G@@ . $P GET PRIOR LINE # @A@@@@ LSSL A5,18 RE )@@G@@. @E@@@@ A,H1 A5,2,X8 . $P SAVE THIS LINE # RF )@@G@@@C@@@@ J D10 . $J D10 @E@@@@D2 JGDRG )@@G@@ R1,D10 . $T IS THERE ANOTHER INDEX @C@@@@ J NR1RH )@@G@@1 . $A YES NO,NR11 @E@@@@D3 L A5,2,X8 . $P SRI )@@G@@AVE LINE # AND NEXT # @E@@@@D10 L A2,LNCNT . $P DECREMERJ )@@G@@NT INDEX KEY CNT @A@@@@ AN,U A2,1 . @A@@@@ RK )@@G@@ S A2,LNCNT . @E@@@@ L A3,0,A0 . $P SRL )@@G@@AVE INDEX KEY @A@@@@ L A1,R1 . @E@@@@RM )@@G@@ SZ R2 . $P GET ACTUAL NEXT LINE # @A@@@@ RN )@@G@@ TZ A1 . @A@@@@ L,T1 R2,1,A0 . RO )@@G@@@G@@@@ L X9,A0 . $P SET INDICES FOR KEY TRANSFER RP )@@G@@ @A@@@@ A,U X9,1 . @E@@@@ BT A0,RQ )@@G@@0,*X9 . $P PACK INDEX KEY BLOCK @C@@@@ LSSL A3,12 RR )@@G@@ . $P GET WORD ADDR@A@@@@ SSL A3,12 . @A@@@@RS )@@G@@ L A0,A3 . @E@@@@ L,H2 A2,0,A0 RT )@@G@@. $P GET LINE CHAR LENGTH @E@@@@ A,U A2,5 . $P ARU )@@G@@DD HEADER WORD @A@@@@ SZ A1 . @G@@@@RV )@@G@@ DI,U A1,6 . $P CONVERT LENGTH TO WORD LENGTH RW )@@G@@@A@@@@ A,U A1,1 . @A@@@@ L A2,A1 RX )@@G@@ . @G@@@@ SLJ ADDSTK . $W ADDSTK - PUT ENTRY RY )@@G@@ON AVAIL STACK @E@@@@ S A5,2,X8 . $P SET LINE #, NRZ )@@G@@EXT # @G@@@@ S,H1 R2,3,X8 . $P STORE ACTUAL NEXT LSA )@@G@@N # IN PARAM @C@@@@ J *RETURN . $E RETURN SB )@@G@@@]@@@@ . @A@@@@ . ** PF$AMQ ** @]@@@@ . SC )@@G@@ @C@@@@ . ROUTINE TO RESET LINE INCREMENT @]@@@@ . SD )@@G@@ @^@@@@ . CALL IS @C@@@@ . L A0,NESE )@@G@@W-INCREMENT @A@@@@ . LMJ X11,PF$AMQ @]@@@@ . SF )@@G@@ @C@@@@PF$AMQ*. . $H PF$AMQ @E@@@@ SG )@@G@@ S A0,LNINC . $P RESET INCREMENT @C@@@@ J SH )@@G@@ 0,X11 . $E RETURN @]@@@@ . @E@@@@ . THSI )@@G@@E FOLLOWING ROUTINES PRODUCE MESSAGES ON @C@@@@ . DETSJ )@@G@@ECTION OF CERTAIN CONDITIONS @]@@@@ . @E@@@@ . 1. PROSK )@@G@@C NOT INITIALIZED BEFORE R/W ATTEMPTED @]@@@@ . @C@@@@NOPROCSL )@@G@@. . $H NOPROC @E@@@@ E$DIT PREPKT SM )@@G@@ . $P SET UP ERROR MESSAGE @A@@@@ E$COPY 5,NPM1 SN )@@G@@. @A@@@@ DL A0,0,X8 . @A@@@@ LMJ X11SO )@@G@@,EFD2$ . @A@@@@ E$COPY 42,NPM2 . @A@@@@ SP )@@G@@ E$DITX . @E@@@@ P$RINT (PF 1,10,PREBUF) . $SQ )@@G@@P PRINT MESSAGE @C@@@@ ER EXIT$ . $E TERMINASR )@@G@@TE @]@@@@ . @E@@@@ . 2. PROC LINE # > 1900 ENCOUNTESS )@@G@@RED, PRINT WARNING@]@@@@ . @C@@@@LNWARN + 0 ST )@@G@@. $H LNWARN @E@@@@ TZ MAXLN . $T IS THIS FIRSTSU )@@G@@ VIOLATION ?@E@@@@ J *LNWARN . $E RETURN WITH NO MESSSV )@@G@@AGE @A@@@@ L R1,A0 . @E@@@@ L,U A0,SW )@@G@@1 . $P SET MESSAGE-PRINTED FLAG @A@@@@ S A0,MAXLN SX )@@G@@ . @E@@@@ P$RINT (PF 1,10,LWM1) . $P PRINT WARNING MESSSY )@@G@@AGE @A@@@@ L A0,R1 . @C@@@@ J *LNSZ )@@G@@WARN . $E RETURN @]@@@@ . @E@@@@ . 3. MORTA )@@G@@E THAN 25 PROCS HAVE BEEN INPUT @]@@@@ . @C@@@@MAXPROTB )@@G@@C. . $H MAXPROC @E@@@@ SZ 0,X8 TC )@@G@@ . $P ZERO OUT PROC NAME @C@@@@ P$RINT (PF 1,8,MPM1) TD )@@G@@. $P PRINT MESSAGE@A@@@@ L X9,(3,PNMLST) . @A@@@@ TE )@@G@@ L,U A5,4 . @G@@@@MP1 E$DIT PREPKT . $P PTF )@@G@@RINT OUT ALL PROC NAMES, 5 PER LINE @A@@@@ L,U A4,4 TG )@@G@@. @A@@@@MP2 L A0,A4 . @A@@@@ MSI,U A0,TH )@@G@@15 . @A@@@@ LMJ X11,ECOL$ . @A@@@@ TI )@@G@@ DL A0,0,*X9 . @A@@@@ LMJ X11,EFD2$ . TJ )@@G@@@A@@@@ JGD A4,MP2 . @A@@@@ E$DITX TK )@@G@@ . @A@@@@ P$RINT (PF 1,12,PREBUF) . @A@@@@ JGDTL )@@G@@ A5,MP1 . @E@@@@ J *RETURN . $E RETURN TM )@@G@@CONTROL TO USER @]@@@@$(4). @A@@@@ . GENERAL STORAGE TN )@@G@@ @A@@@@RETURN + 0 . @^@@@@ . FLAGS TO )@@G@@ @A@@@@PROCIN + 0 . @A@@@@MAXLN + 0 TP )@@G@@ . @A@@@@PNAD + 0 . @A@@@@ALLWRDTQ )@@G@@ + 0 . @A@@@@NXTADR EQUF ALLWRD,,H1 . TR )@@G@@@A@@@@LSTADR EQUF ALLWRD,,H2 . @A@@@@PCNT + 0 TS )@@G@@ . @A@@@@PNMLST RES 125 . @A@@@@PRCPKT* RESTT )@@G@@ 5 . @A@@@@PNAME EQUF PRCPKT . @A@@@@TU )@@G@@PNUM EQUF PRCPKT+2,,S1 . @A@@@@PFLAG EQUF PRCPKT+2,,S3 TV )@@G@@ . @A@@@@TBLAD EQUF PRCPKT+2,,H2 . @A@@@@LNCNT EQUF PRCTW )@@G@@PKT+3,,H1 . @A@@@@INDXAD EQUF PRCPKT+3,,H2 . @A@@@@LNINC TX )@@G@@ EQUF PRCPKT+4,,H1 . @A@@@@LNNUM EQUF PRCPKT+4,,H2 . TY )@@G@@@A@@@@AVCNT + 0 . @A@@@@AVSTK RES 500 TZ )@@G@@ . @C@@@@ . EDIT PACKET FOR PROC MESSAGES @A@@@@UA )@@G@@PREPKT* E$PKT 22,PREBUF . @A@@@@PREBUF* RES 22 UB )@@G@@. @A@@@@ . ERROR AND WARNING MESSAGES@A@@@@NPM1 'PROC ' UC )@@G@@ . @E@@@@NPM2 ' WAS NOT INITIALIZED PRIOR TO READ/WRIUD )@@G@@TE' . @G@@@@LWM1 'WARNING: LINE NUMBERS GREATER THAN 2000 ARE UE )@@G@@NOT ALLOWED. ' . @E@@@@MPM1 'MAXIMUM OF 25 PROCS HAVE ALREADY BEEN UF )@@G@@INPUT: ' . @A@@@@ END . ___KEY CNT @A@@@@UG )@@G@@ AN,U A2,1 *[@@@@*SDFF*@^@@@@ AXR$ @^@@@@UH )@@G@@$(4) LIT. @]@@@@$(1). @]@@@@. @E@@@@. UI )@@G@@ THIS ROUTINE WILL READ RECORDS FROM D$FILE @C@@@@. UJ )@@G@@ AND WRITE THEM TO T$FILE @]@@@@. @C@@@@BLDT$F* UK )@@G@@ . $H @E@@@@ SX X11,SAVEX1UL )@@G@@1 . $P SAVE RETURN ADDR @E@@@@ DL A0,USENME UM )@@G@@ . $P GET FILE NAME @E@@@@ DS A0,NAMED2 . $PUN )@@G@@ GIVE IT TO DF$AMR@E@@@@RDLOOP . $H READ UO )@@G@@LOOP @E@@@@ LX,U X10,RDA . $P GET RDA UP )@@G@@ADDR @E@@@@ LMJ X11,DF$AMR . $P READ A RECORD UQ )@@G@@@C@@@@ LA A0,(+0777777777777) . @G@@@@ TNUR )@@G@@E A0,RDA . $T SEE IF END OF D$FILE @E@@@@ US )@@G@@ J ENDIT . $A YES,ENDIT NO @G@@@@ TZUT )@@G@@ FIRST . $T IS IT A FIRST RECORD @E@@@@ UU )@@G@@ SLJ FIRSTLN . $W PERFORM SPEC CHK @E@@@@ LAUV )@@G@@ A0,R3 . $P GET RECORD LENGTH@G@@@@ SA UW )@@G@@ A0,TFPKT . $P BUILD TF$AM PACKET @E@@@@ LXUX )@@G@@,U X10,TFPKT . $P GET PKT ADDR @E@@@@ LMJ UY )@@G@@ X11,TF$SQW . $P WRITE TO T$FILE @E@@@@ J RDLOUZ )@@G@@OP . $J NXT ONE @C@@@@ENDIT VA )@@G@@ . $H @E@@@@ LX X11,SAVEX11 . $P GET RVB )@@G@@ETURN ADDR @E@@@@ J 0,X11 . $J RETURN VC )@@G@@ @G@@@@FIRSTLN +0 . $H ROUTINE TO CHK FOVD )@@G@@R ART KEY @E@@@@ SZ FIRST . $P RESET SW VE )@@G@@ @F@@@@ TZ RDA . $T IS IT A SPEC RECOVF )@@G@@RD @E@@@@ J *FIRSTLN . $A YES NO,*RETURN VG )@@G@@@F@@@@ LA A0,RDA+1 . $P GET THE RECORD HDR VH )@@G@@@E@@@@ TE A0,(+077,0,2) . $T AN ART KEY @E@@@@VI )@@G@@ J *FIRSTLN . $A YES NO,RETURN @E@@@@ VJ )@@G@@ LA A0,RDA+2 . $P GET THE ART KEY @E@@@@ SAVK )@@G@@ A0,ARTKEY . $P SET IT @E@@@@ J VL )@@G@@ RDLOOP . $J NXT RECORD @]@@@@$(4). @]@@@@FIRST VM )@@G@@ +1@A@@@@TFPKT +0 . T$FILE PACKET @^@@@@ +RDA VN )@@G@@ @]@@@@ +0@]@@@@SAVEX11 +0@^@@@@ END VO )@@G@@___CS) A0,RDA+2 . $P GET THE ART KEY @E@@@@ SA VP )@@G@@ A0,ARTKEY . $P*[@@@@*SDFF*@]@@@@ . @A@@@@ . VQ )@@G@@ ** GETVAR ** @]@@@@ . @E@@@@ . COMMON ROUTINEVR )@@G@@ FOR EDITOR WORKER ROUTINES @E@@@@ . IT IS PASSED THE ADDVS )@@G@@R OF A SYMBOL TABLE ENTRY @A@@@@ . AND AN INDEX VALUE VT )@@G@@@E@@@@ . AND RETURNS THE ABSOLUTE CORE LOCATION OF @A@@@@VU )@@G@@ . THE VARIABLE @]@@@@ . @^@@@@ . CAVV )@@G@@LL IS: @A@@@@ . SLJ GETVAR @^@@@@ . VW )@@G@@ WITH @E@@@@ . X10 - SYMBOL TABLE ENTRY ADDR VX )@@G@@ @C@@@@ . A0 - BINARY INDEX VALUE @C@@@@ . VY )@@G@@ OR 0 IF NO INDEX @^@@@@ . ON RETURNVZ )@@G@@@E@@@@ . A0 - CHARACTER LENGTH OF ITEM @E@@@@WA )@@G@@ . A1 - ABSOLUTE WORD ADDR OF ITEM @C@@@@ . WB )@@G@@ OR ERROR CODE @E@@@@ . A2 -WC )@@G@@ CHARACTER OFFSET (1 - 6) @C@@@@ . A3 - TYPE WD )@@G@@- 1 - PIC X @C@@@@ . 2 - PIC 9 WE )@@G@@@C@@@@ . 3 - PIC 9 COMP @E@@@@ . WF )@@G@@ X10 - SYMBOL TABLE ENTRY ADDR @]@@@@ . @E@@@@WG )@@G@@ . IF ERROR CODE, BIT 35 OF A1 WILL BE SET, @C@@@@ . WH )@@G@@ BITS 34 - 0 WILL CONTAIN: @E@@@@ . 0 - WI )@@G@@VALUE NOT DEFINED IN CORE @E@@@@ . 1 - INVALIWJ )@@G@@D ITEM (I.E. SET NAME) @C@@@@ . 2 - INVALID INDEWK )@@G@@X VALUE @]@@@@ . @A@@@@ . ** GETVAR ** WL )@@G@@@]@@@@ . @^@@@@ AXR$. @^@@@@$(2) LIT. WM )@@G@@ @]@@@@$(1). @]@@@@ . @C@@@@GETVAR* + 0 WN )@@G@@ . $H GETVAR @E@@@@ TNZ X10 . $T IS SYM WO )@@G@@TBL ADDR ZERO ? @C@@@@ J SYMERR . $A NO YES,SYMERRWP )@@G@@@E@@@@ TP A0 . $T IS INDEX POSITIVE ? @C@@@@WQ )@@G@@ J INDERR . $A YES NO,INDERR@C@@@@ L,S4 A3,WR )@@G@@0,X10 . $P GET TYPE @E@@@@ TNZ TYPE,A3 . $T IWS )@@G@@S TYPE UNDEFINED PIC ? @C@@@@ J UNDEF . $A NO YES,WT )@@G@@UNDEF @E@@@@ TG,U A3,021 . $T IS THIS OCCURS SUBITEM ? WU )@@G@@@C@@@@ J SUBOCC . $A NO YES,SUBOCC@E@@@@ TG,WV )@@G@@U A3,016 . $T IS THIS DEFINED ITEM ? @C@@@@ J ITEWW )@@G@@M . $A NO YES,ITEM @G@@@@ TG,U A3,7 . $T IWX )@@G@@S THIS OCCURS OR ARRAY ITEM ? @C@@@@ J OCCURS WY )@@G@@. $A NO YES,OCCURS@E@@@@ TNE,U A3,1 . $T IS THIS SET NWZ )@@G@@AME ? @C@@@@ J SYMERR . $A NO YES,SYMERR@G@@@@XA )@@G@@ITEM TG,U A0,2 . $T IS INDEX OTHER THAN 0 OR 1 ? XB )@@G@@@C@@@@ J INDERR . $A NO YES,INDERR@E@@@@ L,UXC )@@G@@ A0,1 . $P SET INDEX TO 1 @C@@@@ J FORXD )@@G@@M1 . $J FORM1 @C@@@@OCCURS TNZ A0 . $T IXE )@@G@@S INDEX 0 ? @C@@@@ J INDERR . $A NO YES,INDERR@E@@@@XF )@@G@@ L,T3 A1,2,X10 . $P GET HIGH # OCCURS VALUE @A@@@@ XG )@@G@@ AND,U A1,07777 . @E@@@@ TLE A2,A0 . $T IXH )@@G@@S INDEX WITHIN RANGE ? @C@@@@ J INDERR . $A YES NO,XI )@@G@@INDERR@C@@@@FORM1 SLJ HEADER . $W HEADER @E@@@@ XJ )@@G@@ TG A1,SA1 . $T IS ADDR WITHIN RECORD ? @C@@@@ J XK )@@G@@ SIZERR . $A YES NO,SIZERR@E@@@@ L A2,A3 XL )@@G@@. $P PUT CHAR OFFSET IN A2 @C@@@@ L,S4 A3,0,X10 . $P GXM )@@G@@ET ITEM TYPE@E@@@@ L A3,TYPE,A3 . $P CONVERT IT TO RETURXN )@@G@@N TYPE@A@@@@ J *GETVAR . $E @]@@@@ . @C@@@@XO )@@G@@SUBOCC TNZ A0 . $T IS INDEX 0 ? @C@@@@ J INDXP )@@G@@ERR . $A NO YES,INDERR@E@@@@ L,H2 A2,C14 . $P GXQ )@@G@@ET C14 BASE ADDR @G@@@@ L A1,1,X10 . $P GET OCCXR )@@G@@-LINK TO OCCURS ITEM @E@@@@ TN A1 . $T IXS )@@G@@S OCCURS ITEM IN C14 ? @E@@@@ L,H2 A2,C15 . $P GET C15XT )@@G@@ BASE ADDR @A@@@@ LSSL A1,1 . @A@@@@ XU )@@G@@ SSL A1,19 . @G@@@@ A A2,A1 . $P GXV )@@G@@ET ABS ADDR OF OCCURS ITEM ENTRY @E@@@@ S X10,SX10 XW )@@G@@. $P SAVE SUB ITEM ENTRY ADDR @E@@@@ L X10,A2 . $P SXX )@@G@@ET PTR TO OCCURS ITEM @E@@@@ L,T3 A1,2,X10 . $P GET HIGXY )@@G@@H # OCCURS VALUE @A@@@@ AND,U A1,07777 . @E@@@@ XZ )@@G@@ TLE A2,A0 . $T IS INDEX WITHIN RANGE ? @C@@@@ J YA )@@G@@ INDERR . $A YES NO,INDERR@G@@@@ SLJ HEADER YB )@@G@@. $W HEADER - GET LOCATION OF OCCURS IN CR@G@@@@ L X10,SX10 YC )@@G@@ . $P RESET PTR TO SUB OCCURS ITEM ENTRY @D@[@@ L A2,YD )@@G@@A0 . $P SAVE CHAR LENGTH @G@@@@ L,T1 A0,0,X10 YE )@@G@@. $P GET CHAR DISP OF SUB IN OCCURS @A@@@@ LSSL A0,24 YF )@@G@@ . @A@@@@ SSL A0,24 . @G@@@@ A YG )@@G@@ A3,A0 . $P ADD IT TO OFF SET, START OF OCCURS @E@[@@ YH )@@G@@ L A0,A2 . $P RESTORE CHAR LENGTH @D@@@[ L,TYI )@@G@@3 A0,0,X10 . $P GET CHAR LENGTH @A@@@[ LSSL A0,24 YJ )@@G@@ . @A@@@[ SSL A0,24 . @G@@@@ AN,YK )@@G@@U A3,2 . $P CONVERT OFF SET TO WORDS + OFF SET @A@@@@ YL )@@G@@ SZ A2 . @A@@@@ DI,U A2,6 . YM )@@G@@@E@@@@ A A1,A2 . $P ADJUST ABS WORD ADDR @E@@@@YN )@@G@@ TG A1,SA1 . $T IS ADDR WITHIN RECORD ? @C@@@@ YO )@@G@@ J SIZERR . $A YES NO,SIZERR@E@@@@ A,U A3,1 YP )@@G@@ . $P SET CHAR OFFSET @A@@@@ L A2,A3 YQ )@@G@@. @C@@@@ L,S4 A3,0,X10 . $P GET ITEM TYPE@E@@@@ YR )@@G@@ L A3,TYPE,A3 . $P CONVERT IT TO RETURN TYPE@A@@@@ J YS )@@G@@ *GETVAR . $E @]@@@@ . @]@@@@ . @E@@@@UNDEF YT )@@G@@ SZ A1 . $P SET ERROR CODE = 0 @C@@@@ J YU )@@G@@ ERROR . $J ERROR @E@@@@SYMERR L,U A1,1 YV )@@G@@. $P SET ERROR CODE = 1 @C@@@@ J ERROR . $J EYW )@@G@@RROR @E@@@@INDERR L,U A1,2 . $P SET ERROR CODE = 2 YX )@@G@@ @C@@@@ J ERROR . $J ERROR @A@@@@SIZERRYY )@@G@@ LSSL A1,18 . @E@@@@ A,U A1,3 . $P SYZ )@@G@@ET ERROR CODE = 3 @E@@@@ERROR SSC A1,17 . $P SET BITZA )@@G@@ 35 OF A1 @A@@@@ A,U A1,1 . @A@@@@ ZB )@@G@@ SSC A1,1 . @A@@@@ J *GETVAR . $E ZC )@@G@@@]@@@@ . @]@@@@ . @C@@@@HEADER + 0 ZD )@@G@@. $H HEADER @E@@@@ L,T1 A1,1,X10 . $P GET SEQUENCE ZE )@@G@@NUMBER @E@@@@ L,H1 A2,TT1 . $P GET # SEQ NO ASSIGNZF )@@G@@ED @E@@@@ TLE A2,A1 . $T IS SEQ NO WITHIN RANGE ? ZG )@@G@@@C@@@@ J SYMERR . $A YES NO,SYMERR@A@@@@ AN,ZH )@@G@@U A1,1 . @E@@@@ A,H2 A1,TT1 . $P SET PTRZI )@@G@@ TO SEQ LIST ENTRY@G@@@@ L,T1 A3,0,A1 . $P GET RECORD COZJ )@@G@@DE FOR SEQ NO @E@@@@ L,H2 A1,0,A1 . $P GET CORZK )@@G@@E BUFFER ADDR @G@@@@ TNZ A1 . $T HAS BUFFER BEZL )@@G@@EN ALLOCATED ? @C@@@@ J UNDEF . $A YES NO,ZM )@@G@@UNDEF @G@@@@ A,U A1,2 . $P GET ADDR OF NEW RECORD HEZN )@@G@@ADER @E@@@@ L,S3 A2,0,X10 . $P GET MODE OF ITEM ZO )@@G@@ @E@@@@ TE,U A2,1 . $T IS MODE = OLD ? ZP )@@G@@@C@@@@ J HEAD3 . $A YES NO,HEAD3 @G@@@@ TNZZQ )@@G@@,H1 C17 . $T ARE THERE ANY ART RULES (C17 ENTRIES)@C@@@@ ZR )@@G@@ J HEAD3 . $A YES NO,HEAD3 @E@@@@ L,H2 A2,C17 ZS )@@G@@ . $P SET PTR TO C17 @G@@@@HEAD1 TNE,T1 A3,0,A2 ZT )@@G@@. $T IS ENTRY FOR THIS RECORD CODE ? @C@@@@ J HEAD2 ZU )@@G@@ . $A NO YES,HEAD2 @E@@@@ TNZ,T3 0,A2 . $T MORE C1ZV )@@G@@7 ENTRIES ? @C@@@@ J HEAD3 . $A YES NO,HEAD3 ZW )@@G@@@E@@@@ A,T3 A2,0,A2 . $P SET PTR TO NEXT C17 ENTRY@C@@@@ZX )@@G@@ J HEAD1 . $J HEAD1 @G@@@@HEAD2 A,H2 A1,ZY )@@G@@0,A1 . $P GET ADDR OF OLD RECORD HEADER @G@@@@HEAD3 L ZZ )@@G@@ A2,(0777777777) . $P SET END OF ITEM TO LARGE VALUE @E@@@@ AA )@@G@@ L,S3 A3,0,X10 . $P GET MODE OF ITEM @E@@@@ TE,AB )@@G@@U A3,3 . $T IS ITEM DEFINED OR ARRAY @E@@@@ AU,H2 A1,AC )@@G@@0,A1 . $P CALC END ADDR OF RECORD @E@@@@ S A2,SA1 AD )@@G@@ . $P SAVE END ADDR OF ITEM @E@@@@ L,T1 A2,0,X10 AE )@@G@@. $P GET REL WORD OF ITEM @A@@@@ AND,U A2,07777 . AF )@@G@@@G@@@@ A A1,A3 . $P GET ABS WORD ADDR OF 1ST OCCURRAG )@@G@@ENCE @A@@@@ AN,U A0,1 . @E@@@@ L,T3 A2,AH )@@G@@0,X10 . $P GET CHAR LENGTH OF ITEM @A@@@@ AND,U A2,07777 AI )@@G@@ . @A@@@@ L A2,A3 . @G@@@@ MSIAJ )@@G@@ A3,A0 . $P MULTIPLY BY INDEX-1 TO GET OCCUR @E@@@@ AK )@@G@@ L A0,A2 . $P SAVE LENGTH OF ITEM @G@@@@ A,SAL )@@G@@3 A3,1,X10 . $P ADD OCC DISP TO CHAR OFFSET @G@@@@ AM )@@G@@ AN,U A3,1 . $P CONVERT OFFSET TO WORDS + OFFSET @A@@@@AN )@@G@@ SZ A2 . @A@@@@ DI,U A2,6 AO )@@G@@. @E@@@@ A A1,A2 . $P ADD WORD DISP TO ABS ADDRAP )@@G@@@E@@@@ A,U A3,1 . $P SET CHAR OFFSET @A@@@@AQ )@@G@@ J *HEADER . $E @]@@@@ . @]@@@@ . AR )@@G@@@]@@@@$(2). @A@@@@SA1 + 0 . @A@@@@SX10 AS )@@G@@ + 0 . @A@@@@ . TYPE CONVERSION BLOCK AT )@@G@@@E@@@@ . OUTPUT TYPES: 1-PIC X, 2-PIC 9, 3-PIC 9 COMP @A@@@@AU )@@G@@TYPE + 0 . @A@@@@ + 1 AV )@@G@@. SET @C@@@@ + 1 . RECORD @C@@@@ AW )@@G@@ + 1 . ITEM PIC X @C@@@@ + 2 AX )@@G@@ . '' PIC 9 @C@@@@ + 3 . '' PIC 9AY )@@G@@ COMP @C@@@@ + 1 . '' PIC A @C@@@@ AZ )@@G@@ + 3 . ARRAY PIC 9 COMP@C@@@@ + 1 BA )@@G@@ . '' PIC X @E@@@@ + 0 . '' UNDEBB )@@G@@FINED PIC @C@@@@ + 1 . OCCURS PIC X BC )@@G@@@C@@@@ + 2 . '' PIC 9 @E@@@@ + BD )@@G@@ 3 . '' PIC 9 COMP @C@@@@ + 1 BE )@@G@@ . '' PIC A @E@@@@ + 3 . DEFIBF )@@G@@NED PIC 9 COMP @C@@@@ + 1 . '' PIBG )@@G@@C X @E@@@@ + 0 . '' UNDEFINED PIC BH )@@G@@@C@@@@ + 1 . SUBOCCURS PIC X @C@@@@ + BI )@@G@@ 2 . '' PIC 9 @E@@@@ + 3 BJ )@@G@@. '' PIC 9 COMP @C@@@@ + 1 . 'BK )@@G@@' PIC A @]@@@@ . @^@@@@ END. ___ BL )@@G@@*[@@@@*SDFF*@]@@@@ . @A@@@@ . ** INTRP ** BM )@@G@@@[@@@@ . @C@@@@ . REORG EDITOR WORKER ROUTINE @A@@@@BN )@@G@@ . TO INTERPRET DBP'S @]@@@@ . @^@@@@ . CABO )@@G@@LL IS @A@@@@ . LX,U X10,PARAM @A@@@@ . BP )@@G@@ LMJ X11,INTRP @^@@@@ . WHERE @C@@@@ . BQ )@@G@@ ------------------------------- @C@@@@ . PARAM: LENGTH : 0 BR )@@G@@: +(INTRP) : @C@@@@ . :-----------------------------: BS )@@G@@@C@@@@ . : 13 : : : : @C@@@@ . BT )@@G@@ :-----------------------------: @C@@@@ . : BU )@@G@@ : @C@@@@ . = OPERAND PTR = BV )@@G@@@C@@@@ . : : @C@@@@ . BW )@@G@@ ------------------------------- @]@@@@ . @C@@@@ . THBX )@@G@@E RESULTS OF THE INTERPRET ARE @C@@@@ . STORED IN RESERBY )@@G@@VED WORDS @C@@@@ . AREACODE, PAGENUM, SLOTNUM BZ )@@G@@@]@@@@ . @^@@@@ AXR$. @^@@@@$(4) LIT. CA )@@G@@ @A@@@@PF FORM 12,6,18 . @]@@@@$(3). @]@@@@CB )@@G@@ . @C@@@@INTRP*. . $H INTRP @D@@@@CC )@@G@@ S,H2 X11,RETURN . $P SAVE RETURN ADDR @D@@@[ SZ CD )@@G@@ STATUS . $P RESET STATUS TO 0 @E@@@@ L X7,X10 CE )@@G@@ . $P SET PTR TO OPERAND PTR @A@@@@ A,U X7,2 CF )@@G@@. @A@@@@ L,U A13,1 . @E@@@@ SLJ GETCG )@@G@@SYM . $W GETSYM - GET OPERAND ADDR@E@@@@ JN A1,SYMERRCH )@@G@@ . $T WAS GET SUCCESSFUL ? @C@@@@ CI )@@G@@. $A YES NO,SYMERR@E@@@@ TNE,U A3,1 . $T IS OP TYPE PICJ )@@G@@C X ? @C@@@@ J TYPERR . $A NO YES,TYPERR@E@@@@CK )@@G@@ TNE,U A3,4 . $T IS OP TYPE NOT SET PTR ? @E@@@@ CL )@@G@@ L,U A3,3 . $P SET TYPE TO PIC 9 COMP @E@@@@ SLJCM )@@G@@ GETNUM . $W GETNUM - GET OP VALUE @E@@@@ SLJ DBPCN )@@G@@$APS . $W DBP$APS - INTERPRET VALUE@E@@@@ JZ A1,ARERR CO )@@G@@ . $T WAS AREA CODE VALID ? @C@@@@ CP )@@G@@. $A YES NO,ARERR @E@@@@ S A1,AREACODE . $P SET INTRPED VCQ )@@G@@ALUES @A@@@@ S A2,PAGENUM . @A@@@@ S CR )@@G@@ A3,SLOTNUM . @A@@@@ L A0,A4 . @A@@@@CS )@@G@@ DL A0,1,A0 . @A@@@@ DS A0,AREANAME CT )@@G@@. @A@@@@ J *RETURN . $E @]@@@@ . @E@@@@CU )@@G@@ARERR TZ PERFSW . $T IS THIS PERFORM MODE @C@@@@ CV )@@G@@ J ARER2 . $A NO YES,ARER2 @A@@@@ L A4,A0 CW )@@G@@ . @E@@@@ E$DIT INTPKT . $P PRINT ERROR MESSAGECX )@@G@@ @A@@@@ E$COPY 29,AM . @A@@@@ L A0,CY )@@G@@A4 . @A@@@@ L,U A1,13 . @A@@@@ CZ )@@G@@ LMJ X11,EOCTF$ . @A@@@@ E$DITX . DA )@@G@@@A@@@@ P$RINT (PF 1,8,INTBUF) . @E@@@@ARER2 SZ AREACODE DB )@@G@@ . $P SET ALL VALUES NULL @A@@@@ SZ PAGENUM DC )@@G@@. @A@@@@ SZ SLOTNUM . @A@@@@ DL A0,DD )@@G@@BLNKS . @A@@@@ DS A0,AREANAME . @E@@@@ DE )@@G@@ L,U A0,51 . $P SET STATUS VALUE @A@@@@ S DF )@@G@@ A0,STATUS . @A@@@@ J *RETURN . $E @E@@@@DG )@@G@@TYPERR P$RINT (PF 1,6,TM) . $P PRINT ERROR MESSAGE @E@@@@SYMERRDH )@@G@@ L,U A0,1 . $P SET FATAL ERROR FLAG @A@@@@ S DI )@@G@@ A0,FATAL . @A@@@@ J *RETURN . $E @]@@@@DJ )@@G@@ . @]@@@@$(4). @A@@@@RETURN + 0 . DK )@@G@@@A@@@@BLNKS ' ' . @C@@@@AM 'ERROR - CANNOTDL )@@G@@ INTERPRET DBP ' . @E@@@@TM 'ERROR - CANNOT INTERPRET PIC X FDM )@@G@@IELD' . @A@@@@INTPKT E$PKT 8,INTBUF . @A@@@@INTBUFDN )@@G@@ RES 8 . @^@@@@ END . ___ -[D*)^@)DO )@@G@@^@)^@)^@) 0)^@)^@)@D@@@@^@)^@)^@)^@)^[G^@)^@)^[[A@?CC4^@)^@)^@)^@)^@) 0)DP )@@G@@*[@@@@*SDFF*@G@@@@ . **************************************************DQ )@@G@@**************** @G@@@@ . * ED LEVEL 12 DR )@@G@@ * @G@@@@ . * DS )@@G@@ * @G@@@@ . * TO BE COMPATIBLE WITH PREVIODT )@@G@@US VERSIONS OF THE EDITOR * @G@@@@ . * THE FOLLOWING PARAMETDU )@@G@@ERS MUST BE SET: * @G@@@@ . * DV )@@G@@ * @G@@@@ . * EDMODE DW )@@G@@ EQU 1 * @G@@@@ . * REGDX )@@G@@BRIEF EQU 0 * @G@@@@ . * DY )@@G@@ SUPBRIEF EQU 1 * @G@@@@DZ )@@G@@ . * SPLITDLI EQU 1 * EA )@@G@@@G@@@@ . * EOFMODE EQU 0 EB )@@G@@ * @G@@@@ . * EC )@@G@@ * @G@@@@ . * ED )@@G@@ TEM * @G@@@@ . * EE )@@G@@ * @G@@@@ . **************************************EF )@@G@@**************************** @I@@@@ . EG )@@G@@ ED010020 @I@@@@ . ***************EH )@@G@@**************************************************** ED010030 @I@@@@EI )@@G@@ . * 12.01 CHANGES * EJ )@@G@@ED010040 @I@@@@ . * EK )@@G@@ * ED010050 @I@@@@ . * DEFAULT 077'S CHANGED TO 077EL )@@G@@7'S * ED010060 @I@@@@ . * CORRECTIONEM )@@G@@ FOR RE-ENTRANT PROBLEM * ED010070 @I@@@@EN )@@G@@ . * SYMBOLIC TYPE ON SPLIT OUTPUT * EO )@@G@@ED010080 @I@@@@ . * A6 CONFLICT EP )@@G@@ * ED010090 @I@@@@ . * CORRECTIONS FOR CYCLING AROUEQ )@@G@@ND 62 * ED010100 @I@@@@ . * CORRECTIONER )@@G@@ FOR SPLIT OF WHOLE FILE * ED010110 @I@@@@ES )@@G@@ . * CORRECTION OF LINE COUNT FOR ADD * ET )@@G@@ED010120 @I@@@@ . * CHANGE TO TRY LINK$ BEFORE DOING RLIST, AND INEU )@@G@@DICATOR * ED010130 @I@@@@ . * ASSIGN TEMPORARY ED$TB IF CAEV )@@G@@N'T ASSIGN CATALOGED * ED010140 @I@@@@ . * R TO OVERIEW )@@G@@DE ASSUMED U ON DATA FILE UPDATE * ED010150 @I@@@@EX )@@G@@ . * A.B,.C TO MEAN PRODUCE A.C * EY )@@G@@ED010160 @I@@@@ . * PRINT DISABLED MSG FOR INTERNAL FILE. EZ )@@G@@ * ED010170 @I@@@@ . * U OPTION ASSUMED FOR DATAFILFA )@@G@@E IF NO OPTION & 1 FIELD *_ ED010180 @I@@@@ . * T OPTION TFB )@@G@@O TRANSFER ALL CYCLES TO OUTPUT ELEMENT * ED010190 @I@@@@FC )@@G@@ . * CORRECTION TO SEND BLANKS TO UNISCOPE FOR BLANK LINE *_-FD )@@G@@ED010200 @I@@@@ . * CORRECTION TO GET RID OF LINES ADDED & THEN DEFE )@@G@@LETED IN * ED010210 @I@@@@ . * SAME CYCLE. FF )@@G@@ * ED010220 @I@@@@ . * CORRECT CYFG )@@G@@CLE NUMBERS ON SPLIT OUTPUT * ED010230 @I@@@@FH )@@G@@ . * END-OF-FILE MSG FOR I-O ERROR 5 * FI )@@G@@ED010240 @I@@@@ . * ERROR MSG FOR 044012,044212, AND 012212 ERRORSFJ )@@G@@ * ED010250 @I@@@@ . * OUTPUT FILE OVERFLOW RECOVERFK )@@G@@Y * ED010260 @I@@@@ . * FL )@@G@@ * ED010270 @I@@@@FM )@@G@@ . ******************************************************************* FN )@@G@@ED010280 @G@@@@ . ***************************************************FO )@@G@@**************** @G@@@@ . * ED 12.02 CHANGES: FP )@@G@@ * @G@@@@ . * MINIMIZE AUTO FILE CONFLICTS FQ )@@G@@ * @G@@@@ . * RELEASE INTERNAL USE NAMES FR )@@G@@ * @G@@@@ . * MINIMIZE MAIL FILE CONFFS )@@G@@LICTS * @G@@@@ . * DELETE 1,1 BUG FT )@@G@@ * @G@@@@ . * BUG IN HEADFU )@@G@@ COMMAND * @G@@@@ . * INDICFV )@@G@@ATE ATTEMPTS TO CHANGE FILE IN READ-ONLY MODE * @G@@@@ . * FW )@@G@@ IDENTIFY ELEMENT SITED OR LNSITED * @G@@@@FX )@@G@@ . ******************************************************************* FY )@@G@@@G@@@@ . ***************************************************************FZ )@@G@@**** @G@@@@ . * ED 12.03 CHANGES: GA )@@G@@ * @G@@@@ . * IDENTIFY ELEMENT WHEN TIME COMMAND USED GB )@@G@@ * @G@@@@ . * FIX BAD LINE RETURN AFTER MOVE DELETE SEQGC )@@G@@UENCE * @G@@@@ . * ACCEPT OCTAL SYMBOLIC TYPE IN TYPE GD )@@G@@COMMAND * @G@@@@ . * IMPLEMENT DELETE+ GE )@@G@@ * @G@@@@ . * MAKE UP WORK ON DATAFILGF )@@G@@ES * @G@@@@ . * FIX - TO LINE 1 GG )@@G@@ * @G@@@@ . * DYNAMICALLYGH )@@G@@ ASSIGN FILES FOR SPLIT & ADD * @G@@@@ . * FIX IGI )@@G@@GDM ON LNQ OF 0 LENGTH LINE * @G@@@@ . * GJ )@@G@@ FIX OUTPUT WITH NO OPERAND FAILURE * @G@@@@GK )@@G@@ . * FIX INSERT+ WITH NO OPERAND FAILURE * GL )@@G@@@G@@@@ . * FIX OVERPRINT BATCH FILE NOT ASSIGNED GM )@@G@@ * @G@@@@ . * FIX P+ GN )@@G@@ * @G@@@@ . ***************************************************GO )@@G@@**************** @I@@@@ . *********************************************GP )@@G@@*************** 817TM003 @I@@@@ . * GQ )@@G@@ * 817TM004 @I@@@@ . * ENHANGR )@@G@@CEMENTS AND FIXES IN LEVEL 13.00 * 817TM005 GS )@@G@@@I@@@@ . * * GT )@@G@@ 817TM006 @I@@@@ . * FIX ERR$ ON X-OPTION GU )@@G@@ * 817TM007 @I@@@@ . * CHECK FOR POSSIBLE MAXTGV )@@G@@IME * 817TM008 @I@@@@ . * CHECKGW )@@G@@ FOR MATCHING I AND D BANKS * 817TM009 GX )@@G@@@I@@@@ . * REVISE INTERNAL AUTO FILE TO DO ASG,ADX * GY )@@G@@ 817TM010 @I@@@@ . * ENHANCE THE STATUS COMMAND GZ )@@G@@ * 817TM011 @I@@@@ . * FIX CHANGE AT LINE 0 HA )@@G@@ * 817TM012 @I@@@@ . * MAX EHB )@@G@@STIMATED CPU TIME CHECK * 817TM013 HC )@@G@@@I@@@@ . * FIX MAIL FILE PROBLEMS * HD )@@G@@ 817TM014 @I@@@@ . * FIX CHANGE OF TRAILING BLANKS HE )@@G@@ * 817TM015 @I@@@@ . * FIX LOCATE OF TRAILING HF )@@G@@BLANKS * 817TM016 @I@@@@ . * FIX IHG )@@G@@NLINE FAILURE WITH AUTO SAVE * 817TM017 HH )@@G@@@I@@@@ . * FIX GARBAGE AFTER SEQ COMMAND * HI )@@G@@ 817TM018 @I@@@@ . * FIX VERSION NAME ON ADD COMMAND HJ )@@G@@ * 817TM019 @I@@@@ . * FIX LINE NUMBER RETURN HK )@@G@@AFTER MOVE DELETE * 817TM020 @I@@@@ . * PREVEHL )@@G@@NT PRINTOUT OF NOTEQUAL ON SITE * 817TM021 HM )@@G@@@I@@@@ . * FIX READ OF FORTRAN I-O FILES * HN )@@G@@ 817TM022 @I@@@@ . * CHECK FOR ATTEMPT TO EDIT PROGRAM FILE ASHO )@@G@@ DATA FILE * 817TM023 @I@@@@ . ***************************HP )@@G@@********************************* 817TM024 @G@@@@ . *********HQ )@@G@@********************************************************** @G@@@@ . * HR )@@G@@ ED 14.0 CHANGES * @G@@@@HS )@@G@@ . * INPUT FILES MAY BE ASCII, FIELDATA, OR MIXED A-F * HT )@@G@@@G@@@@ . * INTERNAL FILES ARE ASCII HU )@@G@@ * @G@@@@ . * ALL CHAR MANIPULATION IN ASCII (ER ATREAD$ USED) HV )@@G@@ * @G@@@@ . * OUTPUT FILES MAY BE ASCII OR FIELDATA HW )@@G@@ * @G@@@@ . * TWO NEW OPTIONS: Q & P (FOR OUTPUT FILES)HX )@@G@@ * @G@@@@ . * MESSAGE PRINTED AFTER EXIT GIVING CHY )@@G@@ODE OF OUTPUT FILE * @G@@@@ . * NEW COMMAND: CASE (UPPER OR NHZ )@@G@@ORMAL) * @G@@@@ . * PLIMIT COMMAND ENHANCEDIA )@@G@@: EITHER 1 OR 2 LIMITS * @G@@@@ . * STATUS COMMAND ENIB )@@G@@HANCED: PRINTS PLIMITS AND CASE * @G@@@@ . * UNIMOD INITIC )@@G@@IALLY ON * @G@@@@ . * ADD FID )@@G@@ILES MAY BE ASCII, FIELDATA, OR MIXED A-F * @G@@@@ . * IE )@@G@@ SPLIT FILES MAY BE ASCII OR FIELDATA (SAME AS OUTPUT FILE) * @G@@@@IF )@@G@@ . * MORE CORE OBTAINED FOR LARGE FILES (ER MCORE$) * IG )@@G@@@G@@@@ . * DOC COMMAND AT LINE 0 BUG FIXED ('ILLEGAL' MESSAGE) IH )@@G@@ * @G@@@@ . *********************************************************II )@@G@@********** @^@@@@ AXR$ @E@@@@$(1),ILIT LIT IJ )@@G@@ . IBANK LITERALS @^@@@@$(0),BGND$ . @^@@@@IK )@@G@@ FIELDATA @I@@@@BASE EQU '14' . SYIL )@@G@@MBOLIC BASE LEVEL 817TM027 @I@@@@UPDATE EQU '2A' IM )@@G@@ . UPDATE NUMBER -LOCAL- LOCAL @G@@@@EDMODEIN )@@G@@ EQU 1 . ED COMPATIBILITY MODE @C@@@@IO )@@G@@ DO EDMODE ,EDIBNK EQU 'EDR$ ' . @E@@@@ DO 1-EDMODE ,EDIIP )@@G@@BNK EQU 'EDITR$' . EDIT IBANK @^@@@@ ASCII IQ )@@G@@@^@@@@ . SYSTEM DEFAULT VALUES@I@@@@REGBRIEF EQU 0 IR )@@G@@ . PLAIN BRIEF INDICATOR INITIALIZATION @G@@@@SUPBRIEF EQU IS )@@G@@ 1 . BRIEF FOR SPLIT ADD INDICATOR @G@@@@LNLINES EQIT )@@G@@U 0 . PRINT OUT LINE NUMS WITH LINES @I@@@@SEQSOUIU )@@G@@ EQU 1 . SOLICIT INPUT WITH SEQ NUMBERS ED0103IV )@@G@@20 @G@@@@MEMSTD EQU 0 . REMEMBER MODES BETWIW )@@G@@EEN USES=1 @C@@@@EOFMODE EQU 0 . EOF MODE@I@@@@IX )@@G@@MINAUT EQU 5 . MIN NUMBER OF AUTO LINES IY )@@G@@ED010340 @G@@@@SPLITDLI EQU 1 . DELETE LINES WIZ )@@G@@HEN SPLITTING=1 @E@@@@ . THIS MUST BE SET TO 1 TO BE COMPATIBLE TO ED JA )@@G@@11 @G@@@@LN132 EQU 0 . =1 MEANS 132 JB )@@G@@CHAR OUTPUT LINE @G@@@@SAVESTD EQU 132 . SAVE STJC )@@G@@ANDARD FOR CHANGE @G@@@@SAVECLS EQU 80 . MJD )@@G@@AXIMUM LINE LENGTH IN CHARS @G@@@@ . IF YOU NEVER MESS WITH LINES OVERJE )@@G@@ 80 COLUMNS THEN SET TO 80 @I@@@@CONTSTD EQU 0777 JF )@@G@@ . STANDARD INPUT CONTINUATION CHARED010360 @G@@@@TRANSCHARF EJG )@@G@@QU 040 . DEFAULT TRANSPARENT CHARACTER @E@@@@TABSTDJH )@@G@@ EQU ';' . STANDARD TAB @E@@@@PLIMSTD EQJI )@@G@@U 33 . STANDARD PRINT LIMIT@I@@@@STDMSP EQU JJ )@@G@@ 0777 . STANDARD MASTERSPACE LINE 1 ED010380 @G@@@@JK )@@G@@STDLCHR EQU 047 . STANDARD LOCATE QUOTE CHAR JL )@@G@@@E@@@@DCT5 EQU 0 . NO STOP CODE FLAG @G@@@@JM )@@G@@ . UNISCOPES, DCT500'S NOT IN TTY MODE MUST HAVE THIS SET TO 1 JN )@@G@@@E@@@@CYLIM EQU 5 . CYCLE SAVE LIMIT @G@@@@JO )@@G@@ . IF YOU DON'T USE CYCLES, SET THIS TO ONE-- THE SMALLER THIS JP )@@G@@@C@@@@ . NUMBER THE FASTER THE EDITOR WILL RUN @C@@@@ . THIS PROCJQ )@@G@@ GENERATES INITIAL TAB SETTINGS @C@@@@SET$* PROC JR )@@G@@ . @E@@@@K DO SET$(1) ,TAB$*(K) EQU SET$(1,K)JS )@@G@@-1 @A@@@@TABLNT* EQU SET$(1) @^@@@@ ENJT )@@G@@D @G@@@@ SET$ 11,21,39,73 . THESE ARE THEJU )@@G@@ INITIAL TABS @]@@@@ . @G@@@@ . THE FOLLOWING ARE FOR DEBUGJV )@@G@@GIN PURPOSES AND SHOULD BE SET TO @^@@@@ . ZERO FOR PRODUCTION. JW )@@G@@@E@@@@TIMIT EQU 0 . TIME TEST @I@@@@JX )@@G@@DEBUG EQU 0 . DEBUGGINF STUFF ON=1 JY )@@G@@ED010400 @I@@@@DUMP EQU 0 . DUMP D BANK JZ )@@G@@ ED010420 @E@@@@DUMMSG EQU 0 KA )@@G@@ . SEND DUMP MESSAGE @E@@@@P$ PROC 1 . STKB )@@G@@ORE NON ZERO @^@@@@SNZ* NAME . @G@@@@ S KC )@@G@@ R10,P$(1,1),P$(1,2),P$(1,3) . R3 CONTAINS 1 @^@@@@ ENKD )@@G@@D @A@@@@P$ PROC 1 . @E@@@@FTYPE* NAKE )@@G@@ME 0 . FIELDATA PRINT @G@@@@TYP* NAME KF )@@G@@ 1 . ASCII PRINT - P$(1,1)=MSG ADDR @G@@@@FF FOKG )@@G@@RM 12,6,18 . P$(1,2)= LENGTH OF MSG @C@@@@ KH )@@G@@ LA A0,( FF 1,P$(1,2),P$(1,1)) @C@@@@ DO 1-P$(0,0) , KI )@@G@@ ER PRINT$ @E@@@@ DO P$(0,0) , ER APRINT$ KJ )@@G@@ . ASCII PRINT @^@@@@ END @C@@@@ ON KK )@@G@@ DUMP . @^@@@@$(10) . DUMP DBANK @C@@@@DUMPINKL )@@G@@G + 0 . @E@@@@ DO 8 , + 07777KM )@@G@@77777777 . MARK REGISTERS AREA @E@@@@DBFF RES 3*16 KN )@@G@@ . REGISTERS GO HERE @A@@@@ENDD$ . DON'T DUMP BEYOND HERE KO )@@G@@@^@@@@ FIELDATA @A@@@@DIOPK 'ED$DF ' . KP )@@G@@@^@@@@ ASCII @C@@@@ + 0 KQ )@@G@@ . @C@@@@ + 0,W$,0,0,0,0 . @C@@@@KR )@@G@@ + 0,BGND$ . @C@@@@ + KS )@@G@@ 0 . @E@@@@EETAB A$EPKT 33,IMBUF KT )@@G@@ . AEDIT$ PACKET @C@@@@DTKN 'DUMP OF & WORDS TAKEN &' . KU )@@G@@ @^@@@@ FIELDATA @A@@@@ASGDF '@ASG,T ED$DF,F2' . KV )@@G@@ @^@@@@ ASCII @A@@@@SORMS ' SORRY-NO DUMP!' . KW )@@G@@ @C@@@@ ON DUMMSG . @G@@@@DMSG1 KX )@@G@@ 'IF YOU WISH THIS ERROR TO BE DIAGNOSED, EXIT FROM THE EDITOR'@E@@@@KY )@@G@@DMSG2 'IMMEDIATELY AND ENTER THE FOLLOWING TWO LINES:' @C@@@@DMSG3 KZ )@@G@@ '@TDP,DSM ED$DF,,' @E@@@@DMSG4 '' @G@@@@DMSG5 ' WHERE ISLB )@@G@@ THE NUMBER OF WORDS INDICATED DUMPED' @C@@@@ OFF DUMMLC )@@G@@SG . @G@@@@SITEDUMP + 0 . ENLD )@@G@@TER DBANK DUMP HERE @E@@@@ TZ DUMPING LE )@@G@@ . ALREADY DUMPING? @E@@@@ J SORRY . MULF )@@G@@ST BE A MESS @A@@@@ SNZ DUMPING .@E@@@@ LG )@@G@@ L A0,IBF+1 . GET ORIGINAAL A0 @C@@@@ DSLH )@@G@@ A0,DBFF . SAVE IT @E@@@@K DO 7 , DS A0+K*2,DBFLI )@@G@@F+2*K . SAVE REST OF A REGS@C@@@@ S R1,DBFF+16 LJ )@@G@@ . SAVE R1@G@@@@ L A0,(1,R2) . PREPARE TO SAVLK )@@G@@E R REGS @C@@@@ L A1,(1,DBFF+17) . LL )@@G@@@C@@@@ L,U R1,15 . @C@@@@ BTLM )@@G@@ A1,0,*A0 . @C@@@@ L A0,(1,X1) LN )@@G@@ . @C@@@@ L,U R1,15 . LO )@@G@@@C@@@@ BT A1,0,*A0 . @C@@@@ L,LP )@@G@@U A2,ENDD$ . @C@@@@ AN,U A2,BGND$ LQ )@@G@@ . @G@@@@ S,H1 A2,DIOPK+4 . NUMBER OLR )@@G@@F WORDS TO BE DUMPED @C@@@@ L A0,(3,ASGDF) . LS )@@G@@ @C@@@@ ER CSF$ . @C@@@@ LT )@@G@@ JNZ A0,SORRY . @C@@@@ L,U A0,DLU )@@G@@IOPK . @C@@@@ ER IOW$ . LV )@@G@@ @E@@@@ A$EDIT EETAB . MESSAGE LW )@@G@@@C@@@@ A$EMSG DTKN . @E@@@@ A$LX )@@G@@EDECV DIOPK+4,,H1 . NUM WORDS @^@@@@ A$EMSGR LY )@@G@@ . @^@@@@ A$EDITX . @C@@@@ TYP IMBUF,21 LZ )@@G@@ . @E@@@@ ON DUMMSG . PRINT OUMA )@@G@@T MESSAGE @C@@@@ TYP DMSG1,DMSG2-DMSG1 . @C@@@@MB )@@G@@ TYP DMSG2,DMSG3-DMSG2 . @C@@@@ TYP MC )@@G@@ DMSG3,DMSG4-DMSG3 . @C@@@@ TYP DMSG4,DMSG5-DMSGMD )@@G@@4 . @C@@@@ TYP DMSG5,15 . @C@@@@ME )@@G@@ OFF DUMMSG . @C@@@@ J MF )@@G@@ *SITEDUMP . RETURN @C@@@@SORRY TYP SORMS,5 MG )@@G@@ . @C@@@@ J *SITEDUMP . RETURN @C@@@@MH )@@G@@ OFF DUMP . @]@@@@$(0) . @C@@@@MI )@@G@@SNOOP$* PROC 0 . @E@@@@ TZ MJ )@@G@@ TRACE . TRACE ON? @^@@@@ END . MK )@@G@@@E@@@@INSTAT EQU 0 . INTERNAL STATISTICS@C@@@@ML )@@G@@ ON INSTAT . @C@@@@STATIO 'STATFILMM )@@G@@E ' . @^@@@@ DO 2 , + 0 @C@@@@ MN )@@G@@ + 28,STATBUF . @^@@@@ DO 3 , + 0 MO )@@G@@@C@@@@STATBUF RES 28 . @^@@@@ . FORMAT OFMP )@@G@@ BUFFER @^@@@@ . 0 RUNID @^@@@@ . 1 OPTION WORD MQ )@@G@@@A@@@@ . 2 FILE LENGTH IN IMAGES @A@@@@ . 3 FILE LENGTH INMR )@@G@@ WORDS @^@@@@ . 4 TIME USED @A@@@@ . 5 TRANACTION COUMS )@@G@@NT,TOP COUNT@G@@@@ . 6 S1-EXIT TYPE,S2-LINE NUM,S3-QON,S4-NOSEQ,S5-MT )@@G@@INLINE,S6-DITTO @^@@@@ . 7 MSPCHR,LOCHR @A@@@@ . 8 THETAB,CMU )@@G@@ONTCHAR @^@@@@ . 9 BREAK,IGDM @^@@@@ . 10 IOPR,ERRMV )@@G@@$ @^@@@@ FIELDATA @A@@@@ASGSTATA '@ASG,A STATFILE' . MW )@@G@@ @A@@@@ASGSTATC '@ASG,CP STATFILE,F2' . @C@@@@USESTAT '@USE STMX )@@G@@ATFILE,STAT*STATFILE$' . @A@@@@FRESTAT '@FREE,R STATFILE' . MY )@@G@@@I@@@@RFRESTAT '@FREE STATFILE' MZ )@@G@@ 817TM033 @^@@@@ ASCII @A@@@@STATAD + NA )@@G@@ 0 .@A@@@@ OFF INSTAT @E@@@@P$ NB )@@G@@ PROC 1 . TEST FOR OPTION @^@@@@TOPTN* NANC )@@G@@ME 0 @^@@@@TNOPTN* NAME 1 @E@@@@ L A0,OND )@@G@@PTN . GET OPTION WORD @G@@@@ DO P$(0,0) , TEP NE )@@G@@A0,BITS('Z'-P$(1,1)) . SKIP IF NOT ON @G@@@@ DO 1-P$(0,0) , NF )@@G@@TOP A0,BITS('Z'-P$(1,1)) . SKIP IF ON @^@@@@ END NG )@@G@@ @^@@@@OPT** FUNC @A@@@@Z EQU OPT(1) NH )@@G@@ @G@@@@ DO (Z<-1*/17+1)++(Z>1*/18-2)++(Z=-0) , ENNI )@@G@@D (Z) @E@@@@ END +(I$ 0,U+(Z<0),,,3**Z*/-16,0177777NJ )@@G@@**Z) @^@@@@BITS** FUNC @A@@@@Z EQU 1*/BITS(1)NK )@@G@@ @E@@@@I DO BITS-1 ,Z EQU Z++1*/BITS(I+1) NL )@@G@@@C@@@@ DO BITS(*1) , END OPT(-Z) @A@@@@ ENNM )@@G@@D OPT(Z) @C@@@@P$ PROC 1 . NN )@@G@@ @E@@@@CONVFA* NAME 0 . CONVERT FD TO ASCII NO )@@G@@@E@@@@CONVAF* NAME 1 . CONVERT ASCII TO FD @E@@@@NP )@@G@@ L,U A1,P$(1,1) . INPUT BUFFER ADDRESS@G@@@@ NQ )@@G@@ L,U A2,P$(1,2) . OUTPUT BUFFER ADDRESS @C@@@@NR )@@G@@ DO P$(0,0) , LMJ X11,ASCFD . @C@@@@ DO 1-P$(0,0) NS )@@G@@, LMJ X11,FDASC . @^@@@@ END . @C@@@@P$ NT )@@G@@ PROC 1 . @E@@@@TNOASG* NAME . TNU )@@G@@EST TO SEE IF FILE ASSIGNED @G@@@@ DO P$(1,1)>0 , DL NV )@@G@@ A0,(P$(1,1)) . SKIP IF NOT @G@@@@ DS A0,FNW )@@G@@RMIMG . PUT IN FACIL$ PACKET @E@@@@ L,U NX )@@G@@ A0,FRMIMG . PACKET ADD @C@@@@ ER FACINY )@@G@@L$ . @E@@@@ TZ,S1 FRMIMG+6 . INZ )@@G@@F ZERO, NOT ASGED @^@@@@ END @E@@@@P$ PROC OA )@@G@@ 1 . GO TO LINE @C@@@@GOLINE* NAME 1 OB )@@G@@ . @E@@@@GOPLUS* NAME 2 . GOC )@@G@@O PLUS N @E@@@@ SNZ GORET . SET RETURNOD )@@G@@ FLAG @E@@@@ DO P$(0,0)=1 , LMJ X6,LINENUMOE )@@G@@+1 @E@@@@ DO P$(0,0)=2 , LMJ X6,GOPL+2 OF )@@G@@@G@@@@ LMJ X10,P$(1,1) . END OF FILE RETURN OG )@@G@@ @^@@@@ END @E@@@@P$ PROC 1 OH )@@G@@ . CHANGE IMAGE LENGTH @A@@@@IL23* NAME . IL*2/3 => IL OI )@@G@@@C@@@@ L A0,P$(1,1) . @E@@@@ LSOJ )@@G@@SL A0,1 . MULT BY 2 @E@@@@ A,U OK )@@G@@ A0,2 . FOR ROUNDING UP @E@@@@ DSL A0,3OL )@@G@@6 . GET READY FOR DIVIDE@E@@@@ DI,U A0,3 OM )@@G@@ . DIVIDE BY 3 @C@@@@ S A0,P$(1,1) ON )@@G@@ . @^@@@@ END . @E@@@@P$ PROC 1 OO )@@G@@ . CHANGE IMAGE LENGTH @A@@@@IL32* NAME . IL*3/2 =OP )@@G@@> IL @C@@@@ L A0,P$(1,1) . @E@@@@ OQ )@@G@@ MSI,U A0,3 . MULT BY 3 @E@@@@ A,OR )@@G@@U A0,1 . FOR ROUNDING UP @E@@@@ SSL OS )@@G@@ A0,1 . DIVIDE BY 2 @C@@@@ S A0,POT )@@G@@$(1,1) . @^@@@@ END . @^@@@@P$ PROU )@@G@@OC 1 @E@@@@INCR* NAME 1 . INCREMENT LOCOV )@@G@@ATION @E@@@@DECR* NAME 0 . DECREMENT LOCATION OW )@@G@@@C@@@@ L A0,P$(1,1),P$(1,2),P$(1,3) .@E@@@@ DO P$(0,0)OX )@@G@@=1 , A,U A0,1 . @A@@@@ DO P$(0,0)=0 , OY )@@G@@AN,U A0,1 . @C@@@@ S A0,P$(1,1),P$(1,2),P$(1,3) .OZ )@@G@@@^@@@@ END @A@@@@P FORM 12,6,18 PA )@@G@@@A@@@@F FORM 6,6,6,18 @E@@@@LCT EQU A12 PB )@@G@@ . LINE COUNT @^@@@@IC EQU A14 @^@@@@PC )@@G@@RC EQU A15 @^@@@@$(1) . IBANK TABLES @^@@@@ FIPD )@@G@@ELDATA . @E@@@@LEVEL + 'ED& @@'++BASE . ID LINPE )@@G@@E @C@@@@ + '.@@-&-'++UPDATE*/18 . @^@@@@ PF )@@G@@ '(&&&&&' . @^@@@@ ASCII . @^@@@@EDITS 'EDIT' PG )@@G@@ @C@@@@INPUT 'INPUT ' . @E@@@@PROGNAPH )@@G@@M 'PROG NAME? ' . USED IF NO FIELDS SPEC FOR @ED@^@@@@ FIPI )@@G@@ELDATA . @A@@@@ 'SYM ' . UNTYPED @^@@@@ELT +'ELTPJ )@@G@@' . ELT @G@@@@ +'ASM' . ASSEMBLER THIS TABLE MUST BE IN PK )@@G@@THIS SEQUENCE. @^@@@@ +'COB' . COBOL @A@@@@ +'FOR' . PL )@@G@@FORTRAN @^@@@@ +'ALG' . ALGOL @A@@@@ +'MAP' . PM )@@G@@COLLECTOR @^@@@@ +'DOC' . DOC @C@@@@ +'SEC' PN )@@G@@ . SECURE PROCESSOR @A@@@@ +'SSG' . SSG PROCESSOR PO )@@G@@@A@@@@ +'APL' . APL PROCESSOR @A@@@@ +'BAS' . BAPP )@@G@@SIC PROCESOR@A@@@@ +'LSP' . LISP PROCESSOR@I@@@@ + PQ )@@G@@ 'PLS' . PLUS 817TM036 PR )@@G@@@E@@@@ELTLEN EQU $-ELT . NUMBER OF TYPES @E@@@@PS )@@G@@UPPER + 'UPPER' . FOR CASE COMMAND @E@@@@NORMALPT )@@G@@ + 'NORMAL' . FOR CASE COMMAND @^@@@@ ASPU )@@G@@CII . @]@@@@ . @/ @]@@@@$(0) .@E@@@@OPTN RES PV )@@G@@ 1 . OPTION WORD @C@@@@VAR1 + 0 PW )@@G@@ . @C@@@@VAR2 + 0 . PX )@@G@@ @C@@@@VAR3 + 0 . @C@@@@VAR4 PY )@@G@@ + 0 . @C@@@@VAR5 RES 1 PZ )@@G@@ . @C@@@@VAR6 RES 1 . QA )@@G@@ @C@@@@VAR7 RES 1 . @C@@@@VAR8 QB )@@G@@ RES 1 . @C@@@@VAR9 RES 1 QC )@@G@@ . @C@@@@VAR10 RES 1 . QD )@@G@@ @C@@@@VAR11 RES 1 . @C@@@@VAR12 QE )@@G@@ + 0 . @C@@@@VAR13 RES 1 QF )@@G@@ . @I@@@@VAR14 + 0777,0777 . EXQG )@@G@@CHAR ED010440 @C@@@@VAR15 + 0 QH )@@G@@ . @C@@@@VAR16 + 0 . QI )@@G@@ @C@@@@VAR17 RES 1 . @E@@@@ILSAV QJ )@@G@@ RES 1 . SAVE OF ICW @E@@@@COUNT EQQK )@@G@@UF VAR1,,H1 . TYPEIN CHAR COUNT @G@@@@OCOUNT EQUF QL )@@G@@ VAR1,,H2 . OLD LOCATE STRING LENGTH @G@@@@EDCT EQQM )@@G@@UF VAR2,,H1 . CHAR CURRENTLY POINTED AT BY GET @C@@@@LIMIT QN )@@G@@ EQUF VAR2,,H2 . LOCATE LIMIT@G@@@@LENGTH EQUF VAR3QO )@@G@@,,H1 . NUMBER CHARS IN IMAGE80 @G@@@@SSAVE EQUF QP )@@G@@ VAR3,,H2 . SCAN COUNT SAVE @E@@@@LCTSV EQQQ )@@G@@UF VAR4,,H1 . SAVE OF LCT. @C@@@@RPTK EQUF QR )@@G@@ VAR4,,H2 . REPEAT COUNT @E@@@@OPTIONS + 0,0,0,0,0,0 QS )@@G@@ . OPTION FLAGS @E@@@@DOPT EQUF OPTIONS,,S1 . DQT )@@G@@ OPTION @G@@@@DOPTI EQUF OPTIONS,,S2 . INPUT IQU )@@G@@S DATA FILE=1 @G@@@@DOPTO EQUF OPTIONS,,S3 . OQV )@@G@@UTPUT IS DATAFILE=1 @E@@@@TRACE EQUF OPTIONS,,S4 QW )@@G@@ . TRACE FLAG @G@@@@PNTINQ EQUF OPTIONS,,S5 . REQX )@@G@@AL PRINT WHEN IN QUICK MODE @G@@@@NUMACT EQUF OPTIONS,,S6 QY )@@G@@ . NUMBERED ACTIVITY FOR MAIN @C@@@@OPTIONS1 + 0 QZ )@@G@@ . @G@@@@EDS1A EQUF OPTIONS1,,S1 . SPEC1 FIRA )@@G@@LE ASSIGNED=1 @G@@@@EDS2A EQUF OPTIONS1,,S2 . SPRB )@@G@@EC 2 FILE ASSIGNED=1 @E@@@@WINHIB EQUF OPTIONS1,,S3 RC )@@G@@ . WRITE INHIBIT @E@@@@STATUS EQUF OPTIONS1,,S4 . STRD )@@G@@ATUS REQUESTED @E@@@@WMAIL EQUF OPTIONS1,,S5 . MAIL WAIRE )@@G@@TING FLAG @G@@@@RLSTCD EQUF OPTIONS1,,S6 . CARD WAITING TRF )@@G@@O BE PROCESSED @E@@@@OPTIONS2 + 0,0,0,0,0,0 . MORE FRG )@@G@@LAGS @E@@@@MOVEF EQUF OPTIONS2,,S1 . MOVE COMMAND RH )@@G@@ @G@@@@OK EQUF OPTIONS2,,S2 . OK=1 - NOT AT END ORI )@@G@@F FILE @G@@@@LCFLG EQUF OPTIONS2,,S3 . FLAG FOR 'LC'RJ )@@G@@ AND 'FC' COMMANDS@G@@@@IBFLG EQUF OPTIONS2,,S4 . FLAG FORK )@@G@@R 'IB' COMMAND @E@@@@GOEXIT EQUF OPTIONS2,,S5 . GORL )@@G@@ TO EXIT FLAG @G@@@@HEADC EQUF OPTIONS2,,S6 . CHANGERM )@@G@@ AT HEAD OF LINE @E@@@@OPTIONS3 + 0,0,0,0,0,0 . MORRN )@@G@@E FLAGS @G@@@@CYCS EQUF OPTIONS3,,S1 . IF SET RO )@@G@@CYCLE NUMBER WAS GIVEN @G@@@@BLKLINE EQUF OPTIONS3,,S2 . BRP )@@G@@LANK LINE TO BE INSERTED @I@@@@DIDRLS EQUF OPTIONS3,,S3 RQ )@@G@@ . DID AN RLIST FLAG ED010460 @G@@@@DIASGD EQUF RR )@@G@@ OPTIONS3,,S5 . DITTO FILE ED$DI ASSIGNED @G@@@@AUTOREC EQRS )@@G@@UF OPTIONS3,,S6 . AUTO SAVE RECOVERY FLAG @C@@@@OPTIONRT )@@G@@S4 + 0 . @G@@@@ADSAVE EQUF OPTIRU )@@G@@ONS4,,S1 . NOT STANDARD FILENAMES FLAG @G@@@@DGONXT EQUF RV )@@G@@ OPTIONS4,,S2 . WHERE TO GO AFTER DELETE @C@@@@PRTEST EQRW )@@G@@UF OPTIONS4,,S3 . @G@@@@REEXIT EQUF OPTIONS4,,RX )@@G@@S5 . RECOVERY IF FLAG = 0 @G@@@@DYNASG EQUF OPTIRY )@@G@@ONS4,,S6 . DYNAMIC ASG FLAG FOR SPLIT+ADD @C@@@@OPTIONS5 + RZ )@@G@@ 0 . @E@@@@ABSPEC EQUF OPTIONS5,,S1 SA )@@G@@ . ABSENT SPEC FIELDS @E@@@@DOCCOM EQUF OPTIONS5,,S2 . DOSB )@@G@@CUMENT COM IND @G@@@@GLOBAL EQUF OPTIONS5,,S3 . G ON CHSC )@@G@@ANGE COMMAND=1 @G@@@@DOCP EQUF OPTIONS5,,S4 . DOSD )@@G@@CUMENT COM PERIOD IND @G@@@@ONSITE EQUF OPTIONS5,,S5 SE )@@G@@ . PRINTOUT TO ONSITE PRINTER @I@@@@ERR$X EQUF OPTIONS5,,SF )@@G@@S6 . ERROR REALLY OCCURRED 817TM040 @C@@@@OPTIONS6 + SG )@@G@@ 0 . @G@@@@AUTCALL EQUF OPTIONS6,,SH )@@G@@S1 . USED WHEN AUTO COMMAND IS CALLED@G@@@@QSTRING EQUF OPTISI )@@G@@ONS6,,S2 . LOCATE QUOTES OPTIONS @E@@@@GORET EQUF SJ )@@G@@ OPTIONS6,,S3 . RETURN FROM GO EXIT@E@@@@ONNLINE EQUF OPTISK )@@G@@ONS6,,S4 . STRING ON NEXT LINE@G@@@@INREPF EQUF OPTIONS6,,SL )@@G@@S5 . REPLACE ON INLINE COMMAND @G@@@@INDELF EQUF OPTISM )@@G@@ONS6,,S6 . DELETE ON INLINE COMMAND @E@@@@OPTIONS7 + SN )@@G@@ 0 . FLAG WORD @G@@@@DEMAND EQUF OPTISO )@@G@@ONS7,,S1 . DEMAND MODE=1, BATCH=0 @E@@@@STRFND EQUF SP )@@G@@ OPTIONS7,,S2 . STRING FOUND @G@@@@INPUTF EQUF OPTISQ )@@G@@ONS7,,S3 . INPUT MODE=1, EDIT MODE=0 @G@@@@QUICKP EQUF SR )@@G@@ OPTIONS7,,S4 . QUICK PRINT INDICATOR @G@@@@QUOTE EQSS )@@G@@UF OPTIONS7,,S5 . QUOTE INDICATOR FOR QUICK @E@@@@MCRD$ ST )@@G@@ EQUF OPTIONS7,,S6 . MCORE DONE FLAG @C@@@@OPTIONS8 + SU )@@G@@ 0 . @G@@@@CASEUP EQUF OPTIONS8,,SV )@@G@@S1 . CONVERT LOWER TO UPPER CASE FLAG@E@@@@PUNCH EQUF OPTISW )@@G@@ONS8,,S2 . PUNCH PAPER TAPE @G@@@@FASTREAD EQUF OPTIONS8,,SX )@@G@@S3 . FAST READ- NO DECODE @G@@@@BRKSET EQUF OPTISY )@@G@@ONS8,,S4 . BREAK KEY HAS BEEN DEPRESSED @G@@@@LNPRT EQUF SZ )@@G@@ OPTIONS8,,S5 . LINE NUMBERS ON SITE PRINTOUT=1 @E@@@@CARDPCH EQTA )@@G@@UF OPTIONS8,,S6 . CPUNCH COMMAND @C@@@@OPTIONS9 + TB )@@G@@ 0 . @G@@@@FQOPT EQUF OPTIONS9,,S1 TC )@@G@@ . FLAG FOR P AND Q OPTIONS @E@@@@OUTFIL EQUF OPTIONS9,,TD )@@G@@S2 . FLAG FOR OUTPUT FILE@G@@@@FD EQUF OPTIONS9,,S3 TE )@@G@@ . FIELDATA INPUT FILE FLAG @G@@@@FDADD EQUF OPTIONS9,,TF )@@G@@S6 . FD FLAG FOR ADD FILES @G@@@@GET2F EQUF OPTITG )@@G@@ONS9,,S4 . FLAG USED BY GET ROUTINE @G@@@@FILEONLY EQUF TH )@@G@@ OPTIONS9,,S5 . FILE ONLY DESIGNATED=1 @^@@@@X11SAV RETI )@@G@@S 1 @C@@@@X10SAV RES 1 . X10 TEMP SAVE @^@@@@TJ )@@G@@ . MAIL COMMAND DATA @^@@@@ FIELDATA . @E@@@@ASGCMF '@TK )@@G@@ASG,CP MF$$,F2///20' . ASSIGN MAIL FILE @C@@@@ASGAMF '@ASG,A TL )@@G@@MF$$' . @C@@@@FREMF '@FREE MF$$' TM )@@G@@ . @C@@@@FREDMF '@FREE,D MF$$' . @C@@@@TN )@@G@@BRKMF '@BRKPT MF$$' . @A@@@@REDMF + TO )@@G@@ ENDMF,EDIT14 @^@@@@ 'MF$$ '@^@@@@ ASCII TP )@@G@@ . @C@@@@TREDOC + 0 . @G@@@@ TQ )@@G@@ + DOCEOF,EDIT14 . TREAD FOR DOC COMMAND @A@@@@TR )@@G@@TREADML + 0106,ASKML @A@@@@ + FIEXIT,EDITS )@@G@@T14 @A@@@@ASKML 'DO YOU WANT YOUR MAIL?' @C@@@@PRNTML + TT )@@G@@ 0100,EDIT14 . @^@@@@ FIELDATA @C@@@@ TU )@@G@@ 'MF$$ ' . @^@@@@ ASCII . TV )@@G@@@C@@@@TREADNM P 1,2,('MAIL** ') . @C@@@@ + TW )@@G@@ MAIEOF,EDIT14 . @C@@@@USERID RES 1 TX )@@G@@ . USERID @E@@@@RUNID RES 1 . USER RUNTY )@@G@@ID @I@@@@MAXCP + 0 . MAX EST CPT TITZ )@@G@@ME 817TM043 @G@@@@PTL1 EQUF VAR5,,S1 UA )@@G@@ . PRINT LIMIT 1 FOR PLIMIT @G@@@@PTL2 EQUF VAR5,,S2 UB )@@G@@ . PRINT LIMIT 2 FOR PLIMIT @E@@@@CPTL1 EQUF VAR1UC )@@G@@7,,H1 . COLUMN PRINT LIM 1 @E@@@@CPTL2 EQUF VAR17,,H2 UD )@@G@@ . COLUMN PRINT LIM 2 @G@@@@EDIL EQUF VAR5,,H2 UE )@@G@@ . TYPEIN IMAGE WORD LENGTH @E@@@@SAVE2 EQUF VAR6,,H1 UF )@@G@@ . LIMITS FOR CHANGE COM @A@@@@SAVE21 EQUF VAR6,,H2 . UG )@@G@@@G@@@@TREADMSG P 1,2,('MSG? ') UH )@@G@@ . @C@@@@ + FILE1,EDIT14 . @E@@@@TREADSUI )@@G@@EQ P 1,3,IMBUF . TYPE IMAGE @E@@@@ + UJ )@@G@@ FILE1,EDIT14 . READ IMAGE @A@@@@TREADSITE P UK )@@G@@ 1,2,('HDG? ')@C@@@@ + FILE1,IMBUF+2 . UL )@@G@@@G@@@@REL RES 1 . RELATIVE CYCLE INITIALLY UM )@@G@@ZERO @^@@@@ FIELDATA . @E@@@@DASH '------------' UN )@@G@@ . USED FOR SITE @^@@@@ADSAVF 'ED$TB '@C@@@@XFTBL UO )@@G@@ 'ED$XF ' . EXTRA FILE TABLE @C@@@@ DO 3 , + 0UP )@@G@@ . @C@@@@ + 1,0 . UQ )@@G@@ @C@@@@ DO 6 , + 0 . @G@@@@XFENAMUR )@@G@@E EQU XFTBL+2 . EXTRA FILE ELEMENT NAME @G@@@@US )@@G@@XFVERS EQU XFTBL+6 . EXTRA FILE VERSION UT )@@G@@@G@@@@XFCYCL RES 1 . EXTRA FILE ELEMENT CYCLE UU )@@G@@ @C@@@@RELXF RES 1 . @C@@@@RCXF UV )@@G@@ RES 1 . @^@@@@FRMIMG ' 'UW )@@G@@@G@@@@ RES 7 . SPACE FOR ER FACIL$ PKT. UX )@@G@@ @^@@@@BLANKS ' '@^@@@@EDSDF '*SDFF*' @^@@@@UY )@@G@@ ASCII . @E@@@@BLANK2 ' ' . 8 UZ )@@G@@ASCII SPACES @]@@@@ . @/ @G@@@@OBLS EQU 16 VA )@@G@@ . SECTOR LENGTH OF OUTPUT BUFFERS @G@@@@IBLS EQU 16 VB )@@G@@ . SECTOR LENGTH OF INPUT BUFFERS @G@@@@LBLS$ EQU VC )@@G@@ 64 . 64 SECTORS FOR LARGE FILE @C@@@@LBL$ EQVD )@@G@@U LBLS$*28 . WORDS @A@@@@LIN$ + IN1,IN1+LBVE )@@G@@L$ @C@@@@LOUT$ + IN1+2*LBL$,IN1+3*LBL$ . @E@@@@IBL VF )@@G@@ EQU IBLS*28 . INPUT BUFFER WORD LENGTH @E@@@@OBL EQVG )@@G@@U OBLS*28 . OUTPUT BUFFER WORD LENGTH @E@@@@ETAB A$EPKT VH )@@G@@ 33,IMBUF . AEDIT$ PACKET @^@@@@ FIELDATA . VI )@@G@@@E@@@@FTAB E$PKT 22,FIMBUF . EDIT$ PACKET @G@@@@VJ )@@G@@ALTPKT + 0 . ALTERNATE PRINT PACKET VK )@@G@@@E@@@@ 'ED$PR ' . IMAGE IN I MBUF @E@@@@VL )@@G@@IMBUF RES 33 . ASCII BUFFER @I@@@@FIMBUFVM )@@G@@ RES 33 . USUALLY FD BUFFER, SOMETIMES ASCII VN )@@G@@ @^@@@@ . DITTO COMMAND DATA @G@@@@DITSECL EQU 4 VO )@@G@@ . DITTO BUFFER LENGTH IN SECTORS @E@@@@DITLEN EQU 28*DVP )@@G@@ITSECL . DITBUF LENGTH@G@@@@DITBUF RES DITLEN VQ )@@G@@ . SPACE TO SAVE DITTO IMAGES @E@@@@DBUFCNT EQUF DITBVR )@@G@@UF,,H2 . TOTAL IMAGE LENGTH @E@@@@DITPKT 'ED$DI ' VS )@@G@@ . DITTO FILE PACKET @C@@@@ DO 2 , + 0 VT )@@G@@ . @C@@@@ + DITLEN,DITBUF . @C@@@@VU )@@G@@ DO 3 , + 0 . @E@@@@DITCODE EQUF VV )@@G@@ DITPKT+3,,S2 . I-O CODE @E@@@@DITFAST EQUF DITPVW )@@G@@KT+5 . FASTRAND ADDRESS @E@@@@DIT1 EQUF VAR7,,H1 VX )@@G@@ . STARTING POINT @E@@@@DIT2 EQUF VAR7,,H2 VY )@@G@@ . ENDING POINT @I@@@@STR EQU VAR7 . UVZ )@@G@@SED BY CHANGE-REQUIRES 3 CONSEC LOC @E@@@@DITLN EQUF VAR8WA )@@G@@,,H1 . INSERT LINE NUMBER @G@@@@DITFIL EQUF VAR8,,H2 WB )@@G@@ . NUMBER OF DITTO FILE IMAGES @E@@@@DITX10S EQUF VAR9WC )@@G@@,,H1 . SAVE AREA FOR X10 @G@@@@DITLENTH EQUF VAR9,,H2 WD )@@G@@ . LENGTH OR AREA TO BE DITTOED @E@@@@AUTOTST EQUF VAR1WE )@@G@@0,,H1 . TRANSACTION TEST @E@@@@AUTOCNT EQUF VAR10,,H2 WF )@@G@@ . TRANSACTION COUNT @E@@@@THETAB EQUF VAR11,,H1 WG )@@G@@ . TAB CHARACTER @I@@@@TRCHF EQUF VAR11,,H2 . TWH )@@G@@RANSPARENT CHAR FOR FIND COMMAND @G@@@@INCONT EQUF VAR1WI )@@G@@2,,H1 . CONTINUATION FLAG AND PTR SAVE @E@@@@CONTCHAR EQUF WJ )@@G@@ VAR12,,H2 . CONTINUATION CHAR @E@@@@LOCHR EQUF VAR1WK )@@G@@3,,H1 . LOCATE QUOTE CHAR @E@@@@MSPCHR EQUF VAR13,,H2 WL )@@G@@ . MASTERSPACE LINE 1 @E@@@@CHGCHR EQUF VAR14,,H1 WM )@@G@@ . EXCHANGE CHAR @E@@@@NCHGCHR EQUF VAR14,,H2 . NEWN )@@G@@W EXCH CHR @G@@@@SAVECL EQUF VAR15,,H1 . MAX LINWO )@@G@@E LENGTH IN CHARS @G@@@@LLSTCD EQUF VAR15,,H2 . LEWP )@@G@@NGTH OF LAST CARD IN ILSTCD @E@@@@DELIM EQUF VAR16,,H1 WQ )@@G@@. DELIMITER FOUND BY GET@G@@@@COMPKT . . COMWR )@@G@@$ PACKET FOR OPERATOR MESSAGES@C@@@@ DO 3 , + 0 WS )@@G@@ . @E@@@@COMICHR EQUF COMPKT,,H2 . NUMBER INPUT WT )@@G@@CHARS @G@@@@COMCHR EQUF COMPKT+1,,H1 . NUMBER OF OUTPUT CHWU )@@G@@ARS @E@@@@COMADD EQUF COMPKT+1,,H2 . ADDRESS FOR OWV )@@G@@UTPUT @G@@@@COMIEXP EQUF COMPKT+2,,H1 . NUM CHARS EXPECTED WW )@@G@@ON INPUT @E@@@@COMIADD EQUF COMPKT+2,,H2 . ADDRESS FOR IWX )@@G@@NPUT @^@@@@EDOUT 'ED$TA ' @^@@@@ ' ' @^@@@@WY )@@G@@ RES 9 @^@@@@EDIN 'ED$TB ' @^@@@@ ' WZ )@@G@@ ' @^@@@@ RES 9 @I@@@@ . FILE CONTROL TABLE SKXA )@@G@@ELETONS ED010480 @^@@@@COPIN XB )@@G@@ + 0 @A@@@@ F 0,020,0,0 @A@@@@ XC )@@G@@ + IBL,0 @^@@@@ + 0 @A@@@@ XD )@@G@@ + IN1,IN2 @A@@@@ + IBLS,33 XE )@@G@@@A@@@@ + 1,IMAGE @^@@@@ + 1,0 XF )@@G@@@^@@@@ + 0 @^@@@@COPOUT + 0 @A@@@@ XG )@@G@@ F 0,010,0,0 @A@@@@ + OBL,0 XH )@@G@@@^@@@@ + 0 @A@@@@ + OUT1,OUT2 XI )@@G@@@A@@@@ + OBLS,0 @A@@@@ + 1,IMXJ )@@G@@AGE @^@@@@ + 1,0 @^@@@@ + 0 XK )@@G@@@]@@@@$(0) . @A@@@@ . EXTRA FILE DATA FOR SPLIT AND ADD@C@@@@XFBLS XL )@@G@@ EQU 4 . @G@@@@XFBL EQU XFBLXM )@@G@@S*28 . LENGTH OF BUFFER IN WORDS @C@@@@XF1 RES XN )@@G@@ XFBL . @C@@@@XF2 RES XFBL XO )@@G@@ . @^@@@@EDXF 'ED$XF ' @C@@@@ DO 2 , + 0 XP )@@G@@ . @A@@@@ + XFBL,0 @C@@@@XQ )@@G@@ + 0 . @C@@@@ + XR )@@G@@ XF1,XF2 . @C@@@@ + XFBLS,33 XS )@@G@@ . @C@@@@ + 1,IMAGE . @C@@@@XT )@@G@@ + 1,0 . @C@@@@ + XU )@@G@@ 0 . @^@@@@ ASCII . @E@@@@ICWXF XV )@@G@@ EQU EDXF+10 . IMAGE CONTROL WORD @G@@@@ILXF EQXW )@@G@@UF EDXF+10,,S2 . IMAGE LENGTH FOR CONTROL WORDS @C@@@@DCXF XX )@@G@@ EQUF EDXF+10,,S4 . @C@@@@ACXF EQUF EDXFXY )@@G@@+10,,S6 . @E@@@@AC1XF EQUF EDXF+10,,S5 . ADXZ )@@G@@DED THIS UPDATE @E@@@@DC1XF EQUF EDXF+10,,S3 . DELETED YA )@@G@@THIS UPDATE @]@@@@$(20) . @E@@@@IN1* RES IBL YB )@@G@@ . FIRST INPUT BUFFER @E@@@@IN2* RES IBL . 2NYC )@@G@@D INPUT BUFFER @E@@@@ . NOTE: INITIALIZATION CODE IS IN THE TWO OUTPUYD )@@G@@T BUFFERS @E@@@@ . OUT1 AND OUT2. THIS CODE IS,OF COURSE, OVERWRITTENYE )@@G@@ ONCE @A@@@@ . INITIALIZATION IS DONE. @E@@@@OUT1* RES IYF )@@G@@BL . BEGINNING OF FIRST OUTPUT BUFFER @E@@@@OUT2* RES IBL .YG )@@G@@ BEGINNING OF FIRST OUTPUT BUFFER @I@@@@DCON + DBKEND-IBKYH )@@G@@END,BASE*/6++UPDATE . VALIDITY CONSTANT 817TM046 @E@@@@INITIAL YI )@@G@@ . INITIALIZATION @C@@@@ L,U YJ )@@G@@ A0,0400001 . @C@@@@ ER PSR$ YK )@@G@@ . SET IT @A@@@@ SA A1,OLDPSR @C@@@@ L,YL )@@G@@U R10,1 . @G@@@@ L A0,(+ SAVEYM )@@G@@STD,SAVESTD-1) . SET SAVE2,SAVE21 @C@@@@ S A0,VYN )@@G@@AR6 . @G@@@@ SZ AUTOTST . AYO )@@G@@UTO 0 ASSUMED INITALLY @C@@@@ SNZ ADSAVE . INITIALYP )@@G@@LY NONZERO @E@@@@ L,U A0,TABSTD . SET THE TAB TYQ )@@G@@O A @C@@@@ S A0,THETAB . @G@@@@ YR )@@G@@ SZ REL . SET RELATIVE CYCLE TO ZERO @I@@@@YS )@@G@@ L,U A0,TRANSCHARF . SET TRANSPARENT CHARACTER FOR FYT )@@G@@IND @C@@@@ S A0,TRCHF . @G@@@@YU )@@G@@ SNZ CPTL1 . STANDARD COL PRINT LIM 1 YV )@@G@@@G@@@@ L,U A0,132 . STANDARD COL PRINT LIM 2 YW )@@G@@ @C@@@@ S A0,CPTL2 . @G@@@@ YX )@@G@@ SNZ PTL1 . STANDARD PRINT LIMIT 1 = 1 @G@@@@YY )@@G@@ L,U A0,PLIMSTD . LOAD STANDARD PRINT LIMIT 2 YZ )@@G@@@C@@@@ S A0,PTL2 . @I@@@@ L,ZA )@@G@@U A0,CONTSTD . SET STANDARD INPUT CONTINUATION CHAR ZB )@@G@@@C@@@@ S A0,CONTCHAR . @G@@@@ L,ZC )@@G@@U A0,STDMSP . STANDARD MASTERSPACE LINE 1 @C@@@@ ZD )@@G@@ S A0,MSPCHR . @G@@@@ L,U A0,SZE )@@G@@TDLCHR . STANDARD LOCATE QUOTE CHAR @C@@@@ S ZF )@@G@@ A0,LOCHR . @E@@@@ L,U A0,SAVECLS ZG )@@G@@ . SET MAX LINE LENGTH@C@@@@ S A0,SAVECL . ZH )@@G@@ @E@@@@ L,U A0,131 . ZERO TABS ZI )@@G@@@C@@@@ SZ TAB80,A0 . @C@@@@ JGZJ )@@G@@D A0,$-1 . @E@@@@ L,U R1,TABLNT-ZK )@@G@@1 . TAB TABLE LENGTH @E@@@@ L A1,(1,0) ZL )@@G@@ . TAB TABLE PTR @E@@@@ L A3,(1,0) . TZM )@@G@@AB80 PTR @E@@@@INITAB L A10,TABTBLS,*A1 . GET NEXZN )@@G@@T TAB (-1) @E@@@@ A A10,(1,0) . GIVE IT AN INZO )@@G@@C @E@@@@ S A10,TAB80,*A3 . STORE IT ZP )@@G@@@E@@@@ TLE A3,A10 . FILLED YET^ @C@@@@ZQ )@@G@@ J $-2 . @E@@@@ JGD ZR )@@G@@ R1,INITAB . LOOP TO IT @E@@@@ L A0,(ZS )@@G@@4,DITBUF) . GET RUNID @E@@@@ ER PCT$ ZT )@@G@@ . ITS IN THE PCT @C@@@@ L A0,DITBUF ZU )@@G@@ . USERID @C@@@@ S A0,USERID . @G@@@@ZV )@@G@@ L A0,DITBUF+1 . SECOND WORD IS GENERATED RUNID ZW )@@G@@@C@@@@ S A0,RUNID . @I@@@@ L ZX )@@G@@ A0,DITBUF+3 . GET MAX EST TIME 817TM054 ZY )@@G@@@I@@@@ S A0,MAXCP . ZZ )@@G@@ 817TM055 @I@@@@ SZ R14 . CLEAR R1AA )@@G@@4 THE MAX TIME THINGER 817TM056 @E@@@@ ER COND$ AB )@@G@@ . GET CONDITION WORD @E@@@@ TOP A0,BITS(11) AC )@@G@@ . WAS THIS A MEMORY? @E@@@@ J NOMEMY . DEAD )@@G@@FINITELY NOT! @C@@@@ SNZ MEMORY . SET MEMORY AE )@@G@@@E@@@@ SZ QUICKON . LETS ASSUME IT IS @C@@@@AF )@@G@@ SZ BRIEF2 . @C@@@@ SZ AG )@@G@@ ALLLN . @C@@@@ SZ RECPCNT AH )@@G@@ . @C@@@@ SZ SPLITDEL . @C@@@@AI )@@G@@ SZ BRIEF3 . @C@@@@ SZ AJ )@@G@@ TYPESEQ . @E@@@@ SZ LKMAIL AK )@@G@@ . LOOK FOR MAIL @E@@@@ SZ EOFMOD . CLAL )@@G@@EAR EOF MODE @E@@@@ SZ UNIMOD . CLEAR UNAM )@@G@@ISCOPE MODE @C@@@@ TEP A0,BITS(0) . QUICK @A@@@@AN )@@G@@ SNZ QUICKON .@C@@@@ TEP A0,BITS(1)AO )@@G@@ . BRIEF @A@@@@ SNZ BRIEF2 .@C@@@@ AP )@@G@@ TEP A0,BITS(2) . ALLLN @A@@@@ SNZ ALLLAQ )@@G@@N .@E@@@@ TEP A0,BITS(3) . READ PRINT CONAR )@@G@@TROLS @A@@@@ SNZ RECPCNT .@G@@@@ TEP AS )@@G@@ A0,BITS(4) . DELETE WHEN SPLITTING @A@@@@ SNAT )@@G@@Z SPLITDEL .@G@@@@ TEP A0,BITS(5) . BRAU )@@G@@IEF FOR SPLIT AND ADD @A@@@@ SNZ BRIEF3 .AV )@@G@@@G@@@@ TEP A0,BITS(6) . SEQUENCE NUMBER TREAD AW )@@G@@ @A@@@@ SNZ TYPESEQ .@E@@@@ TEP AX )@@G@@ A0,BITS(7) . LOOK FOR MAIL @A@@@@ SNZ LKMAAY )@@G@@IL .@C@@@@ TEP A0,BITS(8) . EOF MODE@A@@@@AZ )@@G@@ SNZ EOFMOD .@E@@@@ TEP A0,BITS(9)BA )@@G@@ . UNISCOPE MODE @C@@@@ SNZ UNIMOD BB )@@G@@ . @E@@@@NOMEMY TNE,U A4,4 . DEMAND? BC )@@G@@ @C@@@@ SNZ DEMAND . YES! @E@@@@ BD )@@G@@ ON INSTAT . STATISTICS @C@@@@ L BE )@@G@@ A0,(5,USESTAT) . DO USE @C@@@@ ER CSF$ BF )@@G@@ . @^@@@@ FIELDATA . @E@@@@ TNOASG BG )@@G@@ 'STATFILE ' . ASSIGNED? @^@@@@ ASCII . BH )@@G@@@C@@@@ J STATASGD . YES @C@@@@ L BI )@@G@@ A0,(3,ASGSTATA) . @C@@@@ ER CSF$ BJ )@@G@@ . ASSIGN @C@@@@ JP A0,STATASGD . BK )@@G@@@E@@@@ L A0,(3,ASGSTATC) . ASSIGN WITH C @C@@@@BL )@@G@@ ER CSF$ . @C@@@@ JN BM )@@G@@ A0,NOSTAT . NO LUCK@E@@@@ L A0,(3,FRESTAT) BN )@@G@@ . FREE FILE @C@@@@ ER CSF$ . BO )@@G@@ @C@@@@ JN A0,NOSTAT . @E@@@@ BP )@@G@@ L A0,(3,ASGSTATA) . REASSIGN @C@@@@ ERBQ )@@G@@ CSF$ . @C@@@@ JN A0,NOSTAT BR )@@G@@ . @E@@@@ L,U A2,1 . NEXT BLBS )@@G@@OCK @C@@@@WSTATH SZ STATIO+5 . @C@@@@BT )@@G@@ S A2,STATBUF . @E@@@@ L BU )@@G@@ A0,(0,W$,0,0,0,0) . WRITE HEAD BLOCK @C@@@@ S A0,SBV )@@G@@TATIO+3 . @C@@@@ L,U A0,STATIO . BW )@@G@@ @C@@@@ ER IOW$ . @C@@@@ BX )@@G@@ S A2,STATIO+5 . @E@@@@ L,U A0,2BY )@@G@@7 . ZERO THE BUFFER @C@@@@ SZ STATBUF,A0BZ )@@G@@ . @C@@@@ JGD A0,$-1 . CA )@@G@@@C@@@@ L,U A0,STATIO . @C@@@@ ERCB )@@G@@ IOW$ . @C@@@@ J STAINT CC )@@G@@ . @E@@@@STATASGD SZ STATIO+5 . READ HECD )@@G@@AD BLOCK @C@@@@ L A0,(0,R$,0,0,0,0) . @C@@@@CE )@@G@@ S A0,STATIO+3 . @C@@@@ L,U CF )@@G@@ A0,STATIO . @C@@@@ ER IOW$ CG )@@G@@ . @E@@@@ L A2,STATBUF . GET ADDRESS CH )@@G@@ @^@@@@ A,U A2,1@E@@@@ J WSTATH CI )@@G@@ . GO WRITE HEAD OUT @E@@@@STAINT L A0,RUNID CJ )@@G@@ . SAVE RUNID @C@@@@ S A0,STATBUF . CK )@@G@@ @C@@@@ SNZ STATAD . SET FLAG @E@@@@ CL )@@G@@ ER TDATE$ . GET START TIME @C@@@@ S CM )@@G@@ A0,STATBUF+11 . @E@@@@ ER TIME$ CN )@@G@@ . INITIAL TIME @C@@@@ S A0,STATBUF+4 CO )@@G@@ . @]@@@@NOSTAT . @C@@@@ OFF INSTAT CP )@@G@@ . @I@@@@ SNZ REEXIT . KILL IF ERROR CQ )@@G@@ ED010710 @I@@@@ E$DIT FTAB CR )@@G@@ . APPLY USE FOR UNIQUE ED$ITB ED020040 @I@@@@ E$MSG CS )@@G@@ USETB . @USE ED$ITB,ED$TB& ED020050 @I@@@@CT )@@G@@ E$FD1 USERID . USERID CU )@@G@@ED020060 @I@@@@ E$DITX . CV )@@G@@ ED020070 @I@@@@ L A0,(6,FIMBUF) CW )@@G@@ . DO IT ED020080 @I@@@@ ER CX )@@G@@ CSF$ . ED020090 @^@@@@CY )@@G@@ FIELDATA . @E@@@@ TNOASG 'ED$TA ' . ECZ )@@G@@D$TA ASGD? @C@@@@ J AASGD . SKIP ASG. DA )@@G@@@C@@@@ L A0,(4,ED1) . DO IT. @C@@@@ ER DB )@@G@@ CSF$ . X @E@@@@AASGD TNOASG 'ED$TB DC )@@G@@ ' . ED$TB ASGD? @C@@@@ J BASGD .DD )@@G@@ YES. @I@@@@ TNZ DEMAND . DEMAND OR BATCDE )@@G@@H? ED020110 @I@@@@ J BASGD$ DF )@@G@@ . NO AUTO IN BATCH ED020120 @I@@@@ L DG )@@G@@ A0,(4,CATB) . CATALOG ED010730 @C@@@@DH )@@G@@ ER CSF$ . @I@@@@ L DI )@@G@@ A0,(3,ED2A) . RE-ASSIGN ED020140 @C@@@@DJ )@@G@@ ER CSF$ . @I@@@@ JP DK )@@G@@ A0,BASGD . ASSIGNED ED010750 @I@@@@DL )@@G@@BASGD$ L A0,(4,ASGBT) . TRY TO ASSIGN TEMP DM )@@G@@ED020160 @I@@@@ ER CSF$ . DN )@@G@@ ED010770 @I@@@@ JN A0,FACERP DO )@@G@@ . ERROR? ED010790 @I@@@@ TNZ DP )@@G@@ DEMAND . DEMAND? ED020180 @I@@@@DQ )@@G@@ J BASGD . NO DON'T PRINT MSG DR )@@G@@ED020190 @I@@@@ TYP E113,L113 . AUTO CANNOT BEDS )@@G@@ DONE ED010800 @G@@@@BASGD TNOASG 'ED$DI ' DT )@@G@@ . IS DITTO FILE ASSIGNED? @^@@@@ ASCII . @D@@@@DU )@@G@@ SNZ DIASGD . YES, SET FLAG @^@@@@ SZDV )@@G@@ IC @E@@@@ SZ SSAVE . RESET SCAN CODW )@@G@@UNT @E@@@@ SZ LCT . ZERO LINE COUNT PLEASE. . DX )@@G@@@A@@@@ LMJ X10,OPNO @C@@@@ L A0,(DY )@@G@@+IOERR,INFOR) @A@@@@BEG1 LA A0,SAVEA0 @A@@@@DZ )@@G@@ A A0,LENGTH @A@@@@ S A0,LENGTH EA )@@G@@ @A@@@@ LSSL A0,+4 @E@@@@ JP EB )@@G@@ A0,PCERR . NOT INFOR FORMAT @A@@@@ LSSL A0,+EC )@@G@@1 @G@@@@ L A1,LENGTH . # OF VALID WORED )@@G@@DS IN INFOR @A@@@@ A,U A1,INFOR @G@@@@ EE )@@G@@ S A1,ENDINF . ADDRESS AFTER END INFOR TABLE @E@@@@EF )@@G@@ JN A0,BEG2 . INFOR NOT COMPLETE @A@@@@ EG )@@G@@ L A0,INFOR @A@@@@ SSL A0,+26 EH )@@G@@@A@@@@ TE,U A0,051 @E@@@@ J PCEREI )@@G@@R . NOT PROCESSOR CALL @A@@@@ L X11,(1,INFEJ )@@G@@OR+1) @A@@@@AA TZ,S1 0,X11 @G@@@@ J EK )@@G@@ PCERR . COMMAND IMAGE NOT FOLLOWING @E@@@@GETSIN L,EL )@@G@@S6 A0,0,X11 . NO IS FILENAME FIELD @E@@@@ A EM )@@G@@ X11,A0 . SKIP TO GET COMMAND @G@@@@ TNZ,S1 1,*XEN )@@G@@11 . MORE COMMAND IMAGE STUFF? @E@@@@ J EO )@@G@@ GETSIN . YES, KEEP GOING @E@@@@ L A0,IEP )@@G@@NFOR . GET OPTIONS @C@@@@ S A0,OPTN EQ )@@G@@ . @C@@@@ DO INSTAT , S A0,STATBUF+1 . ER )@@G@@@E@@@@ TOPTN 'Q' . Q OPTION ON? @C@@@@ES )@@G@@ J FOPT . NO @G@@@@ SZ ET )@@G@@ OUTFIL . YES, OUTPUT FILE IS ASCII @E@@@@ SZEU )@@G@@ FQOPT . Q OPTION SPEC @C@@@@ J EV )@@G@@ NEXOPT . @E@@@@FOPT TOPTN 'P' EW )@@G@@ . P OPTION ON? @C@@@@ J NOFQ . NOEX )@@G@@ @G@@@@ SNZ OUTFIL . YES, OUTPUT FILE IS EY )@@G@@FD @E@@@@ SNZ FQOPT . P OPTION SPEC EZ )@@G@@ @C@@@@ J NEXOPT . @C@@@@NOFQ FA )@@G@@ L,U A1,2 . @I@@@@ S A1,FFB )@@G@@QOPT . FQOPT = 2 IF NEITHER P OR Q IS GIVEN @E@@@@NEXOPTFC )@@G@@ TNOPTN 'D' . ACT LIKE DEMAND? @C@@@@ SNFD )@@G@@Z DEMAND . YES @E@@@@ TNOPTN 'N' FE )@@G@@ . N OPTION? @E@@@@ SNZ BRIEF2 .FF )@@G@@ SET BRIEF MODE @E@@@@ TOPTN 'E' . STFG )@@G@@UPID E OPTION @E@@@@ J NOESETH . NO E SETFH )@@G@@ HERE @E@@@@ L A0,BITS('Z'-'L') . SET THE L OPTIFI )@@G@@ON @E@@@@ OR A0,OPTN . THATS ALL E IS FJ )@@G@@@C@@@@ S A1,OPTN . RESTORE @E@@@@NOESETH TNFK )@@G@@OPTN 'B' . BATCH MODE? @C@@@@ SZ FL )@@G@@ DEMAND . YES @E@@@@ TNOPTN 'A' FM )@@G@@ . TEST FOR A OPTION @E@@@@ SNZ AUTOREC . SET FN )@@G@@AUTO FLAG @E@@@@ TZ AUTOREC . IF AUTO FO )@@G@@THEN @E@@@@ SZ ADSAVE . ZERO ADSAVE FP )@@G@@ @A@@@@ SZ LENGTH @A@@@@ DL FQ )@@G@@ A4,TPFIMG @A@@@@ DS A4,INTBL @E@@@@ FR )@@G@@ DS A4,OUTBL . SET TPF$ IN OUTBL @E@@@@ DSFS )@@G@@ A4,FRMIMG . IN ASG IMAGE TOO. @E@@@@ TNOPTN FT )@@G@@ 'I' . I OPTION? @C@@@@ J NOSPFU )@@G@@ . YES @A@@@@ L,U A0,INTBL @A@@@@FV )@@G@@ L,U A1,01 @E@@@@ LMJ X10,INFOR1FW )@@G@@ . INFOR INFO TO INTBL @E@@@@ J NOSPECF FX )@@G@@ . NO FILED SPEC @E@@@@ L A1,INTBL+2 . GEFY )@@G@@T ELMT NAME @E@@@@ TNE A1,BLANKS . IS IT BLFZ )@@G@@ANK? @E@@@@ S A1,DOPTI . INPUT IS DATAFGA )@@G@@ILE. @E@@@@ TOPTN 'U' . U OPTION? GB )@@G@@@C@@@@ J NONOTU . NOPE @E@@@@ TZGC )@@G@@ DOPTI . INPUT DATA FILE? @E@@@@ SNZ GD )@@G@@ DOPTO . OUTPUT MUST BE TOO @C@@@@ J UOPTGE )@@G@@ . @C@@@@NONOTU L,U A1,02 . SPECGF )@@G@@2 @C@@@@ DL A4,TPFIMG . GET TPF$ @E@@@@ GG )@@G@@ DS A4,FRMIMG . SET IN ASG IMAGE. @E@@@@ L,U GH )@@G@@ A0,OUTBL . GET OUTTABLE @C@@@@ LMJ X1GI )@@G@@0,INFOR1 . SCAN @C@@@@ J NOSP2 GJ )@@G@@ . NOSPEC @E@@@@ L A1,OUTBL+2 . GET OUT ELMT NAGK )@@G@@ME @E@@@@ TNE A1,BLANKS . IS IT BLANK? GL )@@G@@@E@@@@ SNZ DOPTO . OUT IS DATAFILE @A@@@@GM )@@G@@UOPT L,U A0,INTBL @C@@@@ TNZ DOPTI GN )@@G@@ . IS INPT @E@@@@ TZ DOPTO . OR OUT DAGO )@@G@@TA? @E@@@@ SNZ DOPT . SET D OPTION GP )@@G@@ @E@@@@ LMJ X10,PFS . PROG FILE SEARCH GQ )@@G@@@E@@@@ L,S1 A0,INTBL+9 . GET SYMB SUBTYPE @C@@@@GR )@@G@@ S,S1 A0,OUTBL+9 . SET @C@@@@ L A0,GS )@@G@@INTBL+11 . GET DATE @C@@@@ S A0,OUTBL+11 .GT )@@G@@ SET IT. @A@@@@ DL A0,INTBL @E@@@@ TZGU )@@G@@ AUTOREC . AUTORECOVERY? @^@@@@ FIELDATAGV )@@G@@ . @I@@@@AUTOI DL A0,('ED$TB ') GW )@@G@@ . GET ED @^@@@@ ASCII . @A@@@@ DSGX )@@G@@ A0,EDIN @A@@@@ LA A0,INTBL+10 @A@@@@GY )@@G@@ SA A0,COPIN+3 @E@@@@ TZ AUTOREC GZ )@@G@@ . AUTORECOVERY? @E@@@@ SZ COPIN+3 HA )@@G@@ . TREAT AS DATA FILE @C@@@@ L,U A0,33 . SET TO 2HB )@@G@@2 WRDS@C@@@@ TZ DOPT . IF DATAFILE @C@@@@ HC )@@G@@ S,H2 A0,COPIN+5 . STORE IT @A@@@@ LX,U X9,IHD )@@G@@NTBL @C@@@@ LMJ X10,CYLSET . @E@@@@HE )@@G@@ TOPTN 'X' . X OPTION? @A@@@@ HF )@@G@@ SZ REEXIT @G@@@@ LMJ X10,OPNI HG )@@G@@ . OPEN INPUT ON GIVEN FILE @E@@@@ SNZ OK HH )@@G@@ . NOT AT END OF FILE @E@@@@ LMJ X10,IDMSG .HI )@@G@@ PRINT ID LINE. @E@@@@ LMJ X10,MAILQ . AHJ )@@G@@NY MAIL? @E@@@@ SZ WMAIL . NO MAIL HK )@@G@@WAITING @E@@@@ TNZ AUTOREC . AUTORECOVERY? HL )@@G@@ @A@@@@ J EDIT1 @E@@@@ SZ HM )@@G@@ AUTOREC . CLEAR FLAG @G@@@@ TYP E110HN )@@G@@,L110 . TYPE 'AUTO RECOVERY' @C@@@@ J HO )@@G@@ EDIT1 . GO EDIT @]@@@@NOSP . @E@@@@ L HP )@@G@@ A0,FQOPT . P-Q OPTION FLAG @G@@@@ TE,U A0,2HQ )@@G@@ . WAS EITHER P OR Q SPEC? @E@@@@ J HR )@@G@@ $+3 . YES, ONE WAS @I@@@@ SNZ OUTFHS )@@G@@IL . OUTPUT FIELDATA IF I BUT NO P OR Q @G@@@@ HT )@@G@@ SNZ FQOPT . AS IF P OPTION WERE SPEC @C@@@@HU )@@G@@ L,U A1,01 . SET INDEX @C@@@@ L,U A0HV )@@G@@,OUTBL . SET OUTBL @C@@@@ LMJ X10,INFOR1 HW )@@G@@. SCAN @C@@@@ J PCERR . NONE @E@@@@HX )@@G@@ J IONCARD . I OPTION ON CARD @I@@@@NELR HY )@@G@@ . .RETURN HERE IF NOT X OPT AND ELMT NOT FOUNHZ )@@G@@D. @C@@@@ LR,U R1,014 . COPY 12 WRDS @C@@@@ IA )@@G@@ LA A1,(1,INTBL) . INTBL @C@@@@ LA A0,(1IB )@@G@@,OUTBL) . TO OUTBL @C@@@@ BT A0,0,*A1 . DO IT IC )@@G@@ @E@@@@ TYP E35,L35 . INPUT MODE ASSUMED ID )@@G@@@E@@@@ L A0,OPTN . GET OPTION WORD @E@@@@IE )@@G@@ OR A0,BITS('Z'-'I') . OR IN I OPTION @E@@@@ IF )@@G@@ S A1,OPTN . RESTORE OPTION WORD @E@@@@IONCARD L IG )@@G@@ A1,OUTBL+2 . IS OUT DATA? @C@@@@ TE A1IH )@@G@@,BLANKS . ? @C@@@@ J $+3 II )@@G@@. NO @E@@@@ SNZ DOPTO . SET OUTPUT D OPTIJ )@@G@@ION @E@@@@ SNZ DOPT . AND D OPTION IK )@@G@@@E@@@@ SZ RC . SET TO CYCLE 0. @E@@@@IL )@@G@@ TZ AUTOREC . AUTO OPTION? @E@@@@ IM )@@G@@ J AUTOI . DO AN AUTO @G@@@@ SZIN )@@G@@ OK . SIGNIFIES AT END OF FILE @E@@@@ IO )@@G@@ TOPTN 'X' . X OPTION? @A@@@@ SZIP )@@G@@ REEXIT @A@@@@ LMJ X10,LABEL @E@@@@IQ )@@G@@ LMJ X10,IDMSG . PRINT ID LINE. @E@@@@ IR )@@G@@ S R10,WMAIL . MAIL MAYBE WAITING @A@@@@ J IS )@@G@@ INPUT2 @C@@@@ . COME HERE IF ONE SPEC FIELD AND NO OPTIIT )@@G@@ON U @I@@@@NOSP2 L A1,DOPTI . DATA FILE INPUT? IU )@@G@@ ED010830 @I@@@@ TOPTN 'R' . ANIV )@@G@@D NOT READ-ONLY MODE? ED010840 @I@@@@ JNZ A1,UIW )@@G@@PDATA . U IT ED010850 @E@@@@ IX )@@G@@ TNOPTN 'C' . C OPTION SET? @E@@@@ J IY )@@G@@ UPOPT . DON'T SET R OPTION @I@@@@ L IZ )@@G@@ A0,OPTN . GET OPTION WORD ED010870 @E@@@@JA )@@G@@ OR A0,BITS('Z'-'R') . OR IN R OPTION @E@@@@ JB )@@G@@ S A1,OPTN . RESTORE OPTION WORD @G@@@@ TYJC )@@G@@P E41,L41 . TELL HIM NO CORRECTIONS @C@@@@ JD )@@G@@ J UOPT . TREAT AS U @E@@@@UPDATA SNZ DOPTJE )@@G@@O . SET DATA OUT OPTION @G@@@@ TYP E112,L112 JF )@@G@@ . U OPTION ASSUMED FOR DATAFILE @I@@@@UPOPT L A0,OJG )@@G@@PTN . GET OPTIONS ED010890 @I@@@@ JH )@@G@@ OR A0,BITS('Z'-'U') . OR IN U OPTION ED0109JI )@@G@@00 @I@@@@ S A1,OPTN . RESTORE OPTIONS JJ )@@G@@ ED010910 @I@@@@ J UOPT . GOJK )@@G@@ DO U STUFF ED010940 @C@@@@BEG2 L A0,(JL )@@G@@+IOERR,ENDINF) @A@@@@ TG,U A1,46 @A@@@@JM )@@G@@ J IOERR @^@@@@ J BEG1@G@@@@JN )@@G@@ . NO SPEC FIELD. ASSUME HE WANTS AN ELEMENT IN TPF$. ASK FOR THE NAME. JO )@@G@@@E@@@@SKDUMY L X10,X8 . PRESERVE X10 @]@@@@JP )@@G@@NOSPECF . @E@@@@ DL A0,PROGNAM . ASK FOR ELTNAMJQ )@@G@@E @C@@@@ DS A0,IMBUF . @C@@@@ JR )@@G@@ L A0,PROGNAM+2 . @C@@@@ S A0,IJS )@@G@@MBUF+2 . @E@@@@ SZ COUNT . CLJT )@@G@@EAR COUNT @C@@@@ S X10,X8 . SAVE X10JU )@@G@@@E@@@@ L,H1 A7,TREADSEQ+1 . GET EOF ADDRESS @E@@@@JV )@@G@@ L,U A0,OEND . REPLACE WITH END @E@@@@ JW )@@G@@ S,H1 A0,TREADSEQ+1 . PUT EOF ADDRESS @E@@@@ LMJX )@@G@@J X10,LTYPEIN . READ FILENAME @E@@@@ S,H1 JY )@@G@@ A7,TREADSEQ+1 . PUT EOF ADDRESS @E@@@@ LMJ X10,JZ )@@G@@GET2 . GET AN ELEMENT NAME @E@@@@ DL A0,FIMBUF KA )@@G@@ . GET ELEMENT NAME @E@@@@ TNE A0,BLANKS KB )@@G@@ . BLANK NAME? @E@@@@ J SKDUMY . YEKC )@@G@@S ASK AGAIN @E@@@@ DS A0,INTBL+2 . PUT IN PKD )@@G@@F PACKET @I@@@@ DL A0,TPFIMG KE )@@G@@ . ASSUME @E@@@@ DS A0,INTBL KF )@@G@@ . PUT IN PF PACKET @G@@@@ S,H1 R10,INTBL+5 . SEKG )@@G@@T TO SYMBOLIC ELEMNT @E@@@@ S,S1 R10,INTBL+9 KH )@@G@@ . SET TO ELT @E@@@@ L A0,BITS('Z'-'U') KI )@@G@@ . SET U FLAG @G@@@@ OR A0,OPTN . OR INKJ )@@G@@ PRESENT OPTIONS @C@@@@ S A1,OPTN . KK )@@G@@ @E@@@@ SNZ ABSPEC . SET ABSENT SPEC FLAG KL )@@G@@@C@@@@ J 1,X8 . @^@@@@ FIKM )@@G@@ELDATA . @A@@@@TPFIMG 'TPF$ ' . TPF$ @A@@@@ED1 '@AKN )@@G@@SG,T ED$TA,F///800' @I@@@@CATB '@CAT,VG ED$TB,F///800' KO )@@G@@ ED010960 @I@@@@USETB '@USE ED$TB,EDKP )@@G@@$TB&' . 2 ED020210 @I@@@@ASGBT KQ )@@G@@ '@ASG,T ED$TB,F///800' . ED01097KR )@@G@@0 @I@@@@ED2A '@ASG,ADX ED$TB .' KS )@@G@@ 817TM068 @^@@@@ ASCII . @]@@@@ELMERR . KT )@@G@@@C@@@@ E$DIT FTAB . @E@@@@ E$KU )@@G@@MSG E1 . ELEMENT ... @E@@@@ E$FD2 KV )@@G@@ INTBL+2 . ELEMENT NAME @A@@@@ E$MSGR . NOKW )@@G@@T FOUND ... @^@@@@ E$DITX . @C@@@@ FTYPE FIMBKX )@@G@@UF,9 . @E@@@@ TZ ABSPEC . ABKY )@@G@@SENT SPEC FIELDS? @E@@@@ J NELR . ENTER INKZ )@@G@@PUT MODE @I@@@@ TNOPTN 'C' . C OPTION MEANSLA )@@G@@ ENTER INPUT MODE IF NO EL @E@@@@ J NELR .LB )@@G@@ YES, ENTER INPUT MODE. @C@@@@ J OEND . NO, ELC )@@G@@XIT. @]@@@@PFERR . @E@@@@ TYP E101,L101 . NOT A PLD )@@G@@ROGRAM FILE @A@@@@ J RECTST @A@@@@ . AUTLE )@@G@@O FILE NOT ASSIGNED ERROR @G@@@@AUTOERR TYP E102,L102 LF )@@G@@ . TYPE 'NO AUTO FILE' @C@@@@ J ERXT LG )@@G@@ . @G@@@@PCERR TYP E103,L103 . PROCELH )@@G@@SSOR CALL SYNTAX ERROR @E@@@@ J OEND . ELI )@@G@@RROR EXIT @C@@@@E101 'FILE NOT PROGRAM FILE FORMAT ' LJ )@@G@@@A@@@@L101 EQU $-E101 @E@@@@E103 'ERROR READINLK )@@G@@G PROCESSOR CALL STATEMENT' . @C@@@@L103 EQU $-E103 LL )@@G@@ . @I@@@@E102 'AUTO FILE BAD OR NONEXISTANT' . LM )@@G@@ 817TM070 @C@@@@L102 EQU $-E102 LN )@@G@@ . @]@@@@PFS . @C@@@@ ER PFS$ LO )@@G@@ . @E@@@@ JZ A2,0,X10 . A2=0:FILP )@@G@@ND MADE @^@@@@ TNE,U A2,2@E@@@@ J IOERLQ )@@G@@R . A2=2:IOERR @A@@@@ TZ DOPTI LR )@@G@@ @A@@@@ J 0,X10 . RETURN@C@@@@ TNE,U LS )@@G@@ A2,1 . @G@@@@ J ELMERR LT )@@G@@ . A2=1:NO ELEMENT FOUND @I@@@@ J PFERR LU )@@G@@ . OTHERWISE:PROGRAM FILE UNDEFINED @C@@@@CYLSET . LV )@@G@@ . . @G@@@@ L,S4 RC,8,X9 LW )@@G@@ . GET MOST CURRENT CYCLE @E@@@@ TNZ CYCSLX )@@G@@ . CYCLE SPECIFIED? @E@@@@ J 0,X10 LY )@@G@@ . NO,RETURN @G@@@@ TNZ,H1 REL LZ )@@G@@ . RELATIVE CYCLE GIVEN? @C@@@@ LA,H2 RC,REL MA )@@G@@ . NO @G@@@@ TP REL . RELATIMB )@@G@@VE CYCLE NEGATIVE? @C@@@@ ANA,XH2 RC,REL . MC )@@G@@YES @A@@@@ L,S4 A0,8,X9 @A@@@@ ANU,S6 MD )@@G@@ A0,8,X9 @I@@@@ TG A0,RC . IS REQME )@@G@@UESTED CYCLE> MOST RECENT CYCLE? @I@@@@ TG A1,RC MF )@@G@@ . IS REQUESTED CYCLE< OLDEST CYCLE? @E@@@@ J MG )@@G@@ CYLERR . YES,ERROR @E@@@@ J MH )@@G@@ 0,X10 . NO,RETURN @]@@@@CYLERR . @A@@@@ MI )@@G@@ TYP E104,L104 @A@@@@ J RECTST MJ )@@G@@@C@@@@E104 'CYCLE NUMBER OUT OF RANGE.' @A@@@@L104 MK )@@G@@EQU $-E104 @]@@@@ . @/ @E@@@@. INFOR* RES 46ML )@@G@@ . INFOR TABLE @E@@@@ENDINF RES 1 MM )@@G@@ . END OF INFOR TABLE @E@@@@INFOR1 S X11,X11SAV MN )@@G@@ . INDEX IN INFOR TABLE@C@@@@ S A1,R5 . MO )@@G@@ @A@@@@ L,U A2,0,X11 @E@@@@ TNG MP )@@G@@ A2,ENDINF . END OF INFOR? @G@@@@ TE,S2 A1,0MQ )@@G@@,X11 . FOLLOWING FROM WANTED FIELD? @C@@@@ J MR )@@G@@ 0,X10 . NO @A@@@@ L A2,(1,0) MS )@@G@@@C@@@@ S A2,5,A0 . TYPE @^@@@@ SZMT )@@G@@ 4,A0@^@@@@ SZ 8,A0@^@@@@ SZ 9,A0MU )@@G@@@A@@@@ SZ 10,A0 @A@@@@ SZ 11,AMV )@@G@@0 @E@@@@ SZ QUAL . ZERO QUALIFIERMW )@@G@@ @A@@@@ DL A4,BLANKS @E@@@@ DS MX )@@G@@ A4,2,A0 . BLANK ELEMENT NAME @E@@@@ DS A4,6MY )@@G@@,A0 . BLANK VERSION @E@@@@ S A4,FCY MZ )@@G@@ . CLEAR F CYCLE @E@@@@ S A4,KEY1 NA )@@G@@ . CLEAR KEYS @E@@@@ S A4,KEY2 . CLNB )@@G@@EAR KEYS @^@@@@ FIELDATA . @G@@@@ DL NC )@@G@@ A6,('ED$S1 ') . USE WILL BE DONE @E@@@@ TEND )@@G@@,U A1,1 . IS IT SPEC 1 @G@@@@ DL NE )@@G@@ A6,('ED$S2 ') . NO USE SPEC2 USE NAME @E@@@@ DSNF )@@G@@ A6,0,A0 . PUT IN TABLE @E@@@@INFOR2 L,S3 NG )@@G@@ A1,0,X11 . SUB FIELD # @I@@@@ L,S4 A3,0NH )@@G@@,X11 . TO DETECT .ELEMENT ED011000 @G@@@@ NI )@@G@@ L,S6 A2,0,*X11 . # OF WORDS IN SUBFIELD @C@@@@NJ )@@G@@ TNE,U A2,1 . 1 WORD @C@@@@ J NK )@@G@@ INFOR3 . YES @C@@@@ TE,U A2,2 NL )@@G@@ . 2 WORDS @C@@@@ J SYNERR . NO @A@@@@NM )@@G@@ DL A4,0,*X11 @^@@@@ J $+3 @A@@@@NN )@@G@@INFOR3 L A4,0,X11 @A@@@@ L A5,BLANKS NO )@@G@@ @^@@@@ J $,A1@E@@@@ JMGI X11,INFR31NP )@@G@@ . QUALIFIER @C@@@@ JMGI X11,INFR32 NQ )@@G@@ . FILENAME@C@@@@ JMGI X11,INFR33 . F-CYCLE @C@@@@NR )@@G@@ JMGI X11,INFR34 . KEY1 @C@@@@ JMGI NS )@@G@@ X11,INFR35 . KEY2 @E@@@@ JMGI X11,INFOR4 NT )@@G@@ . ELEMENT NAME @E@@@@ JMGI X11,INFR41 . VERSNU )@@G@@ION NAME @C@@@@ JMGI X11,FRP0 . CYCLE NV )@@G@@@A@@@@ JMGI X11,INFOR5 @E@@@@INFR31 DS A4,QNW )@@G@@UAL . STORE QUALIFIER @C@@@@ J INFOR5 NX )@@G@@ . CONTINUE @E@@@@INFR32 DS A4,FRMIMG . AND IN ASG TABNY )@@G@@LE @C@@@@ J INFOR5 . CONT @C@@@@NZ )@@G@@INFR33 S A4,FCY . STORE FCY @C@@@@ J OA )@@G@@ INFOR5 . CONT @C@@@@INFR34 S A4,KEY1 . OB )@@G@@KEY1 @C@@@@ J INFOR5 . CONT @C@@@@OC )@@G@@INFR35 S A4,KEY2 . KEY2 @C@@@@ J OD )@@G@@ INFOR5 . CONT @A@@@@INFOR4 DS A4,2,A0 OE )@@G@@@E@@@@ TE,U A3,'.' . CHECK FOR .ELMENT @C@@@@OF )@@G@@ J INFOR5 . NO @E@@@@ DL A4,OG )@@G@@INTBL . GET PREVIOUS. @C@@@@ DS A4,OUTBL OH )@@G@@ . STORE. @^@@@@ J $+2 @A@@@@INFR41 DSOI )@@G@@ A4,6,A0 @A@@@@INFOR5 L A1,R5 @A@@@@OJ )@@G@@ L,U A2,0,X11 @E@@@@ TNG A2,ENDINFOK )@@G@@ . END OF TABLE? @E@@@@ TE,S2 A1,0,X11 OL )@@G@@ . END OF FIELD? @^@@@@ J $+2 @E@@@@ J OM )@@G@@ INFOR2 . GET NEXT SUBFIELD @A@@@@ S ON )@@G@@ X11,X11SAV @E@@@@ E$DIT FTAB . ENTER EOO )@@G@@DIT MODE @C@@@@ E$MSG USEIMG . @E@@@@OP )@@G@@ E$FD2 A6 . INSERT USE NAME @C@@@@ OQ )@@G@@ E$CHAR ',' . INSERT ,@E@@@@ TNZ QUALOR )@@G@@ . QUAILIFIER @E@@@@ J NOQUAL OS )@@G@@ . SKIP OVER * @E@@@@ DL A0,QUAL OT )@@G@@ . GET QUALIFIER @E@@@@ LMJ X11,EFD2$ . PACK OU )@@G@@12 CHARACTERS @C@@@@ E$CHAR '*' . GET * OV )@@G@@@E@@@@NOQUAL E$FD2 FRMIMG . GET FILENAME @C@@@@OW )@@G@@ L A0,FCY . F CYCLE @C@@@@ TNE A0,OX )@@G@@BLANKS . NONE? @E@@@@ J AKEY1 .OY )@@G@@ GO TO FIRST KEY. @E@@@@ E$CHAR '(' . BUOZ )@@G@@ILD F-CYCLE @C@@@@ E$FD1 FCY . F CYCLE PA )@@G@@@E@@@@ E$CHAR ')' . END IT HERE @C@@@@PB )@@G@@AKEY1 L A0,KEY1 . GET KEY1 @E@@@@ TNE A0,PC )@@G@@BLANKS . IS IT BLANK? @E@@@@ J AKEY2 PD )@@G@@ . YES, GO TO KEY2 @C@@@@ E$CHAR '/' PE )@@G@@ . FOR KEY @E@@@@ E$FD1 KEY1 . INSERT KPF )@@G@@EY(READ) @C@@@@AKEY2 L A0,KEY2 . KEY2 ? @C@@@@PG )@@G@@ TNE A0,BLANKS . BLANK ? @C@@@@ J APEPH )@@G@@R . GO TO END. @E@@@@ L A0,KEY1 .PI )@@G@@ WAS THERE A RKEY? @C@@@@ TE A0,BLANKS . ? PJ )@@G@@ @C@@@@ J $+3 . YES @E@@@@ PK )@@G@@ E$CHAR '/' . GET ANOTHER / @E@@@@ E$PL )@@G@@CHAR '/' . AND YET ANOTHER @E@@@@ E$FD1 PM )@@G@@ KEY2 . GET WRITE KEY @E@@@@APER E$SKIP 2 PN )@@G@@ . SPACE TWO COLS @G@@@@ E$CHAR '.' PO )@@G@@ . PERIOD TO TERMINATE CSF$ SCAN @E@@@@ E$SKIP 2 PP )@@G@@ . 2 MORE SPACES @G@@@@ E$FD2 (' . REJECTEPQ )@@G@@D') . GET REJECTED MESS IN CASE @^@@@@ E$DITX . PR )@@G@@@^@@@@ ASCII . @I@@@@ L A0,(14,FIMBUF) PS )@@G@@ . APPLY USE TO QUAL*FILENAME/RKEY/WKEY @^@@@@ ER PT )@@G@@ CSF$@C@@@@ L A2,A0 . @E@@@@ PU )@@G@@ DL A0,A6 . TEST FOR ASSIGN @^@@@@ TNPV )@@G@@OASG . @I@@@@ J BDKYS . LOCAL PW )@@G@@ LOCAL @G@@@@ L A1,R5 PX )@@G@@ . GET SPEC FILED NUMBER @G@@@@ TNE,U A1,1 PY )@@G@@ . GOINT TO TRY TO ASSIGN @E@@@@ SNZ EDS1PZ )@@G@@A . TRIED TO ASSIGN SPEC 1 @C@@@@ TNE,U A1,2 QA )@@G@@ . @E@@@@ SNZ EDS2A . TRIED TO ASQB )@@G@@SIGN SPEC 2 @^@@@@ E$DIT FTAB@E@@@@ E$MSG ASGIQC )@@G@@MG . ASSIGN IMAGE @E@@@@ TOPTN 'O' QD )@@G@@ . EXCLUSIVE USE? @C@@@@ J NEXUSE QE )@@G@@ . NO @C@@@@ E$CHAR 035 . @E@@@@QF )@@G@@NEXUSE E$SKIP 2 . INSERT 2 BLANKS @E@@@@ QG )@@G@@ E$FD2 A6 . INSERT USE NAME @^@@@@ E$QH )@@G@@DITX . @E@@@@ L A0,(4,FIMBUF) . ASSIGN IT QI )@@G@@ @C@@@@ ER CSF$ . @E@@@@ QJ )@@G@@ JZ A0,OKASG . SUCCESSFUL ASSIGN? @E@@@@ L QK )@@G@@ A5,A0 . SAVE FAC BITS @I@@@@ AND QL )@@G@@ A0,(044300100200) . CHECK TO SEE IF FATAL ED0110 @G@@@@QM )@@G@@ JZ A1,ASGERR . READ OR WRITE KEYS MAY NOT BE QN )@@G@@@E@@@@ DL A0,A6 . WAS IT ONLY A WARNING@^@@@@QO )@@G@@ TNOASG . @E@@@@ J ISASG . ASQP )@@G@@SIGNED OK @E@@@@ J ASGERR . ERROR NOQQ )@@G@@T ASSIGNED @I@@@@ISASG TEP,U A5,0200 . DISABLED FILE QR )@@G@@TEST ED011040 @I@@@@ J DISABF QS )@@G@@ . YES ED011050 @E@@@@ANUSE TEP,U QT )@@G@@ A5,0100000 . FILE IN USE BIT @C@@@@ J FINUQU )@@G@@SE . YES @]@@@@BDKYS . @I@@@@ L,S2 A7,FQV )@@G@@RMIMG+6 . GET READ-WRITE KEY INDICATOR ED011070 @G@@@@ QW )@@G@@ L A1,R5 . GET SPEC FIELD NUMBER @C@@@@QX )@@G@@ TNE,U A1,2 . SPEC 2? @C@@@@ J QY )@@G@@ PASGO . YES @I@@@@ TOP,U A7,2 QZ )@@G@@ . INPUT FILE READ LOCK? ED011090 @C@@@@ J RA )@@G@@ PASUOP . NOPE @E@@@@ TYP E108,L108 RB )@@G@@ . SEND MSG @E@@@@ J FREOEND . FRRC )@@G@@EE FILE AND END @G@@@@PASUOP TNOPTN 'U' . U OPTIORD )@@G@@N INPUT IS ALSO OUTPUT @I@@@@PASGO TOP,U A7,4 . ORE )@@G@@UTPUT FILE WRITE LOCK? ED011110 @C@@@@ J OKASRF )@@G@@G2 . NOPE @E@@@@ TYP E109,L109 . RG )@@G@@TELL HIM SO @C@@@@FREOEND E$DIT FTAB . RH )@@G@@@G@@@@ E$MSG FREIMG . FREE OF ASSIGNED FILE RI )@@G@@ @E@@@@ E$FD2 A6 . INSERT USE NAME RJ )@@G@@@^@@@@ E$DITX . @E@@@@ L A0,(2,FIMBUF) RK )@@G@@ . FREE FILE @C@@@@ ER CSF$ . RL )@@G@@ @E@@@@ J OEND . MIGHT AS WELL END RM )@@G@@@E@@@@OKASG DS A6,FRMIMG . SOTE FILENAME @C@@@@RN )@@G@@ L,U A0,FRMIMG . DO FACIL@C@@@@ ER RO )@@G@@ FACIL$ . @C@@@@OKASG2 DL A0,BLANKS .RP )@@G@@ GET BLANKS @C@@@@ DS A0,QUAL . TO QUAL @E@@@@RQ )@@G@@ S A0,KEY1 . GET THE KEYS @C@@@@ RR )@@G@@ S A0,KEY2 . NOW TOO. @E@@@@ S A0,FCY RS )@@G@@ . AND THE F-CYCLE @E@@@@ L,S1 A0,FRMIMG+RT )@@G@@6 . GET EQUIPMENT CODE @E@@@@ JZ A0,NOEQUI RU )@@G@@ . NO EQUIPMENT? @G@@@@ SSL A0,3 . SHRV )@@G@@IFT OFF LOWER DIGIT @E@@@@ TE,U A0,3 RW )@@G@@ . FASTRAND FORMAT? @E@@@@ J NOTFAS . NORX )@@G@@PE-CAN'T HANDLE IT@C@@@@ L X11,X11SAV . RESTORE X11RY )@@G@@@G@@@@ J 1,X10 . RETURN SPEC FIELD IN INTBLRZ )@@G@@ @E@@@@ASGERR A$EDIT ETAB . REOPEN EDIT$ PACKET SA )@@G@@@G@@@@ A$EMSG E107 . 'FILE IN FIELD ...' SB )@@G@@ @E@@@@ A$EDECV R5 . SPEC FIELD NUMBER SC )@@G@@@C@@@@ A$EMSGR . CANNOT BE ASSIGNED @E@@@@ A$SD )@@G@@EOCTF 12,A5 . GIVE BITS @^@@@@ A$EDITX SE )@@G@@ . @G@@@@ L A0,(0116,IMBUF) . GET ERROR MSG PACKSF )@@G@@ET @E@@@@ ER APRINT$ . ASCII PRINT SG )@@G@@ @C@@@@ J OEND . EXIT @C@@@@NOTFASSH )@@G@@ A$EDIT ETAB . @E@@@@ A$EMSG E10SI )@@G@@7 . FILE IN SPEC FIELD@C@@@@ A$EDECV R5 SJ )@@G@@ . NUMBER @G@@@@ A$EMSG E105 . NOT ONSK )@@G@@ FASTRAND FORMAT DEVICE @^@@@@ A$EDITX . @C@@@@ TYSL )@@G@@P IMBUF,15 . @C@@@@ J OEND SM )@@G@@ . @C@@@@E105 ' NOT ON FASTRAND FORMAT DEVICE&' . SN )@@G@@@C@@@@NOEQUI A$EDIT ETAB . @E@@@@ A$SO )@@G@@EMSG E107 . FILE IN SPEC FIELD@C@@@@ A$EDECV SP )@@G@@ R5 . NUMBER @G@@@@ A$EMSG E106 SQ )@@G@@ . NOT ON FASTRAND FORMAT DEVICE @^@@@@ A$EDITX . @C@@@@SR )@@G@@ TYP IMBUF,15 . @C@@@@ J SS )@@G@@ OEND . @C@@@@E106 ' HAS NO EQUIPMENT ASSIGNEST )@@G@@D TO IT.&' .@I@@@@DISABF A$EDIT ETAB . SU )@@G@@ ED011130 @I@@@@ A$EMSG E107 SV )@@G@@ . FILE IN SPEC FIELD ED011140 @I@@@@ A$EDECV SW )@@G@@ R5 . NUMBER ED011150 @I@@@@SX )@@G@@ A$EMSG E111 . IS DISABLED SY )@@G@@ ED011160 @I@@@@ A$EDITX . SZ )@@G@@ ED011170 @C@@@@ TYP IMBUF,15 TA )@@G@@ . @E@@@@ J ANUSE . CHECK OTHER BITB )@@G@@TS @C@@@@FINUSE A$EDIT ETAB . @E@@@@ TC )@@G@@ A$EMSG E107 . FILE IN FIELD ? @E@@@@ A$TD )@@G@@EDECV R5 . FIELD NUMBER @G@@@@ A$EMSG TE )@@G@@ E114 . IN USE BY ANOTHER RUN @^@@@@ A$TF )@@G@@EDITX . @C@@@@ TYP IMBUF,10 . TYPE MSG@E@@@@TG )@@G@@ J BDKYS . CHECK OTHER BITS @I@@@@E111 TH )@@G@@ ' DISABLED--ACCEPTED&' . 817TM0TI )@@G@@72 @]@@@@ . @/ @C@@@@FRP0 SZ A2 . TJ )@@G@@ @C@@@@ SZ A3 . @I@@@@ TK )@@G@@ L A1,R5 . GET NUMBER 817TM0TL )@@G@@74 @E@@@@ TE,U A1,1 . IS IT FIELD 1 TM )@@G@@@G@@@@ J INFOR5 . NO-DON'T READ CYCLE WORD TN )@@G@@ @E@@@@ S X11,CYCS . SET CYCLE SPECIFIED. TO )@@G@@@^@@@@ FIELDATA . @C@@@@ LDSL A3,6 TP )@@G@@ . @E@@@@ TLE,U A3,'9'+1 . IS IT NUMERIC TQ )@@G@@ @C@@@@ TLE,U A3,'0' . @C@@@@ TR )@@G@@ J $+2 . @C@@@@ J FRP2 TS )@@G@@ . YES @C@@@@ TNE,U A3,'-' . TT )@@G@@MINUS @C@@@@ LNA A3,A3 . YES @C@@@@ TU )@@G@@ TE,U A3,'+' . @G@@@@ JP A3,NTV )@@G@@UMERR . SHOULD HAVE BEEN A NUMBER @C@@@@ SA,H1 TW )@@G@@ A3,REL . @C@@@@FRP1 TX )@@G@@ . @^@@@@ SZ A3 @E@@@@ LDSL A3,6 TY )@@G@@ . GET CHARACTER @C@@@@ TNE,U A3,' ' TZ )@@G@@ . SPACE?@A@@@@ J INFOR5 @E@@@@ UA )@@G@@ TLE,U A3,'9'+1 . IS IT NUMERIC @C@@@@ TLUB )@@G@@E,U A3,'0' . @C@@@@ J NUMERR UC )@@G@@ . NO @C@@@@FRP2 . . UD )@@G@@@G@@@@ MSI,U A2,10 . CONVERT FD TO BINARY UE )@@G@@ @C@@@@ ANA,U A3,060 . @C@@@@ UF )@@G@@ AA A2,A3 . @A@@@@ S,H2 A2,RUG )@@G@@EL @C@@@@ J FRP1 . @A@@@@UH )@@G@@ASGIMG '@ASG,A&' . ASSIGN IMAGE @A@@@@USEIMG '@USE &' . USE IMAUI )@@G@@GE @E@@@@FREIMG '@FREE & ' . FREE FILE UJ )@@G@@@C@@@@QUAL ' ' . QUALIFIER @A@@@@KEY1 ' UK )@@G@@ ' . KEY1 @A@@@@KEY2 ' ' . KEY2 @A@@@@UL )@@G@@FCY ' ' . F-CYCLE @^@@@@ ASCII . @]@@@@UM )@@G@@LABEL . @E@@@@ L A1,(0500100,1) . IMAGE CONTROL UN )@@G@@WORD @C@@@@ S A1,EDOUT+10 . @C@@@@ UO )@@G@@ LA A1,EDSDF . @C@@@@ SA A1,IUP )@@G@@MAGE . @A@@@@ LA,U A0,EDOUT @C@@@@UQ )@@G@@ LMJ X11,SDFO . @A@@@@ J UR )@@G@@ IOERRA @E@@@@ SNZ WINHIB . INHIBIT US )@@G@@WRITE @C@@@@ SZ ICW . @A@@@@UT )@@G@@ J 0,X10 @E@@@@E107 'FILE IN FIELD & CAUU )@@G@@NNOT BE ASSIGNED: &' @A@@@@E108 'INPUT FILE READ LOCK' UV )@@G@@@C@@@@L108 EQU $-E108 . @C@@@@E109 'UW )@@G@@OUTPUT FILE WRITE LOCK' . @C@@@@L109 EQU $-E109 UX )@@G@@ . @C@@@@E110 'AUTO RECOVERY' . UY )@@G@@@C@@@@L110 EQU $-E110 . @I@@@@E112 'UUZ )@@G@@ OPTION ASSUMED FOR DATAFILE.' ED011220 VA )@@G@@@I@@@@L112 EQU $-E112 . VB )@@G@@ ED011230 @I@@@@E113 'AUTO COMMAND CANNOT BE USED. AUTO FILVC )@@G@@E IN USE.' . ED011240 @I@@@@L113 EQU $-E113 VD )@@G@@ . ED011250 @C@@@@E114 ' VE )@@G@@IN USE BY ANOTHER RUN &' . @C@@@@TABTBLS . INITIAL TAB TABLE VF )@@G@@SEE SET$ PROC @C@@@@I DO TABLNT , + TAB$(I) . VG )@@G@@@]@@@@SAVEX11 +0@]@@@@$(0) . @G@@@@AREA RES 132 VH )@@G@@ . AREA TABLE FOR EDIT80, @G@@@@ VI )@@G@@ . IMAG80,CHAN80, AND TAB80 @E@@@@ + VJ )@@G@@ 0777777777777 . BUFFER WORD @E@@@@EDIT80 EQUF AREAVK )@@G@@,,Q1 . TYPEIN IMAGE EXPANDED @E@@@@IMAG80 EQUF AREA,,Q2 VL )@@G@@. IMAGE FROM FILE EXPANDED @E@@@@CHAN80 EQUF AREA,,Q3 . CHANVM )@@G@@GE IMAGE EXPANDED @C@@@@TAB80 EQUF AREA,,Q4 . TABULATIOVN )@@G@@N @C@@@@ + 0 . @^@@@@INTBL VO )@@G@@ RES 12 @A@@@@OUTBL . OUTPUT PFI TABLE @A@@@@ DO VP )@@G@@12 , + 0 . 12 WORDS OF ZERO@^@@@@ FIELDATA . @A@@@@FEDS1AVQ )@@G@@ '@FREE,RA ED$S1.' @A@@@@FEDS2A '@FREE,RA ED$S2.' VR )@@G@@@A@@@@UNUSE1 '@FREE,A ED$S1.' . @A@@@@UNUSE2 '@FREE,A ED$S2VS )@@G@@.' . @A@@@@FRSAVT '@FREE ED$TB. ' @I@@@@FRSAVA '@VT )@@G@@FREE ED$TA. ' . * LOCAL VU )@@G@@@E@@@@ASGDI '@ASG,T ED$DI,F///600' . ASSIGN DITTO FILE @I@@@@VV )@@G@@$(1) . THIS CAN BE IN I BANK VW )@@G@@ED011270 @A@@@@FREPR '@FREE &' .@I@@@@ASGPR '@VX )@@G@@ASG,CG &,F2///2000&' . SYM PRINTFILE 817TM079 VY )@@G@@@E@@@@BRKPR '@BRKPT &' . BREAKPOINT PRINTFILE @^@@@@VZ )@@G@@SYMPR '@SYM &,,PR&' @E@@@@SYMCP '@SYM &,,CP&' . PUNCWA )@@G@@H ALT PUNCH FILE @^@@@@ ASCII . @C@@@@HEADPA 'H,,1, WB )@@G@@ ' . APRTCA$ CONTROL WORD @I@@@@$(0) . BACK TO D BANK WC )@@G@@ ED011290 @G@@@@ECHOIN '****' WD )@@G@@ . MUST PRECEDE EDIT14 FOR E OPTION @C@@@@EDIT14* RWE )@@G@@ES 33 . SPACE FOR PRINT FILES @C@@@@IMAGE* RES 33 . SPACEWF )@@G@@ FOR PRINT FILES @C@@@@IMSAV RES 33 . SAVE AREA FOR IMAGE. WG )@@G@@@A@@@@ILSTCD RES 33 . @A@@@@ICW EQU EDINWH )@@G@@+10 @A@@@@OCW EQU EDOUT+10 @E@@@@CL EQWI )@@G@@UF OUTBL+8,,S2 . CYCLE LIMIT @E@@@@LC EQUF WJ )@@G@@ OUTBL+8,,S4 . LATEST CYCLE @E@@@@CC EQUF OUTBWK )@@G@@L+8,,S6 . CYCLE COUNT @E@@@@DC1 EQUF EDIN+10,,SWL )@@G@@3 . DELETED THIS UPDATE @E@@@@DC EQUF EDIN+10,,S4 WM )@@G@@ . CYCLE DELETED @E@@@@AC1 EQUF EDIN+10,,S5 . ADWN )@@G@@DED THIS UPDATE @E@@@@AC EQUF EDIN+10,,S6 . ACTUAL CWO )@@G@@YCLE @A@@@@IL EQUF EDIN+10,,S2 @G@@@@CONCODE EQWP )@@G@@UF EDIN+10,,S1 . CONTROL CODE FOR LABEL IMAGES @]@@@@ . @/ WQ )@@G@@ @C@@@@$(0),DLIT LIT . SPECIAL LITERALS TO DBANK @E@@@@$(1) WR )@@G@@ LIT . LITERALS TO I-BANK@]@@@@ . @/ WS )@@G@@@I@@@@ICON + DBKEND-IBKEND,BASE*/6++UPDATE . VALIDITY CONSTWT )@@G@@ANT 817TM082 @I@@@@BEGIN* . I-BANK ENTRY POINT *****************WU )@@G@@*** 817TM083 @G@@@@ SX X11,SAVEX1WV )@@G@@1 . $P SAVE X11 FOR RETURN @I@@@@ J INITWW )@@G@@IAL . YES, GO INITIALIZE 817TM086 @I@@@@ WX )@@G@@ TYP E55,L55 . PRINT BANKS DON'T MATCH 817TM0WY )@@G@@87 @I@@@@ ER ERR$ . GO TO ERROR$ WZ )@@G@@ 817TM088 @E@@@@EDIT1 SZ INPUTF XA )@@G@@. EDIT MODE @E@@@@ TZ WMAIL . HAVE WE XB )@@G@@DONE A MAIL?@E@@@@ LMJ X10,MAILQ . LOOK AND SEE XC )@@G@@ @E@@@@ SZ WMAIL . WELL, WE TRIED XD )@@G@@@E@@@@ TZ BRIEF2 . BRIEF PRINT? @^@@@@XE )@@G@@ J NXRQ@A@@@@ TYP EDITS,1 @]@@@@XF )@@G@@NXRQ . @E@@@@ ON INSTAT . STATISTICS XG )@@G@@ @G@@@@ L,H1 A0,STATBUF+5 . INCR TRANSACTION COXH )@@G@@UNT @C@@@@ A,U A0,1 . @C@@@@XI )@@G@@ S,H1 A0,STATBUF+5 . @A@@@@ OFF XJ )@@G@@ INSTAT @C@@@@ ON TIMIT . XK )@@G@@@C@@@@ A$EDIT ETAB . @C@@@@ A$XL )@@G@@EMSG ('T=&MS&') . @C@@@@ ER TIME$ XM )@@G@@ . @C@@@@ AN A0,A15+1 . XN )@@G@@@C@@@@ A$EDECV . CONVERT TO DECIMAL @^@@@@ A$XO )@@G@@EMSGR . @^@@@@ A$EDITX . @C@@@@ TYP IMBUXP )@@G@@F,5 . @C@@@@ OFF TIMIT . XQ )@@G@@ @G@@@@ SZ BRKSET . CLEAR BREAK KEY INDXR )@@G@@ICATOR @G@@@@ SZ QUICKP . RESET QUICK IXS )@@G@@NDICATOR @G@@@@ SZ LNPRT . ZERO LIXT )@@G@@NE NUMBER PRINTING @G@@@@ TZ ONSITE . OXU )@@G@@NSITE PRINTOUT LAST REQUEST? @E@@@@ J ONSREC XV )@@G@@ . YES- FINISH IT @E@@@@ TZ LKMAIL . LOXW )@@G@@K FOR MAIL? @C@@@@ LMJ X10,MAILQ . YES XX )@@G@@@I@@@@ JGD R14,TIMNEX . DON'T TEST EXCEPT EVERY SOXY )@@G@@ MANY 817TM091 @I@@@@ L,U R14,5 . TRY 10 XZ )@@G@@ 817TM092 @I@@@@ L,U A0,DITBUF YA )@@G@@ . 817TM093 @I@@@@ L YB )@@G@@ A1,(1,026) . WORD 026 817TM094 YC )@@G@@@I@@@@ ER PCT$ . GET CURRENT ACCUMULATED TIYD )@@G@@ME 817TM095 @I@@@@ L A0,DITBUF . GET IT YE )@@G@@ 817TM096 @I@@@@ MSI,U A0,10 YF )@@G@@ . GET 10 9THS OF IT 817TM097 @I@@@@ DSYG )@@G@@A A0,36 . 817TM098 YH )@@G@@@I@@@@ DI,U A0,9 . DIVIDE YI )@@G@@ 817TM099 @I@@@@ TNG A0,MAXCP . STILL LEYJ )@@G@@SS THAN MAXCP 817TM100 @I@@@@ J TIMNEX YK )@@G@@ . TIME NOT EXCEEDED 817TM101 @I@@@@ L YL )@@G@@ A4,MAXCP . GET MAX TIME 817TM102 YM )@@G@@@I@@@@ AN A4,DITBUF . SUBTRACT CURRENT YN )@@G@@ 817TM103 @I@@@@ TYP E56,L56 . CPU TIMEYO )@@G@@ REMAINING: 817TM104 @I@@@@ J PRNTTIM YP )@@G@@ . GO PRINT WITH CPT COMMAND 817TM105 @I@@@@TIMNEX . YQ )@@G@@ 817TM106 YR )@@G@@@A@@@@ LMJ X10,TYPEIN @C@@@@ ON TIMIYS )@@G@@T . @C@@@@ ER TIME$ . YT )@@G@@ @E@@@@ S A0,A15+1 . SAVE IN A16 YU )@@G@@@C@@@@ OFF TIMIT . @I@@@@ SZYV )@@G@@ EDCT . EDCT=NUMBER OF CHARACTERS LOOKED AT YW )@@G@@@G@@@@ LMJ X10,GET . RETURNS COMMAND WORD IN AYX )@@G@@1 @E@@@@ TZ COUNT . NO COMMAND? YY )@@G@@@C@@@@ J COMFND . @E@@@@ TZYZ )@@G@@ EOFMOD . EOF MODE? @G@@@@ J ZA )@@G@@ COMERR . IF IN EOF MODE ILLEGAL COM @G@@@@ J ZB )@@G@@ INPUT2 . OTHERWISE CHANGE MODE TO INPUT @G@@@@COMFNDZC )@@G@@ L A0,EDIT80 . GET FIRST CHARACTER IN LINE @E@@@@ZD )@@G@@ TLE,U A0,'9'+1 . IS IT NUMERIC @C@@@@ ZE )@@G@@ TLE,U A0,'0' . @C@@@@ J $+2 ZF )@@G@@ . NOPE @E@@@@ J LINENUM . YZG )@@G@@ES, TREAT AS GO TO@E@@@@ L,Q1 A2,EDIT14 . GET FIRZH )@@G@@ST CHAR @G@@@@ TNE,U A2,'+' . SKIP N LINES ZI )@@G@@FORWARD @C@@@@ J GOPL . YES ZJ )@@G@@@E@@@@ TNE,U A2,'-' . SKIP N LINES BACK? @C@@@@ZK )@@G@@ J GOMIN . YES @G@@@@$(3),COMLST1 ZL )@@G@@ . 1 AND 2 LETTER COMMANDS @^@@@@ FIZM )@@G@@ELDATA . @C@@@@ + '@@L',LOC1 . LOCATE @E@@@@ZN )@@G@@ + '@@Q',QUICK1 . QUICK PRINT @C@@@@ ZO )@@G@@ + '@@P',PRINT1 . PRINT @C@@@@ + '@@FZP )@@G@@',FIND1 . FIND @E@@@@ + '@RP',RPSET . SZQ )@@G@@ET REPEAT @E@@@@ + '@LC',LC1 . LOCATE ZR )@@G@@AND COUNT @E@@@@ + '@LN',TLIN . LINE NUMBER ZS )@@G@@ @E@@@@ + '@FC',FC1 . FIND AND COUNT ZT )@@G@@@E@@@@ + '@UP',UPOPS . U OPTION SET @C@@@@ZU )@@G@@ + '@PL',PRLIM . PLIMIT @C@@@@ + ZV )@@G@@ '@ON',ON1 . ON @G@@@@ ON EDMODE ZW )@@G@@ . THESE COMMANDS FOR ED COMPAT @C@@@@ + '@@V',VER1ZX )@@G@@ . VERIFY @C@@@@ + '@BR',BRIEF1 . BRIEF ZY )@@G@@@C@@@@ + '@@T',TOP1 . TOP @C@@@@ + ZZ )@@G@@ '@@H',HEAD1 . HEAD @E@@@@ + '@@O',OUTPAA )@@G@@T1 . LIKE P+ IN EDIT @G@@@@ + '@GO',GT1 AB )@@G@@ . JUST THE NUM DOES THIS IN EDIT @E@@@@ + '@@N',NEX1AC )@@G@@ . LIKE + OR - NUM @C@@@@ OFF EDMODE AD )@@G@@ . @E@@@@ALTRS1 . THE COMMANDS WHICH ALTER THE FILE FOLLOW: AE )@@G@@ @C@@@@ ON EDMODE . @C@@@@ AF )@@G@@ + '@@B',APP1 . BOTTOM @C@@@@ OFF EDMOAG )@@G@@DE . @C@@@@ + '@@C',CHANG1 . CAH )@@G@@HANGE @C@@@@ + '@@D',DEL1 . DELETE @C@@@@ AI )@@G@@ + '@@I',INPUT1 . INSERT @E@@@@ + '@IBAJ )@@G@@',IBIN . INSERT BEFORE @C@@@@ + '@IN',INLIAK )@@G@@NE1 . INLINE @C@@@@ + '@@R',RETYP1 . RETYPE AL )@@G@@@C@@@@ + '@@A',APP1 . APPEND @C@@@@LST1LEN EQAM )@@G@@U $-COMLST1 . @G@@@@$(1) L,U R1,LST1LENAN )@@G@@ . GET COMMAND LIST LENGTH @E@@@@ L A2,(AO )@@G@@1,0) . GET INDEX @E@@@@ SE,H1 A1,COMLST1AP )@@G@@,*A2 . SEARCH PRINT @E@@@@ J NOFNDC AQ )@@G@@ . NO FIND @G@@@@ L,U A0,ALTRS1 . GEAR )@@G@@T ALTER COMMAND ADDR @G@@@@ TNG,U A0,COMLST1,A2 AS )@@G@@ . DOES IT ALTER THE FILE? @E@@@@ LMJ X11,ALTRSFAT )@@G@@ . YES-CHECK IT @E@@@@ L,H2 A2,COMLST1-1,A2 AU )@@G@@ . GET JUMP ADDRESS @E@@@@ J 0,A2 . GAV )@@G@@O TO IT @C@@@@$(3),COMLST2 . 3 OR MORE CHARS AW )@@G@@@C@@@@ + 'LOC',LOC1 . LOCATE @C@@@@ + AX )@@G@@ 'LNQ',LNQ1 . LNQUICK@E@@@@ + 'QUI',QUICAY )@@G@@K1 . QUICK PRINT @C@@@@ + 'PRI',PRINT1 AZ )@@G@@ . PRINT @C@@@@ + 'LNP',LNP1 . LNPRINT@C@@@@BA )@@G@@ + 'FIN',FIND1 . FIND @C@@@@ + BB )@@G@@ 'LAS',LAST1 . LAST @G@@@@ + 'EXI',FIEXIT BC )@@G@@ . EXIT - APPLY CORRECTION @G@@@@ + 'OMI',OENDBD )@@G@@ . OMIT-END NO CORRECTIONS @E@@@@ + 'TABBE )@@G@@',TAB1 . TAB CHAR @E@@@@ + 'SET',SET1BF )@@G@@ . SET TABS @G@@@@ + 'CLI',CLIMIT1 BG )@@G@@ . CLIMIT (FOR CHANGE COMMAND) @G@@@@ + 'PLI',PRLIBH )@@G@@M . PLIMIT (FOR PRINT COMMAND) @C@@@@ + 'CSFBI )@@G@@',CSFIT1 . CSF @C@@@@ + 'LCH',LCHAR1 . LBJ )@@G@@CHAR @C@@@@ + 'MSC',MSCHAR1 . MSCHAR @C@@@@ BK )@@G@@ + 'PUN',PUNCH1 . PUNCH @C@@@@ + 'AUTBL )@@G@@',AUTO1 . AUTO @C@@@@ + 'TYP',SETTP . TBM )@@G@@YPE @C@@@@ + 'TCH',SETTCF . TCHAR @C@@@@ BN )@@G@@ + 'SPL',SPLIT1 . SPLIT @C@@@@ + 'SITBO )@@G@@',SITE1 . SITE @C@@@@ + 'LNS',LNSITE1 . LBP )@@G@@NSITE @C@@@@ + 'CPU',CPUNCH . CPUNCH @E@@@@ BQ )@@G@@ + 'OPR',OPR1 . OPR MESSAGE @C@@@@ + BR )@@G@@ 'OFF',OFF1 . OFF @C@@@@ + 'TIM',TIMEBS )@@G@@1 . TIME @C@@@@ + 'CPT',CPT1 . CPT BT )@@G@@@C@@@@ + 'SCA',SCALE1 . SCALE @C@@@@ + BU )@@G@@ 'CCH',CCHAR1 . CCHAR @C@@@@ + 'EXC',EXC1BV )@@G@@ . EXCHAR @C@@@@ + 'MAI',MAIL1 . MAIL BW )@@G@@@C@@@@ + 'MAX',MAXLN1 . MAXLINE@C@@@@ + BX )@@G@@ 'STA',STATUS1 . STATUS @C@@@@ + 'CAS',CASEBY )@@G@@1 . CASE @E@@@@ DO DEBUG , + 'WZZ',WAIT1 BZ )@@G@@ . WAITE @A@@@@ DO DEBUG**DUMP , + 'DUM',DUMP1 . @C@@@@ DO DEBUG CA )@@G@@, + 'TRA',TRACE1 . @C@@@@ ON EDMODE CB )@@G@@ . @C@@@@ + 'VER',VER1 . VERIFY CC )@@G@@@C@@@@ + 'BRI',BRIEF1 . BRIEF @C@@@@ + CD )@@G@@ 'TOP',TOP1 . TOP @E@@@@ + 'END',OENDCE )@@G@@ . LIKE OMIT EXIT @C@@@@ + 'HEA',HEAD1 CF )@@G@@ . HEAD @C@@@@ + 'GOT',GT1 . GOTO @C@@@@CG )@@G@@ + 'NEX',NEX1 . NEXT @C@@@@ + CH )@@G@@ 'OUT',OUTPT1 . OUTPUT @C@@@@ + 'SAV',CLIMIT1 CI )@@G@@ . SAVE @C@@@@ OFF EDMODE . @E@@@@CJ )@@G@@ALTRS2 . THE FOLLOWING COMMANDS ALTER THE FILE: @A@@@@ CK )@@G@@ ON EDMODE @C@@@@ + 'BOT',APP1 CL )@@G@@ . BOTTOM @^@@@@ OFF EDMODE @I@@@@ + 'DOCCM )@@G@@',DOCUMENT1 . 817TM110 @C@@@@ CN )@@G@@ + 'CHA',CHANG1 . CHANGE @C@@@@ + 'DELCO )@@G@@',DEL1 . DELETE @C@@@@ + 'INS',INPUT1 . ICP )@@G@@NSERT @C@@@@ + 'INL',INLINE1 . INLINE @C@@@@ CQ )@@G@@ + 'RET',RETYP1 . RETYPE @C@@@@ + 'APPCR )@@G@@',APP1 . APPEND @E@@@@ + 'INP',INPUT2 . ICS )@@G@@NPUT MODE @C@@@@ + 'DIT',DITTO1 . DITTO CT )@@G@@@C@@@@ + 'SEQ',SEQ1 . SEQ.ID @C@@@@ + CU )@@G@@ 'ADD',ADD1 . ADD @C@@@@ + 'MOV',MOVECV )@@G@@F1 . MOVE @C@@@@LST2LEN EQU $-COMLST2 . CW )@@G@@@^@@@@ ASCII . @E@@@@$(1),NOFNDC L,U R1,LST2LEN CX )@@G@@ . GET LIST LENGTH @C@@@@ L,U A0,1 . CY )@@G@@ @E@@@@ CONVAF EDIT14,IMBUF . ASCII TO FD CZ )@@G@@@C@@@@ L A2,(1,0) . @G@@@@ L,DA )@@G@@H1 A3,IMBUF . GET FIRST THREE CHARS @E@@@@ DB )@@G@@ SE,H1 A3,COMLST2,*A2 . SEARCH PRINT @E@@@@ J DC )@@G@@ COMERR . NO FIND @G@@@@ L,U DD )@@G@@ A0,ALTRS2 . ADDRESS FOR ALTER COMMALDS @E@@@@ TNDE )@@G@@G,U A0,COMLST2,A2 . IS IT ONE OF THEM @E@@@@ LMJ DF )@@G@@ X11,ALTRSF . YES-GO CHECK @E@@@@ L,H2 A2,CDG )@@G@@OMLST2-1,A2 . GET ADDRESS @E@@@@ J 0,A2 DH )@@G@@ . JUMP TO IT @]@@@@COMERR . @A@@@@ TYP DI )@@G@@ E8,L8 @^@@@@ J NXRQ@E@@@@ALTRSF TOPTN DJ )@@G@@ 'R' . IS IT READ ONLY @E@@@@ J 0,X1DK )@@G@@1 . NOPE RETURN @E@@@@ TYP E41,L41 DL )@@G@@ . TELL HIM SO @G@@@@ J 0,X11 DM )@@G@@ . NOW RETURN AND DO IT ANYWAY @C@@@@ ON DEBUG DN )@@G@@ . @E@@@@WAIT1 LMJ X10,GET . GET NUMBDO )@@G@@ER @E@@@@ LMJ X10,BIN0 . CONVERT TO BINDP )@@G@@ARY @E@@@@ TG,U A10,30000 . GREATER THAN 30 SECSDQ )@@G@@@C@@@@ L,U A10,30000 . LOAD 30 @C@@@@ L DR )@@G@@ A1,A10 . @C@@@@ ER TWAIT$ DS )@@G@@ . @C@@@@ J NXRQ . DT )@@G@@@C@@@@ OFF DEBUG . @C@@@@ ONDU )@@G@@ DUMP . @E@@@@DUMP1 SLJ SITEDUMP DV )@@G@@ . DUMP D BANK @C@@@@ J NXRQ DW )@@G@@ . @C@@@@ OFF DUMP . @A@@@@DX )@@G@@ . @/ ID LINE PRINT ROUTINE. @^@@@@ FIELDATA . @E@@@@DY )@@G@@IDMSG E$DIT FTAB . START EDIT MODE @G@@@@ DZ )@@G@@ E$MSG LEVEL . START MESSAGE ED X.Y- @E@@@@EA )@@G@@ DO 1-EDMODE , E$FD1 ('IT@@@@') . CHANGE TO EDIT @I@@@@ EB )@@G@@ TNZ DIDRLS . DID WE HAVE TO DO AN RLIST$ ED0114EC )@@G@@20 @I@@@@ J IDREP . NO ED )@@G@@ ED011430 @I@@@@ E$CHAR 05 . INEE )@@G@@SERT A BLANK TO TELL HIM SO ED011440 @I@@@@IDREP E$MSGR EF )@@G@@ . REST OF MSG ED011460 @E@@@@TIMMSGEG )@@G@@ ER TDATE$ . GET DATE AND TIME. @E@@@@ S EH )@@G@@ A0,A4 . SAVE RESULT. @C@@@@ LMJ EI )@@G@@ X11,EDAY1$ . DATE @E@@@@ E$SKIP -3 EJ )@@G@@ . NO YEAR @E@@@@ E$CHAR '-' . EK )@@G@@INSERT DASH @C@@@@ E$TIME A4 . TIME EL )@@G@@@E@@@@ E$SKIP -3 . NO SECONDS @E@@@@EM )@@G@@ E$MSGR . ...-(... @E@@@@ EN )@@G@@ TOPTN 'I' . I OPTION? @E@@@@ J EO )@@G@@ OLDCYC . NO, PRINT OLD CYCLE@E@@@@ E$CHAR EP )@@G@@ ',' . NEW ONE- INSERT , @E@@@@OLDCYC E$DECV RC EQ )@@G@@ . REQUESTED CYCLE @E@@@@ TNOPTN 'I' ER )@@G@@ . I OPTION? @E@@@@ J FIDCYC ES )@@G@@ . YES, DONE @E@@@@ E$CHAR ',' . IET )@@G@@NSERT A , @E@@@@ TOPTN 'U' . U OPTIOEU )@@G@@N? @E@@@@ J FIDCYC . NO, NO NEW CYEV )@@G@@CLE @E@@@@ L A0,RC . PRESENT CYCLE EW )@@G@@@C@@@@ A,U A0,1 . +1= NEW@I@@@@ TNEX )@@G@@E,U A0,63 . CYCLE 63? ED011480 EY )@@G@@@I@@@@ L,S2 A0,INTBL+8 . GET CYCLE LIMIT EZ )@@G@@ ED011490 @E@@@@ E$DECV . CONVERT TO DECIMAL FIELDATFA )@@G@@A AND INSERT@C@@@@FIDCYC E$CHAR ')' . @C@@@@FB )@@G@@ LMJ X11,EDITX$ . TERM @^@@@@ ASCII FC )@@G@@ . @E@@@@ FTYPE FIMBUF,5 . PRINT ID LINE FD )@@G@@@C@@@@ J 0,X10 . RETURN @A@@@@ . LINE FE )@@G@@COUNT ROUTINE @E@@@@CLIN A$EDIT ETAB . STFF )@@G@@ART EDIT @C@@@@ LA A0,LCT . GET LINE COUNT FG )@@G@@@C@@@@ LMJ X11,AEDECV$ . CONVERT @C@@@@ A$FH )@@G@@ECHAR ':' . @C@@@@ LMJ X11,AEDITX$ .FI )@@G@@ TERM EDIT @E@@@@ TYP IMBUF,3 . LINE : FJ )@@G@@... @A@@@@ J 0,X10 . RETURN @C@@@@TLIN LMJ FK )@@G@@ X10,CLIN . GET CONV LCT @C@@@@ J NXRQ . FL )@@G@@ON TO NEXT @^@@@@ . STATUS OF MODES @I@@@@CHARST 'TAB:& CFM )@@G@@CHAR:& LCHAR:& MSCHAR:& CLIMIT:& AUTO:& MAXLINE:&' 817TM113 @E@@@@FN )@@G@@CHARST2 'TABS:& TCHAR:& EXCHAR:& PLIMITS:& CASE:&' @I@@@@GENNSTFO )@@G@@ 'STA QUICK BRIEF NUMBER PCNTRL DSPLIT ' 817TM1FP )@@G@@15 @I@@@@ 'XBRIEF SEQ LOOK EOF UNIMOD MEMORY ' FQ )@@G@@ 817TM116 @I@@@@LGENNST EQU $-GENNST . FR )@@G@@ 817TM117 @E@@@@STATUS1 SNZ STATFS )@@G@@US . SET STATUS @E@@@@ LMJ X10,GET FT )@@G@@ . GET FIRST THING @E@@@@ TNZ A1 FU )@@G@@ . ANY MODES SPEC? @C@@@@ J STCH . NOFV )@@G@@ @E@@@@ E$DIT FTAB . FOR MODES PRINTOUT FW )@@G@@@C@@@@ J TURN1+1 . @G@@@@STCH A$FX )@@G@@EDIT ETAB . FOR SPECIAL CHAR PRINT @I@@@@ FY )@@G@@ A$EMSG CHARST . START STATUS STUFF 817TMFZ )@@G@@121 @I@@@@ L A0,THETAB . GET THE TAB CHAR GA )@@G@@ 817TM122 @I@@@@ TNE,U A0,0777 . IFGB )@@G@@ 077 THEN 817TM123 @I@@@@ LMJ X11,GC )@@G@@NNO . ENNTER NNO 817TM124 @I@@@@ GD )@@G@@ A$ECHAR . ENTER CHAR 817TMGE )@@G@@125 @I@@@@ A$EMSGR . CONTINUE MSG GF )@@G@@ 817TM126 @I@@@@ L A0,CONTCHAR . COGG )@@G@@NTINUTATION CHAR 817TM127 @I@@@@ TNE,U A0,0GH )@@G@@777 . IF 077 THEN 817TM128 @I@@@@ GI )@@G@@ LMJ X11,NNO . ENNTER NNO 817TM1GJ )@@G@@29 @I@@@@ A$ECHAR . ENTER CHAR GK )@@G@@ 817TM130 @I@@@@ A$EMSGR . CONTINUE MSG GL )@@G@@ 817TM131 @I@@@@ L A0,LGM )@@G@@OCHR . LOCATE CHAR 817TM132 @I@@@@ GN )@@G@@ TNE,U A0,0777 . IF 077 THEN 817TM1GO )@@G@@33 @I@@@@ LMJ X11,NNO . ENNTER NNO GP )@@G@@ 817TM134 @I@@@@ A$ECHAR . ENTER CHAR GQ )@@G@@ 817TM135 @I@@@@ A$EMSGR . CGR )@@G@@ONTINUE MSG 817TM136 @I@@@@ GS )@@G@@ L A0,MSPCHR . MASTER SPACE CHAR 817TM1GT )@@G@@37 @I@@@@ TNE,U A0,0777 . IF 077 THEN GU )@@G@@ 817TM138 @I@@@@ LMJ X11,NNO . ENGV )@@G@@NTER NNO 817TM139 @I@@@@ A$ECHAR . EGW )@@G@@NTER CHAR 817TM140 @I@@@@ GX )@@G@@ A$EMSGR . CONTINUE MSG 817TMGY )@@G@@141 @I@@@@ L A0,SAVE2 . CHANGE LIMIT GZ )@@G@@ 817TM142 @I@@@@ A$EDECV . TO DECIMAL HA )@@G@@ 817TM143 @I@@@@ A$EMSGR . CHB )@@G@@ONTINUE MSG 817TM144 @I@@@@ HC )@@G@@ L A0,AUTOTST . AUTO 817TM1HD )@@G@@45 @I@@@@ A$EDECV . TO DECIMAL HE )@@G@@ 817TM146 @I@@@@ A$EMSGR . MAXLINE- HF )@@G@@ 817TM147 @I@@@@ L A0,SHG )@@G@@AVECL . MAXLINE 817TM148 @I@@@@ HH )@@G@@ A$EDECV . 817TMHI )@@G@@149 @I@@@@ A$EDITX . HJ )@@G@@ 817TM150 @C@@@@ TYP IMBUF,33 . HK )@@G@@ @I@@@@ A$EDIT ETAB . START ANOTHER EDIT HL )@@G@@ 817TM152 @I@@@@ A$EMSG CHARST2 . THM )@@G@@ABS: 817TM153 @I@@@@ L,U X5,0HN )@@G@@ . 0 TO X5 817TM154 @I@@@@ HO )@@G@@ SZ R5 . ZERO R5 817TM1HP )@@G@@55 @I@@@@GNXTBX L X5,TAB80,X5 HQ )@@G@@ 817TM156 @I@@@@ L,U A0,1 . +1HR )@@G@@ 817TM157 @I@@@@ A A0,XHS )@@G@@5 . TAB 817TM158 @I@@@@ HT )@@G@@ TZ TAB80,X5 . ZERO TAB 817TM1HU )@@G@@59 @I@@@@ TG,U A0,134 . OR GREATER THAN 132 HV )@@G@@ 817TM160 @I@@@@ L,U R5,-1 . SHW )@@G@@ET R5 TO -1 817TM161 @I@@@@ L A6,AHX )@@G@@0 . SAVE TAB 817TM162 @I@@@@ HY )@@G@@ TNZ R5 . FIRST TIME? 817TM1HZ )@@G@@63 @I@@@@ J F1STTM . YES IA )@@G@@ 817TM164 @I@@@@ A$ECHAR ',' . IIB )@@G@@NSERT , 817TM165 @I@@@@ J $+2 IC )@@G@@ . SKIP THE NEXT INST 817TM166 @I@@@@F1STTMID )@@G@@ L,U R5,1 . SET TO 1 817TM1IE )@@G@@67 @I@@@@ A$EDECV A6 . TO DECIMAL FIELDATA IF )@@G@@ 817TM168 @I@@@@ L A0,R5 . GEIG )@@G@@T IND 817TM169 @I@@@@ JB A0,GIH )@@G@@NXTBX . GET NEXT TAB 817TM170 @I@@@@LSTTABII )@@G@@X A$EMSGR . TRANS CHAR 817TMIJ )@@G@@171 @I@@@@ L A0,TRCHF . GET RANSPARENT CHAR IK )@@G@@ 817TM172 @I@@@@ TNE,U A0,0777 . TUIL )@@G@@RNED OFF? 817TM173 @I@@@@ LMJ X11,IM )@@G@@NNO . PRINT NONE 817TM174 @I@@@@ IN )@@G@@ A$ECHAR . INSERT THE CHAR 817TMIO )@@G@@175 @I@@@@ A$EMSGR . EXC CHAR IP )@@G@@ 817TM176 @I@@@@ L A0,CHGCHR . IQ )@@G@@ 817TM177 @I@@@@ L A6,AIR )@@G@@0 . SAVE IN A6 817TM178 @I@@@@ IS )@@G@@ TNE,U A0,0777 . IF 077 THEN 817TM1IT )@@G@@79 @I@@@@ LMJ X11,NNO . INSERT NONE IU )@@G@@ 817TM180 @I@@@@ A$ECHAR . IV )@@G@@ 817TM181 @I@@@@ TNE,U A6,0IW )@@G@@777 . IF 077 THEN 817TM182 @I@@@@ IX )@@G@@ J PNONE . PRINT NONE 817TM1IY )@@G@@83 @C@@@@ A$ECHAR '=' . INSERT =@I@@@@ IZ )@@G@@ A$EOCTV NCHGCHR . IS REALLY THIS CHAR 817TMJA )@@G@@185 @I@@@@ A$ECHAR '(' . CHAR IN PAREN JB )@@G@@ 817TM186 @I@@@@ L A0,NCHGCHR . GEJC )@@G@@T NEW CHAR 817TM187 @I@@@@ A$ECHAR JD )@@G@@ . IN ALPHA 817TM188 @I@@@@ JE )@@G@@ A$ECHAR ')' . CHAR IN PAREN 817TMJF )@@G@@189 @I@@@@PNONE . JG )@@G@@ 817TM190 @A@@@@ A$EMSGR . PLIMITS @E@@@@JH )@@G@@ A$EDECV CPTL1 . FIRST COL LIM @G@@@@ JI )@@G@@ A$ECHAR ',' . SEPARATE PLIMITS WITH COMMA @E@@@@JJ )@@G@@ A$EDECV CPTL2 . SECOND COL LIM @A@@@@ JK )@@G@@ A$EMSGR . CASE @E@@@@ TNZ CASEUP JL )@@G@@ . UPPER CASE FLAG SET?@E@@@@ J NORM . NOJM )@@G@@, NORMAL CASE @E@@@@ A$EFD2 ('UPPER ') . INSERT 'JN )@@G@@UPPER' @C@@@@ J $+3 . @E@@@@JO )@@G@@NORM A$EFD2 ('NORMAL ') . INSERT 'NORMAL' @I@@@@ JP )@@G@@ A$EDITX 817TMJQ )@@G@@191 @E@@@@ TYP IMBUF,33 . TYPE IT OUT JR )@@G@@@I@@@@ L A0,(1,ILSTCD) . LAST CARD IMAGE JS )@@G@@ 817TM193 @I@@@@ L A1,(1,GENNST) . STATUS CJT )@@G@@OMMAND 817TM194 @I@@@@ L,U R1,LGENNSTJU )@@G@@ . LENNGTH 817TM195 @I@@@@ BTJV )@@G@@ A0,,*A1 . TRANSFER 817TM196 JW )@@G@@@E@@@@ L,U A0,LGENNST . 4 WORD IMAGE @C@@@@JX )@@G@@ S A0,LLSTCD . @E@@@@ SNZ JY )@@G@@ RLSTCD . SET INDICATOR @E@@@@ J NXRQJZ )@@G@@ . GO READ IT @I@@@@NNO L A0,('NONE'KA )@@G@@) . NONE 817TM200 @I@@@@ A,KB )@@G@@U X11,1 . SKIP PAST RETURN 817TM201 KC )@@G@@@I@@@@ J AEFD1$ . INSERT IT KD )@@G@@ 817TM202 @A@@@@ . TURNS MODES ON AND OFF @E@@@@ON1 KE )@@G@@ L A8,R10 . TURN FLAG ON @C@@@@ J KF )@@G@@ TURN0 . @E@@@@OFF1 SZ A8 KG )@@G@@ . TURNN FLAG OFF @C@@@@TURN0 SZ STATUS KH )@@G@@ . @E@@@@TURN1 LMJ X10,GET . GET NEXT WORDKI )@@G@@ @C@@@@ S A1,A6 . SAVE @E@@@@TURN2 KJ )@@G@@ AND A1,(0777777777700) . ISOLATE 1ST CHAR@E@@@@ JZKK )@@G@@ A2,TURN3 . NONE IN UPPER @E@@@@ SSL KL )@@G@@ A1,6 . SHIFT OFF CHAR @E@@@@ J TURKM )@@G@@N2 . LOOK AGAIN @E@@@@TURN3 L,U R1,TURNTLKN )@@G@@ . TABLE LENGTH @C@@@@ L X6,(1,0) KO )@@G@@ . PTR @E@@@@ SE,S1 A1,TURNT,*X6 . LOOK FOR KEY KP )@@G@@WORD @C@@@@ J TURNER . NO FIND@G@@@@ KQ )@@G@@ AN,U X6,1 . DECR TO CORRECT ADDRESS @E@@@@KR )@@G@@ TZ STATUS . STAUS COMMAND? @C@@@@ KS )@@G@@ J STATPR . YES @G@@@@ S,S6 A8,TKT )@@G@@URNT,X6 . SET FLAG APPROPRIATELY @E@@@@TURN4 LMJ KU )@@G@@ X10,GET . ANY MORE MODES? @E@@@@ TNZ STATKV )@@G@@US . STATUS COMMAND? @C@@@@ J TURN5 KW )@@G@@ . NO @G@@@@ DL A2,IMBUF . RESTORE KX )@@G@@FIRST 3 WORDS OF FIMBUF @C@@@@ DS A2,FIMBUF . KY )@@G@@ @C@@@@ L A2,IMBUF+2 . @C@@@@ KZ )@@G@@ S A2,FIMBUF+2 . @E@@@@TURN5 S A1,ALA )@@G@@6 . SAVE MODE WORD @G@@@@ JZ A1,TURDUNLB )@@G@@ . IGNORE ANYTHING ELSE @E@@@@ J TURNLC )@@G@@2 . INSPECT IT @E@@@@TURNER TYP E47,L47 LD )@@G@@ . INCORRECT MODE NAME@C@@@@ J RECTST LE )@@G@@ . @I@@@@STATPR . LF )@@G@@ 817TM206 @E@@@@ E$FD1 A6 LG )@@G@@ . MODE NAME @C@@@@ E$SKIP 1 . SKLH )@@G@@IP 1 @C@@@@ TNZ,S6 TURNT,X6 . SET? @C@@@@ LI )@@G@@ J STOFF . OFF @^@@@@ FIELDATA . LJ )@@G@@@C@@@@ E$MSG ('ON&&&&') . ON @C@@@@ J LK )@@G@@ STON . @C@@@@STOFF E$MSG ('OFF&&&')LL )@@G@@ . OFF @^@@@@ ASCII . @I@@@@STON E$SKIP LM )@@G@@ 2 . SKIP TWO SPACES 817TM208 @G@@@@LN )@@G@@ DL A0,FIMBUF . SAVE FIRST 3 WORDS OF FIMBUF LO )@@G@@@C@@@@ DS A0,IMBUF . @C@@@@ L LP )@@G@@ A0,FIMBUF+2 . @C@@@@ S A0,IMBUF+2LQ )@@G@@ . @E@@@@ J TURN4 . ANY MORELR )@@G@@? @I@@@@TURDUN TNZ STATUS . STATUS COMMANDLS )@@G@@? 817TM210 @I@@@@ J NXRQ LT )@@G@@ . EXIT 817TM211 @I@@@@ E$DITX LU )@@G@@ . EXIT EDIT MODE 817TM212 @E@@@@LV )@@G@@ FTYPE FIMBUF,22 . TYPE OUT LINE @I@@@@ LW )@@G@@ J NXRQ . EXIT 817TM2LX )@@G@@14 @^@@@@$(0) . MODE TABLE @C@@@@F630 FORM 6,30 LY )@@G@@ . @]@@@@TURNT .@^@@@@ FIELDATA . @E@@@@LZ )@@G@@QUICKON EQUF $,,S6 . QUICK PRINT MODE @C@@@@ MA )@@G@@ F630 'Q',0 . @E@@@@BRIEF2 EQUF $,,MB )@@G@@S6 . BRIEF MODE @C@@@@ F630 'B',REGBRMC )@@G@@IEF . @G@@@@ALLLN EQUF $,,S6 . PRINT LMD )@@G@@INE NUMBERS MODE @I@@@@ F630 'N',LNLINES . NUMME )@@G@@BER ED011510 @G@@@@RECPCNT EQUF $,,MF )@@G@@S6 . RECOGNIZE PRINT CONTROL IMAGES @C@@@@ F630 MG )@@G@@ 'P',0 . PCNTRL @G@@@@SPLITDEL EQUF $,,S6 MH )@@G@@ . DELETE LINES WHEN SPLITTING @C@@@@ F630 'D',SPLITMI )@@G@@DLI . DSPLIT @G@@@@BRIEF3 EQUF $,,S6 . BRIEF FOMJ )@@G@@R SPLIT AND ADD @C@@@@ F630 'X',SUPBRIEF . XBRIMK )@@G@@EF @C@@@@TYPESEQ EQUF $,,S6 . SEQ @I@@@@ ML )@@G@@ F630 'S',SEQSOU . ED0115MM )@@G@@30 @E@@@@LKMAIL EQUF $,,S6 . LOOK FOR MAIL MN )@@G@@@C@@@@ F630 'L',0 . @E@@@@MEMORY EMO )@@G@@QUF $,,S6 . REMEMBER MODES? @C@@@@ F630 MP )@@G@@ 'M',MEMSTD . MEMORY @E@@@@EOFMOD EQUF $,,S6 MQ )@@G@@ . EOF MODE FLAG @C@@@@ F630 'E',EOFMODE . MR )@@G@@ @E@@@@UNIMOD EQUF $,,S6 . UNISCOPE MODE MS )@@G@@@E@@@@ F630 'U',1 . NORMALLY ON FOR RSI @C@@@@MT )@@G@@TURNTL EQU $-TURNT . @^@@@@ ASCII MU )@@G@@ . @^@@@@$(1) . RETURN TO I-BANK @^@@@@ . CSF$ THE IMAGE @E@@@@MV )@@G@@CSFIT1 L A0,EDIL . IMAGE LENGTH @E@@@@ MW )@@G@@ AN,U A0,1 . MINUS ONE WORD @E@@@@ COMX )@@G@@NVAF EDIT14+1,EDIT14 . CONVERT ASCII TO FD @E@@@@ L MY )@@G@@ A3,EDIL . EDIL*2/3 => EDIL @C@@@@ LSSL A3,1MZ )@@G@@ . @C@@@@ DSF,U A3,3 . NA )@@G@@ @C@@@@ S A4,EDIL . @C@@@@ NB )@@G@@ L,U A0,EDIT14 . @E@@@@ LXI A0,ENC )@@G@@DIL . SET UP CSF$ CALL @C@@@@ ER CSF$ ND )@@G@@ . CSF IT @C@@@@CSFRET S A0,EDIT14 . SAVE AO NE )@@G@@@C@@@@ A$EDIT ETAB . SAVE AO@C@@@@ A$NF )@@G@@EMSG E3S . STATUS:@E@@@@ A$EOCTV EDIT14 NG )@@G@@ . VALUE OF A0 @^@@@@ A$EDITX . @C@@@@ NH )@@G@@ TYP IMBUF,6 . @C@@@@ J NXRQNI )@@G@@ . @^@@@@ . SET LOCATE CHARACTER @E@@@@LCHAR1 LMNJ )@@G@@J X10,GET3 . GET CHAR @E@@@@ LMJ NK )@@G@@ X11,FIXCHR . SEE IF @ OR BLANK @C@@@@ S A1,LNL )@@G@@OCHR . @C@@@@ J NXRQ . NM )@@G@@ @A@@@@FIXCHR . FIX CHAR TO @ OR BLANK @E@@@@ TZ NN )@@G@@ A1 . FIND ANY CHARS @E@@@@ J 0,X1NO )@@G@@1 . YES -NOTHING TO DO @I@@@@ L,U A1,0777 NP )@@G@@ . LOAD ILLEGAL CHAR OR END INDICATOR @G@@@@ TNNQ )@@G@@E A1,DELIM . IS THE DELIMITER 0777 @G@@@@ NR )@@G@@ J 0,X11 . YES-LEAVE ILLEGAL CHAR @E@@@@NS )@@G@@ SZ A1 . CLEAR A1 TO @ @C@@@@ NT )@@G@@ J 0,X11 . RETURN @C@@@@ . SET MASTERSPACE IN CONU )@@G@@LUMN 1 CHARACTER @E@@@@MSCHAR1 LMJ X10,GET3 . NV )@@G@@GET CHAR @E@@@@ TNZ A1 . NO CHARNW )@@G@@? @I@@@@ L,U A1,0777 . USE NONEXISTANX )@@G@@NT CODE ED011570 @C@@@@ S A1,MSPCHR NY )@@G@@ . @C@@@@ J NXRQ . @E@@@@NZ )@@G@@EXC1 LMJ X10,GET3 . GET FIRST ITEM @I@@@@ OA )@@G@@ TNE A1,NCHGCHR . IS IT THE PRESENT NEW CHANGE CHAR OB )@@G@@ @G@@@@ L A1,CHGCHR . MUST HAVE MEANT REDEOC )@@G@@FINITION @E@@@@ LMJ X11,FIXCHR . SEE IF @ OR BLOD )@@G@@ANK @G@@@@ S A1,CHGCHR . THIS IS CHAR TO LOOKOE )@@G@@ FOR @E@@@@ LMJ X10,GET . GET NEXT FIELDOF )@@G@@ @C@@@@ TNZ A1 . @I@@@@ OG )@@G@@ L,U A1,0676767 . NONEXISTANT CODE AGAIN ED0116OH )@@G@@10 @I@@@@ AND,U A1,070707 . QUICK AND DIRTY FD TOI )@@G@@O OCTAL ED011630 @C@@@@ DSL A2,3 . OJ )@@G@@ @C@@@@ SSL A2,3 . @C@@@@ OK )@@G@@ DSL A2,3 . @C@@@@ SSL A2,3OL )@@G@@ . @C@@@@ LDSL A2,6 . OM )@@G@@ @C@@@@ S A2,NCHGCHR . VOILA! @C@@@@ ON )@@G@@ J NXRQ . @C@@@@ . CASE COMMAND: SET OR OO )@@G@@CLEAR FLAG (CASEUP) @E@@@@CASE1 . SET LOWER-TO-UPPER-CASE ASCII OP )@@G@@CONVERSION FLAG, @E@@@@ . OR RESET NORMAL CASE FLAG (NO CONVEROQ )@@G@@SION) @E@@@@ LMJ X10,GET . GET UPPER OR NOR )@@G@@ORMAL @C@@@@ TNE,U A1,032 . FD 'U'? @C@@@@ OS )@@G@@ J UPCASE . YES @E@@@@ TNE A1,UOT )@@G@@PPER . FD 'UPPER'? @C@@@@ J UPCASE OU )@@G@@ . YES @C@@@@ TNE,U A1,023 . FD 'N'? OV )@@G@@@C@@@@ J NORCASE . YES @E@@@@ TNOW )@@G@@E A1,NORMAL . FD 'NORMAL'? @C@@@@ J OX )@@G@@ NORCASE . YES @E@@@@ TYP E4,L4 OY )@@G@@ . TYPE ERROR MESSAGE @C@@@@ J NXRQ . COOZ )@@G@@NTINUE@E@@@@UPCASE SNZ CASEUP . SET UPPER CASE FLAG PA )@@G@@@C@@@@ J NXRQ . CONTINUE@G@@@@NORCASE SZPB )@@G@@ CASEUP . CLEAR UPPER CASE FLAG @C@@@@ PC )@@G@@ J NXRQ . CONTINUE@^@@@@ . TRACE WITH SNOOPY PD )@@G@@@C@@@@ ON DEBUG . @G@@@@TRACE1 L PE )@@G@@ A0,TRACE . INVERT RECOGNIZE TRACE FLAG @C@@@@ PF )@@G@@ SZ TRACE . @C@@@@ JNZ A0,NPG )@@G@@XRQ . @C@@@@ SNZ TRACE . PH )@@G@@ @C@@@@ J NXRQ . @C@@@@ PI )@@G@@ OFF DEBUG . @A@@@@ . THIS ROUTINE SENDS MAPJ )@@G@@IL @^@@@@ FIELDATA . @E@@@@USEMF '@USE MF$$,&PK )@@G@@*ED$M&' . EDIT*USERID @^@@@@ ASCII . @E@@@@PL )@@G@@MAIL1 SZ A5 . ZERO COUNT @E@@@@ PM )@@G@@ LMJ X10,GET . GET USERID @C@@@@ L PN )@@G@@ R5,A1 . SAVE IT @C@@@@TRYSM E$DIT FTAB PO )@@G@@ . @G@@@@ L A0,(2,FREMF) . FREE ANYPP )@@G@@ SCRAP LEFT AROUND @C@@@@ ER CSF$ . PQ )@@G@@ @E@@@@ E$MSG USEMF . @USE MF$$,EDIT*... PR )@@G@@@C@@@@ E$FD1 R5 . @C@@@@ E$PS )@@G@@MSGR . @C@@@@ E$DECV A5 PT )@@G@@ . COUNT @C@@@@ E$DITX . PU )@@G@@@C@@@@ L A0,(4,FIMBUF) . @E@@@@ ERPV )@@G@@ CSF$ . APPLY USE @E@@@@ L PW )@@G@@ A0,(4,ASGCMF) . ASG FILE @^@@@@ ER CSF$PX )@@G@@@E@@@@ JP A0,OKSML . IF ZERO OK @E@@@@PY )@@G@@ TG,U A5,10 . 10 MESSAGE MAX @C@@@@ PZ )@@G@@ J CANTML . @E@@@@ A,U A5,1QA )@@G@@ . TRY ANOTHER NUMBER @C@@@@ J TRYSM QB )@@G@@ . @E@@@@OKSML L,U R2,9 . MAX 10 QC )@@G@@LINES @E@@@@PMAIL L,U A0,TREADNM . TYPE 'MAIL**'QD )@@G@@ @C@@@@ ER ATREAD$ . + READ@E@@@@ QE )@@G@@ S,S3 A0,PRNTML . WORD COUNT @C@@@@ L QF )@@G@@ A2,A0 . @C@@@@ TOPTN 'L' QG )@@G@@ . L OPTION @E@@@@ J NOECOM . NO-DON'TQH )@@G@@ ECHO @E@@@@ LSSL A2,18 . GET READY TO EQI )@@G@@CHO @E@@@@ A A2,(0101,EDIT14-1) . ADD IN ADDRESS QJ )@@G@@@C@@@@ L A0,A2 . @E@@@@ ERQK )@@G@@ APRINT$ . PRINT IF IT IS @C@@@@NOECOM L,U QL )@@G@@ A0,PRNTML . @G@@@@ ER APRNTA$ QM )@@G@@ . PRINT TO EDIT*USERID @C@@@@ JGD R2,PMAIL QN )@@G@@ . @^@@@@ FIELDATA . @G@@@@ENDPM L QO )@@G@@ A0,('FROM: ') . INDICATE WHO ITS FROM @^@@@@ ASQP )@@G@@CII . @C@@@@ L A1,USERID . USERID @C@@@@QQ )@@G@@ DS A0,EDIT14 . @G@@@@ ER QR )@@G@@ DATE$ . GET TIME AND DAY IN FIELDATA @E@@@@ L QS )@@G@@ A2,BLANKS . GET BLANKS @C@@@@ S QT )@@G@@ A2,EDIT14+2 . BLANKS @C@@@@ S A0,EDIT14+3 QU )@@G@@ . DATE @C@@@@ S A2,EDIT14+4 . BLANKS @C@@@@QV )@@G@@ S A1,EDIT14+5 . TIME @C@@@@ L,U QW )@@G@@ A0,6 . 6 WORDS @C@@@@ S,S3 A0,PRNTML QX )@@G@@ . @C@@@@ L,U A0,PRNTML . @C@@@@QY )@@G@@ ER PRNTA$ . @G@@@@ L QZ )@@G@@ A0,(2,BRKMF) . BREAKPOINT EDIT*USERID @^@@@@ ERRA )@@G@@ CSF$@C@@@@ L A0,(2,FREMF) . FREE IT@^@@@@RB )@@G@@ ER CSF$@E@@@@ TNZ GOEXIT . GORC )@@G@@ TO EXIT? @^@@@@ J NXRQ@E@@@@ J RD )@@G@@ FIEXIT . IT'S ALL OVER BABY @E@@@@CANTML TYP E50,RE )@@G@@L50 . TYPE MAIL FILE FULL @^@@@@ J NXRQ@E@@@@RF )@@G@@MAIEOF JP A0,ENDPM . WAS IT AN @EOF @E@@@@ RG )@@G@@ SNZ GOEXIT . NO, LEAVE WHEN DONE @C@@@@ J RH )@@G@@ ENDPM . @C@@@@ . THIS ROUTINE DOES THE LOOKIRI )@@G@@NG FOR MAIL @C@@@@MAILQ SZ A5 . RJ )@@G@@@G@@@@ L A0,(2,FREMF) . FREE ANY SCRAP LEFT AROUNDRK )@@G@@ @C@@@@ ER CSF$ . @E@@@@RCMML RL )@@G@@ E$DIT FTAB . APPLY USE @A@@@@ E$RM )@@G@@MSG USEMF @E@@@@ E$FD1 USERID . ERN )@@G@@DIT*USERID @C@@@@ E$MSGR . RO )@@G@@@C@@@@ E$DECV A5 . @^@@@@ E$RP )@@G@@DITX @A@@@@ L A0,(4,FIMBUF) @^@@@@ ERRQ )@@G@@ CSF$@^@@@@ FIELDATA . @E@@@@ TNOASG 'MF$RR )@@G@@$ ' . ASSIGNED @^@@@@ ASCII . @E@@@@RS )@@G@@ J FNDML . YES-THERES MAIL @E@@@@ RT )@@G@@ L A0,(2,ASGAMF) . TRY TO ASSIGN IT @C@@@@ ERRU )@@G@@ CSF$ . @E@@@@ JN A0,0,X10 RV )@@G@@ . NO FILE,NO MAIL @G@@@@FNDML L,U A0,TREADML RW )@@G@@ . ASK IF HE WANTS MAIL @E@@@@ JNZ A5,NEMOR RX )@@G@@ . DON'T ASK AFTER FIRST@C@@@@ TNZ DEMAND . RY )@@G@@DEMAND? @G@@@@ J NEMOR . NAW JUST GIVE RZ )@@G@@IT TO HIM @C@@@@ ER ATREAD$ . SA )@@G@@@I@@@@ LXI,U A0,0 . CLEAR OUT UPPER A0 SB )@@G@@ 817TM221 @E@@@@ JZ A0,0,X10 . CR-IGNOSC )@@G@@RE @E@@@@ L,Q1 A1,EDIT14 . GET FIRST CHASD )@@G@@R @E@@@@ TNE,U A1,0131 . UPPER CASE 'Y'? SE )@@G@@@C@@@@ J NEMOR . YES @E@@@@ TESF )@@G@@,U A1,0171 . LOWER CASE 'Y'? @C@@@@ J SG )@@G@@ SAVINGQ . NO @E@@@@NEMOR L,U R2,10 SH )@@G@@ . MAX 11 LINES @E@@@@RENXTM L,U A0,REDMF . RSI )@@G@@EAD FROM MAIL FILE@A@@@@ ER AREADA$ @E@@@@ SJ )@@G@@ LSSL A0,18 . WORD COUNT @G@@@@ A SK )@@G@@ A0,(0100,EDIT14) . 1 SPACE FROM EDIT 14 @E@@@@ SL )@@G@@ ER APRINT$ . PRINT IT @E@@@@ TNSM )@@G@@Z BRKSET . WAS BREAK KEY HIT? @C@@@@ JGD SN )@@G@@ R2,RENXTM . LOOP @E@@@@ENDMF L A0,(2,BRKMF) SO )@@G@@ . BREAKPOINT FILE @C@@@@ ER CSF$ . SP )@@G@@ @E@@@@ L A0,(2,FREDMF) . DELETE FILE SQ )@@G@@@C@@@@ ER CSF$ . @C@@@@ A,SR )@@G@@U A5,1 . @E@@@@ J RCMML SS )@@G@@ . LOOK FOR ANOTHER @E@@@@SAVINGQ S A0,LLSTCD ST )@@G@@ . SAVE WORD COUNT @E@@@@SCLOOP JGD A0,MVE14 . MOVSU )@@G@@E FROM E14 @C@@@@ SNZ RLSTCD . SET FLAGSV )@@G@@@C@@@@ J 0,X10 . RETURN @C@@@@MVE14 L SW )@@G@@ A1,EDIT14,A0 . GET WORD@E@@@@ S A1,ILSTCD,SX )@@G@@A0 . STORE IT @C@@@@ J SCLOOP SY )@@G@@ . @C@@@@. ROUTINE TO SET REPEAT COUNTER FOR I COMMAND @]@@@@SZ )@@G@@. @C@@@@RPSET LMJ X10,GET . GET COUNT @A@@@@TA )@@G@@ LMJ X10,BIN . CONVERT@A@@@@ S A10,RPTK . STB )@@G@@ET IT.@C@@@@ J NXRQ . TO NEXT COMMAND @C@@@@. ROUTTC )@@G@@INE TO SET TYPE - ELT, ASM, ETC. @]@@@@. @]@@@@SETTP TD )@@G@@ . @E@@@@ LMJ X10,GET . GET NEXT FIELD TE )@@G@@@E@@@@ L A2,(1,0) . LOAD POINTER @E@@@@TF )@@G@@ TNE A1,ELT,*A2 . COMP WITH TABLE. @C@@@@ TG )@@G@@ J SETTP2 . FIND @E@@@@ TLE A2,(TH )@@G@@1,ELTLEN) . END OF TABLE? @C@@@@ J $-3 TI )@@G@@ . NEXT ENTRY @E@@@@ AND,U A1,07070 . GET FIELTJ )@@G@@D BITS @G@@@@ TE,U A2,06060 . 06X6X OR 06X ATK )@@G@@CCEPTABLE @G@@@@ TNE,U A2,060 . 06X6X ORTL )@@G@@ 06X ACCEPTABLE @C@@@@ J OCTYP . OKTM )@@G@@ @E@@@@ TYP E20,L20 . NO FIND ON TYPE TN )@@G@@@C@@@@ J NXRQ . @G@@@@OCTYP ANTO )@@G@@D,U A1,0707 . GET SIGNIFICANCE BITS @E@@@@ TP )@@G@@ DSL A2,3 . SAVE LOWER @E@@@@ SSTQ )@@G@@L A2,3 . SHIFT OFF ZERO @E@@@@ LDSL TR )@@G@@ A2,3 . BRING EM TOGETHER @E@@@@SETTP2 S,S1 A2,OUTBL+TS )@@G@@9 . SUB FIELD FOR SYMB. @G@@@@ S,S1 A2,INTBL+9TT )@@G@@ . PUT IN INPUT TABLE ALSO @C@@@@ J NXRQ TU )@@G@@ . GO ON. @]@@@@. @E@@@@. ROUTINE TO SET PRINT LTV )@@G@@IMIT. THE FIRST N COLUMNS WILL BE @G@@@@. PRINTED IF THE COMMAND PL N TW )@@G@@IS USED. PL 0 RESETS TO FULL LINE. @^@@@@. MAX N IS 132. TX )@@G@@@E@@@@. IF PL N1 N2 IS USED, COLUMNS N1 THRU N2 WILL BE PRINTED. @]@@@@TY )@@G@@. @C@@@@PRLIM LMJ X10,GET . GET COUNT. @C@@@@TZ )@@G@@ LMJ X10,BIN0 . CONVERT IT.@G@@@@ LUF UA )@@G@@ A0,A10 . GET COUNT + ADJUST FOR DIVIDE @C@@@@ TNZ UB )@@G@@ A1 . IS IT 0? @E@@@@ J COLERR+2 UC )@@G@@ . SET STANDARD LIMITS @C@@@@ DI,U A0,4 .UD )@@G@@ GET WORDS @E@@@@ TZ A1 . TEST FOR REMAUE )@@G@@INDER @C@@@@ A,U A0,1 . ROUND UP. @E@@@@ UF )@@G@@ TG,U A0,33 . IS A0 TOO BIG? @G@@@@ L,U UG )@@G@@ A0,PLIMSTD . RESET TO STANDARD (VARIABLE). @E@@@@ UH )@@G@@ S A0,PTL1 . SET FIRST LIMIT @G@@@@ TGUI )@@G@@,U A10,132 . GREATER THAN MAX 132? @E@@@@ UJ )@@G@@ L,U A10,132 . YES, LOAD MAX @E@@@@ S UK )@@G@@ A10,CPTL1 . STORE COL LIM 1 @E@@@@ LMJ UL )@@G@@ X10,GET . GET SECOND LIMIT @E@@@@ TZ A1 UM )@@G@@ . WAS THERE ONE? @C@@@@ J LIM2 UN )@@G@@ . YES @E@@@@ L A0,PTL1 . NO, LOADUO )@@G@@ THE LIMIT @G@@@@ S A0,PTL2 . STORE AS THE SUP )@@G@@ECOND LIMIT @E@@@@ SNZ PTL1 . STANDARDUQ )@@G@@ FIRST LIMIT@E@@@@ L A0,CPTL1 . LOAD THE COL LUR )@@G@@IM @G@@@@ S A0,CPTL2 . STORE AS THE SECOND US )@@G@@COL LIM @G@@@@ SNZ CPTL1 . STANDARD FIRSTUT )@@G@@ COL LIM @C@@@@ J NXRQ . CONTINUEUU )@@G@@@E@@@@LIM2 LMJ X10,BIN0 . CONVERT SECOND LIMIT@E@@@@UV )@@G@@ SZ A0 . SET FOR DIVIDE @C@@@@ UW )@@G@@ L A1,A10 . @E@@@@ DI,U A0,4UX )@@G@@ . GET NUMBER OF WORDS @E@@@@ TZ A1 UY )@@G@@ . REMAINDER? @E@@@@ A,U A0,1 UZ )@@G@@ . YES, ROUND UP @E@@@@ TLE A0,PTL1 . SEVA )@@G@@COND LIMIT BIGGER?@G@@@@ J COLERR . NO, FIRSVB )@@G@@T IS BIGGER - ERROR @E@@@@ TG,U A0,33 . GRVC )@@G@@EATER THAN MAX? @E@@@@ L,U A0,PLIMSTD . YES, LOAVD )@@G@@D MAX @E@@@@ S A0,PTL2 . STORE SECOND LVE )@@G@@IMIT @E@@@@ TG,U A10,132 . GREATER THAN MAX? VF )@@G@@@E@@@@ L,U A10,132 . YES, LOAD MAX @E@@@@VG )@@G@@ S A10,CPTL2 . STORE COL LIM 2 @C@@@@ VH )@@G@@ J NXRQ . CONTINUE@E@@@@COLERR TYP E211VI )@@G@@,L211 . TYPE ERROR MESSAGE @E@@@@ SNZ PTL1 VJ )@@G@@ . STANDARD FIRST LIMIT@G@@@@ L,U A0,PLIMSTD VK )@@G@@ . STANDARD SECOND LIMIT @C@@@@ S A0,PTL2 VL )@@G@@ . @E@@@@ SNZ CPTL1 . STANDARDVM )@@G@@ COL LIM 1 @E@@@@ L,U A0,132 . STANDARD COL LVN )@@G@@IM 2 @C@@@@ S A0,CPTL2 . STORE IT@C@@@@ VO )@@G@@ J NXRQ . CONTINUE@A@@@@ . SET TRANSPARENT CHAR VP )@@G@@FOR FIND @E@@@@SETTCF LMJ X10,GET3 . GET NEW CHAR. VQ )@@G@@ @E@@@@ LMJ X11,FIXCHR . SEE IF @ OR BLANK VR )@@G@@@C@@@@ TNE,U A1,'BL' . BLANK? @C@@@@ L,U VS )@@G@@ A1,' ' . SET BLANK. @C@@@@ S A1,TRCHF VT )@@G@@ . SET IT. @C@@@@ J NXRQ . NEXT. VU )@@G@@@^@@@@ . SET CONTINUATION CHAR@E@@@@CCHAR1 LMJ X10,GET3 VV )@@G@@ . GET CHAR @E@@@@ LMJ X11,FIXCHR . SEVW )@@G@@E IF @ OR BLANK @C@@@@ S A1,CONTCHAR . SET CHARVX )@@G@@@E@@@@ J NXRQ . NEXT COMMAND @]@@@@VY )@@G@@ . @^@@@@ . SET U OPTION @E@@@@UPOPS L A0,BVZ )@@G@@ITS('Z'-'U') . SET U FLAG @G@@@@ OR A0,OPTN WA )@@G@@ . OR IN PRESENT OPTIONS @C@@@@ S A1,OWB )@@G@@PTN . @E@@@@ TZ DOPTI . INWC )@@G@@PUT DATA? @E@@@@ SNZ DOPTO . SO MAKE WD )@@G@@OUT DATA TOO@E@@@@ TOPTN 'R' . R OPTION ON? WE )@@G@@ @C@@@@ J NXRQ . NEXT @E@@@@ WF )@@G@@ XOR A1,BITS('Z'-'R') . CLEAR R OPTION @C@@@@ S WG )@@G@@ A2,OPTN . @C@@@@ J NXRQ WH )@@G@@ . @]@@@@ . @]@@@@ . @/ @E@@@@ . WI )@@G@@THIS ROUTINE INPUTS LINES FROM EDIT STREAM @G@@@@ . WJ )@@G@@ POINTER IS LEFT AT THE LAST LINE INSERTED @G@@@@INPUT1 LAWK )@@G@@ A0,EDCT . IS LINE-TO-BE-INSERTED IN THE @I@@@@ WL )@@G@@ TNG A0,COUNT . COMMAND-LINE OR IN THE LINES AFTER ITWM )@@G@@? @C@@@@ J RETYP2 . IMAGE IN LINE@E@@@@ WN )@@G@@ L A1,DELIM . GET DELIMITER @C@@@@ TNWO )@@G@@E,U A1,'+' . IS IT + @E@@@@ J RETYP2 WP )@@G@@ . ALSO TO INSET AFTER @E@@@@ TNZ EOFMOD WQ )@@G@@ . EOF MODE? @G@@@@ J INPUT2 . IFWR )@@G@@ NOT, ENTER INPUT MODE @G@@@@ SNZ BLKLINE .WS )@@G@@ BLANK LINE TO BE INSERTED @E@@@@ J RETYP2 WT )@@G@@ . GO INSERT IT @E@@@@INPUT2 SNZ INPUTF .WU )@@G@@ SET INPUT MODE @E@@@@ TZ BRIEF2 WV )@@G@@ . BRIEF PRINT? @A@@@@ J INPUT3 @E@@@@ WW )@@G@@ TYP INPUT,2 . TYPE OUT MESSAGE @]@@@@INPUT3 . WX )@@G@@@I@@@@ ON INSTAT . STATISTICS WY )@@G@@ 817TM223 @I@@@@ L,H1 A0,STATBUF+5 . INCR TRWZ )@@G@@ANSACTION COUNT 817TM224 @I@@@@ A,U A0,1 XA )@@G@@ . 817TM225 @I@@@@ S,XB )@@G@@H1 A0,STATBUF+5 . 817TM226 XC )@@G@@@I@@@@ OFF INSTAT XD )@@G@@ 817TM227 @A@@@@ LMJ X10,TYPEIN @C@@@@ XE )@@G@@ TZ EOFMOD . EOF MODE?@E@@@@ J DONCXF )@@G@@HG . DONT EVER CHANGE @E@@@@ TNZ COUNT XG )@@G@@ . CHANGE MODES? @C@@@@ J EDIT1 XH )@@G@@ . YES @A@@@@DONCHG LMJ X10,WRB @E@@@@ SZXI )@@G@@ WINHIB . CLEAR WRITE INHIBIT @C@@@@ AA,U XJ )@@G@@ LCT,1 . INCR LINE COUNT @E@@@@ SNA RC,AC1 XK )@@G@@ . IMAGE ADDED BY ED @C@@@@ LA A0,(1,1) . XL )@@G@@ @E@@@@ SZ A1 . INITIALIZE A1 XM )@@G@@@E@@@@ L A5,EDIT80-1,A0 . GET COLUMN 1 CHAR @C@@@@XN )@@G@@ L,U A6,'@' . @E@@@@ TNE XO )@@G@@ A5,MSPCHR . MASTERSPACE CHAR? @G@@@@ S A6,EXP )@@G@@DIT80-1,A0 . STORE MASTERSPACE IN LINE @E@@@@ TZ XQ )@@G@@ COUNT . BLANK LINE? @C@@@@ J FILLXR )@@G@@IN . NOPE @E@@@@ L A5,BLANK2 . GXS )@@G@@ET A BLANK @E@@@@ J INSBLK . GO STICXT )@@G@@K IT IN @E@@@@FILLIN LA A5,EDIT80-1,A0 . GET EDIT CHARXU )@@G@@ACTER @E@@@@ TNE A5,THETAB . IS IT A TAB? XV )@@G@@@A@@@@ LMJ X10,ADJUST @A@@@@INSBLK SA A5,IXW )@@G@@MAG80,A1 @E@@@@ A,U A1,1 . INCREMENT XX )@@G@@ @E@@@@ TG A1,SAVECL . LINE LIMIT MAX? XY )@@G@@@A@@@@ J INPUT4 @I@@@@ TLEM A0,CXZ )@@G@@OUNT . HAVE ALL EDIT CHARACTERS BEEN SEEN? @C@@@@ YA )@@G@@ J FILLIN . NO @]@@@@INPUT4 . @A@@@@ YB )@@G@@ S A1,LENGTH @A@@@@ LMJ X10,PACK YC )@@G@@@G@@@@ J INPUT3 . YES, GO GET NEXT LINE YD )@@G@@ @G@@@@ADJUST LA A2,TAB80,A1 . LOAD MODIFIER FOR CYE )@@G@@ORRECT TAB @A@@@@ LA,U A5,040 @E@@@@ADJUSB SAYF )@@G@@ A5,IMAG80,A1 . STORE BLANK @C@@@@ A,U YG )@@G@@ A1,1 . INCR A1 @E@@@@ TG A1,SAVECL YH )@@G@@ . LINE LIMIT MAX? @C@@@@ J 2,X10 . YYI )@@G@@ES @G@@@@ TLE A1,A2 . IS TAB COUNT SATISFYJ )@@G@@IED ? @G@@@@ J ADJUSB . NO,STORE ANOTYK )@@G@@HER BLANK @A@@@@ J 2,X10 @]@@@@ . @/ YL )@@G@@ @A@@@@ . FIND, FIND AND COUNT COMMANDS @E@@@@FC1 S YM )@@G@@ A1,LCFLG . SET FIND AND COUNT @G@@@@ SNZ LNPRYN )@@G@@T . SET LINE NUMBER PRINT @C@@@@ J YO )@@G@@ $+2 . ENTER @E@@@@FIND1 SZ LCFLG .YP )@@G@@ ZERO COUNT FLAG @I@@@@ LA A0,COUNT . TYQ )@@G@@EST TO SEE IF PREVIOUS COMMAND'S @I@@@@ TNE A0,EYR )@@G@@DCT . STRING SHOULD BE USED- SKIP IF NOT @A@@@@ YS )@@G@@ LA A0,OCOUNT @A@@@@ SA A0,OCOUNT YT )@@G@@@^@@@@ TNZ OK @A@@@@ LMJ X3,TOPS YU )@@G@@@]@@@@FIND2 . @A@@@@ LMJ X10,WRB @A@@@@ YV )@@G@@ LMJ X10,READ @^@@@@ J EOF @E@@@@ YW )@@G@@ TZ BRKSET . SET BREAK KEY? @C@@@@ J YX )@@G@@ NXRQ . YES @A@@@@ LA A2,(1,2) YY )@@G@@ @A@@@@ AA A2,EDCT @A@@@@ LA YZ )@@G@@ A3,(1,0) @A@@@@COMP LA A5,EDIT80-1,A2 @A@@@@ ZA )@@G@@ TNE A5,IMAG80,*A3 @A@@@@ J MATCH1 ZB )@@G@@@E@@@@ TE A5,TRCHF . TEST TRANS CHAR. @A@@@@ZC )@@G@@ J FIND2 @A@@@@MATCH1 TLEM A2,OCOUNT ZD )@@G@@ @^@@@@ J COMP@E@@@@ TNZ LCFLG ZE )@@G@@ . IS THIS FC ENTRY? @C@@@@ J MATCH2 . NZF )@@G@@O. @E@@@@ TZ BRIEF2 . BRIEF MODE? ZG )@@G@@ @C@@@@ LMJ X10,CLIN . GET LINE NO. @A@@@@MATCH2ZH )@@G@@ TNZ BRIEF2 @A@@@@ LMJ X10,TYPOUT ZI )@@G@@@C@@@@ TZ LCFLG . IS IT FC? @E@@@@ J ZJ )@@G@@ FIND2 . YES, LOOK FOR MORE @^@@@@ J ZK )@@G@@ NXRQ@]@@@@ . @/ @A@@@@ . LOCATE, LOCATE AND COUNT COMMANDS@E@@@@ZL )@@G@@LC1 S A1,LCFLG . SET LC ENTRY FLAG @G@@@@ ZM )@@G@@ SNZ LNPRT . PINT NUMBER ON SAME LINE @]@@@@ZN )@@G@@ . @C@@@@ J $+2 . ENTER @I@@@@ZO )@@G@@ . THIS ROUTINE LOCATES A LINE CONTAININGZP )@@G@@ A @E@@@@ . GIVEN CHARACTER STRINZQ )@@G@@G @C@@@@LOC1 SZ LCFLG . SET 'L' ENTRY @G@@@@ ZR )@@G@@ SZ QSTRING . CLEAR QUOTE TYPE INDICATOR @I@@@@ZS )@@G@@ LA A0,COUNT . TEST TO SEE IF PREVIOUS COMMANDZT )@@G@@'S @I@@@@ TNE A0,EDCT . STRING SHOULDZU )@@G@@ BE USED- SKIP IF NOT @A@@@@ LA A0,OCOUNT ZV )@@G@@@A@@@@ SA A0,OCOUNT @^@@@@ TNZ OK ZW )@@G@@@A@@@@ LMJ X3,TOPS @A@@@@ LA,U A10,ZX )@@G@@' ' @E@@@@ L A2,EDCT . SAVE CHAR POSZY )@@G@@ @G@@@@ L A6,LOCHR . INITIALIZE WITH QUOZZ )@@G@@TE CHAR @E@@@@LOC11 TG A2,COUNT . COUNT EXCEEDEAA )@@G@@D? @E@@@@ J LOC2 . CAN'T BE QUOTE TYPEAB )@@G@@@E@@@@ A,U A2,1 . INCR POINTER @E@@@@AC )@@G@@ TNE A10,EDIT80-1,A2 . IS CHAR BLANK? @G@@@@ AD )@@G@@ J LOC11 . YES, GET THE NEXT ONE @E@@@@AE )@@G@@ TE A6,EDIT80-1,A2 . IS IT A QUOTE? @G@@@@ AF )@@G@@ J LOC2 . NO - MUST BE NORMAL LOCATE @E@@@@AG )@@G@@ S A10,EDIT80-1,A2 . CHANGE TO BLANK @I@@@@ AH )@@G@@ AN,U A2,1 . ADJUST TO LOOK AT NEXT CHAR AFTER QUOAI )@@G@@TE @C@@@@ S A2,EDCT . @G@@@@ AJ )@@G@@ SNZ QSTRING . SET QUOTE STRIN INDICATOR @]@@@@AK )@@G@@LOC2 . @A@@@@ LMJ X10,WRB @A@@@@ LMAL )@@G@@J X10,READ @^@@@@ J EOF @E@@@@ TZAM )@@G@@ BRKSET . WAS BREAK KEY HIT? @G@@@@ J AN )@@G@@ NXRQ . YES, GET NEXT COMMAND @G@@@@ L AO )@@G@@ A0,LENGTH . GET LENGTH OF IMAGE READ @I@@@@ AP )@@G@@ L,U A2,3 . 6 TRAILING BLANKS 817TM2AQ )@@G@@30 @I@@@@ L,U A1,' ' . AR )@@G@@ 817TM231 @I@@@@ LXI,U A0,1 . AS )@@G@@ 817TM232 @I@@@@ S A1,IAT )@@G@@MAG80,*A0 . 817TM233 @I@@@@ AU )@@G@@ JGD A2,$-1 . LOOP 817TM2AV )@@G@@34 @I@@@@ LXI,U A0,0 . CLEAR INCR AW )@@G@@ 817TM235 @G@@@@ A A0,EDCT . AAX )@@G@@DD COMMAND PART OF LOCATE @G@@@@ ANA A0,OCOUNT . SUAY )@@G@@BTRACT TOTAL LOCATE LENGTH @C@@@@ AA,U A0,1 AZ )@@G@@. ADJUST FOR TEST @E@@@@ TZ QSTRING . QUOTE SBA )@@G@@TRING? @I@@@@ A,U A0,2 . ADJUST ONE MOBB )@@G@@RE BECAUSE OF TRAILING ' @C@@@@ JN A0,LOC2 . LINEBC )@@G@@ TOO SHORT @C@@@@ SA A0,LIMIT . SET LIMIT @A@@@@BD )@@G@@ LA A1,(1,0) @]@@@@LOC3. @A@@@@ LABE )@@G@@ A2,(1,2) @A@@@@ AA A2,EDCT @A@@@@BF )@@G@@ LA A3,A1 @A@@@@COMPAR LA A5,EDIT80-BG )@@G@@1,A2 @G@@@@ TG A3,(1,132) . AT THE END OF THE IBH )@@G@@MAGE @E@@@@ J LOC2 . GO GET ANOTHERBI )@@G@@ LINE @A@@@@ TNE A5,IMAG80,*A3 @A@@@@ J BJ )@@G@@ MATCH @E@@@@ TZ QSTRING . QUOTE TBK )@@G@@YPE? @C@@@@ J INQOTE . YES @C@@@@BL )@@G@@LIMTST TLEM A1,LIMIT . TEST HERE @C@@@@ J BM )@@G@@ $+2 . CONTINUE @E@@@@ J LOC2 . BN )@@G@@TIME FOR NEXT @E@@@@ TZ QSTRING . IBO )@@G@@N QUOTE? @E@@@@ J LOC3 . YES, NOBP )@@G@@ LUCK @A@@@@ TNE A10,IMAG80-1,A3 @E@@@@ TEBQ )@@G@@ A10,IMAG80-2,A3 . WAS LAST A BLANK @C@@@@ J BR )@@G@@ LOC3 . FAILURE @G@@@@ AN,U A1,1 BS )@@G@@ . DIDN'T WANT TO INCREMENT @G@@@@ J COMPAR+1 BT )@@G@@ . OK COMPARE SOME MORE @E@@@@INQOTE TE A6,EBU )@@G@@DIT80-1,A2 . QUOTE IN LOCATE? @E@@@@ J LIMTST BV )@@G@@ . NO MISMATCH @E@@@@ J FOUND BW )@@G@@ . YES, FOUND A MATCH @A@@@@MATCH TLEM A2,OCOUNT @A@@@@BX )@@G@@ J COMPAR @E@@@@FOUND TNZ LCFLG BY )@@G@@ . IS IT LC ENTRY? @C@@@@ J FOUND1 . NBZ )@@G@@O. @E@@@@ TZ BRIEF2 . BRIEF MODE? CA )@@G@@ @I@@@@ LMJ X10,CLIN . BRIEF MODE OR NOT LINE NUCB )@@G@@M MODE- GET NUM @E@@@@FOUND1 TNZ BRIEF2 . TEST OFCC )@@G@@ BRIEF MODE @A@@@@ LMJ X10,TYPOUT @E@@@@ CD )@@G@@ TZ LCFLG . IS IT LC ENTRY? @E@@@@ J CE )@@G@@ LOC2 . YES, LOOK FOR MORE @^@@@@ J CF )@@G@@ NXRQ@]@@@@ . @/ @G@@@@ . THIS ROUTINE CHANGES A GIVEN CHAR STRINCG )@@G@@G INTO A SECOND GIVEN STRING @G@@@@ . EITHER THROUGHOUT THE ENTIRE LINECH )@@G@@ OR JUST THE FIRST OCCURANCE FOR @E@@@@ . ANY CI )@@G@@ GIVEN NO. OF LINES @G@@@@CHANG1 SZ STRFND CJ )@@G@@ . ZERO STRING FOUND INDICATOR @C@@@@ L X1,(1,0) CK )@@G@@ . STR PTR @C@@@@ L X2,(1,0) . CHAR PTR CL )@@G@@@A@@@@ AX X2,EDCT @G@@@@ LA A0,ECM )@@G@@DIT80,*X2 . STRINGS. THE B-WORD ARRAY STR @E@@@@ TNE,U CN )@@G@@ A0,' ' . BLANK? @G@@@@ TE A0,ECO )@@G@@DIT80,X2 . CONTAINS THE RELATIVE ADDRESS @G@@@@ J CP )@@G@@ DEFINE . OF THE 3 QUOTE CHARACTERS @C@@@@ TLCQ )@@G@@EM X2,COUNT . @C@@@@ J $-3 CR )@@G@@ . @E@@@@ L A0,EDCT . IF NO DECS )@@G@@LIMITER THAN@E@@@@ S A0,STR . USE FIRST CHAR CT )@@G@@ @G@@@@ILLSTR A$EDIT ETAB . INCOMPLETE STRING MECU )@@G@@SSAGE START @^@@@@ A$EMSG E15@G@@@@ L A0,SCV )@@G@@TR . PRINT STRING DELIMITER @A@@@@ L CW )@@G@@ A0,EDIT80,A0 @A@@@@ LMJ X11,AECHAR$ @^@@@@ CX )@@G@@ A$EDITX @E@@@@ TYP IMBUF,17 . TYPE MESCY )@@G@@SAGE @C@@@@ J NXRQ . LEAVE @G@@@@CZ )@@G@@DEFINE S X2,STR,X1 . SAVE DELIM POINTER DA )@@G@@@E@@@@ SZ,H1 STR,X1 . ZERO LEFT HALF @E@@@@DB )@@G@@ TLEM,U X1,2 . THREE DELIMS? @E@@@@ DC )@@G@@ J $+2 . NOT ENOUGH DELIMS @C@@@@ J DD )@@G@@ DEFFND . YES @G@@@@ L A0,EDIT80,DE )@@G@@*X2 . GET DELIM AND INC X2 @E@@@@ TNE A0,EDF )@@G@@DIT80,X2 . COMPARE NEXT CHAR @E@@@@ J DEFINE DG )@@G@@ . ANOTHER DELIMITER @E@@@@ TLEM X2,COUNT DH )@@G@@ . CHAR COUNT EXCEEDED @C@@@@ J $-3 . NOPDI )@@G@@E @C@@@@ J ILLSTR . YES ERROR@]@@@@DEFFNDDJ )@@G@@ @^@@@@ AX,U X2,1@C@@@@ S X2,EDCT DK )@@G@@ . @G@@@@ SZ GLOBAL . DECIDE DL )@@G@@FOR HOW MANY LINES @E@@@@ SZ HEADC . CDM )@@G@@LEAR HEAD FLAG @^@@@@ SZ A10 @C@@@@ LMJ DN )@@G@@ X10,GET . @A@@@@ JZ A1,GFOUND+1 DO )@@G@@@^@@@@ FIELDATA . @A@@@@ TNE,U A1,'G' DP )@@G@@@C@@@@ J GFOUND . @E@@@@ TEDQ )@@G@@,U A1,'A' . CHANGE ALL? @C@@@@ TNE,U DR )@@G@@ A1,'ALL' . @C@@@@ J CHALL DS )@@G@@ . YES @C@@@@ LMJ X10,BIN . @E@@@@DT )@@G@@RECHAL S A10,SSAVE . RESET SCAN COUNT @A@@@@ DU )@@G@@ LMJ X10,GET @E@@@@ TNE,U A1,'G' DV )@@G@@ . TEST FOR GLOBAL @^@@@@ ASCII . @E@@@@GFOUND SNDW )@@G@@Z GLOBAL . SET GLOBAL FLAG @G@@@@ LA DX )@@G@@ A0,STR . TEST FOR REPLACING HEAD OF LINE@G@@@@ AADY )@@G@@,U A0,1 . IF SO 'G' HAS NO EFFECT @C@@@@ DZ )@@G@@ TG A0,STR+1 . @E@@@@ SNZ HEADEA )@@G@@C . SET HEA?D FLAG @I@@@@STARTS TZ LCT EB )@@G@@ . AT LINE 0? 817TM238 @I@@@@ J EC )@@G@@ NOTLNZ . NOPE 817TM239 ED )@@G@@@E@@@@ JNZ A10,ATLN0 . YES-GO TO 1 @I@@@@EE )@@G@@ J IBERR . 1 LINE CHANGE AT LINE 0 ILLEGAL EF )@@G@@817TM241 @I@@@@NOTLNZ . EG )@@G@@ 817TM242 @G@@@@ TZ HEADC EH )@@G@@ . CHANGE AT HEAD OF LINE @C@@@@ J HEAD EI )@@G@@ . YES @G@@@@ LA A0,LENGTH . GET LENGTH OFEJ )@@G@@ IMAGE READ IN @I@@@@ L,U A2,3 . 6 EK )@@G@@TRAILING BLANKS 817TM245 @I@@@@ L,U A1,'EL )@@G@@ ' . 817TM246 @I@@@@ EM )@@G@@ LXI,U A0,1 . 817TM2EN )@@G@@47 @I@@@@ S A1,IMAG80,*A0 . EO )@@G@@ 817TM248 @I@@@@ JGD A2,$-1 . LOEP )@@G@@OP 817TM249 @I@@@@ LXI,U A0,0EQ )@@G@@ . CLEAR INCR 817TM250 @A@@@@ ER )@@G@@ JZ A0,NOCHAN @A@@@@ TG A0,SAVE2 ES )@@G@@@C@@@@ LA A0,SAVE2 . @E@@@@ AAET )@@G@@ A0,STR . CALCULATE LIMIT @C@@@@ ANA EU )@@G@@ A0,STR+1 . @^@@@@ AA,U A0,1@A@@@@ EV )@@G@@ JN A0,NOCHAN @A@@@@ SA A0,LIMIT EW )@@G@@@E@@@@ LA A1,(1,0) . IMAGE COUNTER @E@@@@EX )@@G@@ LA A2,(1,0) . CHANGE COUNTER @G@@@@ EY )@@G@@ LA A3,(1,0) . IMAGE INTO CHANGE COUNTER @G@@@@EZ )@@G@@ SZ PRTEST . ZERO IN PRTEST MEANS LINE IS NTFA )@@G@@@C@@@@SLINE LX X1,(1,2) . @C@@@@ AXFB )@@G@@ X1,STR . @C@@@@ LX X2,A1 FC )@@G@@ . @C@@@@ LA A5,EDIT80-1,X1 . FD )@@G@@@G@@@@ TE A5,IMAG80,*X2 . ARE CHARACTERS EQUAL? FE )@@G@@ @C@@@@ J RESTAR . NO @G@@@@ FF )@@G@@ TLEM X1,STR+1 . YES,IS ENTIRE STRING FOUND? @C@@@@FG )@@G@@ J $-4 . NO @I@@@@ J FH )@@G@@ SFOUND . YES,GO REPLACE IT WITH NEW STRING @]@@@@FI )@@G@@RESTAR . @A@@@@ TLEM A1,LIMIT @E@@@@ J FJ )@@G@@ SLINE . YES,CONTINUE SEARCH@G@@@@ TZ FK )@@G@@ PRTEST . NON-ZERO MEANS LINE WAS CHANGED@A@@@@ J FL )@@G@@ CHDONE @]@@@@NOCHAN . @C@@@@ JZ A10,FM )@@G@@EXNXRQ . NO @A@@@@ LMJ X10,WRB @^@@@@FN )@@G@@ TZ OK @A@@@@ LMJ X10,READ @^@@@@FO )@@G@@ J EOFC@A@@@@ JGD A10,STARTS @C@@@@FP )@@G@@SFOUND SNZ STRFND . SET FLAG @G@@@@ TNE FQ )@@G@@ A1,A2 .MOVE BEGINNING OF LINE TO @E@@@@ J FR )@@G@@ REPLAC . ALTERNATE BUFFER @C@@@@ LA FS )@@G@@ A5,IMAG80,*A2 . @A@@@@ SA A5,CHAN80,A3 FT )@@G@@@A@@@@ TLEM A3,SAVE21 . @A@@@@ J SFOUFU )@@G@@ND @^@@@@ J TT @G@@@@HEAD SNZ STRFFV )@@G@@ND . STRING ALWAYS FOUND ON HEAD @I@@@@ LX FW )@@G@@ A3,(1,0) . ENTRY HERE TO REPLACE OF LINE @A@@@@FX )@@G@@ LX X2,(1,0) @G@@@@REPLAC LX A0,STR+1 FY )@@G@@ . CHECK TO SEE IF STRING IS @E@@@@ AX,U A0,1FZ )@@G@@ . ALREADY REPLACED ? @C@@@@ TNE A0,STR+2 GA )@@G@@ . @C@@@@ J REDONE . YES GB )@@G@@@I@@@@ LA A5,EDIT80,A0 . NO,MOVE NEXT CHAR OF SECOGC )@@G@@ND STRING @A@@@@ SA A5,CHAN80,A3 @A@@@@ GD )@@G@@ TLEM A3,SAVE21 . @C@@@@ J REPLAC+1 GE )@@G@@ . @^@@@@ J TT @G@@@@REDONE SNZ PRTEGF )@@G@@ST . NON-ZERO MEANS LINE IS CHANGED @C@@@@ LA GG )@@G@@ A0,X2 . @C@@@@ LA A1,X2 GH )@@G@@ . @C@@@@ ANA,U A1,1 . @C@@@@GI )@@G@@ LA A2,X2 . @G@@@@ TZ GJ )@@G@@ GLOBAL . IS REST OF LINE TO BE CHANGED ?@C@@@@ J GK )@@G@@ RESTAR . @]@@@@CHDONE . @A@@@@ LAGL )@@G@@ A1,LENGTH @^@@@@ ANA,U A1,1@A@@@@ TGGM )@@G@@ A1,SAVE21 @A@@@@ LA A1,SAVE21 @A@@@@GN )@@G@@ AA A1,(1,0) @C@@@@MOVE1 TLE A1,A0 GO )@@G@@ . @C@@@@ J TT . GP )@@G@@@C@@@@ LA A5,IMAG80,*A0 . @A@@@@ SAGQ )@@G@@ A5,CHAN80,A3 @A@@@@ TLEM A3,SAVE21 . @C@@@@GR )@@G@@ J MOVE1 . @A@@@@TT LA GS )@@G@@ A1,LENGTH @G@@@@ TG A1,SAVE21 . CHANGED TOGT )@@G@@ SAVE2-1 ***** @A@@@@ J MOVE2-1 @A@@@@GU )@@G@@ S A3,LENGTH @A@@@@ ANA A3,(1,1) GV )@@G@@ @A@@@@ J MOVE3 @A@@@@ LA,U GW )@@G@@ A5,040 @A@@@@MOVE2 SA A5,CHAN80,A3 @A@@@@ GX )@@G@@ TLEM A3,SAVE21 . @A@@@@ J MOVE2 GY )@@G@@@A@@@@ LA A3,SAVE21 . @A@@@@MOVE3 LA A5,CGZ )@@G@@HAN80,A3 @A@@@@ SA A5,IMAG80,A3 @A@@@@ JGHA )@@G@@D A3,MOVE3 @E@@@@ SNA RC,DC1 . IMHB )@@G@@AGE DELETED BY ED @A@@@@ LMJ X10,WRB @E@@@@ HC )@@G@@ SNA RC,AC1 . IMAGE ADDED BY ED @E@@@@ L HD )@@G@@ A0,LENGTH . GET IMAGE LENGTH @G@@@@ TG HE )@@G@@ A0,SAVECL . MAX LINE LENGTH GREATER? @E@@@@ L HF )@@G@@ A0,SAVECL . USE SAVECL @C@@@@ S HG )@@G@@ A0,LENGTH . @A@@@@ LMJ X10,PACK HH )@@G@@@A@@@@FF TNZ BRIEF2 @A@@@@ LMJ X10,HI )@@G@@TYPOUT @A@@@@ JZ A10,EXNXRQ @A@@@@ATLN0 LMHJ )@@G@@J X10,WRB @A@@@@ LMJ X10,READ @^@@@@HK )@@G@@ J EOFC@E@@@@ TZ BRKSET . WHL )@@G@@AS BREAK KEY HIT? @C@@@@ J EXNXRQ . YES HM )@@G@@@A@@@@ JGD A10,STARTS @E@@@@EOFC SZ FASTHN )@@G@@READ . GET RID OF FASTREAD@E@@@@ SZ MOVEF HO )@@G@@ . CLEAR FLAGS @C@@@@ SZ DGONXT HP )@@G@@ . @E@@@@ SNZ WINHIB . WRITE INHIBIT HQ )@@G@@ @E@@@@ TNZ GORET . RETURN EXIT HR )@@G@@@C@@@@ J NOGOJ . NO @E@@@@ SZHS )@@G@@ GORET . CLEAR FLAG @C@@@@ J HT )@@G@@ 0,X6 . YES @E@@@@NOGOJ TNZ PUNCH HU )@@G@@ . PUNCH MODE? @C@@@@ J NOPUNW . NHV )@@G@@OPE @E@@@@ L,U A1,10000 . 3SECONDS HW )@@G@@@E@@@@ ER TWAIT$ . WAIT 1 SECOND @E@@@@HX )@@G@@ SZ PUNCH . CLEAR PUNCH @G@@@@NOPUNWHY )@@G@@ AN A10,SSAVE . SUBTRACT OLD SCAN COUNT @E@@@@HZ )@@G@@ SM A10,A10 . MAKE IT POSITIVE @E@@@@ IA )@@G@@ A$EDIT ETAB . START EDIT @E@@@@ A$IB )@@G@@EMSG E11 . SCAN COUNT:... @G@@@@ A$EDECV IC )@@G@@ A10 . INSERT ACTUAL COUNT @E@@@@ A$ID )@@G@@EDITX . END EDIT @G@@@@ TNZ IE )@@G@@ ONSITE . NO SCAN COUNT ON ONSITE @E@@@@ TYIF )@@G@@P IMBUF,6 . TYPE IT OUT @E@@@@ SZ IG )@@G@@ PNTINQ . CLEAR PRINT FLAG @^@@@@ J EOF IH )@@G@@@E@@@@EXNXRQ TZ STRFND . STRING FOUND? @C@@@@II )@@G@@ J NXRQ . YES @E@@@@ TYP IJ )@@G@@ E17,L17 . NO, TELL HIM SO @E@@@@ J NXRIK )@@G@@Q . NOW GO BACK @E@@@@CHALL L,U A10,077777IL )@@G@@6 . BIG NUMBER @E@@@@ SNZ GLOBAL .IM )@@G@@ REALLY GET EM ALL @E@@@@ J RECHAL . GOIN )@@G@@ CHANGE EM ALL @]@@@@ . @/ @E@@@@INLINE1 . . PERFORM IO )@@G@@INLINE MODIFICATION @C@@@@ DO INSTAT , S,S5 R10,STATBUIP )@@G@@F+6 . @G@@@@ L,U A10,'!' . ! IS NORMAL TIQ )@@G@@ERMINATION CHAR @E@@@@ LMJ X10,GET . GET FIRIR )@@G@@ST ARG @G@@@@ JZ A1,TERMSUB+1 . NO ARGS MEANSIS )@@G@@ THIS LINE @E@@@@INLINE2 LMJ X10,BIN0 . CONVERTIT )@@G@@ TO BINARY @E@@@@ GOLINE LINERR . GO TO LINE IU )@@G@@ @E@@@@ TZ BRKSET . WAS BREAK KEY HIT? IV )@@G@@@C@@@@ J NXRQ . EXIT @E@@@@ L,IW )@@G@@U A10,'!' . RESTORE EXCLAMATION @G@@@@ LMJ IX )@@G@@ X10,GET3 . SEE IF ONE SUPPLIED @E@@@@ TZIY )@@G@@ A1 . IF SO, USE IT @C@@@@TERMSUB S IZ )@@G@@ A1,A10 . @E@@@@ LMJ X9,IMAGESAV JA )@@G@@ . SAVE IMAGE @E@@@@ SNA RC,DC1 . DEJB )@@G@@LETE OLD IMAGE @G@@@@ LMJ X10,WRB . WRITE OUJC )@@G@@T DELETED IMAGE @E@@@@ SNA RC,AC1 . MAJD )@@G@@RK NEW ONE ADDED @G@@@@ L A1,LENGTH . MOVJE )@@G@@E IMAGE FOR PRINTOUT @E@@@@ L A0,A1 . AJF )@@G@@LSO TO A0 @C@@@@MVPLZZ L A2,IMAG80-1,A1 . JG )@@G@@@C@@@@ S A2,IMAG80+1,A1 . @E@@@@ TZJH )@@G@@ UNIMOD . UNISCOPE MODE? @E@@@@ S JI )@@G@@ A2,IMAG80+2,A1 . UP ONE MORE @G@@@@ JGD A1,MJJ )@@G@@VPLZZ . MOVE OVER TO MAKE ROOM @G@@@@ L,U JK )@@G@@ A2,'+' . HEAD LINE WITH TWO PLUSES @C@@@@ S JL )@@G@@ A2,IMAG80+1 . @C@@@@ S A2,IMAG80 JM )@@G@@ . @E@@@@ TNZ UNIMOD UNISCOPE JN )@@G@@MODE? @C@@@@ J NOTUNI . NOPE @E@@@@JO )@@G@@ S A2,IMAG80+2 . ANOTHER PLUS @E@@@@ JP )@@G@@ A,U A0,1 . ADD ANOTHER TO A0 @E@@@@NOTUNI A,JQ )@@G@@U A0,2 . ADJUST FOR PLUSES @C@@@@ S JR )@@G@@ A0,LENGTH . @G@@@@ LMJ X10,PACK+1 JS )@@G@@ . PACK IMAG80 INTO IMAGE @E@@@@ L R6,ALLLN JT )@@G@@ . SAVE LINE NUMBERS @E@@@@ L R7,QUICKON JU )@@G@@ . AND QUICK FLAGS @C@@@@ SZ ALLLN . CLJV )@@G@@EAR @C@@@@ SZ QUICKON . @E@@@@ JW )@@G@@ LMJ X10,TYPOUT . PRINT OUT IMAGE @C@@@@ S JX )@@G@@ R6,ALLLN . @C@@@@ S R7,QUICKONJY )@@G@@ . @I@@@@ S A10,DIT1 . JZ )@@G@@ 817TM253 @E@@@@ SNZ ONNLINE KA )@@G@@ . SET TO SOLICIT WITH + @E@@@@ LMJ X10,TYPEIN KB )@@G@@ . READ LINE @E@@@@ SZ ONNLINE . CKC )@@G@@LEAR FLAG @I@@@@ L A10,DIT1 . KD )@@G@@ 817TM255 @E@@@@ L,U A0,IMAGE KE )@@G@@ . CHANGE EDIT$ BUFFER@C@@@@ S,H2 A0,ETAB KF )@@G@@ . @I@@@@ L A11,COUNT . GET CHAR COUNKG )@@G@@T OF INPUT EDIT STRING @G@@@@ A A11,(1,0) KH )@@G@@ . ADD IN INCR FOR TEST @C@@@@ A$EDIT ETAB KI )@@G@@ . @E@@@@ L X4,(1,0) . EDIT80 KJ )@@G@@POINTER @E@@@@ L X5,(1,0) . IMAG80 POINTEKK )@@G@@R @E@@@@ TZ UNIMOD . UNISCOPE? KL )@@G@@@E@@@@ A,U X5,1 . ANOTHER PLUS @E@@@@KM )@@G@@ L X7,LENGTH . INITIAL LENGTH @E@@@@ KN )@@G@@ AN,U X7,2 . ADJUST FOR PLUSES @E@@@@ TZKO )@@G@@ UNIMOD . UNISCOPE MODE? @E@@@@ AN,U KP )@@G@@ X7,1 . ADJUST SOME MORE @E@@@@ L A13,KQ )@@G@@(1,1) . USED FOR TEST @G@@@@SCANED SZ INREPF KR )@@G@@ . ZERO REPLACE INDICATOR @G@@@@ SZ INDEKS )@@G@@LF . ZERO DELETE INDICATOR @E@@@@ L KT )@@G@@ A4,EDIT80,*X4 . GET EDIT CHAR @E@@@@ TNG A11,KU )@@G@@X4 . END OF EDIT STRING?@E@@@@ J INEND KV )@@G@@ . YES, EXIT @G@@@@ TNE A13,X4 KW )@@G@@ . IS THIS THE FIRST EDIT CHAR? @C@@@@ J TESTEDC KX )@@G@@ . YES @I@@@@ L A0,IMAG80+2,*X5 . TRANKY )@@G@@SFER CHAR FROM PRESENT SNG @C@@@@ LMJ X11,AECHARKZ )@@G@@$ . @I@@@@ . +2 IS TLA )@@G@@O IGNORE ++ INSERTED FOR PRINTOU @E@@@@TESTEDC TNE,U A4,' ' LB )@@G@@ . BLANK EDIT CHAR? @E@@@@ J SCANED+2 LC )@@G@@ . YES, CONTINUE SCAN @C@@@@ TNE,U A4,'I' . ILD )@@G@@NSERT?@C@@@@ J ININSE . YES @C@@@@ LE )@@G@@ TNE,U A4,'D' . DELETE?@C@@@@ J INDELF )@@G@@LE . YES @E@@@@ TNE,U A4,'R' . RLG )@@G@@EPLACE? @C@@@@ J INREPL . YES LH )@@G@@@C@@@@ TNE,U A4,0151 . INSERT? @C@@@@ J LI )@@G@@ ININSE . YES @C@@@@ TNE,U A4,0144 LJ )@@G@@ . DELETE? @C@@@@ J INDELE . YES LK )@@G@@@C@@@@ TNE,U A4,0162 . REPLACE?@C@@@@ J LL )@@G@@ INREPL . YES @G@@@@ L,U A5,E27 LM )@@G@@ . INVALID EDIT CHAR ERROR @E@@@@INERRX LMJ X9,ILN )@@G@@MAGEREC . RECOVER IMAGE @^@@@@ A$EDITX . @G@@@@LO )@@G@@ L,U A0,IMBUF . REPLACE EDIT$ BUFFER LP )@@G@@@C@@@@ S,H2 A0,ETAB . @E@@@@ A$LQ )@@G@@EDIT ETAB . START EDIT @E@@@@ L LR )@@G@@ A0,A5 . GET MESSAGE ADDRESS@E@@@@ LMJ X11,LS )@@G@@AEMSG$ . INSERT IT @E@@@@ L A0,A4 LT )@@G@@ . GET OFFENSIVE CHAR @E@@@@ LMJ X11,AECHAR$ LU )@@G@@ . INSERT IT @^@@@@ A$EDITX . @C@@@@ TYLV )@@G@@P IMBUF,8 . TYPE IT @E@@@@ J RECTST LW )@@G@@ . NEXT COMMAND @G@@@@TERMERR L A4,A10 LX )@@G@@ . MISSING TERMINATION CHAR @E@@@@ L,U A5,E28 LY )@@G@@ . MESSAGE E28 @E@@@@ J INERRX LZ )@@G@@ . PRINT AND EXIT @E@@@@INDELE SNZ INDELF . SET MA )@@G@@DELETE FLAG @E@@@@ J ININSE . GO DO IMB )@@G@@T @E@@@@INREPL SNZ INREPF . SET REPLACE FLAGMC )@@G@@ @E@@@@ININSE L A4,EDIT80,*X4 . GET NEXT EDIT CHAR MD )@@G@@@G@@@@ TNG A11,X4 . HAVE LOOKED AT ALL EDIT ME )@@G@@CHAR? @G@@@@ J TERMERR . YES, MISSING TERMIMF )@@G@@NATOR @G@@@@ TNE A4,A10 . IS THIS A TERMG )@@G@@MINATOR @G@@@@ J SCANED . YES GO MH )@@G@@BACK FOR MORE EDIT STUFF@C@@@@ TZ INDELF . DMI )@@G@@ELETE?@C@@@@ J INDELE1 . YES @G@@@@ MJ )@@G@@ L A0,A4 . GET CHAR FROM EDIT STREAM @E@@@@MK )@@G@@ LMJ X11,AECHAR$ . INSERT IT @E@@@@ ML )@@G@@ TZ INREPF . REPLACE? @C@@@@ J MM )@@G@@ INDELE1 . YES @G@@@@ A,U X7,1 MN )@@G@@ . NO - INSERT - ADD TO LENGTH @E@@@@ J ININMO )@@G@@SE . YES- NEXT CHAR @G@@@@INDELE1 A,U X5,1 MP )@@G@@ . SPACE OVER IMAG80 CHARS @E@@@@ J ININMQ )@@G@@SE . GET NEXT EDIT CHAR @E@@@@INEND SZ A1 MR )@@G@@ . CLEAR A1 @E@@@@ TZ UNIMOD MS )@@G@@ . UNISCOPE MODE? @E@@@@ A,U X7,1 . ADMT )@@G@@D 1 TO COUNT @]@@@@INENDU . @E@@@@ LXM A1,X5 MU )@@G@@ . GET X5 IN A REG @I@@@@ A,U A1,2 MV )@@G@@ . 817TM258 @I@@@@ TG MW )@@G@@ A1,LENGTH . 817TM259 @C@@@@MX )@@G@@ J INEND2 . YES @E@@@@ L MY )@@G@@ A0,IMAG80+2,*X5 . TRANSFER @C@@@@ LMJ X11,MZ )@@G@@AECHAR$ . @E@@@@ J INENDU .NA )@@G@@ NEXT CHAR @I@@@@INEND2 . NB )@@G@@ 817TM261 @I@@@@ A$ECOLN . GET LINNC )@@G@@E LENGTH 817TM263 @E@@@@ TGND )@@G@@ A0,SAVECL . LINE LIMIT MAX? @E@@@@ L NE )@@G@@ A0,SAVECL . LOAD MAX @I@@@@ DSL A0,3NF )@@G@@6 . SHIFT TO A1 817TM265 @E@@@@ NG )@@G@@ DI,U A0,4 . WORD LENGTH WANTED @E@@@@ TZNH )@@G@@ A1 . REMAINDER ZERO? @G@@@@ A,U NI )@@G@@ A0,1 . NO, ADD ONE TO WORD COUNT @E@@@@ S NJ )@@G@@ A0,IL PUT IN IMAGE LENGTH @I@@@@ A$EDITX NK )@@G@@ . 817TM267 @I@@@@NL )@@G@@ L,U A0,IMBUF . RESTORE IMBUF AS ETAB ADDRES NM )@@G@@817TM268 @I@@@@ S,H2 A0,ETAB . NN )@@G@@ 817TM269 @E@@@@ LMJ X10,TYPOUT NO )@@G@@ . TYPE IT OUT @E@@@@ LMJ X10,DECODE . DNP )@@G@@ECODE TO IMAG80 @E@@@@ J NXRQ . EOF IMPNQ )@@G@@OSSIBLE @E@@@@ AN,U LCT,1 . ADJUST BACK NR )@@G@@ @E@@@@ J NXRQ . NEXT COMMAND NS )@@G@@@]@@@@ . @]@@@@ . @/ @E@@@@ . THIS ROUTINE REPLACES THE PNT )@@G@@OINTER LINE WITH THE EDIT LINE@E@@@@ . THE POINTER LOCATIION NU )@@G@@IS NOT CHANGED @]@@@@RETYP1 . @G@@@@ TNZ LCT NV )@@G@@ . RETYPE ON LINE ZERO? @E@@@@ J NW )@@G@@ IBERR . IT'S A NO-NO @E@@@@ SNA RC,DNX )@@G@@C1 . IMAGE DELETED BY ED @G@@@@ AN,U LCT,1 NY )@@G@@ . RETYPE DOESN'T INCREASE LCT @]@@@@RETYP2 . @E@@@@ NZ )@@G@@ L A9,RPTK . LOAD REPEAT COUNTER @A@@@@ LMOA )@@G@@J X10,WRB @C@@@@ AA,U LCT,1 . INCR LINE OB )@@G@@COUNT @E@@@@ALENT2 SNA RC,AC1 . IMAGE ADDED BY ED OC )@@G@@@E@@@@ L A1,DELIM . GET DELIMITER @E@@@@OD )@@G@@ TE,U A1,'+' . IS IT + ? @C@@@@ OE )@@G@@ J THISLINE . NO @E@@@@ SNZ ONNLOF )@@G@@INE . SET FLAG FOR NEXT LINE@E@@@@ LMJ X10,TYPEINOG )@@G@@ . READ A FULL LINE @E@@@@ SZ ONNLINE OH )@@G@@ . CLEAR FLAG NOW @E@@@@ SZ BLKLINE . ZOI )@@G@@ERO BLANK LINE @C@@@@ SNZ EDCT . COLUMN 1 OJ )@@G@@@C@@@@ L A0,(1,1) . @C@@@@ J OK )@@G@@ THISLINE+2 . GO @C@@@@THISLINE LA A0,(1,2) OL )@@G@@ . @C@@@@ AA A0,EDCT . OM )@@G@@@E@@@@ SZ A1 . IMAG80 PTR @E@@@@ON )@@G@@ TNZ BLKLINE . BLANK LINE? @C@@@@ OO )@@G@@ J $+3 . NO @E@@@@ L A5,BOP )@@G@@LANK2 . LOAD A BLANK CHAR @E@@@@ J INSTYP OQ )@@G@@ . GO INSERT IT @E@@@@LOAD LA A5,EDIT80-1,A0 OR )@@G@@ . GET EDIT CHARACTER @E@@@@ TNE A5,THETAB . IOS )@@G@@S IT A TAB? @A@@@@ LMJ X10,ADJUST @E@@@@INSTYPOT )@@G@@ S A5,IMAG80,A1 . STORE CHAR IN IMAGE@E@@@@ A,OU )@@G@@U A1,1 . INCR A1 ANYHOW. @E@@@@ TG OV )@@G@@ A1,SAVECL . LINE LIMIT MAX? @A@@@@ J RETYOW )@@G@@P3 @I@@@@ TLEM A0,COUNT . HAVE ALL EDITOX )@@G@@ CHARACTERS BEEN SEEN? @G@@@@ J LOAD OY )@@G@@ . NO ,JUMP AND GET NEXT CHARACTER@]@@@@RETYP3 . @A@@@@ S OZ )@@G@@ A1,LENGTH @A@@@@ LMJ X10,PACK @I@@@@PA )@@G@@ TNZ BRKSET . IF BREAK KEY WAS HIT, DON'T REPPB )@@G@@EAT @E@@@@ JGD A9,RETYP2+1 . REPEAT ON COUNT. PC )@@G@@ @E@@@@ TZ IBFLG . IS IT 'IB' COMMAND? PD )@@G@@@C@@@@ J IBRET . YES @G@@@@ SZPE )@@G@@ BLKLINE . ZERO BLANK LINE INDICATOR @^@@@@ PF )@@G@@ J NXRQ@C@@@@. THIS IS 'IB' - INSERT BEFORE - CODE. PG )@@G@@@E@@@@IBIN TNZ LCT . IS THIS LINE 0? @E@@@@PH )@@G@@ J IBERR . YES JUMP TO ERROR @E@@@@ PI )@@G@@ LMJ X9,IMAGESAV . SAVE IMAGE @E@@@@ L PJ )@@G@@ A9,RPTK . SET REPEAT @E@@@@ SNZ PK )@@G@@ IBFLG . SET 'IB' FLAG @E@@@@ J ALENPL )@@G@@T2 . TREAT LIKE RETYPE @C@@@@IMAGESAV LA A1,(1,IMAGE) PM )@@G@@ . DO @E@@@@ LA A0,(1,IMSAV) . COPY OF IMAPN )@@G@@GE @C@@@@ L R1,IL . TO IMSAV @C@@@@PO )@@G@@ BT A0,0,*A1 . DO IT. @G@@@@ L A0,PP )@@G@@ICW . GET LENGTH OF EDIN REC. @C@@@@ S PQ )@@G@@ A0,ILSAV . SAVE IT. @C@@@@ J 0,X9 PR )@@G@@ . RETURN @G@@@@IBERR TYP E21,L21 . TYPE ILPS )@@G@@LEGAL AT LINE 0 @G@@@@ J NXRQ . RPT )@@G@@EAD ANOTHER COMMAND @E@@@@IBRET LMJ X10,WRB .PU )@@G@@ WRITE OUT INSERT. @E@@@@ AA,U LCT,1 . INCR PV )@@G@@LINE COUNT. @E@@@@ SZ IBFLG . TURN OFF IBPW )@@G@@FLG. @E@@@@ LMJ X9,IMAGEREC . RECOVER IMAGEPX )@@G@@ @E@@@@ J NXRQ . NEXT COMMAND PY )@@G@@@C@@@@IMAGEREC LA A1,(1,IMSAV) . RESTORE @C@@@@ LA PZ )@@G@@ A0,(1,IMAGE) . IMAGE @G@@@@ L A2,ILSAV QA )@@G@@ . GET IMAGE LENGTH IN R1 @C@@@@ SSL A2,2QB )@@G@@4 . @C@@@@ L R1,A2 . QC )@@G@@ @C@@@@ BT A0,0,*A1 . DO IT. @C@@@@ QD )@@G@@ L A0,ILSAV . GET OLD @C@@@@ S A0,ICW QE )@@G@@ . SET. @E@@@@ LMJ X10,DECODE . CONVEQF )@@G@@RT INTO IMAG80. @E@@@@ J LINERR . EOF - IMPQG )@@G@@OSSIBLE @E@@@@ AN,U LCT,1 . ADJUST LINE COQH )@@G@@UNT @C@@@@ J 0,X9 . RETURN @A@@@@/ . DIQI )@@G@@TTO FUNCTION AND MOVE @E@@@@MOVEF1 SNZ MOVEF QJ )@@G@@ . SET MOVE COM FLAG @E@@@@ J $+2 . SKQK )@@G@@IP FLAG CLEAR @E@@@@DITTO1 SZ MOVEF . CLEAR MOQL )@@G@@VE FLAG @G@@@@ S LCT,R8 . SAVE FOR MOVE QM )@@G@@RECOVERY @E@@@@ LMJ X8,CHKEOF . AT THE ENQN )@@G@@D OF FILE @E@@@@ SZ DITFIL . SET FILE COUNQO )@@G@@T ZERO@C@@@@ DO INSTAT , S,S6 R10,STATBUF+6 . @C@@@@ QP )@@G@@ SNZ DBUFCNT . DBUFCNT=1 @E@@@@ SZ DITFQQ )@@G@@AST . FASTRAND ADDRESS=0 @E@@@@ LMJ X10,GET QR )@@G@@ . GET FIRST FIELD @E@@@@ JZ A1,NUMERR QS )@@G@@ . NO FIELDS? @E@@@@ LMJ X10,BIN0 . QT )@@G@@CONV TO BINARY @C@@@@ S A10,DIT1 . SAVE QU )@@G@@@E@@@@ LMJ X10,GET . GET 2ND FIELD @G@@@@QV )@@G@@ JZ A1,DITTO3 . 0= DITTO ONLY ONE LINE QW )@@G@@@C@@@@ LMJ X10,BIN0 . CONV @C@@@@ S QX )@@G@@ A10,DIT2 . SAVE @G@@@@ TLE A10,DIT1 QY )@@G@@ . FIRST FIELD >SECOND? @C@@@@ J LINEQZ )@@G@@RR . YES @E@@@@DITANAL L A10,LCT . RA )@@G@@GET LINE COUNT @C@@@@ S A10,DITLN . SAVE RB )@@G@@@E@@@@ L A10,DIT1 . GET LINE TO GO TO @G@@@@RC )@@G@@ GOLINE LINERR . GO, ON EOF GO TO LINERR RD )@@G@@@G@@@@ L A10,DIT2 . THIS IS THE LINE TO BE DITTOED RE )@@G@@ @E@@@@ AN A10,DIT1 . FORM LENGTH RF )@@G@@@E@@@@ S A10,DITLENTH . SAVE LENGTH @G@@@@RG )@@G@@DITRD LMJ X10,WRDIT . WRITE TO DITTO FILE RH )@@G@@@E@@@@ LMJ X10,WRB . WRITE TO EDIT FILE@E@@@@RI )@@G@@ LMJ X10,READ . READ NEXT IMAGE @E@@@@ RJ )@@G@@ LMJ X10,DITERR2 . EOF IS AN ERROR @E@@@@ JGRK )@@G@@D A10,DITRD . READ 'EM ALL @G@@@@ L RL )@@G@@ A10,DITLN . GET LINE ORIGINALLY AT @E@@@@ GORM )@@G@@LINE DITERR2 . GO TO IT @E@@@@ TZ RN )@@G@@ BRKSET . WAS BREAK KEY HIT? @G@@@@ J NXRQRO )@@G@@ . YES, ESCAPE FROM DITTO HERE @G@@@@ . THIS SECTION ADRP )@@G@@DS IN IMAGES FROM SAVE AREA AND FILE (IF NECESSARY) @]@@@@ . FOR DITTORQ )@@G@@@E@@@@ TNZ DITFIL . WAS FILE USED? @E@@@@RR )@@G@@ J NOFIL . NO FILE NEEDED @I@@@@ RS )@@G@@ LMJ X9,TOOLONG . FILE USED WRITE OUT PRESENT IMAGE ARERT )@@G@@A @G@@@@ SZ DITFAST . MOVE FASTRAND ADD TRU )@@G@@O ZERO @E@@@@READNXT L,U A0,DITPKT . GET DITTO I-ORV )@@G@@ PKT @E@@@@ L,U A1,R$ . READ CODE RW )@@G@@@C@@@@ S A1,DITCODE . @E@@@@ ERRX )@@G@@ IOW$ . READ FIRST SECTION @I@@@@ L,U RY )@@G@@ A0,DITSECL . GET DITTO BUFFER LENGTH IN SECTORS @G@@@@RZ )@@G@@ A A0,DITFAST . ADD TO PRESENT FASTRAND ADDRESSSA )@@G@@@C@@@@ S A0,DITFAST .REPLACE @E@@@@ DESB )@@G@@CR DITFIL . DECREMENT DITFIL @C@@@@NOFIL L SC )@@G@@ X8,(1,1) . @G@@@@NEXTIM LMJ X10,WRB SD )@@G@@ . WRITE OUT CURRENT LINE @G@@@@ A,U LCT,1 SE )@@G@@ . INCREMENT LINE COUNT @C@@@@ L A2,DSF )@@G@@ITBUF,X8 . GET ICW@C@@@@ S A2,ICW . SG )@@G@@ @I@@@@ SNA RC,AC1 . MARK IT ADDED SH )@@G@@ ED011650 @G@@@@ L,S2 R1,DITBUF,*X8 . GSI )@@G@@ET WORD COUNT OF IMAGE @G@@@@ L A2,(1,IMAGE-DITBSJ )@@G@@UF) . GET DESTINATION @E@@@@ BT A2,DITBUF,SK )@@G@@*X8 . TRANSFER IMAGE@E@@@@ TNZ BRIEF2 SL )@@G@@ . BRIEF MODE? @E@@@@ LMJ X10,TYPOUT . TSM )@@G@@YPE OUT LINE @E@@@@ TZ BRKSET . WAS BRESN )@@G@@AK KEY HIT? @C@@@@ J DITBRK . YES @G@@@@SO )@@G@@ L,U A2,0,X8 . GET RID OF INCREMENT SP )@@G@@@E@@@@ TLE A2,DBUFCNT . END OF BUFFER? @E@@@@SQ )@@G@@ J NEXTIM . NO, GET NEXT IMAGE @E@@@@ SR )@@G@@ TZ DITFIL . ANY MORE IN FILE? @G@@@@ J SS )@@G@@ READNXT . READ NEXT FILE SECTION @E@@@@DITBRKST )@@G@@ LMJ X10,DECODE . RECOVER LAST IMAGE @E@@@@ ERSU )@@G@@ ERR$ . EOF IMPOSSIBLE @I@@@@ AN,U SV )@@G@@ LCT,1 . DECREMENT LINE COUNT FOR CORRECT VALUE @E@@@@SW )@@G@@ TNZ MOVEF . MOVE COM? @C@@@@ SX )@@G@@ J NXRQ . NOT MOVE@E@@@@ L A10,SY )@@G@@DIT2 . GET LAST LINE @G@@@@ TNG A10,DITLN SZ )@@G@@ . LESS THAN INSERT SPOT? @G@@@@ J DORGTA )@@G@@LN . YES, USE ORIGINAL LN NUM FOR DEL@C@@@@ L TB )@@G@@ A10,DITLN . @E@@@@ TG A10,DIT1 TC )@@G@@ . DIT1 >INSERT SPOT? @C@@@@ J MVERR . NOTD )@@G@@-ERROR@C@@@@ L A0,DIT1 . @C@@@@ TE )@@G@@ L A10,DIT2 . @G@@@@ S A10,TF )@@G@@DIT1 . DIT1=DIT2+1(-1 FOR DELETE) @C@@@@ A TG )@@G@@ A10,DIT2 . @C@@@@ AN A10,A0 TH )@@G@@ . @I@@@@ S A10,DIT2 . DIT2=DIT2+DIT2TI )@@G@@-DIT1+1(-1 FOR DEL) @C@@@@ J MVDEL TJ )@@G@@ . @E@@@@DORGLN DECR DIT1 . (-1 FOR DELETETK )@@G@@) @E@@@@ DECR DIT2 . (-1 FOR DELETE) TL )@@G@@@E@@@@ L A10,DIT2 . DIT2 MUST BE IN A10 @E@@@@TM )@@G@@ J MVDEL . GO DELETE LINES @G@@@@MVERR TN )@@G@@ TYP E52,L52 . MOVE WITHIN MOVE ILLEGAL @E@@@@TO )@@G@@ J NXRQ . NEXT COMMAND @E@@@@DITTO3TP )@@G@@ L A0,DIT1 . GET FIRST SPEC @E@@@@ S TQ )@@G@@ A0,DIT2 . PUT IN SECOND @E@@@@ J TR )@@G@@ DITANAL . PROCEED NORMALLY @G@@@@ . THIS ROUTINE WRITES LTS )@@G@@INES TO DITTO FILE. THE FILE IS USED ONLY @G@@@@ . IF THERE IS NOTTT )@@G@@ ENOUGH ROOM TO SAVE THE DITTO INFORMATION IN THE @^@@@@ . DITTO BUFTU )@@G@@FER @G@@@@WRDIT L A3,DBUFCNT . GET BUFFER WOTV )@@G@@RD COUNT @E@@@@ AU A3,IL . ADD IMATW )@@G@@GE LENGTH + @E@@@@ A,U A4,1 . 1 FOR ICW TX )@@G@@ @G@@@@ TG,U A4,DITLEN . EXCEEDS BUFFER LENGTY )@@G@@TH @E@@@@ LMJ X9,TOOLONG . THEN WRITE TOTZ )@@G@@ FILE @E@@@@ LXI,U A3,1 . LOAD INCREMENT UA )@@G@@@E@@@@ L A0,ICW . TRANSFER ICW @C@@@@UB )@@G@@ S A0,DITBUF,*A3 . @E@@@@ L UC )@@G@@ A2,(1,IMAGE-DITBUF) . SOURCE LOC @E@@@@ L R1,IUD )@@G@@L . IMAGE LENGTH @E@@@@ BT A3,DITBUF,UE )@@G@@*A2 . TRANSFER IMAGE@E@@@@ S A3,DBUFCNT UF )@@G@@ . SAVE COUNT @C@@@@ J 0,X10 . RUG )@@G@@ETURN @C@@@@ . IF TOO MUCH OPEN DITTO FILE AND WRITE @E@@@@TOOLONUH )@@G@@G TZ DIASGD . DITTO FILE ASGED? @C@@@@ J UI )@@G@@ WRITEDIT . YES @E@@@@ L A0,(4,ASGDUJ )@@G@@I) . ASSIGN IT @C@@@@ ER CSF$ UK )@@G@@ . @E@@@@ JNZ A0,FILERR . ASSIGN ERROUL )@@G@@R @E@@@@ SNZ DIASGD . SET ASSIGNED FLAG UM )@@G@@@E@@@@WRITEDIT L,U A0,DITPKT . LOAD I-OPKT @E@@@@UN )@@G@@ L,U A1,W$ . WRITE CODE @C@@@@ UO )@@G@@ S A1,DITCODE . @E@@@@ ER IOW$UP )@@G@@ . PERFORM I-O @I@@@@ L,U A0,DITSECLUQ )@@G@@ . GET DITTO BUFFER LENGTH IN SECTORS @G@@@@ A UR )@@G@@ A0,DITFAST . ADD TO PRESENT FASTRAND ADDRESS@C@@@@ US )@@G@@ S A0,DITFAST .REPLACE @E@@@@ INCR DITFUT )@@G@@IL . INCREMENT DITFIL @G@@@@ L,U A3,1 UU )@@G@@ . RESET POINTER FOR BUFFER @C@@@@ J 0,X9UV )@@G@@ . RETURN @C@@@@ J 0,X10 . UW )@@G@@ @^@@@@ . DITTO ERRORS @A@@@@DITERR2 JNZ A10,LINERRUX )@@G@@ @C@@@@ L R9,X10 . SAVE X10@C@@@@ UY )@@G@@ SZ OK . @C@@@@ SZ ICW UZ )@@G@@ . @E@@@@ SNZ WINHIB . INHIBVA )@@G@@IT WRITING @C@@@@ LMJ X3,TOPS2 . GO TO TOPVB )@@G@@@C@@@@ L X10,R9 . @E@@@@ SZVC )@@G@@ A10 . RESET A10 @C@@@@ J VD )@@G@@ 0,X10 . @E@@@@LINERR TYP E22,L22 VE )@@G@@ . EOF ERROR @C@@@@ J RECTST . VF )@@G@@ @G@@@@CHKEOF . THIS ROUTINE CHECKS TO SEE IF PAST THE END OF FIVG )@@G@@LE @E@@@@ TZ OK . PAST END OF FIVH )@@G@@LE? @E@@@@ J 0,X8 . NOPE RETURN VI )@@G@@@G@@@@ L A10,LCT . GET CURRENT LINE COUNT VJ )@@G@@ @I@@@@ A,U LCT,1 . INCREMENT LINE COUNTVK )@@G@@ TO FORCE A TOP @G@@@@ GOLINE LINERR . SHVL )@@G@@OULD ALWAYS FIND LINE @C@@@@ J 0,X8 VM )@@G@@ . RETURN @G@@@@ . @/ AUTO SAVE ROUTINES. AUTO SAVE IS PERFORMED BY COVN )@@G@@PYING THE CURRENT @G@@@@ . SCRATCH FILE INTO THE CATALOGED FILE ED$TB. VO )@@G@@THIS CAN BE RECOVERED @A@@@@ . BY DOING AN @ED WITH AN R OPTION.@]@@@@VP )@@G@@ . @A@@@@ . THIS ROUTINE SETS AUTO NUMBER @I@@@@AUTO1 TNVQ )@@G@@Z DEMAND . DEMAND? ED020270 VR )@@G@@@I@@@@ J BAUTO . NO, CAN'T DO AN AUTO VS )@@G@@ ED020280 @I@@@@ TNOPTN 'D' . IS THIS VT )@@G@@REALLY DEMAND? ED020290 @I@@@@ J BAUTO VU )@@G@@ . NO, DON'T LET HIM DO IT ED020300 @G@@@@ SNVV )@@G@@Z AUTCALL . FLAG: AUTO COMMAND WAS CALLED @E@@@@ VW )@@G@@ LMJ X10,GET . GET NUMBER @G@@@@ JZVX )@@G@@ A1,DOAUTO . NO NUMBER, DIRECT AUTO @E@@@@ VY )@@G@@ LMJ X10,BIN0 . CONVER TO BINARY @G@@@@ TNVZ )@@G@@G,U A10,MINAUT . GREATER THAN MINIMUM? @C@@@@ WA )@@G@@ JNZ A10,MAUTER . @C@@@@ S A10,WB )@@G@@AUTOTST . @G@@@@ SZ AUTOCNT . ZWC )@@G@@ERO TRANSACTION COUNT @E@@@@ J NXRQ WD )@@G@@ . NEXT COMMAND @I@@@@BAUTO TYP E53,L53 . NOWE )@@G@@ AUTO ALLOWED IN BATCH ED020320 @I@@@@ J NXRQWF )@@G@@ . ED020330 @E@@@@MAUTERWG )@@G@@ A$EDIT ETAB . TOO SMALL @G@@@@ A$WH )@@G@@EMSG E51 . TELL HIM WHAT MIN IS @C@@@@ WI )@@G@@ A$EDECV MINAUT,,U . @^@@@@ A$EDITX . WJ )@@G@@@C@@@@ TYP IMBUF,6 . @C@@@@ J WK )@@G@@ NXRQ . @A@@@@ . THIS ROUTINE DOES THE AUTO WL )@@G@@SAVE @E@@@@DOAUTO SZ X10 . THIS IS DIRECT AUTO WM )@@G@@@I@@@@ L,U A0,0377776 . BIG NUMBER WN )@@G@@ ED011670 @E@@@@ TNZ AUTOTST . AUTO TESWO )@@G@@T SET? @G@@@@ S A0,AUTOTST . SET TO REDICULWP )@@G@@OUSLY BIG NUMBER @E@@@@AUTOSAV S X10,DITX10S . SAVE X1WQ )@@G@@0 @G@@@@ S LCT,DITLN . SAVE LINE AT WR )@@G@@WHICH AUTO DONE @E@@@@ TYP E24,L24 . TYPE 'WS )@@G@@AUTO' @G@@@@ LMJ X3,TOPS . GET ALL CORRECWT )@@G@@TIONS INTO ED$TB @G@@@@ TNZ AUTCALL . WAS AUTOWU )@@G@@ COMMAND CALLED? @G@@@@ J AUTOGO . NOWV )@@G@@, DON'T SET BIT AGAIN @E@@@@ TNZ OUTFIL WW )@@G@@ . OUTPUT FILE FD? @E@@@@ J AUTOGO-1 . NOWX )@@G@@, ASCII @G@@@@ L A0,ICW . SET BIT WY )@@G@@IN ICW (HEADER) @G@@@@ OR,U A0,010 . SAWZ )@@G@@YING OUTPUT FILE IS FD @G@@@@ S A1,ICW XA )@@G@@ . STORE RESULT BACK IN ICW @G@@@@ LMJ X3,TOPS XB )@@G@@ . GET BIT CORRECTION INTO FILE @E@@@@ SZ AUTCXC )@@G@@ALL . CLEAR FLAG @]@@@@AUTOGO . @E@@@@ SZXD )@@G@@ AUTOCNT . CLEAR COUNT @G@@@@ L XE )@@G@@ A10,DITLN . GET ORIGINAL LINE NUMBER @E@@@@ GOXF )@@G@@LINE EOFC . GO TO LINE A10 @E@@@@ L XG )@@G@@ X10,DITX10S . RECOVER X10 @E@@@@ TZ X10 XH )@@G@@ . DIRECT SAVE? @E@@@@ J NOTAUTO XI )@@G@@ . RETURN TO TYPEIN @C@@@@ J NXRQ XJ )@@G@@ . @]@@@@ . @/ @C@@@@ . THIS ROUTINE DELETES THE NEXT N XK )@@G@@LINES @E@@@@ . POINTER IS LEFT AT THE LAST LINE DXL )@@G@@ELETED@^@@@@DEL1 . DELETE @E@@@@ L A1,DELIM XM )@@G@@ . GET DELIMITER @E@@@@ TNE,U A1,'+' XN )@@G@@ . WAS IT A PLUS @E@@@@ SNZ DGONXT . YEXO )@@G@@S- SET FLAG @A@@@@ LMJ X10,GET @A@@@@ XP )@@G@@ LMJ X10,BIN @C@@@@ S A10,DIT1 . SXQ )@@G@@AVE ARG ONE @C@@@@ LMJ X10,GET . GET ARG 2 @G@@@@XR )@@G@@ JZ A1,DELNXT . MEANS DELETE NEXT DIT1 LINES XS )@@G@@@C@@@@ LMJ X10,BIN . CONVERT @C@@@@MVDEL TG XT )@@G@@ A10,DIT1 . IS DIT1 BIGGER?@C@@@@ J DEL3 XU )@@G@@ . NO, NEW FMT @E@@@@ JNZ A10,LINERR . INVALIDXV )@@G@@ LINE @C@@@@DELNXT TNZ LCT . LINE 0? @C@@@@XW )@@G@@ J IBERR . ILLEGAL @C@@@@ L XX )@@G@@A10,DIT1 . RELOAD ARG ONE.@E@@@@ S A10,SSAVE XY )@@G@@ . RESET LINE COUNT @]@@@@DEL2 . @A@@@@ SZ LENGXZ )@@G@@TH @E@@@@ TZ BRKSET . WAS BREAK KEYYA )@@G@@ HIT? @E@@@@ J NXRQ . YES, DELETE NO MOREYB )@@G@@@E@@@@ SNA RC,DC1 . IMAGE DELETED BY ED @A@@@@YC )@@G@@ LMJ X10,WRB @E@@@@ AN,U LCT,1 YD )@@G@@ . DCREMENT LINE COUNT @A@@@@ JZ A10,DONDEL YE )@@G@@@A@@@@ LMJ X10,READ @^@@@@ J EOFCYF )@@G@@@A@@@@ JGD A10,DEL2 @C@@@@DEL3 AN A10,YG )@@G@@DIT1 . NET LENGTH @E@@@@ S A10,SSAVE . SYH )@@G@@AVE FOR SCAN COUNT@E@@@@ S A10,DIT2 . SAVE DIYI )@@G@@FF IN DIT2 @E@@@@ L A10,DIT1 . GET START YJ )@@G@@ @C@@@@ A,U A10,1 . ADJUST @E@@@@ YK )@@G@@ GOLINE EOFC . GO TO LINE @C@@@@ L YL )@@G@@ A10,DIT2 . NET TO DEL @E@@@@ S A10,SSAVE YM )@@G@@ . SAVE FOR SCAN COUNT @C@@@@ J DEL2 . DO YN )@@G@@IT. @E@@@@DONDEL L A10,LCT . GET LINE COUNTYO )@@G@@ @E@@@@ TZ DGONXT . GO TO NEXT LINE? YP )@@G@@@E@@@@ A,U A10,1 . GO TO NEXT LINE @I@@@@YQ )@@G@@ TNZ MOVEF . DELETE FOR MOVE COMMAND YR )@@G@@817TM274 @I@@@@ J NOMOVV . NOPE YS )@@G@@ 817TM275 @G@@@@ L A10,R8 YT )@@G@@ . GET LINE COQNT FROM R8 @I@@@@ J GOMVV YU )@@G@@ . GO TO LINE 817TM277 @I@@@@NOMOVV TNYV )@@G@@Z DGONXT . GO TO NEXT LINE 817TM279 YW )@@G@@@E@@@@ A,U LCT,1 . NO-FORCE A TOP @I@@@@YX )@@G@@GOMVV GOLINE EOFC . GO TO THIS LINE YY )@@G@@817TM281 @E@@@@ SZ MOVEF . CLEAR FLAGS YZ )@@G@@ @C@@@@ SZ DGONXT . @E@@@@ ZA )@@G@@ J NXRQ . NEXT COMMAND @A@@@@ . @/ MOVE TZB )@@G@@O SPECIFIED LINE @C@@@@ ON EDMODE . ZC )@@G@@ @E@@@@GT1 LMJ X10,GET . GET NUMBER ZD )@@G@@@C@@@@ J LINENUM . GO TO IT@E@@@@NEX1 LMZE )@@G@@J X10,GET . GET +,-, OR NUMBER @^@@@@ FIELDATAZF )@@G@@ . @C@@@@ TNE,U A1,'-' . GO BACK?@C@@@@ ZG )@@G@@ J GOMIN+1 . YES @E@@@@ TNE,U A1,'ZH )@@G@@+' . GO FORWARD? @^@@@@ ASCII . @C@@@@ZI )@@G@@ J GOPL+1 . YES @G@@@@ J ZJ )@@G@@ GOPL+2 . YES BUT HAVE THE NUM ALREADY @G@@@@HEAD1 L,ZK )@@G@@U A10,1 . GO TO HEAD,I.E. LINE 1 @C@@@@ ZL )@@G@@ J LINENUM+1 . @C@@@@ OFF EDMOZM )@@G@@DE . @]@@@@ . @E@@@@GOPL SNZ EDCTZN )@@G@@ . SET TO GET AT COL 2 @C@@@@ LMJ X10,GET ZO )@@G@@ . GET REL COUNT@C@@@@ LMJ X10,BIN . CONVERT ZP )@@G@@@C@@@@ J GOTO4 . DO IT *** @E@@@@GOMIN SNZQ )@@G@@Z EDCT . SET TO GET A COL 2 @C@@@@ LMJ ZR )@@G@@ X10,GET . GET REL COUNT@C@@@@ LMJ X10,BIN0 . COZS )@@G@@NVERT @C@@@@ TNZ A10 . -0 @E@@@@ZT )@@G@@ L,U A10,1 . ACTS LIKE -1 @E@@@@ ZU )@@G@@ LN A10,A10 . MAKE NEGATIVE @E@@@@ A ZV )@@G@@ A10,LCT . ADD IN CURRENT COUNT@E@@@@ GOLINE ZW )@@G@@ EOFC . GO TO CORRECT LINE @C@@@@ J GOTOZX )@@G@@9 . LEAVE @]@@@@GOTO3 . @E@@@@ LMJ X3,TZY )@@G@@OPS . GO TO TOP OF FILE @]@@@@NEXT2 . @A@@@@ LMZZ )@@G@@J X10,WRB @E@@@@ LMJ X10,FREAD . FAAA )@@G@@ST READ @^@@@@ J EOFC@]@@@@GOTO4 . @G@@@@AB )@@G@@ TNZ BRKSET . EXIT IF BREAK KEY HIT AC )@@G@@@A@@@@ JGD A10,NEXT2 @E@@@@ SZ FASTAD )@@G@@READ . CLEAR FASTREAD @C@@@@GOTO5 LMJ X10,WRB AE )@@G@@ . WRITE @G@@@@ LMJ X10,READ . REGULARAF )@@G@@ READ OF LINE WANTED @E@@@@ J EOFC . EAG )@@G@@ND OF FILE @C@@@@GOTO7 TNZ GORET . RETURN?AH )@@G@@@C@@@@ J $+3 . NO @E@@@@ SZAI )@@G@@ GORET . CLEAR FLAG @C@@@@ J AJ )@@G@@ 1,X6 . YES @E@@@@GOTO9 TZ BRIEF2 AK )@@G@@ . BRIEF MODE? @C@@@@ J NXRQ . YEAL )@@G@@S @E@@@@ TZ A10 . NO, LINE 0? AM )@@G@@@A@@@@ LMJ X10,TYPOUT @^@@@@ J NXRQAN )@@G@@@]@@@@ . @G@@@@LINENUM LMJ X10,BIN0 . CONVEAO )@@G@@RT SPEC FIELD TO BINARY@E@@@@ S A10,SSAVE . SAAP )@@G@@VE FOR SCAN @G@@@@ TNE A10,LCT . ARE WE TAQ )@@G@@HERE ALREADY? @C@@@@ J GOTO7 . YEAR )@@G@@S! @E@@@@GOTOIT JZ A10,GOTO0 . 'GO TO 0'='TOP' AS )@@G@@@G@@@@ AN,U A10,1 . DECREMENT FOR CORRECT LOOP AT )@@G@@VALUE @I@@@@ AN A10,LCT . IS REQUESTED LINEAU )@@G@@ ABOVE POINTER? @C@@@@ JP A10,GOTO4 . AV )@@G@@NO @C@@@@ AA A10,LCT . @E@@@@ AW )@@G@@ JGD A10,GOTO3 . DO A TOP AND SCAN @E@@@@ LMAX )@@G@@J X3,TOPS . DO A TOP @G@@@@ J AY )@@G@@ GOTO5 . WANTS TO GO TO LINE 1 @E@@@@GOTO0 LMAZ )@@G@@J X3,TOPS . GO TO TOP @C@@@@ J BA )@@G@@ GOTO7 . EXIT @^@@@@ . MOVE TO LAST LINE @G@@@@LAST1 BB )@@G@@ TNZ OK . AT THE END OF THE FILE ALREADY @I@@@@BC )@@G@@ LMJ X3,TOPS . HAVE TO GO ROUND TO GET IT TO WOBD )@@G@@RK @E@@@@ L,U X3,NXRQ . REGULAR ENTRY BE )@@G@@ @E@@@@LAST3 LMJ X9,IMAGESAV . SAVE IMAGE BF )@@G@@@E@@@@ LMJ X10,WRB . WRITE OUT IMAGE @E@@@@BG )@@G@@ LMJ X10,FREAD . READ FAST @E@@@@ BH )@@G@@ J LAST2 . END OF FILE @E@@@@ TNBI )@@G@@Z BRKSET . BREAK KEY? @E@@@@ J BJ )@@G@@ LAST3 . READ ANOTHER @C@@@@LAST2 SZ FASTBK )@@G@@READ . @E@@@@ LMJ X9,IMAGEREC . RBL )@@G@@ECOVER IMAGE @E@@@@ TNZ BRIEF2 . BRIEF MBM )@@G@@ODE? @C@@@@ LMJ X10,TYPOUT . TYPE IT@C@@@@BN )@@G@@ SZ ICW . @E@@@@ SNZ BO )@@G@@ WINHIB . WRITE INHIBIT @C@@@@ SZ LENGBP )@@G@@TH . @C@@@@ J 0,X3 . BQ )@@G@@NEXT @G@@@@ . @/ THIS COMMAND SENDS A MESSAGE TO THE OPERATOR AND MAY SBR )@@G@@OLICIT @^@@@@ . A RESPONSE @E@@@@OPR1 L A0,BBS )@@G@@LANK2 . BLANK OUT COMMAND @C@@@@ S A0,EDIT14 BT )@@G@@ . @G@@@@OPR2 SZ COMPKT . CLEAR 1BU )@@G@@ST AND 3RD WORDS @C@@@@ SZ COMPKT+2 . BV )@@G@@ @E@@@@ SZ A0 . SET FOR DIVIDE BW )@@G@@@E@@@@ L A1,COUNT . GET NO. _CHAR @E@@@@BX )@@G@@ DI,U A0,4 . GET NO. WORDS @E@@@@ BY )@@G@@ TZ A1 . REMAINDER? @E@@@@ A,BZ )@@G@@U A0,1 . YES, ROUND UP @E@@@@ CONVAF CA )@@G@@ EDIT14,EDIT14 . ASCII TO FD @E@@@@ L,U A0,FCB )@@G@@IMBUF . GET MESSAGE ADDRESS@E@@@@ S A0,COMADD CC )@@G@@ . PUT IN PACKET @E@@@@ E$DIT FTAB CD )@@G@@ . START EDIT @G@@@@ E$FD1 RUNID . INCE )@@G@@SERT RUNID AT HEAD OF MSG @C@@@@ E$CHAR 053 CF )@@G@@ . INSET : @I@@@@ TZ CARDPCH . CARD PUNCH MSGCG )@@G@@? ED011690 @I@@@@ J ALL1WD CH )@@G@@ . YES, COPY ALL OF 1ST WORD ED011700 @C@@@@ E$CHAR CI )@@G@@ EDIT14,,S5 . 1ST CHAR@E@@@@ E$CHAR EDIT14,,S6 CJ )@@G@@ . SECOND CHARACTER @I@@@@ J COPRES . COPCK )@@G@@Y THE REST ED011720 @I@@@@ALL1WD E$COPY 6,EDCL )@@G@@IT14 . COPY ALL OF 1ST WORD ED011730 @I@@@@ CM )@@G@@ SZ CARDPCH . CLEAR FLAGC ED0117CN )@@G@@40 @I@@@@COPRES L,U A0,EDIT14+1 . COPY STARTING WITH SCO )@@G@@ECOND WORD ED011760 @E@@@@ L A1,COUNT . CHCP )@@G@@AR COUNT @E@@@@ AN,U A1,6 . MINUS FICQ )@@G@@RST WORD @C@@@@ E$COPY . STICK IN THE REST @C@@@@CR )@@G@@ E$COLN . GET COLUMN NUMBER @E@@@@ TG,U CS )@@G@@ A0,51 . COUNT >50? @C@@@@ L,U A0,5CT )@@G@@0 . @C@@@@ S A0,COMCHR . CU )@@G@@ @^@@@@ E$DITX . @E@@@@ L A1,DELIM CV )@@G@@ . GET DELIMITER @E@@@@ TE,U A1,'*' CW )@@G@@ . * MEANS SOLICITED @E@@@@ J OPROUT . NCX )@@G@@O ANSWER WANTED @E@@@@ L,U A0,50 . MAX ANSCY )@@G@@WER=50 @C@@@@ S A0,COMIEXP . @E@@@@CZ )@@G@@ L,U A0,FIMBUF . ANSWER TO IMBUF @A@@@@ DA )@@G@@ S A0,COMIADD @E@@@@OPROUT L,U A0,COMPKT DB )@@G@@ . PACKET ADDRESS @G@@@@ ER COM$ . SDC )@@G@@END MESSAGE TO CONSOLE @E@@@@ TE,U A1,'*' DD )@@G@@ . ANSWER REQUIRED? @C@@@@ J NXRQ . NDE )@@G@@O @E@@@@ L A0,COMICHR . INPUT CHAR COUNT DF )@@G@@@E@@@@ DSA A0,36 . SHIFT FOR DIVIDE @C@@@@DG )@@G@@ DI,U A0,6 . @C@@@@ TZ DH )@@G@@ A1 . @C@@@@ A,U A0,1 DI )@@G@@ . @C@@@@ LSSL A0,18 . @E@@@@DJ )@@G@@ A A0,(0100,FIMBUF) . FORM PRINT PACKET @E@@@@ DK )@@G@@ ER PRINT$ . PRINT IT @E@@@@ J DL )@@G@@ NXRQ . NEXT COMMAND @A@@@@ . @/ THIS ROUTINEDM )@@G@@ PRINT LINES @G@@@@LNP1 SNZ LNPRT . SET LINE NDN )@@G@@UMBER PRINTER @E@@@@PRINT1 SNZ PNTINQ . REAL DO )@@G@@PRINT ENTRANCE @E@@@@PRINT1Q L A1,DELIM . GET DELDP )@@G@@IMITER @E@@@@ TNE,U A1,'+' . WAS IT PLUS? DQ )@@G@@ @G@@@@ J OUTPT1 . YES, DON'T PRINT THDR )@@G@@IS LINE @E@@@@ TNE,U A1,'!' . PRINT ALL DS )@@G@@ @C@@@@ J PRINTALL . YES @E@@@@ DT )@@G@@ LMJ X10,GET . GET FIRST ARG @G@@@@ TZDU )@@G@@ ONSITE . ONSITE PRINTOUT? @E@@@@ DV )@@G@@ JZ A1,PRINTALL . ASSUME A ! IF NO ARG@A@@@@ LMDW )@@G@@J X10,BIN @E@@@@ S A10,DIT1 . SAVE FIDX )@@G@@RST ARG @C@@@@ LMJ X10,GET . LOOK FOR NEXTDY )@@G@@@C@@@@ LMJ X10,BIN . CONVERT @C@@@@ TGDZ )@@G@@ A10,DIT1 . FIRST BIGGER?@E@@@@ JNZ A10,PRINT3EA )@@G@@ . NO, NEW FORMAT @E@@@@ JNZ A10,LINERR EB )@@G@@ . LINE REF ERROR @E@@@@ L A10,DIT1 . YES, REEC )@@G@@LOAD ARG ONE. @E@@@@ S A10,SSAVE . SAVE FOED )@@G@@R SCAN COUNT@E@@@@ TNZ LCT . ADD 1 IF LINEEE )@@G@@ 0 @G@@@@ A,U A10,1 . ADJUST TO PRINT OUT COEF )@@G@@RRECT NUMB @]@@@@PRINT2 . @G@@@@ TZ LCT EG )@@G@@ . SKIP TYPOUT IF LINE COUNT IS 0 @A@@@@ LMJ X10,TYPOUTEH )@@G@@ @A@@@@ JZ A10,LIEXIT @E@@@@ TZ EI )@@G@@ BRKSET . WAS BREAK KEY HIT? @E@@@@ J LIEXEJ )@@G@@IT . YES, STOP PRINTING @A@@@@ LMJ X10,WRB EK )@@G@@ @A@@@@ LMJ X10,READ @^@@@@ J EL )@@G@@ EOFC@A@@@@ JGD A10,PRINT2 @C@@@@PRINT3 AN EM )@@G@@ A10,DIT1 . NET LENGTH @E@@@@ S A10,DIT2 EN )@@G@@ . SAVE DIFF @E@@@@ S A10,SSAVE . SEO )@@G@@AVE FOR SCAN COUNT@E@@@@ L A10,DIT1 . GET STREP )@@G@@T @C@@@@ A,U A10,1 . ADJUST @E@@@@EQ )@@G@@ GOLINE EOFC . GO TO LINE @C@@@@ ER )@@G@@ L A10,DIT2 . RELOAD A10 @C@@@@ J PRINES )@@G@@T2 . PRINT LINES @I@@@@PRINTALL LMJ X3,TOPS . ET )@@G@@COMMAND TO PRINT ALL LINES IN FILE @G@@@@ L,U A10,0EU )@@G@@777776 . BIG NUMBER IN A10 @E@@@@ S EV )@@G@@ A10,SSAVE . SAVE FOR SCAN COUNT@E@@@@ SNZ FASTEW )@@G@@READ . FAST READ WILL DO @E@@@@ J PRINT2+3 EX )@@G@@ . DON'T PRINT 1ST LINE @E@@@@LIEXIT SZ PNTINQ EY )@@G@@ . CLEAR REAL PRINT @E@@@@ TNZ PUNCH . PEZ )@@G@@UNCH COMMAND? @C@@@@ J NXRQ . NOPE FA )@@G@@@E@@@@ L,U A1,10000 . 3SECONDS @E@@@@FB )@@G@@ ER TWAIT$ . WAIT 1 SECOND @C@@@@ FC )@@G@@ SZ PUNCH . @C@@@@ J NXRQFD )@@G@@ . EXIT @A@@@@ . OUTPUT AFTER PRESENT LINE @]@@@@FE )@@G@@ . @G@@@@OUTPT1 LMJ X10,GET . PICK UP NUMBEFF )@@G@@R OF LINES @E@@@@ TNZ A1 . NOHING FFG )@@G@@OUND ? @C@@@@ L,U A1,061 . ASSUME 1@E@@@@FH )@@G@@ LMJ X10,BIN . CONVERT TO BINARY @E@@@@ FI )@@G@@ TNZ OK . END OF FILE? @C@@@@ J FJ )@@G@@ EOFC . YES @G@@@@ LMJ X10,WRB FK )@@G@@ . CURRENT IMAGE TO OUTPUT FILE @G@@@@ LMJ X10,FL )@@G@@READ . IMAGE FROM INPUT FILE @E@@@@ J FM )@@G@@ EOFC . END OF FILE RETURN @I@@@@ J PRINFN )@@G@@T2 . NORMAL RETURN- USE PRINT ROUTIN E NOW @C@@@@ . THIFO )@@G@@S COMMAND PUNCH USED TO PUNCH PAPER TAPE @C@@@@PUNCH1 TYP E30,FP )@@G@@L30 . @C@@@@ L,U A1,3000 . 3SFQ )@@G@@ECONDS@E@@@@ ER TWAIT$ . WAIT 1 SECOND FR )@@G@@@C@@@@ SNZ PUNCH . PROCEED @C@@@@ J FS )@@G@@ PRINT1 . @C@@@@ . SEND PRINTOUT TO ONSITE PRIFT )@@G@@NTER(OR PUNCH) @E@@@@LNSITE1 SNZ LNPRT . PRINT LINE FU )@@G@@NUMBERS @C@@@@ J SITE1 . @G@@@@FV )@@G@@CPUNCH SNZ CARDPCH . SET PUNCH FLAG AND ACT LIKE SITE FW )@@G@@@C@@@@SITE1 E$DIT FTAB . @^@@@@ FIFX )@@G@@ELDATA . @G@@@@ E$MSG ('PR$&&&') . START USFY )@@G@@E IMAGE @^@@@@ ASCII . @E@@@@ ER FZ )@@G@@ DATE$ . GET TIME OF DAY @C@@@@ E$FD1 A1 GA )@@G@@ . USE IT @C@@@@ E$DITX . GB )@@G@@ @A@@@@ DL A0,FIMBUF @E@@@@ DS GC )@@G@@ A0,ALTPKT+1 . PUT IN PACKET @C@@@@ E$DIT FTABGD )@@G@@ . @E@@@@ E$MSG ASGPR . STGE )@@G@@ART ASG IMAGE @E@@@@ E$FD2 ALTPKT+1 . PUT IN FGF )@@G@@ILENAME @A@@@@ E$MSGR . FINISH MESSAGE@^@@@@ E$GG )@@G@@DITX . @C@@@@ L A0,(5,FIMBUF) . CSF IT@C@@@@GH )@@G@@ ER CSF$ . @C@@@@ JNZ GI )@@G@@ A0,FILERR . ERROR @C@@@@ SNZ ONSITE GJ )@@G@@. SET FLAG @C@@@@ TZ CARDPCH . PUNCH? @C@@@@GK )@@G@@ J PRINT1 . YES @E@@@@ L,U GL )@@G@@ A0,TREADSITE . HEADING? @C@@@@ ER ATREGM )@@G@@AD$ . @G@@@@ L,U A1,'.' . IGN )@@G@@NSERT . TO STOP PRTCA$ SCAN @C@@@@ S,Q1 A1,IMBUF+2,A0 GO )@@G@@ . @I@@@@ DL A1,HEADPA . GET START OF GP )@@G@@HEADING CONTROL IMAGE @C@@@@ DS A1,IMBUF GQ )@@G@@ . PUT IN @E@@@@ LSSL A0,18 . SHIFT WORD COGR )@@G@@UNT @E@@@@ A A0,(5,ALTPKT+1) . FORM PRTCA$ PACKET GS )@@G@@@C@@@@ ER APRTCA$ . @E@@@@ TZGT )@@G@@ BRKSET . BREAK KEY HIT? @C@@@@ J GU )@@G@@ SITEBRK . ESCAPE @G@@@@ TZ NUMACT GV )@@G@@ . IS THIS A NUMBERED ACTIVITY? @C@@@@ J FORKTR GW )@@G@@ . YES @E@@@@ L A0,(0201,FORKTR) . LET'S BEGX )@@G@@ CLEVER @G@@@@ ER FORK$ . GET AN ACTIVITGY )@@G@@Y NUMBER @G@@@@ SNZ NUMACT . SET FLAG SAGZ )@@G@@YING WE NUMED IT @G@@@@ ER EXIT$ . FOHA )@@G@@RGET THE UNNUMBERED ONE @G@@@@FORKTR L A0,(0100,TRAILM)HB )@@G@@ . START ANOTHER ACTIVITY @E@@@@ ER FORK$ HC )@@G@@ .. TO ASK FOR MSG @E@@@@ J PRINT1 HD )@@G@@ . GO TO PRINT ROUTINE@E@@@@SITEBRK SZ ONSITE . CHE )@@G@@LEAR FLAG @E@@@@ J NXRQ . NEXT COHF )@@G@@MMAND @]@@@@PNTALT . @E@@@@ S A0,ALTPKT HG )@@G@@ . PUT A0 IN PACKET @E@@@@ L,U A0,ALTPKT . GEHH )@@G@@T PACKET ADDRESS @C@@@@ TZ CARDPCH . CPUNCH? HI )@@G@@@C@@@@ J PNCHALT . YES @E@@@@ ERHJ )@@G@@ PRNTA$ . ALT PRINT @C@@@@ J HK )@@G@@ 0,X10 . EXIT @E@@@@PNCHALT SZ,S2 ALTPKT HL )@@G@@ . REMOVE LINE SKIP @C@@@@ ER PNCHA$ . PUHM )@@G@@NCH IT@C@@@@ J 0,X10 . EXIT @^@@@@ . FINHN )@@G@@ISH HERE @E@@@@ONSREC SZ ONSITE . CLEAR PHO )@@G@@OINTER @G@@@@ SZ LNPRT . CLEAR LINE NUMHP )@@G@@BER INDICATOR @E@@@@ TZ CARDPCH . CARD PUHQ )@@G@@NCH COMMAND?@C@@@@ J ONSBRK . YES @G@@@@HR )@@G@@ E$DIT FTAB . TIME AND DATE SIGN OFF HS )@@G@@@E@@@@ E$MSG E33 . END PRINT ... @E@@@@HT )@@G@@ ER TDATE$ . GET TIME AND DATE @C@@@@ HU )@@G@@ S A0,A5 . SAVE @C@@@@ E$DAY3 . MOHV )@@G@@NTH DAY, YEAR @A@@@@ E$MSGR . AT ... @E@@@@HW )@@G@@ E$TIME A5 . TIME OF DAY @^@@@@ HX )@@G@@ E$DITX . @G@@@@ L A0,(0212,FIMBUF) . PRINT HY )@@G@@IT ALTERNATELY @G@@@@ LMJ X10,PNTALT . PUHZ )@@G@@T IN ALTERNATE FILE @G@@@@ LMJ X10,FILELT IA )@@G@@ . PRINT FILE.ELEMENT NAME @E@@@@ L A0,(0114,FIB )@@G@@IMBUF) . PRINT IT ALTERNATE@C@@@@ LMJ X10,PNTALT IC )@@G@@ . @E@@@@ L A0,(06601,BLANKS) . SKIP A PAGE ID )@@G@@ @G@@@@ LMJ X10,PNTALT . PRINT TO ALTERNATE FIE )@@G@@ILE @E@@@@ E$DIT FTAB . START EDIT IF )@@G@@ @C@@@@ L,U R2,10 . 10 WORDS@A@@@@ASKLPSIG )@@G@@ E$FD2 DASH . @C@@@@ JGD R2,ASKLPS IH )@@G@@ . LOOP @^@@@@ E$DITX . @C@@@@ L A0,(II )@@G@@0326,FIMBUF) . @C@@@@ LMJ X10,PNTALT . PRIIJ )@@G@@NT IT @C@@@@ L A0,(0326,FIMBUF) . @C@@@@ IK )@@G@@ LMJ X10,PNTALT . PRINT IT @G@@@@ L A0,(IL )@@G@@P 1,L42,E42) . **NO CARD DECK** PLEASE RETURN @C@@@@ LMJ IM )@@G@@ X10,PNTALT . @E@@@@ L A0,BITS(1) IN )@@G@@ . WAIT FOR ACTIVITY 1 @C@@@@ ER AWAIT$ . IO )@@G@@ @E@@@@ L A0,IMSAV . GET CONTROL WORD IP )@@G@@@G@@@@ LMJ X10,PRNTALT . PRINT TO ALTERNATE FILE IQ )@@G@@ @E@@@@ONSBRK E$DIT FTAB . BREAKPOINT FILE IR )@@G@@@C@@@@ E$MSG BRKPR . @C@@@@ E$IS )@@G@@FD2 ALTPKT+1 . @^@@@@ E$DITX . @C@@@@IT )@@G@@ L A0,(3,FIMBUF) . @C@@@@ ER IU )@@G@@ CSF$ . @E@@@@ E$DIT FTAB IV )@@G@@ . FREE FILE @C@@@@ E$MSG FREPR . IW )@@G@@ @C@@@@ E$FD2 ALTPKT+1 . @A@@@@ IX )@@G@@ E$DITX . @E@@@@ L A0,(4,FIMBUF) IY )@@G@@ . FREE FILE @C@@@@ ER CSF$ . IZ )@@G@@ @C@@@@ E$DIT FTAB . @E@@@@ JA )@@G@@ TZ CARDPCH . PUNCH FILE? @C@@@@ J JB )@@G@@ SIPCH . YES @C@@@@ E$MSG SYMPR JC )@@G@@ . @C@@@@ J SIPRT . JD )@@G@@@E@@@@SIPCH E$MSG SYMCP . SYM PUNCH @C@@@@JE )@@G@@SIPRT E$FD2 ALTPKT+1 . @^@@@@ E$MSGR JF )@@G@@ . @^@@@@ E$DITX . @E@@@@ L A0,(4,FIMBJG )@@G@@UF) . SYM FILE @C@@@@ ER CSF$ JH )@@G@@ . @E@@@@ JNZ A0,CSFRET . GO PRINT A0 JI )@@G@@ @E@@@@ TNZ CARDPCH . CPUNCH COMMAND? JJ )@@G@@@E@@@@ J NXRQ . GET NEXT COMMAND @I@@@@JK )@@G@@ DL A0,('MSG? ') . TYJL )@@G@@PE A @C@@@@ DS A0,IMBUF . @E@@@@JM )@@G@@ L,U A0,TREADSEQ . HEADING? @C@@@@ JN )@@G@@ ER ATREAD$ . @E@@@@ JZ A0,NJO )@@G@@XRQ . EXIT NO MSG @C@@@@ MSI,U A0,4 JP )@@G@@. CHANGE TO CHARS @E@@@@ S A0,COUNT . SAVE COUJQ )@@G@@NT @E@@@@ J OPR2 . BEHAVE LIKE OPJR )@@G@@R MSG @C@@@@TRAILM L,U A0,TREADMSG . @C@@@@ JS )@@G@@ ER ATREAD$ . @E@@@@ LSSL A0,1JT )@@G@@8 . GET WORD COUNT @C@@@@ A A0,(0100,EJU )@@G@@DIT14) . @C@@@@ S A0,IMSAV . JV )@@G@@@G@@@@ ER EXIT$ . SAVE CONTRRL AND EXIT JW )@@G@@ @E@@@@FILELT L,U X7,OUTBL . GET ADDRESS OF OUTBLJX )@@G@@@E@@@@ TNOPTN 'R' . R OPTION USES INTBL @C@@@@JY )@@G@@ L,U X7,INTBL . @E@@@@ TNOPTN JZ )@@G@@ 'U' . SO DOES U OPTION @C@@@@ L,U X7,IKA )@@G@@NTBL . @E@@@@ DL A0,0,X7 . INKB )@@G@@TERNAL FILENAME @E@@@@ DS A0,FRMIMG . FACIL$ PKC )@@G@@KT @C@@@@ L,U A0,FRMIMG . @C@@@@KD )@@G@@ ER FACIL$ . @E@@@@ E$DIT KE )@@G@@ FTAB . START EDIT @E@@@@ E$FD2 FRMIKF )@@G@@MG+4 . QUALIFIER @^@@@@ FIELDATA . @C@@@@KG )@@G@@ E$CHAR '*' . * @C@@@@ E$FD2 KH )@@G@@ FRMIMG+2 . FILENAME@C@@@@ E$CHAR '(' KI )@@G@@ . ( @A@@@@ E$DECV FRMIMG+6,,S6 @C@@@@ E$KJ )@@G@@CHAR ')' . ) @C@@@@ E$CHAR '.' KK )@@G@@ . . @G@@@@ L A0,2,X7 . GET ELEMENTKL )@@G@@ NAME 1ST WORD @C@@@@ TZ 2,X7 . ZERO KM )@@G@@ @C@@@@ TNE A0,BLANKS . OR BLANK@E@@@@ KN )@@G@@ J SNOELM . IF CO NO ELEMENT @C@@@@ E$KO )@@G@@FD2 2,X7 . ELEMENT @G@@@@ L A0,6,X7 KP )@@G@@ . 1ST WORD OF VERSION NAME @C@@@@ TZ 6,X7KQ )@@G@@ . ZERO @C@@@@ TNE A0,BLANKS . ORKR )@@G@@ BLANK@C@@@@ J SNOVER . @C@@@@ KS )@@G@@ E$CHAR '/' . / @C@@@@ E$FD2 6,X7KT )@@G@@ . VERSION @C@@@@SNOVER E$CHAR '(' . ( KU )@@G@@ @^@@@@ ASCII . @E@@@@ L A1,RC KV )@@G@@ . GET REQUESTED CYCLE @C@@@@ A,U A1,1 KW )@@G@@ . ADD 1 @E@@@@ TOPTN 'U' . IF ITS NOT A UKX )@@G@@ @G@@@@ SZ A1 . SET TO ZERO UNLESS IKY )@@G@@TS...? @C@@@@ TNOPTN 'R' . R OPTION@G@@@@KZ )@@G@@ L A1,RC . JUST RC ALONE WILL DO LA )@@G@@@E@@@@ L A0,A1 . GET IT TO A1 @C@@@@LB )@@G@@ E$DECV . REQUESTED CYCLE @C@@@@ E$CHAR LC )@@G@@ 040 . ) @^@@@@SNOELM E$DITX . @C@@@@ LD )@@G@@ J 0,X10 . @C@@@@ . THIS COMMAND PRINTS OLE )@@G@@UT TIME AND CYCLES @E@@@@TIME1 E$DIT FTAB . SLF )@@G@@TART EDIT @E@@@@ L,S1 X6,INTBL+9 . GET SYMBLG )@@G@@OLIC TYPE @E@@@@ TNOPTN 'I' . NOT I OPTION LH )@@G@@ @E@@@@ L,S1 X6,OUTBL+9 . GET SYMBOLIC TYPE LI )@@G@@@I@@@@ L A0,X6 . GET TYPE NUM LJ )@@G@@ 817TM283 @I@@@@ TLE,U A0,ELTLEN+1 . OUT OF RLK )@@G@@ANGE? 817TM284 @I@@@@ J NOCTY LL )@@G@@ . NOPE 817TM285 @I@@@@ E$LM )@@G@@OCTV . 817TM286 LN )@@G@@@I@@@@ J YOCTY . FINISH LO )@@G@@ 817TM287 @I@@@@NOCTY . LP )@@G@@ 817TM288 @E@@@@ E$FD1 ELT-1,X6 LQ )@@G@@ . INSERT TYPE NAME @I@@@@YOCTY . LR )@@G@@ 817TM290 @E@@@@ E$SKIP LS )@@G@@ 2 . SKIP TWO SPACES @^@@@@ FIELDATA . LT )@@G@@@E@@@@ E$MSG ('&-(&&&') . FOR CYCLE @^@@@@LU )@@G@@ ASCII . @E@@@@ LMJ X10,TIMMSG . GLV )@@G@@O TO ID ROUTINE @G@@@@ LMJ X10,FILELT . PRINT FILW )@@G@@LE.ELEMENT NAME @C@@@@ FTYPE FIMBUF,14 . LX )@@G@@ @C@@@@ J NXRQ . @E@@@@ . THILY )@@G@@S COMMAND ALLOWS INSERTION OF COMMENTS INTO CODE @]@@@@DOCUMENT1 . LZ )@@G@@@E@@@@ TZ LCT . IS LINE COUNT 0? @C@@@@MA )@@G@@ J DOC2 . NO @G@@@@ TYP MB )@@G@@ E21,L21 . TYPE ILLEGAL AT LINE 0 @C@@@@ J MC )@@G@@ NXRQ . RETURN @]@@@@DOC2 . @G@@@@ SZMD )@@G@@ DOCP . CLEAR PERIOD SPACE INDICATOR @E@@@@ ME )@@G@@ LMJ X10,GET . GET LINE RANGE @G@@@@ JZMF )@@G@@ A1,NUMERR . HAVE TO HAVE SOMETHING @E@@@@ MG )@@G@@ LMJ X10,BIN . GET VALUE LESS 1 @E@@@@ S MH )@@G@@ A10,R9 . USE R9 FOR JGD @E@@@@ LMJ MI )@@G@@ X10,GET . COLUMN NUMBER @E@@@@ TNZ A1 MJ )@@G@@ . ANY COLUMN GIVEN @E@@@@ L,U A1,06461 MK )@@G@@ . ASSUME COLUMN 41 @E@@@@ LMJ X10,BIN ML )@@G@@ . 1 LESS THEN VALUE @C@@@@ S A10,DIT2 . SAMM )@@G@@VE @E@@@@ LMJ X10,GET . GET PERIOD INDICATORMN )@@G@@@C@@@@ JZ A1,NOPER . NONE @C@@@@ TNMO )@@G@@E,U A1,025 . YES @E@@@@ SNZ DOCP MP )@@G@@ . SET PERIOD INDICATOR@G@@@@NOPER SNZ DOCCOM MQ )@@G@@ . SET INDICATOR FOR TYPOUT @E@@@@ LMJ X9,IMAGESAMR )@@G@@V . SAVE IMAGE @E@@@@ SN RC,DC1 MS )@@G@@ . SET DELETED FLAG @G@@@@ LMJ X10,WRB . WRMT )@@G@@ITE OUT DELETED IMAGE @E@@@@ L X1,DIT2 MU )@@G@@ . GET COLUMN NUMBER @E@@@@REDOC LXI,U X1,1 . LOMV )@@G@@AD INCREMENT @C@@@@ TNZ DOCP . PERIOD? MW )@@G@@@C@@@@ J SKIPPER . NOPE @E@@@@ L,MX )@@G@@U A0,'.' . GET PERIOD @C@@@@ S MY )@@G@@ A0,IMAG80,*X1 . STORE @C@@@@ L,U A0,' ' MZ )@@G@@ . BLANK @C@@@@ S A0,IMAG80,*X1 . STORE @E@@@@NA )@@G@@SKIPPER L,U A0,004 . INSERT STOPCODE @C@@@@ NB )@@G@@ S A0,IMAG80,X1 . STORE @C@@@@ SZ IMAGNC )@@G@@80+1,X1 . ZERO OUT@C@@@@ SZ IMAG80+2,X1 . ZEND )@@G@@RO OUT@C@@@@ SZ IMAG80+3,X1 . ZERO OUT@C@@@@ NE )@@G@@ SZ IMAG80+4,X1 . ZERO OUT@C@@@@ SZ IMAGNF )@@G@@80+5,X1 . ZERO OUT@C@@@@ SZ IMAG80+6,X1 . ZENG )@@G@@RO OUT@E@@@@ L,U A0,0,X1 . GET LENGTH NH )@@G@@@E@@@@ TG A0,LENGTH . INCREASE LENGTH @E@@@@NI )@@G@@ S X1,LENGTH . ONLY IF NECESSARY @C@@@@ NJ )@@G@@ LMJ X10,PACK . PACK IT @E@@@@ SN RC,ANK )@@G@@C1 . ADDED THIS CYCLE @C@@@@ LMJ X10,TYPOUTNL )@@G@@ . TREAD IT@E@@@@ L A1,BLANK2 . PAD OUT NM )@@G@@WITH BLANKS @E@@@@ S A1,EDIT14,A0 . AT THE END NN )@@G@@ @E@@@@ A,U A0,1 . 1 MORE WORD NO )@@G@@@G@@@@ LMJ X10,READIT . DECODE EDIT14 INTO EDIT80 NP )@@G@@ @E@@@@ L X2,(1,0) . INCREMENTOR NQ )@@G@@@E@@@@ L R1,COUNT . COMMENT LENGTH @E@@@@NR )@@G@@ L A0,EDIT80,*X2 . GET COMMENT CHAR @E@@@@ NS )@@G@@ S A0,IMAG80,X1 . PUTIINTO IMAGE @E@@@@ TLNT )@@G@@EM,U X1,132 . NO MORE THAN 132 @E@@@@ JGD NU )@@G@@ R1,$-3 . LOOP TIL END @C@@@@ S X1,LNV )@@G@@ENGTH . @C@@@@ LMJ X10,PACK . NW )@@G@@ @E@@@@DOCNOC LMJ X10,WRB . WRITE IT OUT NX )@@G@@@E@@@@ SZ DOCCOM . CLEAR FLAG @E@@@@NY )@@G@@ LMJ X10,READ . READ NEXT @E@@@@ NZ )@@G@@ J EOFC . END OF FILE @E@@@@ JGOA )@@G@@D R9,NOPER . LOOP TIL DONE @E@@@@ J OB )@@G@@ NXRQ . NEXT COMMAND @E@@@@DOCEOF JN A0,FOC )@@G@@IEXIT . NOT AN EOF CARD @C@@@@ L A5,A0 OD )@@G@@ . SAVE A0 @E@@@@ LMJ X9,IMAGEREC . RECOVER OE )@@G@@IMAGE @E@@@@ AND,U A5,0777 . MASK OUT SENTOF )@@G@@INEL @G@@@@ TNE,U A6,'X' . ONLY AN X WILL IGNOROG )@@G@@E @E@@@@ SZ R9 . CLEAR LOOP COUOH )@@G@@NT @C@@@@ TLE,U A6,'9'+1 . NUMBER? @C@@@@ OI )@@G@@ TLE,U A6,'1' . NUMBER? @E@@@@ J DOCNOJ )@@G@@OC . RETURN TO WRITE OUT @C@@@@ AND,U A6,017 OK )@@G@@ . TO OCTAL@E@@@@ L X1,DIT2 . GET COLUOL )@@G@@MN # @C@@@@ A X1,A7 . ADD BIAS@E@@@@OM )@@G@@ J REDOC . RE DOCUMENT IT @^@@@@ . PRION )@@G@@NT CPU TIME @I@@@@CPT1 L A0,(28,DITBUF) . USE DITOO )@@G@@TO BUFFER TO GET PCT INFO @C@@@@ ER PCT$ OP )@@G@@ . @E@@@@ L A4,DITBUF+026 . GET QUANOQ )@@G@@TUM COUNT @I@@@@PRNTTIM . ENTRY FROM TIME CHECK OR )@@G@@ 817TM292 @E@@@@ DSA A4,36 OS )@@G@@ . SHIFT FOR DIVIDE @E@@@@ DI,U A4,5000 OT )@@G@@. TO SECONDS @E@@@@ DSA A4,36 . SHIFT FOOU )@@G@@R DIVIDE @E@@@@ DI,U A4,60 . MINS AND SECS.OV )@@G@@ @E@@@@ A$EDIT ETAB . PRINT IT OUT OW )@@G@@@E@@@@ A$EDECV A4 . DECIMAL FIELDATA @C@@@@OX )@@G@@ A$EMSG ('M &S&&&&') . MESSAGE @C@@@@ A$EDECV OY )@@G@@ A5 . SECONDS@C@@@@ A$EMSGR . CONTINUE MESSOZ )@@G@@AGE @^@@@@ A$EDITX . @C@@@@ TYP IMBUPA )@@G@@F,5 . @C@@@@ J NXRQ . PB )@@G@@ @C@@@@SCALE1 L,U R2,12 . @C@@@@ PC )@@G@@ A$EDIT ETAB . @E@@@@ LMJ X10,PD )@@G@@GET . GET PARAMETER @G@@@@ JZ A1,SCALE2 PE )@@G@@ . IF NONE, START IN COL 1 @E@@@@ LMJ X10,PF )@@G@@BIN . CONVERT TO BINARY-1 @E@@@@ L A0,A10 PG )@@G@@ . GET RESULT @A@@@@ A$ESKIP . SKIP N-1 COLSPH )@@G@@@E@@@@ DSA A10,36 . SHIFT FOR DIVIDE @C@@@@PI )@@G@@ DI,U A10,4 . TO WORDS@E@@@@ AN PJ )@@G@@ A10,R2 . DECREASE BY R2 @E@@@@ SM A10,PK )@@G@@R2 . MAGNITUDE BACK TO R2@C@@@@SCALE2 A$EFD2 ('12345678PL )@@G@@') . @G@@@@ A$EFD1 ('90 ') . INSERT CPM )@@G@@HARACTERS IN BUFFER @C@@@@ JGD R2,SCALE2 . PN )@@G@@ @^@@@@ A$EDITX . @C@@@@ DO LN132 , TYP IMBUF,33 PO )@@G@@ .TYPE IT @C@@@@ DO 1-LN132 , TYP IMBUF,18 . PP )@@G@@@C@@@@ J NXRQ . @A@@@@ .PQ )@@G@@ QUICK PRINT COMMAND @E@@@@LNQ1 SNZ LNPRT . PRINPR )@@G@@T LINE NUMBERS @G@@@@QUICK1 SNZ QUICKP . SET QUICK PS )@@G@@PRINT INDICATOR @E@@@@ J PRINT1Q . NPT )@@G@@OW ACT LIKE PRINT @G@@@@ . THESE COMMANDS TURN QUICK MODE ON AND OFF FORPU )@@G@@ ALL PRINTOUT @]@@@@ . @/ @E@@@@SEQ1 . INSERT SEQUEPV )@@G@@NCE NUMBER AND ID IN 73:80 @E@@@@ LMJ X3,TOPS PW )@@G@@ . GO TO TOP OF FILE @E@@@@ LMJ X10,WRB PX )@@G@@ . WRITE OUT *SDFF* @C@@@@ LA,U A6,100 . PY )@@G@@ @E@@@@ SA A6,LIMIT . SET INGREMENT=100 PZ )@@G@@@E@@@@ LA,U A8,20 . SET IMAGE=14 @E@@@@QA )@@G@@ TNZ DELIM . WAS AN ID GIVEN? @C@@@@ QB )@@G@@ J SEQ3 . NO @C@@@@ LMJ X10,QC )@@G@@GET . GET ID@E@@@@ JZ A1,SYNERR . QD )@@G@@ERROR IF VOID @^@@@@ FIELDATA . @E@@@@ L QE )@@G@@ A6,('000000') . SET ID TO ZEROES @C@@@@ L A7,(QF )@@G@@'00 ') . @^@@@@ ASCII . @G@@@@ LAQG )@@G@@ A5,A1 . LEFT JUSTIFY ID IN FIELD @G@@@@ QH )@@G@@ DSL A5,6 . OF FIELD-DATA ZEROS @C@@@@QI )@@G@@ JNZ A5,$-1 . @G@@@@ DS QJ )@@G@@ A6,IMBUF . GET READY FOR CONVERSION @G@@@@ L,QK )@@G@@U A0,2 . CONVERT 8 FD CHAR. IN IMBUF @G@@@@ QL )@@G@@ CONVFA IMBUF,IMBUF . TO 8 ASCII CHAR. IN IMBUF @C@@@@QM )@@G@@SEQ3 . . @E@@@@ L,U QN )@@G@@ A10,1 . INITALIZE START @E@@@@ LMJ X10,QO )@@G@@GET . GET INCREMENT @E@@@@ JZ A1,SEQ4 QP )@@G@@ . JUMP IF NONE GIVEN@G@@@@ LMJ X10,BIN0 QQ )@@G@@ . CONVERT INCREMENT TO BINARY@I@@@@ JZ A10,$+2 QR )@@G@@ . IF INCREMENT=0,THEN INCREMENT=100 @E@@@@ SAQS )@@G@@ A10,LIMIT . STORE INCREMENT@G@@@@ LMJ QT )@@G@@ X10,GET . GET GIVEN START POINT,IF ANY @C@@@@ LMQU )@@G@@J X10,BIN0 . @C@@@@SEQ4 . QV )@@G@@ . @E@@@@ LMJ X10,READ . READ NQW )@@G@@EXT IMAGE @G@@@@ J EOF . AT EOF, GO BQX )@@G@@ACK TO TOP OF F @I@@@@ L A0,BLANK2 . QY )@@G@@ 817TM296 @I@@@@ L A1,IL QZ )@@G@@ . 817TM297 @I@@@@ L,RA )@@G@@U A2,19 . 14 WORD IMAGE 817TM298 RB )@@G@@@I@@@@ AN A2,A1 . MINUS ACTUAL SIZE RC )@@G@@ 817TM299 @I@@@@ JN A2,BLKDOU ALRRD )@@G@@EADY THERE 817TM300 @I@@@@ LXI,U A1,1 RE )@@G@@ . 817TM301 @I@@@@ S RF )@@G@@ A0,IMAGE,*A1 . BLANK OUT 817TM302 RG )@@G@@@I@@@@ JGD A2,$-1 . RH )@@G@@ 817TM303 @I@@@@BLKDOU . RI )@@G@@ 817TM304 @E@@@@ SA A8,IL RJ )@@G@@ . STORE NEW LENGTH @C@@@@SEQ41 DL A6,IMBUF RK )@@G@@ . GET ID @E@@@@ DS A6,IMAGE+18 . STORE IN COL 7RL )@@G@@3-80 @G@@@@ LA A0,(1,0) . INITIALIZE STORE IRM )@@G@@NDEX @G@@@@ LA A1,A10 . CONVERT SEQRN )@@G@@UENCE NUMBER @C@@@@SEQ5 . . RO )@@G@@@G@@@@ DSL A1,36 . TO FIELD DATA, AT ENDRP )@@G@@ @C@@@@ DI,U A1,10 . @C@@@@ RQ )@@G@@ AA,U A2,060 . @C@@@@ EX SEQSRR )@@G@@,*A0 . @A@@@@ JNZ A1,SEQ5 @E@@@@RS )@@G@@ LMJ X10,WRB . WRITE IMAGE @I@@@@ RT )@@G@@ AA A10,LIMIT . ADD INCREMENT TO SEQUENCE NUMBER RU )@@G@@ @E@@@@ J SEQ4 . GET NEXT IMAGE RV )@@G@@@C@@@@SEQS . . @C@@@@ S,RW )@@G@@Q4 A2,IMAGE+19 . @C@@@@ S,Q3 A2,IMAGE+1RX )@@G@@9 . @C@@@@ S,Q2 A2,IMAGE+19 . RY )@@G@@@C@@@@ S,Q1 A2,IMAGE+19 . @C@@@@ S,RZ )@@G@@Q4 A2,IMAGE+18 . @C@@@@ S,Q3 A2,IMAGE+1SA )@@G@@8 . @C@@@@ S,Q2 A2,IMAGE+18 . SB )@@G@@@C@@@@ S,Q1 A2,IMAGE+18 . @I@@@@ J SC )@@G@@ $+1 . IF THIS POINT REACHED SEQUENCE NUMBER SD )@@G@@@G@@@@ SZ A10 . IS TOO LARGE. RESET TO ZSE )@@G@@ERO, @A@@@@ J SEQ41 @]@@@@ . @/ @C@@@@SF )@@G@@ ON EDMODE . @G@@@@VER1 SZ SG )@@G@@ BRIEF2 . ZERO BRIEF INDICATOR @C@@@@ J SH )@@G@@ NXRQ . @]@@@@ . @E@@@@BRIEF1 SNSI )@@G@@Z BRIEF2 . SET BRIEF INDICATOR @C@@@@ J SJ )@@G@@ NXRQ . @C@@@@ OFF EDMODE SK )@@G@@ . @^@@@@ . SET SAVE FOR CHANGE @C@@@@CLIMIT1 LMJ X1SL )@@G@@0,GET . @A@@@@ LMJ X10,BIN0 @E@@@@SM )@@G@@ TG,U A10,133 . TEST DATAFILE LIMIT @C@@@@ SN )@@G@@ J SYNERR . TOO BIG @E@@@@ TNZ A10 SO )@@G@@ . ANY LIMIT GIVEN? @E@@@@ LA,U A10,SAVESTSP )@@G@@D . NO, USE STANDARD @C@@@@ SA A10,SAVE2 SQ )@@G@@ . @E@@@@ ANA,U A10,1 . SUB 1 FOR *****SR )@@G@@ @E@@@@ SA A10,SAVE21 . SAVE2-1 ***** SS )@@G@@@C@@@@ J NXRQ . @A@@@@ . SET MAXIMST )@@G@@UM LINE LENGTH @E@@@@MAXLN1 LMJ X10,GET . GSU )@@G@@ET NUMBER @C@@@@ LMJ X10,BIN0 . SV )@@G@@@E@@@@ TG,U A10,132 . MORE THAN 132? @C@@@@SW )@@G@@ L,U A10,132 . SORRY @E@@@@ S SX )@@G@@ A10,SAVECL . STORE IT @C@@@@ J NXRQSY )@@G@@ . @]@@@@ . SET TABS @A@@@@SET1 LA,U A0,1SZ )@@G@@31 @C@@@@ SZ TAB80,A0 . @C@@@@TA )@@G@@ JGD A0,$-1 . @A@@@@ LA TB )@@G@@ A3,(1,0) @C@@@@TABS L A8,A3 . SAVE A3 TC )@@G@@@E@@@@ LMJ X10,GET . GET THE NUMBER @G@@@@TD )@@G@@ JZ A1,NXRQ . RETURN IF NO MORE NUMBERS TE )@@G@@@I@@@@ LMJ X10,BIN . CONVERT NUMBER TO BINARY TF )@@G@@LESS ONE @E@@@@ L A3,A8 . RESTORE TG )@@G@@A3 @A@@@@ TG,U A10,132 @A@@@@ J TH )@@G@@ BADTAB @C@@@@ AA A10,(1,0) . TI )@@G@@ @A@@@@ SA A10,TAB80,*A3 @A@@@@ TLE TJ )@@G@@ A3,A10 @C@@@@ J $-2 . TK )@@G@@@E@@@@ J TABS . GET NEXT NUMBER @C@@@@TL )@@G@@BADTAB L A5,A3 . SAVE A3@E@@@@ A$EDIT TM )@@G@@ ETAB . EDIT MODE @E@@@@ A$EMSG E29TN )@@G@@ . BAD TAB: @G@@@@ A,U A10,1 TO )@@G@@ . CORRECT VALUE FOR PRINTOUT @C@@@@ A$EDECV A10TP )@@G@@ . NUMBER@A@@@@ A$EDITX . END MODE @E@@@@TQ )@@G@@ L A3,A5 . RESTORE A3 @E@@@@ TR )@@G@@ TYP IMBUF,5 . TYPE OUT MESSAGE @E@@@@ J TS )@@G@@ TABS . CHECK NEXT TAB @]@@@@ . @^@@@@TT )@@G@@ . SET TAB CHAR @I@@@@TAB1 LMJ X10,GET3 TU )@@G@@ ED011790 @E@@@@ LMJ X11,TV )@@G@@FIXCHR . SEE IF @ OR BLANK @C@@@@ SA A1,THETAB TW )@@G@@ . @C@@@@ J NXRQ . TX )@@G@@@]@@@@SPLIT1 . @E@@@@ SZ FILEONLY . CLEAR FLTY )@@G@@AG @E@@@@ L A8,DELIM . SAVE DELIMITERTZ )@@G@@ IN A9@G@@@@ LMJ X9,RFNFIN . READ FILE AND ELEMENUA )@@G@@T NAME @G@@@@ J NOPFD . NO ELEMENT FOUUB )@@G@@ND ON PFS$ @G@@@@ TZ EDXF+5 . WAS THISUC )@@G@@ A DATA FILE? @C@@@@ J NOTDATA . NOUD )@@G@@ @C@@@@ SNZ FILEONLY . YES IT WAS @G@@@@ UE )@@G@@ J NOPFWL . DON'T MESS AROUND WITH PFP @G@@@@UF )@@G@@NOTDATA L,U A0,XFTBL . DELETE THE OLD ELEMENT UG )@@G@@@C@@@@ ER PFD$ . DO IT! @E@@@@PFDERR L,UH )@@G@@U X9,ELMNF1 . PREPARE FOR ERROR @C@@@@ JNZ UI )@@G@@ A2,ELMNF . ERROR? @E@@@@NOPFD L,U A0,XFTBL UJ )@@G@@ . GET NEXT WRITE LOC @C@@@@ ER PFWL$ . UK )@@G@@ @E@@@@ JNZ A2,PFDERR . AN ERROR IS AN ERRORUL )@@G@@@E@@@@ S A1,EDXF+5 . SAVE IT IN I-O PKT @E@@@@UM )@@G@@ S A1,XFTBL+10 . SAVE FOR PFI @E@@@@NOPFWLUN )@@G@@ L A0,(+0,W$,0,0,0,0) . LETS WRITE IT @C@@@@ S UO )@@G@@ A0,EDXF+3 . @E@@@@ LMJ X10,OPNOXFUP )@@G@@ . OPEN THE FILE @E@@@@ LMJ X10,LABELX UQ )@@G@@ . INSERT LABEL IMAGE @E@@@@ LMJ X10,GET . PIUR )@@G@@CK ANY NUMBER @G@@@@ JZ A1,SPLITALL . YOU CAN US )@@G@@HAVE THEM ALL @G@@@@ LMJ X10,BIN0 . SOUT )@@G@@ME ARE FUSSY-CONVERT @E@@@@ S A10,DIT1 UU )@@G@@ . FROM DIT1 TO DIT2 @E@@@@ LMJ X10,GET . GEUV )@@G@@T ANOTHER @E@@@@ LMJ X10,BIN0 . WE DEMANUW )@@G@@D ANOTHER @C@@@@ S A10,DIT2 . @E@@@@UX )@@G@@ TLE A10,DIT1 . DIT1 FIRST? @C@@@@ J YI )@@G@@ LINERR . NO ERROR@G@@@@ LMJ X10,WRB YJ )@@G@@ . WRITE OUT CURRENT LINE @E@@@@ L A10,YK )@@G@@DIT1 . GET STARTING POINT @E@@@@ JZ A10,ADLN1 YL )@@G@@ . FUDGE FOR LINE 1 @I@@@@ AN,U A10,1 YM )@@G@@ . MINUS 1 ED011900 @E@@@@ADRDX LMJ YN )@@G@@ X10,READXF . READ A LINE @E@@@@ J FILEYO )@@G@@OF . END OF FILE @G@@@@ JGD A10,ADRDX YP )@@G@@ . READ TILL WE GET TO START @]@@@@ADLN1 . @E@@@@ YQ )@@G@@ L A10,DIT2 . GET SECOND PARAM @E@@@@ ANYR )@@G@@ A10,DIT1 . GET NUMBER TO COPY @E@@@@ADDINS LMJ YS )@@G@@ X10,READXF . READ FROM FILE ADDED@E@@@@ J FILEYT )@@G@@OF . END OF FILE @I@@@@ A,U LCT,1 YU )@@G@@ . INCREMENT LINE COUNT ED011920 @G@@@@ L YV )@@G@@ A0,ICWXF . GET IMAGE CONTROL WORD @G@@@@ YW )@@G@@ S A0,ICW . TRANSFER FOR WRB WRITE @E@@@@YX )@@G@@ TNZ BRIEF3 . BRIEF MODE? @G@@@@ YY )@@G@@ LMJ X10,TYPOUT . TYPE OUT LINES AS THEY COME IN @E@@@@YZ )@@G@@ LMJ X10,WRB . WRITE OUT LINE @E@@@@ ZA )@@G@@ TNZ BRKSET . WAS BREAK KEY HIT? @C@@@@ JGZB )@@G@@D A10,ADDINS . @E@@@@ADDUN LMJ X10,CLOSIXZC )@@G@@F . CLOSE FILE @G@@@@ LMJ X11,RELDYN ZD )@@G@@ . RELEASE DYNAMIC ASSIGN @C@@@@ SZ ICW ZE )@@G@@ . @E@@@@ SNZ WINHIB . WRITE INHIBZF )@@G@@IT @C@@@@ SZ LENGTH . @E@@@@ZG )@@G@@ J NXRQ . NEXT COMMAND @E@@@@ADDWHOZH )@@G@@L L,U A10,0777776 . GET A LARGE NUMBER @E@@@@ LMZI )@@G@@J X10,WRB . WRITE OUT LINE @E@@@@ J ZJ )@@G@@ ADDINS . USE FOR COUNTING @^@@@@ FIELDATA . ZK )@@G@@@G@@@@FILEOF FTYPE DLIT('EOF FOUND '),2 ZL )@@G@@ .@^@@@@ ASCII . @A@@@@ J ADDUN ZM )@@G@@ @G@@@@ . THIS ROUTINE IS USED TO SEARCH FOR AN EXEC 8 FILE OR ELEMZN )@@G@@ENT @E@@@@ . DESIGNATION. IF THE DESIGNATED FILE IS NOT ASSIGNEZO )@@G@@D, AN @G@@@@ . ATTEMPT WILL BE MADE TO ASSIGN IT. THE ELEMENT NAME, VERSZP )@@G@@ION @E@@@@ . NAME, AND REQUESTED CYCLE ARE ISOLATED FOR USE. ZQ )@@G@@ @^@@@@ FIELDATA . @A@@@@USETPF$ '@USE ED$XF,TPF$' . ZR )@@G@@ @^@@@@ ASCII . @E@@@@RFNFIN SZ EDXF+5 ZS )@@G@@ . SET FAST ADD TO ZERO @G@@@@ SZ DYNASG ZT )@@G@@ . CLEAR DYNAMIC ASSIGN FLAG @E@@@@ SZ A10 ZU )@@G@@ . INITIATE FLAG @G@@@@ L A0,(3,USETPF$) ZV )@@G@@. RELEASE PREVIOUS USES AND USE TPF$@C@@@@ ER CSF$ ZW )@@G@@ . @E@@@@ E$DIT FTAB . START EDZX )@@G@@IT FOR USE @E@@@@ E$MSG USEIMGF . @USE ED$XF,...ZY )@@G@@ @E@@@@ L A6,COUNT . GET CHAR COUNT ZZ )@@G@@@G@@@@ AN,U A6,1 . CORRECT COUNT FOR TESTING AA )@@G@@ @G@@@@ L X4,EDCT . PRESENT POINTER IN EAB )@@G@@DIT14 @G@@@@RFNLOOP TNG A6,X4 . IS PTR GTR THEAC )@@G@@N TOTAL COUNT? @I@@@@ J RFNASGD . YES ASSUAD )@@G@@ME AN ELEMENT DESIGNATION @E@@@@ L A0,EDIT80,AE )@@G@@X4 . GET NEXT CHAR @E@@@@ A,U X4,1 AF )@@G@@ . INCREMENT @E@@@@ TNE,U A0,040 . ISAG )@@G@@ IT A BLANK? @E@@@@ J RFNLOOP . YES, DONAH )@@G@@'T INSERT @E@@@@ TE,U A0,'.' . IS IT A PERIODAI )@@G@@? @C@@@@ J $+3 . NO @G@@@@ AJ )@@G@@ JZ A10,RFNDUN+2 . TPF$ ELT WITH A PERIOD @G@@@@AK )@@G@@ J RFNDUN . YES-MUST BE END OF FILENAME AL )@@G@@@C@@@@ L A1,BLANK2 . @G@@@@ S AM )@@G@@ A1,IMBUF . STORE BLANKS IN IMBUF @G@@@@ AN )@@G@@ S,Q1 A0,IMBUF . Q4 OF A0 => Q1 OF IMBUF @C@@@@AO )@@G@@ L,U A0,1 . ONE WORD@E@@@@ CONVAF AP )@@G@@ IMBUF,IMBUF . CONVERT ASCII TO FD @G@@@@ SNZ A10 AQ )@@G@@ . FLAG TO DENOTE INSERTED CHAR @E@@@@ E$CHAR AR )@@G@@ IMBUF,,S1 . INSERT CHAR @E@@@@ J RFNLAS )@@G@@OOP . GET NEXT CHAR @E@@@@RFNDUN L A0,(14,FIMAT )@@G@@BUF) . APPLY USE @C@@@@ ER CSF$ AU )@@G@@ . @E@@@@ S X4,EDCT . SAVE POINTER AV )@@G@@ @^@@@@ FIELDATA . @E@@@@ TNOASG 'ED$XF AW )@@G@@ ' . IS IT ASSIGNED? @^@@@@ ASCII . @C@@@@ AX )@@G@@ J SEEIFF . YES @E@@@@ L A0,(AY )@@G@@2,ASGIMGF) . ASSIGN IT @C@@@@ ER CSF$ AZ )@@G@@ . @C@@@@ JN A0,FILERF . ERRORBA )@@G@@@C@@@@ SNZ DYNASG . SET FLAG@E@@@@SEEIFF L,BB )@@G@@U A0,' ' . GET A BLANK @G@@@@ TNE BC )@@G@@ A0,EDIT80,X4 . IS THE NEXT CHAR BLANK? @G@@@@ J BD )@@G@@ 1,X9 . MUST HAVE MEANT FILEONLY @A@@@@RFNASGBE )@@G@@D E$DITX . END EDIT @G@@@@ DL A0,BLANKS BF )@@G@@ . BLANKS TO VERSION,CYCLE @C@@@@ DS A0,XFVERS BG )@@G@@ . @C@@@@ DS A0,XFCYCL . BH )@@G@@@E@@@@ LMJ X10,GET2 . GET NEXT THING @G@@@@BI )@@G@@ JZ A1,1,X9 . MUST HAVE MEANT FILE ONLY BJ )@@G@@@E@@@@ DL A0,FIMBUF . GET THING READ @G@@@@BK )@@G@@ DS A0,XFENAME . CALL IT THE ELEMENT NAME BL )@@G@@@E@@@@ L A1,DELIM . GET THE DELIMITER @G@@@@BM )@@G@@ JZ A1,NOVERSXF . IF ZERO NO VERSION OR CYCLE BN )@@G@@@C@@@@ TNE,U A1,'(' . IS IT ( @E@@@@ J BO )@@G@@ RFNCYC . MUST BE CYCLE @E@@@@ TE,U BP )@@G@@ A1,'/' . START OF VERSION? @E@@@@ J NOVEBQ )@@G@@RSXF . NO VERSION OR CYCLE@E@@@@ LMJ X10,GET2 BR )@@G@@ . GET NEXT THING @C@@@@ JZ A1,RFNEXF BS )@@G@@ . ERROR @G@@@@ DL A0,FIMBUF . ASSUME ITS THBT )@@G@@E VERSION @C@@@@ DS A0,XFVERS . SAVE IT BU )@@G@@@E@@@@ L A1,DELIM . GET THE DELIM @C@@@@BV )@@G@@ JZ A1,NOCYCXF . NO CYCLE@I@@@@ TNE,U BW )@@G@@ A1,' ' . BLANK? 817TM307 @I@@@@BX )@@G@@ J NOCYCXF . BY )@@G@@817TM308 @E@@@@ TE,U A1,'(' . BEGINING OF CYBZ )@@G@@CLE? @E@@@@ J RFNEXF . NO -- ERROR CA )@@G@@@E@@@@RFNCYC SZ RELXF . ZERO RELATIVE CYCLE @E@@@@CB )@@G@@ L A0,EDCT . GET POINTER @C@@@@ CC )@@G@@ L A6,EDIT80,A0 . GET CHAR@E@@@@ TNE,U A6,'CD )@@G@@+' . IS IT PLUS @C@@@@ S A6,RELXF CE )@@G@@ . SET IT @E@@@@ TNE,U A6,'-' . IS IT MICF )@@G@@NUS @C@@@@ S A6,RELXF . SET IT @E@@@@CG )@@G@@ TZ RELXF . WAS IT SET @E@@@@ CH )@@G@@ A,U A0,1 . ADD 1 TO POINTER @E@@@@ S CI )@@G@@ A0,EDCT . RESTORE POINTER @C@@@@ LMJ CJ )@@G@@ X10,GET . GET IT @C@@@@ JZ A1,RFNEXF CK )@@G@@ . ERROR @E@@@@ LMJ X10,BIN0 . CONVERT TO BINCL )@@G@@ARY @C@@@@ S A10,XFCYCL . SAVE @C@@@@NOVERSCM )@@G@@XF . NO VERSION GIVEN OR CYCLE @A@@@@NOCYCXF . NO CYCLE GIECN )@@G@@N @E@@@@ L,U A0,XFTBL . GET TABLE ADD CO )@@G@@ @C@@@@ ER PFS$ . @G@@@@ CP )@@G@@ JNZ A2,ELMNF . IF NONZERO ELEMENT NOT FOUND @E@@@@CQ )@@G@@ L A0,XFTBL+10 . GET ADDRESS @C@@@@ CR )@@G@@ S A0,EDXF+5 . @E@@@@ L,S4 A2,XCS )@@G@@FTBL+8 . GET CYCLE @G@@@@ S A2,RCXF CT )@@G@@ . PUT IN REQUESTED CYCLE @E@@@@ L A1,XCU )@@G@@FCYCL . GET CYCLE SPECIFIED @E@@@@ TNE A1,BLANKS CV )@@G@@ . NONE SPECIFIED? @C@@@@ J 1,X9 CW )@@G@@ . RETURN @E@@@@ TZ RELXF . RELATIVE CYCLECX )@@G@@? @C@@@@ J RELCYX . YES @G@@@@ CY )@@G@@ S A1,RCXF . USE THIS FOR REQUESTED CYCLE @C@@@@CZ )@@G@@ J 1,X9 . RETURN @E@@@@RELCYX L DA )@@G@@ A0,RELXF . GET REL CHAR @E@@@@ TNE,U A0,'DB )@@G@@+' . IS IT PLUS? @E@@@@ A A2,XFCYCL DC )@@G@@ . ADD VALUE @E@@@@ TNE,U A0,'-' DD )@@G@@ . IS IT MINUS? @C@@@@ AN A2,XFCYCL. SUBTRACT VADE )@@G@@LUE @E@@@@ L A0,RCXF . GET CYCLE VALUE DF )@@G@@@E@@@@ ANU,S6 A0,XFTBL+8 . SEE IF INVALID CYLE @C@@@@DG )@@G@@ TG A0,A2 . @A@@@@ TG DH )@@G@@ A2,RCXF @A@@@@ J RCYCERR @C@@@@ DI )@@G@@ S A2,RCXF . OK @^@@@@ J 1,X9DJ )@@G@@@A@@@@RFNEXF . ERROR ROUTINE @E@@@@ TYP E38,DK )@@G@@L38 . ELEMENT ERROR @C@@@@ J RECTST DL )@@G@@ . @A@@@@FILERF . FILE DESIGNATION ERROR @E@@@@ DM )@@G@@ TYP E39,L39 . FILE ERROR @C@@@@ J DN )@@G@@ RECTST . @C@@@@ELMNF . ELEMENT NOT FOUND DO )@@G@@BY PFS$ @C@@@@ TNE,U A2,1 . DP )@@G@@@E@@@@ J 0,X9 . NOT FOUND RETURN @C@@@@DQ )@@G@@ TNE,U A2,2 . @C@@@@ J DR )@@G@@ ELMNF2 . @C@@@@ TYP E40,L40 DS )@@G@@ . @C@@@@ J RECTST . @C@@@@DT )@@G@@RIOERR . I-O ERROR ON READ OF ADD FILE @C@@@@ TYP DU )@@G@@ E44,L44 . @C@@@@ J RECTST DV )@@G@@ . @]@@@@RCYCERR . @A@@@@ TYP E45,L45 DW )@@G@@@E@@@@ J RECTST . &&&&&&&&& @E@@@@DX )@@G@@ELMNF1 E$DIT FTAB . START EDIT @C@@@@ DY )@@G@@ E$MSG E1 . @C@@@@ E$FD2 XFENDZ )@@G@@AME . @^@@@@ E$MSGR . @^@@@@ E$EA )@@G@@DITX . @C@@@@ FTYPE FIMBUF,10 . @C@@@@EB )@@G@@ J RECTST . @C@@@@ELMNF2 TYP EC )@@G@@ E3,L3 . @C@@@@ J RECTST ED )@@G@@ . @^@@@@ FIELDATA . @C@@@@ASGIMGF '@ASG,A ED$XF'EE )@@G@@ . @^@@@@USEIMGF '@USE ED$XF,&'@A@@@@FREEIMGF '@EF )@@G@@FREE,RA ED$XF ' @^@@@@ ASCII . @G@@@@RELDYN L EG )@@G@@ A0,(3,FREEIMGF) . FRE FILE IF DYNAMICALLY ASSIGNED @E@@@@ EH )@@G@@ TZ DYNASG . WELL, WAS IT? @C@@@@ EREI )@@G@@ CSF$ . @C@@@@ SZ DYNASG EJ )@@G@@ . @C@@@@ J 0,X11 . EK )@@G@@@]@@@@ . @/ @A@@@@ . THIS CODE WRITES OUT UPDATED FILE@^@@@@FILE1 EL )@@G@@ . ? @E@@@@ TNZ EOFMOD . EOF MODEEM )@@G@@? @E@@@@ J FIEXIT . EOF MEANS EOF EN )@@G@@ @G@@@@ TZ INPUTF . EOF'S IN EDIT TERMINEO )@@G@@ATES @G@@@@ JP A0,EDIT1 . WAS IT AN @EOEP )@@G@@F CARD? @G@@@@FIEXIT S R10,REEXIT . SET REEXITEQ )@@G@@ NONZERO-NO RECOVERY @E@@@@ TNOPTN 'R' . REER )@@G@@AD ONLY OPTION? @C@@@@ J OEND . YES ES )@@G@@@A@@@@ LMJ X3,TOPS @E@@@@ TZ BRKSET )@@G@@ET . WAS BREAK KEY SET? @G@@@@ J EDIT1 EU )@@G@@ . YES RETURN TO EDIT MODE @E@@@@ TNOPTN 'I' EV )@@G@@ . I OPTION? @C@@@@ J FIL EW )@@G@@ . YES @E@@@@ TNOPTN 'U' . U OPTIONEX )@@G@@? @C@@@@ J UPE .YES @I@@@@EY )@@G@@ TNOPTN 'T' . NEW ELEMENT WITH TRANSFER CYCLE EZ )@@G@@ED011940 @I@@@@ J LSVCLS . YES FA )@@G@@ ED011950 @C@@@@FIL LX,U X1,ADE .FB )@@G@@ ADD @]@@@@FILE2 . @A@@@@ LA,U A0,OUTBL FC )@@G@@@G@@@@ LMJ X10,PFWL . GET NEXT WRITE ADDRESS OFFD )@@G@@ PF @A@@@@ SA A1,OUTBL+10 @A@@@@ SA FE )@@G@@ A1,COPOUT+3 @A@@@@ DL A0,OUTBL @A@@@@ FF )@@G@@ DS A0,EDOUT @E@@@@ LMJ X10,OPNO FG )@@G@@ . OPEN OUTPUT @G@@@@ AA,U RC,1 . IFH )@@G@@NCREMENT REQUESTED CYCLE @G@@@@ LA A6,LC FI )@@G@@ . CALACULATE OLDEST CYCLE NUMBER @E@@@@ AA,U A6,1 FJ )@@G@@ . (OC=LC+1-CC) @C@@@@ AN A6,CC FK )@@G@@ . @E@@@@ TZ OUTFIL . OUTPUT FILE FDFL )@@G@@? @G@@@@ SZ AC . S6 OF ICW = 0 FOR FDFM )@@G@@ FILE @C@@@@PUT . . @E@@@@FN )@@G@@ L A0,CONCODE . GET S1 OF ICW @G@@@@ FO )@@G@@ TE,U A0,060 . PRINT CONTROL CODE 60? @C@@@@FP )@@G@@ J PUT2 . NO @G@@@@ TNZ FQ )@@G@@ OUTFIL . OUTPUT FILE FIELDATA? @E@@@@ J FR )@@G@@ PUT2 . NO, ASCII @G@@@@ SZ FS )@@G@@ AC . S6 OF ICW => 0 FOR FD @E@@@@ L FT )@@G@@ A0,IL . GET IMAGE LENGTH @E@@@@ CONVAF FU )@@G@@ IMAGE,IMAGE . ASCII TO FD @G@@@@ IL23 IL FV )@@G@@ . CHANGE IMAGE LENGTH FOR FD @]@@@@PUT2 . @E@@@@FW )@@G@@ LMJ X10,WRB . WRITE IMAGE @]@@@@GETIM FX )@@G@@ . @E@@@@ SZ WINHIB . CLEAR WRITE INHIBIT FY )@@G@@@A@@@@ LA,U A0,EDIN @A@@@@ LMJ X11,FZ )@@G@@SDFI @A@@@@ J IOERRA @E@@@@ J GA )@@G@@ 0,X1 . END-OF-FILE RETURN @E@@@@ TP GB )@@G@@ ICW . LABEL IMAGE? @E@@@@ J PUT GC )@@G@@ . YES, PUT IMAGE OUT @E@@@@ TNZ OUTFIL GD )@@G@@ . OUTPUT FILE FD? @E@@@@ J 1,X1 GE )@@G@@ . NO, ASCII - RETURN @E@@@@ L A0,IL . IMGF )@@G@@AGE LENGTH @E@@@@ CONVAF IMAGE,IMAGE . CONVERT GG )@@G@@ASCII TO FD @G@@@@ IL23 IL . CHANGE IMAGE LGH )@@G@@ENGTH FOR FD @C@@@@ J 1,X1 . RETURN GI )@@G@@@]@@@@ADE . @A@@@@ J ADEOF @G@@@@ GJ )@@G@@ TNZ DC1 . WAS IMAGE DELETED BY ED @E@@@@GK )@@G@@ TZ DC . OR PREVIOUSLY ? @A@@@@ GL )@@G@@ J GETIM @C@@@@ SZ AC GM )@@G@@ . @^@@@@ SZ AC1 @^@@@@ SZ DC1 GN )@@G@@@C@@@@ J PUT . @]@@@@ADEOF . GO )@@G@@@G@@@@ LMJ X10,PFI . INSERT ELEMENT IN PF GP )@@G@@ @C@@@@ J END0 . @]@@@@UPE GQ )@@G@@ . @C@@@@ LR,U R1,014 . COPY 12 WRDS @C@@@@ GR )@@G@@ LA A1,(1,INTBL) . INTBL @C@@@@ LA A0,(1GS )@@G@@,OUTBL) . TO OUTBL @C@@@@ BT A0,0,*A1 . DO IT GT )@@G@@ @I@@@@ACTLIKU TZ DOPT . D OPTION ON? GU )@@G@@ ED011970 @E@@@@ J FIL . YGV )@@G@@ES, DON'T DO A U @E@@@@ SZ R5 . CLEAR FLGW )@@G@@AG @G@@@@ TE,U RC,62 . IS THE GUY CYCGX )@@G@@LE CRAZY? @G@@@@ J NOT63 . NO HE DOGY )@@G@@ESN'T WANT 63TH @G@@@@. NOTE THAT THE COMMENTS IN THE FOLLOWING GZ )@@G@@CODE ASSUME A CYCLE LIMIT @E@@@@. OF 5. THE CODE WILL HANDLE ANY CYHA )@@G@@CLE LIMIT HOWEVER. @E@@@@ SNZ R5 . SAY HHB )@@G@@E WANTS 63 @E@@@@ L A2,CL . GET THE HC )@@G@@CYCLE LIMIT @I@@@@ AN,U A2,2 . DEC BECAUSE RCHD )@@G@@ GETS INCRED ED011990 @G@@@@ L RC,A2 HE )@@G@@ . USE CYCLE LIM AS REQUEST CYCLE @C@@@@ S A2,LC HF )@@G@@ . @C@@@@ . WE'RE EVEN GOING TO SAVE THE EARLIER ONES HG )@@G@@@A@@@@NOT63 LMJ X1,FILE2 @A@@@@ J UPEOHH )@@G@@F @E@@@@ TNZ R5 . IS THIS THE 63HI )@@G@@ GUY @C@@@@ J TISNOT . TIS NOT!@I@@@@ HJ )@@G@@ L A2,AC . MAKE ACTUAL CYCLE LOOK LIKE 58 LESS HK )@@G@@ @I@@@@ AN,U A2,64 . 62=4,61=3,60=2,59=1,HL )@@G@@58=0 MOD 58 ED012010 @C@@@@ A A2,CL . HM )@@G@@ @I@@@@ TNE,XU A2,-1 . CYCLE -1 HN )@@G@@ ED012030 @I@@@@ SZ A2 . SEHO )@@G@@T TO CYCLE 0 ED012040 @E@@@@ S A2,AHP )@@G@@C . NEW MATH! @G@@@@ L A2,DC HQ )@@G@@ . DUMMY UP DELETED CYCLE TOO @G@@@@ JZ A2,THR )@@G@@ISNOT . DON'T MESS IF NOT DELETED @I@@@@ AN,U HS )@@G@@ A2,64 . 62=4,61=3,60=2,59=1,58=0 MOD 58 ED012060 @I@@@@HT )@@G@@ A A2,CL . HU )@@G@@ED012070 @I@@@@ TZ A2 . DELETED IN CYCHV )@@G@@LE 0 ED012080 @I@@@@ TNE,XU A2,-1 HW )@@G@@ . CYCLE -1 ED012090 @I@@@@ J HX )@@G@@ GETIM . THROW AWAY ED012100 @C@@@@HY )@@G@@ S A2,DC . @G@@@@TISNOT TZ HZ )@@G@@ AC1 . IMAGE ADDED THIS CYCLE? @E@@@@ SAIA )@@G@@ RC,AC . YES,SET AC @G@@@@ TZ IB )@@G@@ DC1 . WAS IMAGE DELETED BY ED @A@@@@ SAIC )@@G@@ RC,DC @E@@@@ L A0,AC . GEID )@@G@@T THE ADDED CYCLE @E@@@@ TNE A0,DC . DELETED IE )@@G@@=ADDED? @G@@@@ JNZ A0,GETIM . THROWAWAY IF NIF )@@G@@OT ZERO @E@@@@ SZ AC1 . CLEAR THIG )@@G@@ESE THINGS @C@@@@ SZ DC1 . @A@@@@IH )@@G@@ LA A0,CL @A@@@@ TE A0,CC II )@@G@@ @E@@@@ J PUT . NO, PUT OUT IMAGE IJ )@@G@@@I@@@@ TLE A6,AC . WAS IMAGE ADDED AT OLDESTIK )@@G@@ CYCLEED012120 @E@@@@ J PUT . NO, PUTIL )@@G@@ OUT IMAGE @G@@@@ AU,U A6,1 . WAS IMAGE DELIM )@@G@@ETED AT @E@@@@ TNE A7,DC . NEXT OLIN )@@G@@DEST CYCLE? @A@@@@ J GETIM @E@@@@ SAIO )@@G@@ A7,AC . SET AC=AC+1 @C@@@@ J IP )@@G@@ PUT . @I@@@@LSVCLS DL A0,INTBL+8 IQ )@@G@@ . TRANS CYCLE STUFF ED012140 @I@@@@ DS IR )@@G@@ A0,OUTBL+8 . ED012150 @I@@@@IS )@@G@@ J ACTLIKU . IT )@@G@@ED012160 @]@@@@UPEOF . @G@@@@ SA RC,LC IU )@@G@@ . SET LATEST CYLE=RC+1 @C@@@@ LA A0,CC IV )@@G@@ . @G@@@@ TE A0,CL . DOES CYIW )@@G@@CLE LIMIT= CYCLE COUNT @^@@@@ AA,U A0,1@C@@@@ SAIX )@@G@@ A0,CC . @A@@@@ LMJ X10,PFUP IY )@@G@@ @]@@@@END0 . @E@@@@ A$EDIT ETAB . START IZ )@@G@@EDIT MODE @E@@@@ A$EMSG E12 . LINES FILEDJA )@@G@@: ... @E@@@@ A$EDECV LCTSV . NUMBER OF LINEJB )@@G@@S @C@@@@ A$ECHAR ' ' . @E@@@@ JC )@@G@@ TZ OUTFIL . OUTPUT FILE ASCII? @E@@@@ J JD )@@G@@ ENDFD . NO, FIELDATA @C@@@@ A$EFD2 JE )@@G@@ ('ASCII ') . @C@@@@ J ENDTYP JF )@@G@@ . @C@@@@ENDFD A$EFD2 ('FIELDATA') . @]@@@@JG )@@G@@ENDTYP . @^@@@@ A$EDITX @E@@@@ TYP IMBUJH )@@G@@F,12 . TYPE MESSAGE @E@@@@ ON INSTAT JI )@@G@@ . INTERNAL STATISTICS@E@@@@ L,U A0,1 JJ )@@G@@ . NORMAL EXIT @C@@@@ LMJ X9,STATOUT . JK )@@G@@ @C@@@@ OFF INSTAT . @I@@@@ENDFREJL )@@G@@ . 817TM3JM )@@G@@10 @E@@@@ L A0,(3,FEDS1A) . FREE 1ST ASSIGN JN )@@G@@@G@@@@ TZ EDS1A . ONLY IF ED ASSIGNED IT JO )@@G@@ @C@@@@ ER CSF$ . @E@@@@ JP )@@G@@ L A0,(3,FEDS2A) . DITTO WITH SECOND @G@@@@ TZJQ )@@G@@ EDS2A . ONLY IF ED ASSIGNED IT @C@@@@ JR )@@G@@ ER CSF$ . @G@@@@ L A0,(JS )@@G@@3,UNUSE1) . RELEASE USE NAME AT LEAST @C@@@@ ER JT )@@G@@ CSF$ . @G@@@@ L A0,(3,UNUSE2) JU )@@G@@ . RELEASE USE NAME AT LEAST @C@@@@ ER CSF$ JV )@@G@@ . @C@@@@ SZ A0 . JW )@@G@@@E@@@@ TNZ MEMORY . REMEMBER MODES? @G@@@@JX )@@G@@ J CLRSE$ . CLEAR SETC$ CONDITION WORD JY )@@G@@@G@@@@ L A0,BITS(11) . THIS BIT USED AS A CHECK JZ )@@G@@ @C@@@@ TZ QUICKON . QUICK=0 @C@@@@ KA )@@G@@ A A0,BITS(0) . @C@@@@ TZ BRIEKB )@@G@@F2 . BIREF=1 @C@@@@ A A0,BITS(1) . KC )@@G@@ @C@@@@ TZ ALLLN . ALLLN=2 @C@@@@ KD )@@G@@ A A0,BITS(2) . @E@@@@ TZ RECPKE )@@G@@CNT . RECPCNT=3 @C@@@@ A A0,BITS(3)KF )@@G@@ . @C@@@@ TZ SPLITDEL . 4 KG )@@G@@@C@@@@ A A0,BITS(4) . @C@@@@ TZKH )@@G@@ BRIEF3 . 5 @C@@@@ A A0,BITS(5)KI )@@G@@ . @C@@@@ TZ TYPESEQ . 6 KJ )@@G@@@C@@@@ A A0,BITS(6) . @E@@@@ TZKK )@@G@@ LKMAIL . LOOK FOR MAIL @C@@@@ A KL )@@G@@ A0,BITS(7) . @E@@@@ TZ EOFMOD KM )@@G@@ . EOF MODE? @C@@@@ A A0,BITS(8) . KN )@@G@@ @E@@@@ TZ UNIMOD . UNISCOPE MODE KO )@@G@@@C@@@@ A A0,BITS(9) . SET IT @E@@@@CLRSE$ ERKP )@@G@@ SETC$ . SET CONDITION WORD @E@@@@ SZ KQ )@@G@@ A0 . CLEAR CONTINGENCYS @I@@@@ L A0,(KR )@@G@@2,FREMF) . FEE MF$$ USE NAME 817TM313 @I@@@@ KS )@@G@@ ER CSF$ . 817TM3KT )@@G@@14 @I@@@@ ON . KU )@@G@@ LOCAL @I@@@@ TNZ ERR$X . TEKV )@@G@@ST ERROR INDICATOR 817TM317 @I@@@@ OFF KW )@@G@@ . LOCAL @I@@@@ KX )@@G@@ TZ ERR$X . LOCKY )@@G@@AL @I@@@@ J ERREXT . KZ )@@G@@ LOCAL @I@@@@ L A0,(3,FRSAVT) . LA )@@G@@ LOCAL @I@@@@ ER CSF$LB )@@G@@ . FREE ED$TB FILE IF NORMAL EXIT LOCAL @I@@@@ LC )@@G@@ L A0,(3,FRSAVA) . FREE ED$TA LOCLD )@@G@@AL @I@@@@ ER CSF$ . LE )@@G@@ LOCAL @^@@@@ SZ A0 @A@@@@ J LF )@@G@@ RETURN @I@@@@ ON . LG )@@G@@ LOCAL @G@@@@ TNOPTN 'X' LH )@@G@@ . X OPTION MEANS ERR$ IF ERROR @I@@@@ OFF LI )@@G@@ . LOCAL @I@@@@LJ )@@G@@ERREXT TNOPTN 'X' . LK )@@G@@ LOCAL @E@@@@ ER ERR$ . TAKE ERROR ELL )@@G@@XIT @^@@@@ LA,U A0,1@ @@@@ J RETURN LM )@@G@@@]@@@@RETURN. @^@@@@ LA,U A0,1@^@@@@ ER LN )@@G@@ PSR$@A@@@@ LX X11,SAVEX11 @ @@@@ J LO )@@G@@ 0,X11 @]@@@@ . @/ @^@@@@ . GO TO TOP OF FILE @G@@@@TOP1 LP )@@G@@ LX,U X3,NXRQ . ENTRY POINT FROM 'TOP' COMMAND @C@@@@LQ )@@G@@TOPS . . . @E@@@@ LMJ LR )@@G@@ X1,BOT2 . GO TO BOTTOM @G@@@@TOPS2 S LCT,LCTSVLS )@@G@@ . SAVE LCT FOR POSSIBLE EXIT. @E@@@@ LMJ LT )@@G@@ X10,CLOSO . CLOSE OUTPUT FILE @E@@@@ LMJ X10,LU )@@G@@CLOSI . CLOSE INPUT FILE @C@@@@ DL A0,EDIN LV )@@G@@ . @E@@@@ TZ ADSAVE . WAS NAMLW )@@G@@E SAVED? @E@@@@ DL A0,ADSAVF . YES LOAD SAVELX )@@G@@D FILE@E@@@@ DL A2,EDOUT . LOAD OUTPUT FILE LY )@@G@@@E@@@@ DS A2,EDIN . SWITCH INPUT AND@E@@@@LZ )@@G@@ DS A0,EDOUT . OUTPUT NAMES @E@@@@ MA )@@G@@ SNZ OK . NOT AT END OF FILE @E@@@@ ONMB )@@G@@ INSTAT . STATISTICS @E@@@@ L,H2 MC )@@G@@ A0,STATBUF+5 . INCR TOP COUNT @C@@@@ A,U A0,1MD )@@G@@ . @C@@@@ S,H2 A0,STATBUF+5 . ME )@@G@@ @E@@@@ S LCT,STATBUF+2 . LENGTH IN IMAGES MF )@@G@@@E@@@@ L A0,EDOUT+5 . LENGTH IN SECTORS @C@@@@MG )@@G@@ A,U A0,1 . @E@@@@ MSI,U MH )@@G@@ A0,28 . TO WORDS @C@@@@ S A0,SMI )@@G@@TATBUF+3 . LENGTH @C@@@@ OFF INSTAT . MJ )@@G@@ @I@@@@ SZ LCT . ZERO LINE COUNT MK )@@G@@ 817TM320 @G@@@@PINGPONG SZ LCT . ML )@@G@@INITIALIZE LINE COUNT @^@@@@ SZ IC @C@@@@ MM )@@G@@ SZ LENGTH . @E@@@@ SZ ADSAMN )@@G@@VE . TURN OFF SWITCH @G@@@@ SZ COPOUT+3 MO )@@G@@ . SET OUTPUT FILE TO WRITE AT 0 @G@@@@ SZ COPIMP )@@G@@N+3 . SET INPUT FILE TO READ AT 0 @E@@@@ TZ MQ )@@G@@ MCRD$ . MCORE DONE YET? @G@@@@ J NOMCMR )@@G@@R . YES-CAN'T DO ANY MORE @E@@@@ L,U MS )@@G@@ A0,1750 . MCORE IF 1750 LINES @B@@@@ TG A0,LMT )@@G@@CTSV . @F@@@@ J NOMCR . YES-CAN'MU )@@G@@T DO ANY MORE @^@@@@ FIELDATA . @B@@@@ P$RINT MV )@@G@@ (PFFF 1,7,TOOBIG) @^@@@@ LA,U A0,2@ @@@@ J MW )@@G@@ RETURN @ @@@@PFFF FORM 12,6,18 @D@@@@TOOBIG 'PMX )@@G@@ROC ELEMENT CANNOT BE OVER 1750 LINES' @^@@@@ ASCII . MY )@@G@@@]@@@@NOMCR . @C@@@@ LMJ X10,OPNI . MZ )@@G@@@C@@@@ LMJ X10,OPNO . @E@@@@ SZNA )@@G@@ WINHIB . CLEAR WRITE INHIBIT @E@@@@ TNZ NB )@@G@@ AUTOTST . AUTO SAVE MODE? @C@@@@ J 0,X3NC )@@G@@ . @E@@@@ DL A0,EDOUT . GEND )@@G@@T OUTPUT FILENAME @^@@@@ FIELDATA . @E@@@@ DTE NE )@@G@@ A0,('ED$TB ') . IS IT SAVE FILE @^@@@@ ASCII . NF )@@G@@@C@@@@ J 0,X3 . NOPE @C@@@@ J NG )@@G@@ TOPS . YES @G@@@@ . THIS COMMAND GOES TO THE ENNH )@@G@@D OF TEXT AND ENTERS INPUT MODE @A@@@@APP1 LX,U X1,INI )@@G@@NPUT2 @]@@@@BOT2 . @A@@@@ LMJ X10,PACK NJ )@@G@@@A@@@@ LMJ X10,WRB @C@@@@ SZ LENGNK )@@G@@TH . @C@@@@ TNZ OK . NL )@@G@@ @^@@@@ J 0,X1@A@@@@ LMJ X10,FREAD NM )@@G@@ @^@@@@ J $+3 @A@@@@ LMJ X10,WRB NN )@@G@@ @^@@@@ J $-3 @E@@@@ SZ FASTREAD NO )@@G@@ . NO MORE READ FASTS @^@@@@ SZ ICW @E@@@@ NP )@@G@@ SNZ WINHIB . WRITE INHIBIT @E@@@@ SZNQ )@@G@@ OK . AT THE END @^@@@@ J NR )@@G@@ 0,X1@]@@@@ . @/ @G@@@@TYPEIN . . TNS )@@G@@HIS ROUTINE UNPACKS THE EDIT @I@@@@ NT )@@G@@ . IMAGE AND STRIPS OFF TRAILING BLANKS. @C@@@@ SZ NU )@@G@@ INCONT . @E@@@@ TNZ AUTOTST NV )@@G@@ . AUTOSAVE? @C@@@@ J NOTAUTO . NNW )@@G@@O @E@@@@ INCR AUTOCNT . INCREMENT AUTOCOUNTNX )@@G@@@G@@@@ TG A0,AUTOTST . COMPARE AUTOCNT, AUTOTST NY )@@G@@ @E@@@@ J AUTOSAV . AUTOCNT=>AUTOTST NZ )@@G@@@G@@@@NOTAUTO SZ COUNT . THIS ONE WORKS FOR CARDS OA )@@G@@ONLY @E@@@@ TZ DEMAND . DEMAND MODE? OB )@@G@@@E@@@@ J TREADIT . YES, USE TREAD$ @A@@@@OC )@@G@@ LA A0,TREADSEQ+1 @E@@@@ TZ RLSTCD OD )@@G@@ . READ LAST CARD? @E@@@@ LMJ X11,GLCRD OE )@@G@@ . GO GET IT @C@@@@ ER AREAD$ . REOF )@@G@@AD IT @A@@@@ J READIT @E@@@@TREADIT A$EDIT OG )@@G@@ ETAB . START EDIT MODE @E@@@@ TNZ INCOOH )@@G@@NT . CONTINUATION? @C@@@@ J TNOCONT OI )@@G@@ . NO @E@@@@ A$ECHAR '+' . YES INSOJ )@@G@@ERT + @G@@@@TNOCONT TZ ONNLINE . NEXT LINE INPOK )@@G@@UT TYPE? @C@@@@ J PLUSMODE . YES OL )@@G@@@G@@@@ TNZ TYPESEQ . TYPE OUT SEQUENCE NUMS? OM )@@G@@ @C@@@@ J NOSEQ . NO @E@@@@ ON )@@G@@ L A0,LCT . GET LINE COUNT @E@@@@ TZOO )@@G@@ INPUTF . INPUT MODE? @I@@@@ A,U OP )@@G@@ A0,1 . ADJUST TO SHOW WHERE WILL BE INSERTED @C@@@@OQ )@@G@@ A$EDECV . CONVERT TO DECIMAL ASCII @E@@@@NOSEQ TNZ OR )@@G@@ INPUTF . INPUT MODE? @C@@@@ J INSROS )@@G@@TAS . YES @E@@@@ A$ECHAR 'I' . OT )@@G@@INPUT MODE @E@@@@INSRTAS TNZ TYPESEQ . SEQUENCOU )@@G@@E NUMBER? @C@@@@ J INSRST . NO @E@@@@OV )@@G@@ A$ECHAR ':' . USE COLON @E@@@@ OW )@@G@@ J STOPQ . GO PUT IN STOP CHAR@E@@@@INSRST A$OX )@@G@@ECHAR '*' . USE ASTERISK @]@@@@STOPQ . @E@@@@OY )@@G@@ DO DCT5=0 , A$ECHAR 004 . INSERT STOP CODE @E@@@@ OZ )@@G@@ A$EDITX . TERMINATE EDIT @E@@@@LTYPEIN L,PA )@@G@@U A0,TREADSEQ . LOAD PACKET ADDRESS@E@@@@ TZ PB )@@G@@ RLSTCD . CARD WAITING? @C@@@@ LMJ X11,PC )@@G@@GLCRD . GET IT @E@@@@ ER ATREAD$ . ASPD )@@G@@CII TREAD @A@@@@READIT . INPUT READ @E@@@@ PE )@@G@@ L A4,A0 . GET THIS WORD COUNT @E@@@@ TZPF )@@G@@ INCONT . CONTINUATION? @G@@@@ A PG )@@G@@ A0,EDIL . ADD PREVIOUS IMAGE LENGTH @A@@@@ S PH )@@G@@ A0,EDIL @E@@@@ TOPTN 'L' . EPI )@@G@@ OPTION @C@@@@ J NOEOPT . NOPE PJ )@@G@@@C@@@@ L A0,(ECHOIN,0101) . @E@@@@ A PK )@@G@@ A0,EDIL . ADD WORD COUNT @G@@@@ SSC PL )@@G@@ A0,18 . SHIFT FOR PROPER PRINT$ PACKET @G@@@@ ERPM )@@G@@ APRINT$ . ECHO INPUT IF E OPTION ON @^@@@@NOEOPTPN )@@G@@ TNZ EDIL@A@@@@ J 0,X10 @A@@@@ PO )@@G@@ LA A0,(1,0) @A@@@@ LA A1,(1,0) PP )@@G@@@E@@@@ TZ INCONT . CONTINUATION @G@@@@PQ )@@G@@ LXM A1,INCONT . USE VALUE SAVED IN FLAG PR )@@G@@@A@@@@ LA A2,(1,1) @A@@@@CARD1 EX CLOAPS )@@G@@D,*A0 @G@@@@ TNZ CASEUP . UPPER CASE ASCPT )@@G@@II CONVERSION? @C@@@@ J NOUPPER . NO PU )@@G@@@G@@@@ TLE,U A3,0173 . YES, IS CHAR LOWER CASE ASPV )@@G@@CII? @C@@@@ TLE,U A3,0141 . @C@@@@ PW )@@G@@ J NOUPPER . NO @G@@@@ AN,U A3,0PX )@@G@@40 . YES, MAKE UPPER CASE ASCII @G@@@@ EX PY )@@G@@ CSTORE-1,A0 . RESTORE AS UPPER CASE IN EDIT14 @E@@@@NOUPPER TNPZ )@@G@@E A3,CONTCHAR . CONTINUATION CHAR? @C@@@@ J QA )@@G@@ CONTIN . YES @E@@@@ TNE A3,CHGCHR QB )@@G@@ . IS IT EXCHANGE CHAR @E@@@@ L A3,NCHGCHR . YEQC )@@G@@S-REPLACE IT @A@@@@ SA A3,EDIT80,*A1 @A@@@@ QD )@@G@@ TE,U A3,040 @A@@@@ S A1,COUNT QE )@@G@@@A@@@@ J CARD1 @G@@@@CONTIN TZ INCOQF )@@G@@NT . ONLY ONE CONTINUATION ALLOWED @C@@@@ J QG )@@G@@ 0,X10 . @E@@@@ S A1,INCONT QH )@@G@@ . SAVE A1 AND SET FLAG@E@@@@ J NOTAUTO . REQI )@@G@@AD NEXT LINE @]@@@@CLOAD . @C@@@@ L,Q1 A3,EDIT14-QJ )@@G@@1,A2 . @C@@@@ L,Q2 A3,EDIT14-1,A2 . QK )@@G@@@C@@@@ L,Q3 A3,EDIT14-1,A2 . @C@@@@ L,QL )@@G@@Q4 A3,EDIT14-1,A2 . @^@@@@ J $+1 @A@@@@QM )@@G@@ LA A0,(1,0) @A@@@@ TLEM A2,A4 QN )@@G@@ @A@@@@ J CARD1 @A@@@@ J QO )@@G@@ 0,X10 @]@@@@CSTORE . @C@@@@ S,Q1 A3,EDIT14-QP )@@G@@1,A2 . @C@@@@ S,Q2 A3,EDIT14-1,A2 . QQ )@@G@@@C@@@@ S,Q3 A3,EDIT14-1,A2 . @C@@@@ S,QR )@@G@@Q4 A3,EDIT14-1,A2 . @E@@@@PLUSMODE A$ECHAR '+' QS )@@G@@ . USE A PLUS @E@@@@ J STOPQ QT )@@G@@ . GO USE STOP CODE @E@@@@GLCRD L A0,LLSTCD . GEQU )@@G@@T LENGTH @C@@@@GCLOOP JGD A0,MVLCD . MOVE EM QV )@@G@@@E@@@@ L A0,LLSTCD . LENGTH TO A0 @E@@@@QW )@@G@@ SZ RLSTCD . CLEAR FLAG @E@@@@ QX )@@G@@ J 1,X11 . RETURN PAST READ @C@@@@MVLCD L QY )@@G@@ A1,ILSTCD,A0 . @C@@@@ S A1,EDIT14,QZ )@@G@@A0 . @C@@@@ J GCLOOP . RA )@@G@@@A@@@@ . ROUTINE TO TYPE OUT IMAGES @]@@@@TYPOUT . @A@@@@ RB )@@G@@ L A0,IL @A@@@@ TNE,U A0,077 RC )@@G@@@^@@@@ J EOF @C@@@@ TG A0,PTL1 RD )@@G@@ . PTL1>IL?@C@@@@ J $+3 . NO @G@@@@RE )@@G@@ SZ A0 . YES - NO PRINTING (LENGTH 0) RF )@@G@@@C@@@@ J SHIFTL . @C@@@@ TGRG )@@G@@ A0,PTL2 . PTL2>IL?@G@@@@ J ILGRT RH )@@G@@ . NO - IL GREATER OR EQUAL @G@@@@ AN A0,PRI )@@G@@TL1 . YES - NUMBER WORDS PRINTED @E@@@@ A,U RJ )@@G@@ A0,1 . IS IL-PTL1+1 @G@@@@ J SHIFRK )@@G@@TL . SHIFT LENGTH INTO PLACE @E@@@@ILGRT L RL )@@G@@ A0,PTL2 . NUMBER WORDS PRINTED@E@@@@ AN A0,PRM )@@G@@TL1 . IS PTL2-PTL1+1 @C@@@@ A,U A0,1 RN )@@G@@ . @G@@@@SHIFTL LSSL A0,18 . SHIFT LERO )@@G@@NGTH INTO PLACE @E@@@@ S A0,R5 . SARP )@@G@@VE WORD COUNT @E@@@@ TZ ONSITE . ONSITE RQ )@@G@@PRINTOUT @I@@@@ J TYPOUT2 . LINE NUMBRR )@@G@@ERING MUST BE SPECIFIED BY @E@@@@ TZ QUICKON RS )@@G@@ . QON MODE? @E@@@@ SNZ QUICKP . SET RT )@@G@@LIKE LOCAL @G@@@@ TZ ALLLN . UBIQUITRU )@@G@@OUS LINE NUMBERING? @E@@@@ SNZ LNPRT . BEHARV )@@G@@VE LIKE LOCAL @E@@@@TYPOUT2 TNZ LNPRT . LINE NRW )@@G@@UMBERING? @C@@@@ J TYPOUT5 . NOPE @C@@@@RX )@@G@@ A$EDIT ETAB . @E@@@@ TZ RY )@@G@@ QUICKP . QUICK MODE? @G@@@@ J TYPORZ )@@G@@UT3 . YES- VARIABLE LINE NUMBER @G@@@@ A$EDECF SA )@@G@@ 7,LCT . LINE NUMBER TO ASCII DECIMAL @E@@@@ J SB )@@G@@ TYPOUT4 . GO PUT IN COLON @G@@@@TYPOUT3 A$EDECV SC )@@G@@ LCT . VARIABLE SPACE LINE COUNT @E@@@@TYPOUT4 A$SD )@@G@@ECHAR ':' . INSERT : @^@@@@ A$EDITX SE )@@G@@ . @E@@@@TYPOUT5 TZ ONSITE . ONSITE PRINTER? SF )@@G@@@C@@@@ J NOQUK . YES @E@@@@ TNSG )@@G@@Z PNTINQ . REAL PRINT? @E@@@@ TNZ SH )@@G@@ QUICKP . QUICK PRINT @C@@@@ J NOQUSI )@@G@@K . NO @E@@@@ L A4,R5 . SJ )@@G@@GET WORD COUNT @I@@@@ JZ A4,NOQUK . PROTECT SK )@@G@@AGAINST ZERO LENGTH LINES @E@@@@ SSL A4,18 SL )@@G@@ .RIGHT JUSTIFY @E@@@@ AN,U A4,1 SM )@@G@@ . GET CORRECTED COUNT @G@@@@ TZ LNPRT . LSN )@@G@@INE NUMBER PRINTOUT? @C@@@@ J TYPOUTR SO )@@G@@ . YES @G@@@@ A$EDIT ETAB . INITIALIZE ESP )@@G@@DIT MODE @C@@@@ J TYPOUTI . SQ )@@G@@@E@@@@TYPOUTR A$EDITR ETAB . REOPEN EDIT MODE @E@@@@SR )@@G@@TYPOUTI L X7,(1,0) . INITIALIZE POINTERS@C@@@@ SS )@@G@@ L X6,PTL1 . @C@@@@ AN,U X6,1ST )@@G@@ . @I@@@@ L,U A5,'*' . ISU )@@G@@NITIALIZE TEST CHAR TO NONBLANK @E@@@@LAGN EX LOADSV )@@G@@Q,*X7 . GET CHAR FROM IMAGE@C@@@@ TNE,U A5,' ' SW )@@G@@ . @E@@@@ TE,U A6,' ' . BOTH BLSX )@@G@@ANKS TEST @C@@@@ J NOBLK . NO @G@@@@SY )@@G@@ TNZ QUOTE . ARE WE WITHIN QUOTES SZ )@@G@@@E@@@@ J LAGN . NO, DON'T INSERT @G@@@@TA )@@G@@NOBLK S A6,A5 . SAVE FOR COMPARISON THIS CHAR TB )@@G@@@E@@@@ TE,U A6,047 . IS THIS A QUOTE @E@@@@TC )@@G@@ J OKIN . NOT A QUOTE @G@@@@ TD )@@G@@ TNZ QUOTE . ARE WE NOW WITHIN A QUOTE @C@@@@TE )@@G@@ J NOQTE . NO @E@@@@ SZ TF )@@G@@ QUOTE . END QUOTE MODE @E@@@@ J OKINTG )@@G@@ . PRINT IT @E@@@@NOQTE SNZ QUOTE TH )@@G@@ . SET QUOTE MODE @E@@@@OKIN L A0,A6 TI )@@G@@ . STORE CHAR IN IMBUF@^@@@@ A$ECHAR . @E@@@@ J TJ )@@G@@ LAGN . GET NXT CHAR @^@@@@LOADQ . LOAD TTK )@@G@@ABLE @C@@@@ L,Q1 A6,IMAGE,X6 . @C@@@@ TL )@@G@@ L,Q2 A6,IMAGE,X6 . @C@@@@ L,Q3 A6,ITM )@@G@@MAGE,X6 . @C@@@@ L,Q4 A6,IMAGE,X6 . TN )@@G@@ @G@@@@ J $+1 . NEED TO ESCAPE EXECTO )@@G@@UTE @E@@@@ L X7,(1,0) . RESET CHAR PTTP )@@G@@R @G@@@@ L A2,X6 . GET READY FOR COMPARTQ )@@G@@E @E@@@@ A,U X6,1 . INCREMENT X6 TR )@@G@@ @G@@@@ A,U A2,1 . A2 = TOTAL WORDS LOOTS )@@G@@KED AT - 1 @C@@@@ AN A2,PTL1 . @G@@@@TT )@@G@@ TLE A2,A4 . COMPARE AGAINST TOTAL WORD COUNTTU )@@G@@@E@@@@ J LAGN . CONTINYUH @G@@@@TV )@@G@@OKFIN SZ QUOTE . ZERO QUOTE INDICATOR TW )@@G@@@^@@@@ A$EDITX . @G@@@@ L A0,(0141,IMBUF) TX )@@G@@ . LET PRINT$ FIGURE WORD COUNT @E@@@@ TZ DOCCOM TY )@@G@@ . DOCUMENT COMMAND @E@@@@ J TRDOC TZ )@@G@@ . GO DO TREAD @C@@@@ J PRTPOUT1 . GO PRINTUA )@@G@@ @^@@@@NOQUK . @$ @E@@@@ L A0,R5 UB )@@G@@ . RECOVER WORD COUNT @E@@@@ TZ LNPRT UC )@@G@@ . LINE NUMBER PRINT @C@@@@ J PRTPOUT . YUD )@@G@@ES @C@@@@ J NOTBLNK . @E@@@@PRTPOUUE )@@G@@T DL A1,IMBUF . GET LINE NUMBER @G@@@@ DSUF )@@G@@ A1,FIMBUF-2 . PUT BEHIND PRINTED LINE IMAGE @G@@@@ UG )@@G@@ AH A0,(2,-2) . 2 MORE WORDS, 2 LESS ON ADDRESS @E@@@@UH )@@G@@NOTBLNK AH A0,(0100,FIMBUF) . REST OF APRINT$ WORD@E@@@@ UI )@@G@@ L A3,R5 . BT REPEAT COUNT @C@@@@ SSUJ )@@G@@L A3,18 . @C@@@@ L R1,A3 UK )@@G@@ . @G@@@@ L X5,(1,FIMBUF) . BT DESTIUL )@@G@@NATION ADDRESS @E@@@@ L X4,(1,IMAGE) . BTUM )@@G@@ SOURCE ADDRESS @C@@@@ A X4,PTL1 . UN )@@G@@@E@@@@ AN,U X4,1 . IMAGE+(PTL1)-1 @G@@@@UO )@@G@@ BT X5,,*X4 . TRANSFER WORDS TO APRINT$ BUFFERUP )@@G@@@E@@@@ TZ ONSITE . ONSITE PRINTOUT @C@@@@UQ )@@G@@ J PRNTALT . YES @E@@@@ TZ UR )@@G@@ DOCCOM . DOC COMMAND? @G@@@@ J TRDOUS )@@G@@C . YES-GOT TO DO A TREAD @C@@@@PRTPOUT1 ER UT )@@G@@ APRINT$ . PRINT IT@A@@@@ J 0,X10 UU )@@G@@@E@@@@PRNTALT S A0,ALTPKT . PUT A0 IN PACKET @E@@@@UV )@@G@@PRNTALT1 L,U A0,ALTPKT . GET PACKET ADDRESS @C@@@@ UW )@@G@@ TZ CARDPCH . CPUNCH?@C@@@@ J PCHAUX )@@G@@LT1 . YES @E@@@@ ER APRNTA$ . ALUY )@@G@@T PRINT IT @C@@@@ J 0,X10 . RETURN UZ )@@G@@@E@@@@PCHALT1 SZ,S2 ALTPKT . REMOVE LINE SKIP @E@@@@VA )@@G@@ ER APNCHA$ . ALT PUNCH IT @C@@@@ VB )@@G@@ J 0,X10 . EXIT @E@@@@TRDOC S A0,TVC )@@G@@REDOC . STORE IN PACKET @E@@@@ L,U A0,TREDOC VD )@@G@@ . GET ADDRESS OF PKT @C@@@@ ER ATREAD$ VE )@@G@@ . @C@@@@ J 0,X10 . RETURN @E@@@@VF )@@G@@CONWORD . TEST CONTROL WORD (LABEL IMAGE) @E@@@@ VG )@@G@@ SZ FD . SET ASCII INPUT FLAG@G@@@@ TNVH )@@G@@Z AC . IS INPUT FD? (CHECK S6 OF ICW) @G@@@@ VI )@@G@@ SNZ FD . YES, SET FIELDATA INPUT FLAG @]@@@@VJ )@@G@@CONWORD2 . @E@@@@ L A0,FQOPT . LOAD P-Q OPT FVK )@@G@@LAG @E@@@@ L A1,CONCODE . S1 OF CONTROL WORD VL )@@G@@@E@@@@ TLE,U A0,2 . NO P OR Q SPEC? @E@@@@VM )@@G@@ J CON42 . ONE WAS SPEC @E@@@@ VN )@@G@@ TE,U A1,050 . 50 CONTROL CODE? @C@@@@ J VO )@@G@@ CON42 . NO @C@@@@ TE,U A0,2 VP )@@G@@ . FQOPT=2?@C@@@@ J RCNTRL . NO VQ )@@G@@@E@@@@ TZ AC . FD OR ASCII CODE? @C@@@@VR )@@G@@ J RCN3 . ASCII @E@@@@ SNZ VS )@@G@@ OUTFIL . OUTPUT FILE IS FD @E@@@@ L,U A0,3VT )@@G@@ . SET FQOPT=3 @C@@@@ S A0,FQOPT VU )@@G@@ . @C@@@@ J RCNTRL . VV )@@G@@@E@@@@RCN3 SZ OUTFIL . OUTPUT FILE IS ASCII@E@@@@VW )@@G@@ SZ FQOPT . ASSUME ASCII OUTPUT @C@@@@ VX )@@G@@ J 0,X11 . RETURN @G@@@@CON42 TE,U A1,0VY )@@G@@42 . 42 CODE(MIXED INPUT FILE)? @C@@@@ J VZ )@@G@@ RCNTRL . NO @G@@@@ SZ OUTFIL WA )@@G@@ . YES, OUTPUT FILE IS ASCII @E@@@@ SZ FQOPT WB )@@G@@ . ASSUME ASCII @E@@@@ SZ FD WC )@@G@@ . SET ASCII INPUT FLAG@G@@@@ TNZ AC . ISWD )@@G@@ INPUT FD? (CHECK S6 OF ICW) @G@@@@ SNZ FD WE )@@G@@ . YES, SET FIELDATA INPUT FLAG @G@@@@ J READ WF )@@G@@ . DON'T WRITE 42 CONTROL IMAGE @G@@@@RCNTRL TZ FD WG )@@G@@ . IS FD INPUT FLAG SET? @G@@@@ SNZ WH )@@G@@ AC . YES, THEN CHANGE S6 OF ICW TO 1 @G@@@@ WI )@@G@@ . SINCE ED INTERNAL FILE IS ASCII @C@@@@ WJ )@@G@@ J 0,X11 . RETURN @]@@@@ . @/ @E@@@@FREAD WK )@@G@@ SNZ FASTREAD . SET FASTREAD FLAG @C@@@@ J WL )@@G@@ READ . GO READ@G@@@@RCN LMJ X11,CONWORWM )@@G@@D2 . TEST LABEL CONTROL WORD @E@@@@ L A0,CWN )@@G@@ONCODE . GET S1 OF ICW @G@@@@ TNE,U A0,060 WO )@@G@@ . PRINT CONTROL CODE 60? @C@@@@ J PC WP )@@G@@ . @]@@@@GETSP . @A@@@@ SX X10,WQ )@@G@@X10SAV @A@@@@ LMJ X10,WRB @C@@@@ WR )@@G@@ LX X10,X10SAV . RELOAD X10 @C@@@@READ . WS )@@G@@ . @E@@@@ SZ WINHIB . CLEAR WRWT )@@G@@ITE INHIBIT @E@@@@ TNZ OK . AT END OF FILWU )@@G@@E? @E@@@@ J EOF . YES, GO TO TOP WV )@@G@@@A@@@@ SZ LENGTH @G@@@@ L A0,BWW )@@G@@LANK2 . IN CASE INPUT IS ALL BLANKS @C@@@@ S WX )@@G@@ A0,IMAGE . @C@@@@ LA,U A0,EDIN WY )@@G@@ . @E@@@@ LMJ X11,SDFI . GET IMAGE WZ )@@G@@ @A@@@@ J IOERRA @E@@@@ J XA )@@G@@ 0,X10 . EOF RETURN @G@@@@ TP EDINXB )@@G@@+10 . IS IT A DATA IMAGE ? @E@@@@ J XC )@@G@@ RCN . NO, GET NEXT IMAGE @E@@@@ TNZ FD XD )@@G@@ . IS FD FLAG SET? @C@@@@ J READ2 XE )@@G@@ . NO @E@@@@ L A0,IL . IMAGE LEXF )@@G@@NGTH @E@@@@ CONVFA IMAGE,IMAGE . CONVERT FD TO XG )@@G@@ASCII @G@@@@ IL32 IL . CHANGE TO ASCII LENGXH )@@G@@TH @E@@@@READ2 TNZ ADSAVE . FIRST PASS THRXI )@@G@@U? @I@@@@ J DONCL . NOPE XJ )@@G@@ 817TM333 @I@@@@ TNZ DOPTI . ISXK )@@G@@ INPUT DATA FILE? 817TM334 @I@@@@ J DONCXL )@@G@@L . NOPE 817TM335 @I@@@@ XM )@@G@@ SZ,H2 ICW . CLEAR AC,AC1,DC,DC1 817TM3XN )@@G@@36 @I@@@@ SZ,S3 ICW . XO )@@G@@ 817TM337 @I@@@@DONCL . XP )@@G@@ 817TM338 @G@@@@ TLE RC,AXQ )@@G@@C . IS AC GREATER THAN RC? @E@@@@ J XR )@@G@@ READ . YES GET NEXT IMAGE @G@@@@ TNZ ADSAXS )@@G@@VE . CLEAR ONLY NEW IMAGES @E@@@@ J XT )@@G@@ FRSTPA . NO FIRST PASS THRU @^@@@@ SZ DC1 XU )@@G@@@^@@@@ SZ AC1 @I@@@@FRSTPA TNZ DC1 XV )@@G@@ . WAS IMAGE DELETED BY ED ED012330 @I@@@@ J XW )@@G@@ NOTDBE . NO ED012340 @I@@@@XX )@@G@@ TZ AC1 . WAS IT ALSO ADDED BY ED XY )@@G@@ED012350 @I@@@@ J READ . YES THROW IT AXZ )@@G@@WAY ED012360 @C@@@@ J GETSP .YA )@@G@@ COPY. @I@@@@NOTDBE TNZ DC . NO, WAS IMAGEYB )@@G@@ DELETED ? ED012380 @E@@@@ J DECODE YC )@@G@@ . NO, ACCEPT IT @G@@@@ TG RC,DC . YYD )@@G@@ES,IS DC GREATER THAN RC? @E@@@@ J GETSP YE )@@G@@ . NO,GET NEXT IMAGE @^@@@@ SZ DC @]@@@@DECODE . YF )@@G@@@G@@@@ A,U LCT,1 . INCREMENT LINE COUNT YG )@@G@@ @G@@@@ TZ FASTREAD . IS THIS A FAST READYH )@@G@@? @E@@@@ J 1,X10 . YES, DON'T DEYI )@@G@@CODE @G@@@@ LA A0,(1,0) . OFF THE INPUT IMAGEYJ )@@G@@ AND UNPACKS@I@@@@ LA A1,(1,0) . 14 WORDS INTOYK )@@G@@ 80,RETURN THE NUMBER OF @E@@@@ LA A2,(1,1) YL )@@G@@ . CHARACTER IN LENGTH@A@@@@DEC1 EX DEC2,*A0 @E@@@@YM )@@G@@ SA A3,IMAG80,*A1 . STORE CHARACTER @A@@@@ YN )@@G@@ TE,U A3,040 @E@@@@ S A1,LENGTH YO )@@G@@ . NO, STORE LENGTH @I@@@@ J DEC1 . RYP )@@G@@E-INITILIZE AND GET NEXT CHARACTER @]@@@@DEC2 . @C@@@@ YQ )@@G@@ L,Q1 A3,IMAGE-1,A2 . @C@@@@ L,Q2 A3,IYR )@@G@@MAGE-1,A2 . @C@@@@ L,Q3 A3,IMAGE-1,A2 . YS )@@G@@ @C@@@@ L,Q4 A3,IMAGE-1,A2 . @C@@@@ YT )@@G@@ J $+1 . @C@@@@ LA A0,(YU )@@G@@1,0) . @G@@@@ TLEM A2,IL . DYV )@@G@@OES WORD COUNT=IMAGE LENGTH? @C@@@@ J DEC1 YW )@@G@@ . NOT YET@E@@@@ L,U A0,' ' . GET A BLANK YX )@@G@@ @G@@@@ L A1,LENGTH . GET LENGTH OF IAMAGEYY )@@G@@ IN CHARS @E@@@@ L A2,SAVE2 . GET CHANGE MAXYZ )@@G@@ @E@@@@ AN A2,A1 . SUBTRACT LENGTH ZA )@@G@@@E@@@@ LXI,U A1,1 . NEED AN INCR @C@@@@ZB )@@G@@ S A0,IMAG80,*A1 . @G@@@@ JGD ZC )@@G@@ A2,$-1 . BLANK OUT REST OF IMAG80 @A@@@@ LAZD )@@G@@ A0,LENGTH @A@@@@ DSA A0,36 @^@@@@ZE )@@G@@ DI,U A0,4@^@@@@ TZ A1 @^@@@@ AAZF )@@G@@,U A0,1@A@@@@ SA A0,IL @G@@@@ TZZG )@@G@@ LENGTH . WAS INPUT A BLANK LINE? @A@@@@ ZH )@@G@@ J 1,X10 @C@@@@ L,U A0,1 ZI )@@G@@ . @C@@@@ S A0,IL . @C@@@@ZJ )@@G@@ S A0,LENGTH . @I@@@@ J ZK )@@G@@ 1,X10 . EXIT FROM READ ROUTINE FOR BLANK KINE @G@@@@ZL )@@G@@PC TNZ FD . FD PRINT CONTROL IMAGE? ZM )@@G@@@E@@@@ J RDPCNT . NO, ASCII @E@@@@ZN )@@G@@ L A0,IL . GET IMAGE LENGTH @E@@@@ ZO )@@G@@ CONVFA IMAGE,IMAGE . FD TO ASCII @E@@@@ ILZP )@@G@@32 IL . CHANGE IMAGE LENGTH @G@@@@RDPCNT TNZ ZQ )@@G@@ RECPCNT . RECOGNIZE PRINT CONTROL? @C@@@@ J ZR )@@G@@ GETSP . NO @E@@@@ TZ,S4 ICW ZS )@@G@@ . DELETED? @C@@@@ J READ ZT )@@G@@ . YES @G@@@@ AN,U LCT,1 . YES,BUT DON'TZU )@@G@@ INC LINE COUNT @E@@@@ J DECODE . GO DECOZV )@@G@@DE IT @]@@@@ . @/ @]@@@@WRB . @A@@@@ LA ZW )@@G@@ A0,IL @E@@@@ TZ WINHIB . WRITE INZX )@@G@@HIBIT ON? @G@@@@ JZ A0,0,X10 . RETURN IF ZEZY )@@G@@RO LENGTH @E@@@@ TNE,U A0,077 . EOF IMZZ )@@G@@AGE ? @E@@@@ J 0,X10 . YES, RETURN AA )@@G@@ @G@@@@ LA A1,ICW . TRANSFER IMAGE CONTAB )@@G@@ROL WORD @C@@@@ SA A1,OCW . @^@@@@AC )@@G@@ AA,U IC,1@C@@@@ LA,U A0,EDOUT . AD )@@G@@ @E@@@@ LMJ X11,SDFO . WRITE IMAGE AE )@@G@@@A@@@@ J IOERRA @^@@@@ SZ ICW AF )@@G@@@E@@@@ SNZ WINHIB . WRITE INHIBIT @A@@@@AG )@@G@@ J 0,X10 @]@@@@PACK . @C@@@@ L AH )@@G@@ A0,LENGTH . @G@@@@ JZ A0,0,X10 AI )@@G@@ . RETURN ON ZERO LENGTH @I@@@@ DSA A0,3AJ )@@G@@6 . CALCULATE LENGTH OF IMAGE IN WORDS @C@@@@ AK )@@G@@ DI,U A0,4 . @C@@@@ TZ A1 AL )@@G@@ . @^@@@@ AA,U A0,1@E@@@@ SAAM )@@G@@ A0,IL . AND STORE IN ICW @A@@@@ LA AN )@@G@@ A1,BLANK2 @A@@@@ SA A1,IMAGE-1,A0 @E@@@@ AO )@@G@@ LA A3,(1,0) . PACK IMAG80 @C@@@@ LAAP )@@G@@ A1,(1,1) . @C@@@@ L X4,(1,IMAGAQ )@@G@@E) . @C@@@@PAC1 LA A0,IMAG80-1,A1 . AR )@@G@@@C@@@@ EX STORE,*A3 . @C@@@@ TLAS )@@G@@EM A1,LENGTH . @C@@@@ J PAC1 AT )@@G@@ . @A@@@@ J 0,X10 @]@@@@STORE AU )@@G@@ . @C@@@@ S,Q1 A0,0,X4 . @C@@@@ AV )@@G@@ S,Q2 A0,0,X4 . @C@@@@ S,Q3 A0,0AW )@@G@@,X4 . @A@@@@ LMJ X5,$+1 @A@@@@AX )@@G@@ S,Q4 A0,0,*X4 @A@@@@ LA A3,(1,0) AY )@@G@@ @^@@@@ J 0,X5@]@@@@ . @/ @G@@@@ . THIS ROUTAZ )@@G@@INE IS USED TO SEARCH THE TYPED INPUT LINE EDIT80 @A@@@@ . THEBA )@@G@@RE ARE TWO ENTRY POINTS: @G@@@@ . GET- SEARCH TILL FIND DELIMITER OBB )@@G@@R BLANK-RETURN THING FOUND @C@@@@ . IN A1, IN FD, RT JUST.,BC )@@G@@ ZERO FILLED. @E@@@@ . GET2- SEARCH TILL FIND DELIMITER OR BLANK. OBD )@@G@@BJECT MAY BE@E@@@@. TWO FD WORDS - RESULT LEFT IN FIMBUF,FIMBUF+1 BE )@@G@@ @A@@@@. LEFT JUSTIFIED, BLANK FILLED. @C@@@@GET2 SNZ BF )@@G@@ GET2F . SET FLAG @G@@@@GET DL A0,BLANK2 BG )@@G@@ . ASCII BLANKS => FIMBUF(3 WORDS) @C@@@@ DS A0,FIMBUF BH )@@G@@ . @C@@@@ S A0,FIMBUF+2 . BI )@@G@@@E@@@@ SZ A9 . COUNTS NO. OF CHAR @G@@@@BJ )@@G@@ L X4,(1,FIMBUF) . INITIALIAZE FOR STORES BK )@@G@@@C@@@@ L A3,(1,0) . @A@@@@ SZBL )@@G@@ DELIM @G@@@@ SZ A1 . IBM )@@G@@NITIALIZE ARGUMENT (A1) @G@@@@ LA A2,EDCT BN )@@G@@ . COMPARE COUNT AND EDCT @]@@@@GET1 . @I@@@@ TGBO )@@G@@ A2,COUNT . ARE THERE ANY MORE CHAR NOT YET SEEN? BP )@@G@@@E@@@@ J EOLF . NO, RETURN @C@@@@BQ )@@G@@ AA,U A2,1 . YES @E@@@@ LA BR )@@G@@ A0,EDIT80-1,A2 . LOAD NEXT CHAR @A@@@@ TNE,U A0,BS )@@G@@040 @E@@@@ J GET1 . LOOK AT ANOTHEBT )@@G@@R CHAR@E@@@@ TNZ GET2F . GET 2 FLAG? BU )@@G@@@A@@@@ J FILL1 @E@@@@FILL LA A0,EBV )@@G@@DIT80-1,A2 . LOAD NEXT CHAR @E@@@@ TNZ GET2F BW )@@G@@ . FIENAME OPTION @C@@@@ J FILLX BX )@@G@@ . NOPE @C@@@@ TLE,U A0,'Z'+1 . ALPHA? @C@@@@BY )@@G@@ TLE,U A0,'A' . @E@@@@ J BZ )@@G@@ $+2 . NOPE TEST SOME MORE @C@@@@ J FILLCA )@@G@@1 . ALPHA OK@G@@@@ TLE,U A0,0173 . TECB )@@G@@ST LOWER-CASE ALPHA RANGE @C@@@@ TLE,U A0,0141 CC )@@G@@ . @E@@@@ J DMTST . NOT ALPHA CD )@@G@@ @C@@@@ J FILL1 . ALPHA @C@@@@DMTST CE )@@G@@ TLE,U A0,'9'+1 . NUMERIC?@C@@@@ TLE,U A0,'CF )@@G@@0' . @E@@@@ J DMTST2 . NOCG )@@G@@PE TRY $ OR - @E@@@@ J FILL1 . NUMERIC CH )@@G@@OK @C@@@@DMTST2 TE,U A0,'-' . -? @C@@@@CI )@@G@@ TNE,U A0,'$' . $? @C@@@@ J CJ )@@G@@ FILL1 . NO @C@@@@ J GET2D CK )@@G@@ . YES @]@@@@FILLX @A@@@@ TNE,U A0,040 CL )@@G@@@G@@@@ J GO-1 . YES, CORRECT BLANK AND RECM )@@G@@TURN @C@@@@ TNE,U A0,',' . @E@@@@ CN )@@G@@ J GET2D . THIS IS A DELIMITER @C@@@@ TNCO )@@G@@E,U A0,' ' . @E@@@@ J GET2D CP )@@G@@ . THIS IS A DELIMITER @C@@@@ TNE,U A0,'!' CQ )@@G@@ . @E@@@@ J GET2D . THIS IS A DELICR )@@G@@MITER @C@@@@ TNE,U A0,'+' . @E@@@@ CS )@@G@@ J GET2D . THIS IS A DELIMITER @C@@@@ TNCT )@@G@@E,U A0,'/' . @E@@@@ J GET2D CU )@@G@@ . THIS IS A DELIMITER @C@@@@ TNE,U A0,'(' CV )@@G@@ . @E@@@@ J GET2D . THIS IS A DELICW )@@G@@MITER @C@@@@ TNE,U A0,')' . @E@@@@ CX )@@G@@ J GET2D . THIS IS A DELIMITER @C@@@@ TNCY )@@G@@E,U A0,'''' . @E@@@@ J GET2D CZ )@@G@@ . THIS IS A DELIMITER @C@@@@ TNE,U A0,'*' DA )@@G@@ . @E@@@@ J GET2D . THIS IS A DELIDB )@@G@@MITER @C@@@@ TNE,U A0,'.' . @E@@@@ DC )@@G@@ J GET2D . THIS IS A DELIMITER @E@@@@ J DD )@@G@@ FILL1 . NO,JUMP OVER @A@@@@GET2D S DE )@@G@@ A0,DELIM @E@@@@ J GO . JUMP TODF )@@G@@ RETURN @E@@@@FILL1 EX STORE,*A3 . SAVE IN FIMBUFDG )@@G@@ @E@@@@ A,U A9,1 . ONE MORE CHAR DH )@@G@@@G@@@@GO5 TNE A2,COUNT . ARE THERE ANY CHAR NOT YETDI )@@G@@ SEEN?@E@@@@ J GO . NO,RETURN DJ )@@G@@@C@@@@ AA,U A2,1 . YES, @E@@@@ J DK )@@G@@ FILL . GO LOOK AT NEXT ONE@I@@@@ ANA,U DL )@@G@@ A2,1 . LAST CHAR SEEN WAS BLANK-IGNORE IT @C@@@@DM )@@G@@GO S A2,EDCT . @G@@@@ TNZ DN )@@G@@ A9 . WERE ANY CHAR STORED? @C@@@@ J DO )@@G@@ GO2 . NO @G@@@@ TNZ GET2F DP )@@G@@ . WAS GET OR GET2 CALLED? @C@@@@ J GO1 DQ )@@G@@ . GET WAS @E@@@@ L,U A0,3 . CODR )@@G@@NVERT 3 WORDS @E@@@@ CONVAF FIMBUF,FIMBUF . CONVERT DS )@@G@@ASCII TO FD @E@@@@ SNZ A1 . USE AS FLAG DT )@@G@@ @E@@@@ L A5,BLANKS . FD BLANKS DU )@@G@@@E@@@@ TNE A5,FIMBUF . FIMBUF=BLANKS? @E@@@@DV )@@G@@ SZ A1 . YES, CLEAR FLAG @C@@@@ DW )@@G@@ J GO2 . @E@@@@GO1 L,U A7,6DX )@@G@@ . 6 CHAR AT MOST @E@@@@ AN A7,A9 DY )@@G@@ . MAY BE LESS THAN 6 @C@@@@ DL A1,FIMBUF DZ )@@G@@ . @C@@@@GO3 TNZ A7 . A7=0? @G@@@@EA )@@G@@ J CONV . WE HAVE 6 CHAR - GO CONVERT EB )@@G@@@E@@@@ TP A7 . IS A7 NEGATIVE? @G@@@@EC )@@G@@ J CONV . YES,GO CONVERT(MORE THAN 6 CHAR)ED )@@G@@@G@@@@ A,U A2,040 . CHANGE BLANK TO MASTER-SPAEE )@@G@@CE @E@@@@ DSC A1,9 . SHIFT ONE ASCII CHAREF )@@G@@@G@@@@ AN,U A7,1 . LESS ONE MASTER-SPACE EG )@@G@@ @G@@@@ J GO3 . GO AND CHANGE ANOTHEEH )@@G@@R BLANK @G@@@@CONV DS A1,FIMBUF . GET READY FOR EI )@@G@@CONVERSION @E@@@@ L,U A0,2 . CONVERT EJ )@@G@@2 WORDS @E@@@@ CONVAF FIMBUF,FIMBUF . CONVERT ASCII EK )@@G@@TO FD @G@@@@ L A1,FIMBUF . A1 HAS DESIRED RESULEL )@@G@@T IN FD @E@@@@GO2 SZ GET2F . CLEAR FLAG EM )@@G@@ @C@@@@ J 0,X10 . @E@@@@EOLF EN )@@G@@ L,U A0,0777 . GET INDICATOR @E@@@@ S EO )@@G@@ A0,DELIM . PUT IN DELIM @E@@@@ S EP )@@G@@ A2,EDCT . SAVE COUNT @E@@@@ SZ GET2EQ )@@G@@F . CLEAR FLAG @C@@@@ J 0,X10 ER )@@G@@ . RETURN @C@@@@. THIS ROUTINE RETURNS 1 OR 2 ASCII CHAR ES )@@G@@@A@@@@. RT.JUST., ZERO FILLED, IN A1. @]@@@@GET3 . @C@@@@ ET )@@G@@ SZ A1 . @G@@@@ L A2,EEU )@@G@@DCT . COMPARE COUNT AND EDCT @I@@@@ TG EV )@@G@@ A2,COUNT . ARE THERE ANY MORE CHAR NOT YET SEEN? @C@@@@EW )@@G@@ J GO4 . NO @G@@@@INC A,U EX )@@G@@ A2,1 . ONE MORE CHAR LOOKED AT @E@@@@ L EY )@@G@@ A3,EDIT80-1,A2 . LOAD NEXT CHAR @C@@@@ TNE,U EZ )@@G@@ A3,040 . BLANK? @C@@@@ J TBLANK FA )@@G@@ . YES @E@@@@ LSSL A1,9 . SHIFT ONE ASCIFB )@@G@@I CHAR@E@@@@ A A1,A3 . ADD IN CHAR TO A1 FC )@@G@@@G@@@@ TNE A2,COUNT . ANY CHAR NOT YET SEEN? FD )@@G@@ @C@@@@ J LEAVE . NO @E@@@@ FE )@@G@@ J INC . YES, LOOK AT ANOTHER@G@@@@TBLANK TZFF )@@G@@ A1 . ARE ANY CHAR STORED IN A1? @G@@@@ FG )@@G@@ J LEAVE . YES, RETURN WITH CHAR @G@@@@FH )@@G@@ J INC . NO, LOOK AT ANOTHER CHAR FI )@@G@@@E@@@@LEAVE S A2,EDCT . CHAR COUNT @C@@@@FJ )@@G@@ J 0,X10 . RETURN @E@@@@GO4 L,U FK )@@G@@ A0,0777 . GET INDICATOR @E@@@@ S A0,DFL )@@G@@ELIM . PUT IN DELIM @C@@@@ J 0,X10 FM )@@G@@ . RETURN @]@@@@ . @I@@@@BIN . . FN )@@G@@ . ROUTINE CONVERTS DECIMAL NUMBER (RJZF @I@@@@ . FO )@@G@@ . . IN A1) TO BINARY NUMBER (IN A10) FP )@@G@@@I@@@@ LMJ A2,BIN1 . ENTRY HERE TO RETURN BINFQ )@@G@@ARY LESS ONE @G@@@@ JZ A10,0,X10 . DO NOTFR )@@G@@ SUBTRACT IF ZERO @G@@@@ JGD A10,0,X10 . FS )@@G@@SUBTRACT ONE AND RETURN @I@@@@BIN0 LA A2,X10 FT )@@G@@ . ENTRY HERE FOR CONVERSION ALONE @G@@@@BIN1 SZ FU )@@G@@ A10 . INITIALIZE NUMBER REGISTER @G@@@@BIN2 SZFV )@@G@@ A0 . INITIALIZE DIGIT REGISTER @G@@@@ FW )@@G@@ LDSL A0,6 . SHIFT CHARACTER INTO A0 @E@@@@FX )@@G@@ JZ A0,BIN3 . IF VOID,JUMP @^@@@@ FY )@@G@@ FIELDATA . @E@@@@ TLE,U A0,'9'+1 . IS IT NUFZ )@@G@@MERIC @C@@@@ TLE,U A0,'0' . @^@@@@GA )@@G@@ ASCII . @E@@@@ J NUMERR . NGB )@@G@@O, SYNTAX ERROR @E@@@@ ANA,U A0,060 . REMOVEGC )@@G@@ ZONE @G@@@@ MSI,U A10,10 . MULTIPLY NUMGD )@@G@@BER BY 10 @G@@@@ AA A10,A0 . ADD DIGE )@@G@@GIT TO NUMBER @I@@@@BIN3 JNZ A1,BIN2 . GF )@@G@@IF MORE CHAR REMAIN,PROCESS NEXT DIGIT @E@@@@ S A10,GG )@@G@@SSAVE . RESET SCAN COUNT @C@@@@ J 0,A2 GH )@@G@@ . RETURN@]@@@@ . @/ @]@@@@OPNO . @C@@@@ LRGI )@@G@@,U R1,9 . @C@@@@ LA A0,(1,COPOGJ )@@G@@UT) . @A@@@@ LA A1,(1,EDOUT+2) @C@@@@ GK )@@G@@ BT A1,0,*A0 . @C@@@@ LA,U A0,EGL )@@G@@DOUT . @C@@@@ LMJ X11,SDFOO . GM )@@G@@ @A@@@@ J 0,X10 @]@@@@ . @E@@@@GN )@@G@@CLOSO L,U A0,EDOUT . CLOSE OUTPUT FILE @C@@@@ GO )@@G@@ LMJ X11,SDFOC . @C@@@@ J IOERGP )@@G@@RA . @C@@@@ J 0,X10 . RGQ )@@G@@ETURN @]@@@@OPNI . @G@@@@ LR,U R1,9 . TRGR )@@G@@ANSFER FILE CONTROL TABLE @G@@@@ LA A0,(1,COPIN) GS )@@G@@ . FROM COPY TO EDIT-INOUT @A@@@@ LA A1,(1,EDINGT )@@G@@+2) @C@@@@ BT A1,0,*A0 . @E@@@@ GU )@@G@@ LA,U A0,EDIN . OPEN SOURCE INPUT @C@@@@ LMGV )@@G@@J X11,SDFIO . @A@@@@ J IOERRA GW )@@G@@ @E@@@@GETSDFC L,U A0,EDIN . READ FIRST IMAGE GX )@@G@@@C@@@@ LMJ X11,SDFI . @C@@@@ J GY )@@G@@ IOERRA . @E@@@@ J SDFHERR GZ )@@G@@ . EOF RETURN @G@@@@ TN EDIN+10 HA )@@G@@ . DATA IMAGE OR CONTROL @]@@@@ . @G@@@@ J HB )@@G@@ GETSDFC . DATA IMAGE- GET NEXT @I@@@@ HC )@@G@@ L A0,ICW . GET IMAGE CONTROL WORD 817TM3HD )@@G@@41 @I@@@@ L A1,DOPTI . GET DATA FILE INDICAHE )@@G@@TOR 817TM342 @I@@@@ TNE A0,('**PF**') . ISHF )@@G@@ IT A PROGRAM FILE HDR 817TM343 @I@@@@ JNZ A1,DHG )@@G@@ATAPF . ATTEMPT TO EDIT PF AS DATA 817TM344 @E@@@@ HH )@@G@@ TNZ AUTOREC . AUTO RECOVERY? @C@@@@ J HI )@@G@@ NOREC . NO @G@@@@ AND,U A0,010 HJ )@@G@@ . CHECK RECOVERY TEST BIT @G@@@@ TNZ A1 HK )@@G@@ . SHOULD OUTPUT FILE BE FD? @E@@@@ J HL )@@G@@ ASCREC . NO, ASCII @E@@@@ SNZ OUTFHM )@@G@@IL . OUTPUT FILE IS FD @G@@@@ SNZ FQOPT HN )@@G@@ . AS IF P OPTION WERE SPEC @C@@@@ J NOREHO )@@G@@C . @E@@@@ASCREC SZ OUTFIL . OUHP )@@G@@TPUT FILE IS ASCII@G@@@@ SZ FQOPT . AS IF Q HQ )@@G@@OPTION WERE SPEC @]@@@@NOREC . @G@@@@ LMJ X11,HR )@@G@@CONWORD . TEST LABEL CONTROL WORD @E@@@@ SZ,S3 HS )@@G@@ ICW . GET RID OF PROBLEMS @G@@@@ J 0,X1HT )@@G@@0 . ASSUME SDF HEADER WORD-RETURN @I@@@@DATAPF TYP HU )@@G@@ E54,L54 . DATA ATTEMPT ON PF 817TM346 @I@@@@HV )@@G@@ J OEND . ERROR OFF HW )@@G@@817TM347 @G@@@@SDFHERR TYP E26,L26 . NO SDF HEADERHX )@@G@@ WORD IN FILE @C@@@@ J 0,X10 . RETURN HY )@@G@@@]@@@@ . @E@@@@CLOSI L,U A0,EDIN . CLOSE IHZ )@@G@@NPUT FILE @C@@@@ LMJ X11,SDFIC . @C@@@@IA )@@G@@ J 0,X10 . @]@@@@ . @/ @E@@@@IB )@@G@@ . THESE ROUTINES ARE USED FOR READING AND WRITING EXTERNAL @C@@@@ . FILIC )@@G@@ES BY THE SPLIT AND ADD COMMANDS. @E@@@@OPNOXF L,U A0,EID )@@G@@DXF . OPEN OUTPUT SDFO @C@@@@ LMJ X11,SDFOO IE )@@G@@ . @C@@@@ J 0,X10 . IF )@@G@@@E@@@@CLOSOXF L,U A0,EDXF . CLOSE OUTPUT SCFO @C@@@@IG )@@G@@ LMJ X11,SDFOC . @C@@@@ J IH )@@G@@ IOERRA . @C@@@@ J 0,X10 II )@@G@@ . @E@@@@WRBX L A0,IL . GET IMAGE LENGIJ )@@G@@TH @E@@@@ TNE,U A0,077 . END OF FILE? IK )@@G@@@E@@@@ J 0,X10 . RETURN ALSO @G@@@@IL )@@G@@ TNZ OUTFIL . FD OR ASCII OUTPUT FILE? IM )@@G@@@G@@@@ J WRBX1 . ASCII, NO CONVERSION NECESIN )@@G@@SARY @E@@@@ CONVAF IMAGE,IMAGE . CONVERT ASCII TO FD IO )@@G@@@G@@@@ IL23 IL . CHANGE IMAGE LENGTH TO FD IP )@@G@@ @E@@@@WRBX1 L A0,ICW . GET CONTROL WORD IQ )@@G@@@C@@@@ S A0,ICWXF . @C@@@@ SZIR )@@G@@,S6 ICWXF . @I@@@@ SZ ACXF IS )@@G@@ . CYCLE 0 ADDED ED012400 @I@@@@ SZIT )@@G@@ AC1XF . GER RID OF JUNQUE ED012410 IU )@@G@@@E@@@@ L,U A0,EDXF . OUTPUT IT @C@@@@IV )@@G@@ LMJ X11,SDFO . @C@@@@ J IW )@@G@@ IOERRA . @C@@@@ J 0,X10 IX )@@G@@ . @A@@@@LABELX . PUT A LABEL IN THE FILE @E@@@@ L IY )@@G@@ A1,(0500100,0) . IMAGE CONTROL WORD @G@@@@ TNZ IZ )@@G@@ OUTFIL . ASCII OR FD OUTPUT FILE? @G@@@@ A,JA )@@G@@U A1,1 . ASCII - CHANGE S6 TO 01 @C@@@@ JB )@@G@@ S A1,ICWXF . @E@@@@ L R5,IJC )@@G@@MAGE . SAVE IMAGE WORD @E@@@@ L A1,EDSDF JD )@@G@@ . GET *SDFF* @C@@@@ S A1,IMAGE JE )@@G@@ . @E@@@@ L,U A0,EDXF . PACKET ADD JF )@@G@@ @E@@@@ LMJ X11,SDFO . OUTPUT IT JG )@@G@@@E@@@@ J IOERRA . I-O ERROR @E@@@@JH )@@G@@ S R5,IMAGE . RESTORE IMAGE WORD @C@@@@ JI )@@G@@ J 0,X10 . @E@@@@OPNIXF L,U A0,3JJ )@@G@@3 . RESET THIS WORD @C@@@@ S,H2 A0,EDXF+7 JK )@@G@@ . @C@@@@ L,U A0,EDXF . GET ADD JL )@@G@@@E@@@@ LMJ X11,SDFIO . OPEN SDFI @C@@@@JM )@@G@@ J RIOERR . @C@@@@ J JN )@@G@@ 0,X10 . @C@@@@CLOSIXF L,U A0,EDXF JO )@@G@@ . @C@@@@ LMJ X11,SDFIC . @C@@@@JP )@@G@@ J 0,X10 . @E@@@@CONTROL L,S1 JQ )@@G@@ A0,ICWXF . GET CONTROL CODE @E@@@@ TNE,U A0,0JR )@@G@@50 . 50 CONTROL CODE? @C@@@@ J CONTROL2 JS )@@G@@ . YES @G@@@@ TE,U A0,042 . 42 CONTRJT )@@G@@OL CODE (SWITCH CODE)? @E@@@@ J READXF . COJU )@@G@@DE ISN'T 42 OR 50 @G@@@@CONTROL2 SZ FDADD . SET ASCIJV )@@G@@I FLAG FOR ADD FILE @G@@@@ TNZ ACXF . ISJW )@@G@@ ADD FILE FD? (CHECK S6) @G@@@@ SNZ FDADD JX )@@G@@ . YES, SET FD FLAG FOR ADD FILE @A@@@@READXF L A0,BLANK2 JY )@@G@@ @C@@@@ S A0,IMAGE . @I@@@@ JZ )@@G@@ SZ WINHIB . 817TM3KA )@@G@@49 @C@@@@ L,U A0,EDXF . GET ADD @E@@@@ KB )@@G@@ LMJ X11,SDFI . GET IMAGE @E@@@@ J KC )@@G@@ RIOERR . I-O ERROR @C@@@@ J KD )@@G@@ 0,X10 . EOF @E@@@@ TP EDXF+10 KE )@@G@@ . CONTROL WORD? @E@@@@ J CONTROL . YKF )@@G@@ES, GET NEXT @E@@@@ L A0,RCXF . GET REQUKG )@@G@@ESTED CYCLE @G@@@@ TLE A0,ACXF . COMPARE WITH AKH )@@G@@CTUAL CYCLE @E@@@@ J READXF . DISCARD KI )@@G@@IT @G@@@@ TNZ AC1XF . WASS IT ADDED KJ )@@G@@THEN DELETED @C@@@@ SZ DC1XF . KK )@@G@@@C@@@@ SZ AC1XF . @G@@@@ TNKL )@@G@@Z FDADD . ADD INPUT FLAG FD OR ASCII? @C@@@@ KM )@@G@@ J READXF1 . ASCII @G@@@@ L A0,IKN )@@G@@LXF . IMAGE LENGTH TO BE CONVERTED @G@@@@ CONVFA KO )@@G@@ IMAGE,IMAGE . CONVERT FD TO ASCII FOR ED @G@@@@ ILKP )@@G@@32 ILXF . CHANGE IMAGE LENGTH FOR ASCII @C@@@@READXFKQ )@@G@@1 TNZ DCXF . DELETED?@E@@@@ J READKR )@@G@@XF2 . SKIP NOT DELETED @I@@@@ L A0,RCXF KS )@@G@@ . LOCAL LOCAL @G@@@@ TGKT )@@G@@ A0,DCXF . REQUESTED LE DELETED? @C@@@@ KU )@@G@@ J READXF . GET NEXR@E@@@@ SZ DCXFKV )@@G@@ . CLEAR DELETE @I@@@@READXF2 KW )@@G@@. INCREMENT LINE COUNT ED012430 @G@@@@ SZKX )@@G@@ ACXF . CLEAR CYCLE INDICATOR @G@@@@ KY )@@G@@ SNA RC,AC1XF . INDICATE ADDED THIS CYCLE @C@@@@KZ )@@G@@ J 1,X10 . @A@@@@PFI TZ LA )@@G@@ DOPTO @A@@@@ J PFUP-1 @C@@@@ LB )@@G@@ L,U A0,CYLIM . @E@@@@ SA A0,CLC )@@G@@L . SET CYCLE LIMIT @C@@@@ LA,U A0,1 LD )@@G@@ . @G@@@@ SA A0,CC . SET NULE )@@G@@MBER OF CYCLES=1 @E@@@@ SZ LC . LF )@@G@@SET LATEST CYCLE=0@]@@@@PFUP . @C@@@@ LA,U A0,EDOUT LG )@@G@@ . @E@@@@ LMJ X11,SDFOC . CLOSE LH )@@G@@ OUTPUT @A@@@@ J IOERRA @E@@@@ ERLI )@@G@@ TDATE$ . GET TIME AND DATE @E@@@@ SSC LJ )@@G@@ A0,18 . SHIFT FOR DUM FORMAT@E@@@@ S A0,OLK )@@G@@UTBL+11 . INTO PFI PACKET @E@@@@ L,S2 A0,OUTBL+5LL )@@G@@ . FLAG BITS IN TABLE @G@@@@ TZ OUTFIL LM )@@G@@ . OUTPUT FILE FD OR ASCII? @C@@@@ J FDBIT LN )@@G@@ . FD @G@@@@ OR,U A0,020 . SET ASCILO )@@G@@I FLAG BIT 28 @E@@@@ S,S2 A1,OUTBL+5 . STLP )@@G@@ORE IN ELT TABLE @C@@@@ J $+3 . LQ )@@G@@@G@@@@FDBIT AND,U A0,057 . CLEAR ASCII FLAG BIT 28 LR )@@G@@ @E@@@@ S,S2 A1,OUTBL+5 . STORE IN ELT TABLE LS )@@G@@@G@@@@ LN,U A0,OUTBL . LOAD PACKET ADDRESS LT )@@G@@ @I@@@@ LA A1,EDOUT+5 . LOAD STARTING ADDRLU )@@G@@ESS OF ELEMENT @G@@@@ ANU A1,OUTBL+10 . LV )@@G@@CALCULATE LENGTH OF ELEMENT @E@@@@ SA,H2 A2,OUTBL+9 LW )@@G@@ . AND STORE @A@@@@ TZ DOPTO @A@@@@LX )@@G@@ J PFUP1 . PFI IT@^@@@@ ER PFI$@A@@@@LY )@@G@@ JZ A2,0,X10 @^@@@@ TNE,U A2,2@A@@@@LZ )@@G@@ J IOERR @^@@@@ TNE,U A2,3@A@@@@MA )@@G@@ J PFERR @^@@@@ TNE,U A3,4@A@@@@MB )@@G@@ J 0,X10 @A@@@@ J PFOFLO MC )@@G@@ @A@@@@PFUP1 SZ OUTBL+10 @A@@@@ J MD )@@G@@ 0,X10 @]@@@@PFWL . @A@@@@ L A2,DOPTO ME )@@G@@ @E@@@@ SZ A1 . SET ADDRESS TO 0. MF )@@G@@@C@@@@ JNZ A2,0,X10 . RETURN @C@@@@ ERMG )@@G@@ PFWL$ . @E@@@@ TNZ,S1 OUTBL+9 MH )@@G@@ . IS SYMBOLIC TYPE SET?@E@@@@ S,S1 R10,OUTBL+9 MI )@@G@@ . SET TO ELT TYPE @E@@@@ JZ A2,0,X10 . NMJ )@@G@@ORMAL RETURN @C@@@@ TNE,U A2,3 . MK )@@G@@@C@@@@ J PFERR . @C@@@@ J ML )@@G@@ IOERR . @C@@@@ MM )@@G@@ . @]@@@@ . @/ @]@@@@EOF . @E@@@@ TZMN )@@G@@ ONSITE . ONSITE PRINT? @E@@@@ J MO )@@G@@ EOFONS . DON'T PRINT MSG @E@@@@ A$EDIT ETAMP )@@G@@B . START EDIT MODE @E@@@@ A$EMSG E7 MQ )@@G@@ . EOF AT LINE: ... @^@@@@ A$EDECV LCT@^@@@@ MR )@@G@@ A$EDITX @C@@@@ TYP IMBUF,6 . MS )@@G@@@^@@@@EOFONS SZ OK @^@@@@ SZ ICW @E@@@@ MT )@@G@@ SNZ WINHIB . SET WRITE INHIBIT @A@@@@ SZMU )@@G@@ LENGTH @G@@@@ J TOP1 . DO A 'TOPMV )@@G@@' FOR CONVENIENCE AND @C@@@@ . TO AVOID READ MW )@@G@@AFTER EOF...@E@@@@FILERR TEP,U A0,0400000 . PRINTFILE IN UMX )@@G@@SE? @E@@@@ J FILNOTA . TELL HIM SO MY )@@G@@@I@@@@FACERP L A5,A0 . SAVE ERROR CODE MZ )@@G@@ ED012450 @C@@@@ A$EDIT ETAB . NA )@@G@@@E@@@@ A$EMSG E31 . FILE FAC REJECT @C@@@@NB )@@G@@ A$EOCTV A5 . CODE @^@@@@ A$EDITX NC )@@G@@ . @E@@@@ TYP IMBUF,8 . TYPE MESSAGE ND )@@G@@@G@@@@ J RECTST . NON FATAL- GO TO NEXT CONE )@@G@@MMAND @E@@@@FILNOTA TYP E32,L32 . PRINTFILE IN USE NF )@@G@@@E@@@@ J RECTST . NON FATAL- RETURN @]@@@@NG )@@G@@IOERR . @A@@@@ TYP E3,L3 @C@@@@ J NH )@@G@@ OEND . ERROR EXIT @E@@@@IOERRA TZ AUTOREC NI )@@G@@ . AUTO RECOVERY? @C@@@@ J AUTOERR NJ )@@G@@ . YES @E@@@@ A$EDIT ETAB . START EDIT NK )@@G@@ @E@@@@ A$EMSG E3 . STATUS... NL )@@G@@@G@@@@ A$EOCTV A5 . INSERT OCTAL STATUS NM )@@G@@ @C@@@@ A$EDITX . @E@@@@ NN )@@G@@ TYP IMBUF,9 . TYPE OUT MESSAGE @I@@@@ TENO )@@G@@,U A5,5 . I-O ERROR 5 ED012470 NP )@@G@@@C@@@@ J OEND . ERROR EXIT @C@@@@ FTNQ )@@G@@YPE C103,LC103 . NO EOF @I@@@@ J OEND NR )@@G@@ . ED012500 @]@@@@SYNERR . NS )@@G@@@A@@@@ TYP E4,L4 @A@@@@ J RECTNT )@@G@@ST @G@@@@NUMERR TYP E18,L18 . NUMBER EXPECTNU )@@G@@ED SYNTAX ERROR @C@@@@RECTST TNZ REEXIT . RECOVERY?NV )@@G@@@C@@@@ J NXRQ . YES. @I@@@@ SNNW )@@G@@Z ERR$X . SET BOMB OFF BLAG 817TM353 NX )@@G@@@C@@@@ J OEND . ERROR EXIT @A@@@@OEND TYNY )@@G@@P E16,L16 @E@@@@ ON INSTAT . INZ )@@G@@NTERNAL STATISTICS@E@@@@ L,U A0,2 . OMIT OA )@@G@@EXIT @C@@@@ LMJ X9,STATOUT . @C@@@@OB )@@G@@ J $+3 . @C@@@@ OFF OC )@@G@@ INSTAT . @C@@@@ERXT OD )@@G@@ . @C@@@@ ON INSTAT . @E@@@@OE )@@G@@ L,U A0,3 . ERROR EXIT @C@@@@ OF )@@G@@ LMJ X9,STATOUT . @C@@@@ OFF INSTOG )@@G@@AT . @G@@@@ J ENDFRE . ENDOH )@@G@@ EXIT, NO CORRECTIONS @C@@@@ ON INSTAT OI )@@G@@ . @E@@@@STATOUT TNZ STATAD . FILE ASGD? OJ )@@G@@ @C@@@@ J NOSTATO . NO @G@@@@ OK )@@G@@ S,S1 A0,STATBUF+6 . EXIT=1 OMIT=2 ERROR=3 @G@@@@OL )@@G@@ ER TIME$ . TIME IN MILLISECONDS OM )@@G@@@C@@@@ AN A0,STATBUF+4 . @E@@@@ S ON )@@G@@ A0,STATBUF+4 . ELAPSED TIME @E@@@@ L OO )@@G@@ A0,MSPCHR . SPECIAL CHARS @C@@@@ S,H1 A0,SOP )@@G@@TATBUF+7 . @C@@@@ L A0,LOCHR . OQ )@@G@@ @C@@@@ S,H2 A0,STATBUF+7 . @C@@@@ OR )@@G@@ L A0,THETAB . @C@@@@ S,H1 A0,SOS )@@G@@TATBUF+8 . @C@@@@ L A0,CONTCHAR . OT )@@G@@ @C@@@@ S,H2 A0,STATBUF+8 . @I@@@@ OU )@@G@@ TZ ALLLN . LINES 817TM3OV )@@G@@55 @I@@@@ SNZ STATBUF+6,,S2 . OW )@@G@@ 817TM356 @I@@@@ TZ QUICKON . OX )@@G@@LINES 817TM357 @I@@@@ SNZ STATOY )@@G@@BUF+6,,S3 . 817TM358 @I@@@@ OZ )@@G@@ TZ TYPESEQ . LINES 817TM3PA )@@G@@59 @I@@@@ SNZ STATBUF+6,,S4 . PB )@@G@@ 817TM360 @C@@@@ L,U A0,STATIO . PC )@@G@@ @E@@@@ ER IOW$ . WRITE OUT BLOCK PD )@@G@@@I@@@@ L A0,(3,RFRESTAT) PE )@@G@@ 817TM364 @I@@@@ ER CSF$ . PF )@@G@@ 817TM365 @C@@@@NOSTATO J 0,X9 PG )@@G@@ . @C@@@@ OFF INSTAT . PH )@@G@@@]@@@@ . @/ @A@@@@$(0) . SET LOC COUNTER 0 @C@@@@IBF PI )@@G@@ + 0 . XX @C@@@@ + 0 PJ )@@G@@ . XX @I@@@@ J IBF1 . GOPK )@@G@@ TO I-BANK 817TM368 @I@@@@$(1),IBF1 . PL )@@G@@ 817TM369 @G@@@@ PM )@@G@@ TZ BRKSET . IS BREAK ALREADY SET? @E@@@@PN )@@G@@ J BRKRECOV . YES, ABNORMAL BREAK@C@@@@ PO )@@G@@ S A0,IBF+1 . SAVE A0@E@@@@ L,S3 A0,IPP )@@G@@BF . GET CONTINGENCY TYPE@E@@@@ TNE,U A0,1 PQ )@@G@@ . ILLEGAL OPERATION @C@@@@ J BRKIOPR PR )@@G@@ . YES @E@@@@ TNE,U A0,2 . GUARD MODE PS )@@G@@ @C@@@@ J BRKIGDM . YES @C@@@@ PT )@@G@@ TNE,U A0,012 . ERR MODE@C@@@@ J BRKEPU )@@G@@RR . @E@@@@ ON INSTAT . SPV )@@G@@TATISTICS @E@@@@ L,H1 A0,STATBUF+9 . INCR BRPW )@@G@@EAK CNTR @C@@@@ A,U A0,1 . @C@@@@PX )@@G@@ S,H1 A0,STATBUF+9 . @C@@@@ OFF PY )@@G@@ INSTAT . @E@@@@ L,H2 A0,IBF PZ )@@G@@ . GET BREAK ADDRESS @E@@@@ A,U A0,1 . AQA )@@G@@DJUST FOR RE-ENTRY@E@@@@ S,H2 A0,IBF . PUT IN QB )@@G@@IBF @G@@@@ SZ,S3 IBF . CLEAR X REGISQC )@@G@@TER AREA @I@@@@BRKRECOV L A0,TREADSEQ+1 . READ BLQD )@@G@@ANK LINE AND DISCARD ED012520 @A@@@@ ER READ$ QE )@@G@@ .@E@@@@ TZ BRKSET . BREAK ALREADY SET? QF )@@G@@@C@@@@ J OEND . ENTER EDIT. @E@@@@ L,QG )@@G@@S1 A0,IBF . GET ERROR TYPE @E@@@@ TE,U QH )@@G@@ A0,1 . II KEYIN? @C@@@@ SNZ BRKSQI )@@G@@ET . BREAK KEY @I@@@@ TG,U A0,3 . IFQJ )@@G@@ TIMOUT GO TO OEND 817TM371 @G@@@@ J OENDQK )@@G@@ . SOME UNKNOWN CONTINGENCY @E@@@@ L QL )@@G@@ A0,IBF+1 . RELOAD A0 @E@@@@ J *IBFQM )@@G@@ . RE-ENTER @^@@@@BRKIOPR . ILLOP @C@@@@QN )@@G@@ DO DUMP , SLJ SITEDUMP . @E@@@@ A$EDIT QO )@@G@@ ETAB . START EDIT @C@@@@ A$EMSG ('IOQP )@@G@@PR & ') . @C@@@@ ON INSTAT . STATIQQ )@@G@@STICS @E@@@@ L,H1 A0,STATBUF+10 . INCR IOPR QR )@@G@@@C@@@@ A,U A0,1 . @C@@@@ S,QS )@@G@@H1 A0,STATBUF+10 . @C@@@@ OFF INSTAT QT )@@G@@ . STATISTICS @C@@@@ J BRKPRT . QU )@@G@@@^@@@@BRKERR . EMODE @C@@@@ DO DUMP , SLJ SITEDUMP QV )@@G@@ . @C@@@@ A$EDIT ETAB . @E@@@@QW )@@G@@ A$EMSG E311 . START MESSAGE @C@@@@ QX )@@G@@ A$EOCTV IBF,,S1 . TYPE @C@@@@ A$ECHAR '-'QY )@@G@@ . @E@@@@ A$EOCTV IBF,,S2 . EQZ )@@G@@RROR CODE @E@@@@ A$EMSGR . CONTINRA )@@G@@UE MSG @E@@@@ ON INSTRT . STATISTICS RB )@@G@@ @E@@@@ L,H2 A0,STATBUF+10 . INCR ERR$ RC )@@G@@@C@@@@ A,U A0,1 . @C@@@@ S,RD )@@G@@H2 A0,STATBUF+10 . @C@@@@ OFF INSTRT RE )@@G@@ . @C@@@@ J BRKPRT . FINISH RF )@@G@@@^@@@@BRKIGDM . IGDM @C@@@@ DO DUMP , SLJ SITEDUMP RG )@@G@@ . @C@@@@ A$EDIT ETAB . @C@@@@RH )@@G@@ A$EMSG ('IGDM &') . @E@@@@ ON RI )@@G@@ INSTAT . STATISTICS @E@@@@ L,H2 A0,SRJ )@@G@@TATBUF+9 . INCR IGDM CNTR @C@@@@ A,U A0,1 RK )@@G@@ . @C@@@@ S,H2 A0,STATBUF+9 . RL )@@G@@@C@@@@ OFF INSTAT . @C@@@@BRKPRT A$RM )@@G@@EOCTV IBF,,H2 . @^@@@@ A$EDITX . @C@@@@RN )@@G@@ TYP IMBUF,6 . MESSAGE @I@@@@ L,H1 RO )@@G@@ A0,IBF . IS THIS 2ND RETURN ABNORM FROM READ$ @I@@@@RP )@@G@@ L,U R1,ERTLN . GET ERROR TABLE LENGTH RQ )@@G@@ED012540 @I@@@@ L A1,(1,0) . INDEX RR )@@G@@ ED012550 @I@@@@ SE,H1 A0,ERTABZ,*A1 RS )@@G@@ . SEE IF THERES A MESSAGE ED012560 @I@@@@ J RT )@@G@@ NOERMS . NO MESSAGE ED012570 @I@@@@RU )@@G@@ L,U A0,ERBAS . BASE OF ERROR MESSAGES RV )@@G@@ED012580 @I@@@@ L,H2 A1,ERTABZ-1,A1 . GET PTR TO MSRW )@@G@@G ED012590 @I@@@@ AND,U A1,07777 RX )@@G@@ . ADD OUT BIAS ED012600 @I@@@@ LSSL RY )@@G@@ A1,6 . SHIFT COUNT TO POSITION ED012610 @I@@@@RZ )@@G@@ LXM,U A1,0 . ZERO IN LOWER SA )@@G@@ED012620 @I@@@@ AH A1,(0100,0) . ADD IN SPACSB )@@G@@E ED012630 @I@@@@ A A0,A2 . ADD SC )@@G@@IN BIAS TO ADDRESS ED012640 @I@@@@ A SD )@@G@@ A0,A1 . ADD IN COUNT AND SPACE ED012650 @I@@@@SE )@@G@@ ER PRINT$ . PRINT MSG SF )@@G@@ED012660 @I@@@@NOERMS TNE,U A0,020212 . SG )@@G@@ ED012680 @C@@@@ J BRKABT SH )@@G@@ . @I@@@@ TNE,U A0,022512 . BAD MAIL FILE ESI )@@G@@MODE? 817TM374 @I@@@@ J ZAPMF$ SJ )@@G@@ . ZAP THE MAIL FILE 817TM375 @I@@@@ TNE,U SK )@@G@@ A0,022212 . BAD MAIL FILE EMODE? 817TM376 @I@@@@SL )@@G@@ J ZAPMF$ . ZAP THE MAIL FILE SM )@@G@@817TM377 @C@@@@ TNE,U A0,020612 . @C@@@@SN )@@G@@ J BRKABT . @E@@@@ J SO )@@G@@ EDIT1 . ENTER EDIT MODE @C@@@@BRKABT TYP ('ABSP )@@G@@ORT! '),2 . @C@@@@ ER EXIT$ . SQ )@@G@@ @I@@@@ . ERROR MESSAGE TABLE FORMAT IS: SR )@@G@@ ED012700 @I@@@@ . HAVE TO GET RID OF AN UNREADABLE MAIL FSS )@@G@@ILE 817TM379 @^@@@@ FIELDATA . ST )@@G@@@I@@@@FRRMF$ '@FREE,R MF$$' . SU )@@G@@ 817TM380 @I@@@@ASQYMF '@ASG,AYQZ MF$$' . SV )@@G@@ 817TM381 @I@@@@ZAPMF$ L A0,(2,FRRMSW )@@G@@F$) . FREE MF$$ 817TM382 @I@@@@ ERSX )@@G@@ CSF$ . 817TM383 SY )@@G@@@I@@@@ L A0,(3,ASQYMF) . SZ )@@G@@ 817TM384 @I@@@@ ER CSF$ . TA )@@G@@ 817TM385 @I@@@@ L A0,(02,FRETB )@@G@@DMF) . DELETE MF$$ 817TM386 @I@@@@ ERTC )@@G@@ CSF$ . 817TM387 TD )@@G@@@I@@@@ J EDIT1 . SHOULD BE OK NOW TE )@@G@@ 817TM388 @I@@@@ . ............................................TF )@@G@@........................ED012710 @I@@@@ . : H1 OF CONTINGENCY PACKETTG )@@G@@ : MSG COUNT: BIAS FROM ERBAS ED012720 @I@@@@ . ........TH )@@G@@............................................................ED012730 TI )@@G@@@I@@@@P$ PROC 1 . PROC TO GENERATE ER TABLE TJ )@@G@@ENTRY ED012740 @I@@@@ERCON* NAME . TK )@@G@@ ED012750 @I@@@@F18612 FORM 18,6,12 TL )@@G@@ . FORM FOR TABLE GENERATION ED012760 @I@@@@ F1TM )@@G@@8612 P$(1,1),P$(1,2),P$(1,3)-ERBAS . ED012770 TN )@@G@@@I@@@@ END . TO )@@G@@ ED012780 @I@@@@ERTABZ . ERROR MESSAGE TABLE TP )@@G@@ ED012790 @I@@@@ ERCON 044012,LC1TQ )@@G@@01,C101 . ED012800 @I@@@@ ERTR )@@G@@CON 044212,LC102,C102 . ED012810 TS )@@G@@@I@@@@ ERCON 012212,LC104,C103 . I-0 22 TT )@@G@@ ED012820 @I@@@@ERTLN EQU $-ERTABZ . TU )@@G@@ ED012830 @I@@@@ERBAS . BASE OF ERROR MSGSTV )@@G@@. ALL SHOULD FOLLOW DIRECTLY ED012840 @I@@@@C101 'CTW )@@G@@SF$ IMAGE SYNTAX ERROR' . ED012850 TX )@@G@@@I@@@@LC101 EQU $-C101 . TY )@@G@@ ED012860 @I@@@@C102 'ILLEGAL COMMAND FOR CSF$' TZ )@@G@@ ED012870 @I@@@@LC102 EQU $-C102 UA )@@G@@ . ED012880 @I@@@@C103 'IUB )@@G@@NPUT FILE HAS NO SDF END-OF-FILE' . ED012890 UC )@@G@@@I@@@@LC103 EQU $-C103 . UD )@@G@@ ED012900 @I@@@@C104 'OR EXCEEDS 800 TRACKS' . UE )@@G@@ ED012910 @I@@@@LC104 EQU $-C103 UF )@@G@@ . ED012920 @^@@@@ ASUG )@@G@@CII . @G@@@@$(0),IORECOV RES 2 . SPACE FOR CONTUH )@@G@@INGENCY INFO @E@@@@ J IORIB . GO TO IBUI )@@G@@ANK @I@@@@$(1),IORIB L,S1 A0,IORECOV UJ )@@G@@ . GET ER @E@@@@ TE,U A0,1 UK )@@G@@ . IS IT I-O? @C@@@@ ER ERR$ . NOUL )@@G@@PE @E@@@@ L,S2 A5,IORECOV . GET ERROR CODE UM )@@G@@@E@@@@ TNE,U A5,022 . IS IT FILE OVERFLOW?@C@@@@UN )@@G@@ J PFOFLO . YES @E@@@@ J UO )@@G@@ IOERRA . NO USE USUAL MSG @E@@@@PFOFLO TYP E6,LUP )@@G@@6 . OUTPUT FILE OVERFLOW@I@@@@ L,U A0,EDOUT UQ )@@G@@ . CLOSE OUTPUT FILE ED012940 @I@@@@ LMUR )@@G@@J X11,SDFOC . CLOSE OUTPUT FILE ED012950 US )@@G@@@I@@@@ J $+1 . YES WE KNOW THAT UT )@@G@@ ED012960 @I@@@@ LMJ X10,CLOSI . CLOSE THUU )@@G@@E INPUT FILE ED012970 @^@@@@ FIELDATA . @I@@@@UV )@@G@@ DL A2,('ED$TA ') UW )@@G@@ED012980 @I@@@@ DL A0,EDIN . SEE WHICH FILEUX )@@G@@ IS THE INPUT ED012990 @I@@@@ TNE A0,('ED$TA ') UY )@@G@@ . ED013000 @I@@@@ DL UZ )@@G@@ A2,('ED$TB ') . ED013010 @^@@@@VA )@@G@@ ASCII . @I@@@@ DS A2,EDOUT . SEVB )@@G@@T THE OUTPUT FILE OPPOSITE ED013020 @I@@@@ SNZ OK VC )@@G@@ . NOT AT FILE BOTTOM ED013030 @I@@@@ VD )@@G@@ TOPTN 'U' . U OR T MEANS WE INCRED RC ED0130VE )@@G@@40 @I@@@@ TNOPTN 'T' . VF )@@G@@ ED013050 @I@@@@ AN,U RC,1 . MUVG )@@G@@ST HAVE INC RC ED013060 @C@@@@ DL A0,(VH )@@G@@'OUTPUT F') . @I@@@@ DS A0,IMBUF . VI )@@G@@ ED013080 @C@@@@ L A0,(VJ )@@G@@'ILE?') . @C@@@@ S A0,IMBUF+2 . VK )@@G@@ @I@@@@ L,U A0,TREADSEQ . TREAD IT VL )@@G@@ ED013090 @I@@@@ ER ATREAD$ . VM )@@G@@ ED013100 @I@@@@ MSI,U A0,4VN )@@G@@ . MULTIPLY BY 6 TO GET CHARS ED013110 @I@@@@ VO )@@G@@ L A5,A0 . SAVE ED0131VP )@@G@@20 @C@@@@ E$DIT FTAB . @^@@@@ VQ )@@G@@ FIELDATA . @I@@@@ E$MSG ('@USE &') . USE VR )@@G@@ ED013140 @I@@@@ E$FD2 OUTBL VS )@@G@@ . USE NAME FOR FILE ED013150 @I@@@@ E$VT )@@G@@CHAR ',' . ED013160 VU )@@G@@@^@@@@ ASCII . @I@@@@ L A1,A5 VV )@@G@@ . GET CHAR COUNT ED013170 @I@@@@ L,U VW )@@G@@ A0,EDIT14 . GET NEW FILENAME ED013180 @I@@@@VX )@@G@@ E$COPY . COPY VY )@@G@@ED013190 @I@@@@ E$DITX . VZ )@@G@@ ED013200 @I@@@@ L A0,(14,FIMBUF) WA )@@G@@ . ED013210 @I@@@@ ER WB )@@G@@ CSF$ . APPLY USE ED013220 @I@@@@WC )@@G@@ L A0,('EXIT') . EDWD )@@G@@013230 @I@@@@ S A0,ILSTCD . DO AN EXIT WE )@@G@@ ED013240 @I@@@@ SNZ LLSTCD WF )@@G@@ . 1 WORD LONG ED013250 @I@@@@ SNZ WG )@@G@@ RLSTCD . SET FLAG ED013260 @I@@@@WH )@@G@@ L,U X3,NXRQ . GET NEXT COMMAND AFTER FINISHINGWI )@@G@@ED013270 @E@@@@ TNOPTN 'U' . U OPTION SET? WJ )@@G@@ @G@@@@ SZ FEDS1A . CLEAR FIRSTS IF IT IWK )@@G@@S @G@@@@ SZ FEDS2A . CLEAR AUTO ASSWL )@@G@@IGN FLAG @I@@@@ J PINGPONG . LET HIM WM )@@G@@GO ED013280 @]@@@@$(1) @^@@@@ FIWN )@@G@@ELDATA . @C@@@@E1 'ELEMENT & NOT IN SPECIFIED FILE &&' @^@@@@WO )@@G@@ ASCII . @^@@@@E3 'I/O ERROR' @^@@@@L3 EQWP )@@G@@U $-E3@^@@@@E311 'EMODE & AT &'@^@@@@E3S 'STATUS &' WQ )@@G@@@A@@@@E4 'SYNTAX ERROR.' @^@@@@L4 EQU $-E4WR )@@G@@@A@@@@E6 'OUTPUT FILE OVERFLOW.' @^@@@@L6 EQU $-E6WS )@@G@@@^@@@@E7 'EOF:& ' @A@@@@E8 'ILLEGAL COMMAND.' WT )@@G@@@^@@@@L8 EQU $-E8@A@@@@E11 'SCAN:&' . WU )@@G@@@^@@@@E12 'LINES:&' @A@@@@E15 'MISSING DELIMITER:&' WV )@@G@@@C@@@@E16 'NO CORRECTIONS APPLIED.' @^@@@@L16 WW )@@G@@EQU $-E16 @E@@@@E17 'NO FIND' . STRING NOT FOWX )@@G@@UND @^@@@@L17 EQU $-E17 @C@@@@E18 'MISSING NUMERIC' WY )@@G@@ . @C@@@@L18 EQU $-E18 . WZ )@@G@@@C@@@@E20 'INVALID TYPE' . @C@@@@L20 EQXA )@@G@@U $-E20 . @E@@@@E21 'ILLEGAL COMMAND WHEXB )@@G@@N USED AT LINE 0' . @C@@@@L21 EQU $-E21 XC )@@G@@ . @A@@@@E211 'COLUMN REFERENCE ERROR' @A@@@@L211 EQXD )@@G@@U $-E211 @A@@@@E22 'LINE REFERENCE ERROR' . @C@@@@XE )@@G@@L22 EQU $-E22 . @A@@@@E24 'AUTO' XF )@@G@@. AUTO SAVE @C@@@@L24 EQU $-E24 . XG )@@G@@@C@@@@E26 'NO SDF HEADER WORD IN FILE' . @A@@@@L26 EQXH )@@G@@U $-E26 @C@@@@E27 'INVALID EDIT CHAR:&' . XI )@@G@@ @C@@@@E28 'MISSING TERMINATION CHAR:&' . @C@@@@E29 XJ )@@G@@ 'BAD TAB:&' . @C@@@@E30 'DEPRESS PUNCHXK )@@G@@ ON' . @C@@@@L30 EQU $-E30 . XL )@@G@@ @A@@@@E31 'FILE FAC REJECT:&' @A@@@@E32 'PRINTFIXM )@@G@@LE IN USE' @C@@@@L32 EQU $-E32 . XN )@@G@@@^@@@@ FIELDATA . @C@@@@E33 'END ONSITE PRINTOUT ON & XO )@@G@@AT &' . @^@@@@ ASCII . @A@@@@E35 'INPUT MODE ASXP )@@G@@SUMED.' @C@@@@L35 EQU $-E35 . @C@@@@XQ )@@G@@E38 'ELEMENT DESIGNATION ERROR' @C@@@@L38 EQU XR )@@G@@ $-E38 . @A@@@@E39 'FILE DESIGNATION ERROR' XS )@@G@@@C@@@@L39 EQU $-E39 . @A@@@@E40 'PXT )@@G@@ROGRAM FILE UNDEFINED' @C@@@@L40 EQU $-E40 . XU )@@G@@ @A@@@@E41 'READ-ONLY MODE' @C@@@@L41 EQU XV )@@G@@ $-E41 . @^@@@@ FIELDATA . @G@@@@E42 XW )@@G@@ '****NO CARD DECK**** PLEASE RETURN THIS LISTING TO:' @^@@@@XX )@@G@@ ASCII . @A@@@@L42 EQU $-E42 @A@@@@XY )@@G@@E44 'READ I-O ERROR' . @C@@@@L44 EQU $-E44 XZ )@@G@@ . @A@@@@E45 'NONEXISTANT CYCLE' . @C@@@@L45 YA )@@G@@ EQU $-E45 . @C@@@@E47 'INCORRECT MODYB )@@G@@E SPECIFIED.' . @C@@@@L47 EQU $-E47 . YC )@@G@@ @A@@@@E50 'MAIL FILE FULL' @C@@@@L50 EQU YD )@@G@@ $-E50 . @A@@@@E51 'MINIMUM LINES ALLOWED:&' YE )@@G@@@C@@@@E52 'ILLEGAL MOVE - DITTO ASSUMED.' . @C@@@@L52 EQYF )@@G@@U $-E52 . @I@@@@E53 'AUTO NOT ALLOWED INYG )@@G@@ BATCH' 2 ED020350 @I@@@@L53 EQYH )@@G@@U $-E53 . ED020360 YI )@@G@@@I@@@@E54 'ATTEMPT TO EDIT PROGRAM FILE AS A DATA FILE' . YJ )@@G@@ 817TM391 @I@@@@L54 EQU $-E54 . YK )@@G@@ 817TM392 @I@@@@E55 'IBANK & DBANK NOT THE SYL )@@G@@AME EDITOR LEVEL OR BUILT INCORRECTLY' . 817TM394 @I@@@@L55 EQYM )@@G@@U $-E55 . 817TM395 YN )@@G@@@I@@@@E56 'TIME REMAINING TILL MAX TIME:' YO )@@G@@ 817TM397 @I@@@@L56 EQU $-E56 . YP )@@G@@ 817TM398 @I@@@@$(20),DBKEND . D-BANK EYQ )@@G@@ND MARKER 817TM400 @I@@@@$(21),IBKENDYR )@@G@@ . I-BANK END MARKER 817TM401 YS )@@G@@@^@@@@ END . ___ RETURN @]@@@@IOERR . @A@@@@ YT )@@G@@)@@[U@@@@@@@@@@ELTSYM C*_^@)^[ICDHE[MD9BE))^@)DDIE[PC(^DDO(&&&&&.2A-&-YU )@@G@@ED& 14AA@@@@)@F[U@@@@@@@@@@LSP@@@BAS@@@APL@@@SSG@@@SEC@@@DOC@@@MAP@@@ALGYV )@@G@@@@@FOR@@@COB@@@ASMAB@@@@)@Q@U@)@[@)@@@@@@@)@G@C@@@@@@@@@@@@@@@@@@@@@@@@@YW )@@G@@@@@@@@@@@@@@NORMAL@UPPER@@@PLSAC@@@@)@I@S@)@N@8@@@@@@@@@@@@@@@@@@@@@@@@@YX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B_@B_AD@@@@)@U@S@)@Z@8@@@@@@@@FREE YY )@@G@@ MF$$ @ASG,A20 ,F2///P MF$$@ASG,C@@@@@@@@@@@@@@@@@@AE@@@@)@&[K@#A@G*@YZ )@@G@@AG@TK@@Z4@F_@@@@@@ MF$$ @DE@F_ MF$$ @BRKPTD MF$$@FREE,MF$$ AF@@@@ZA )@@G@@)@0[K*AG@TK@@E@@@@MF$$ @[@@F_D)_^@)^[HCDDFDJE(MCDIE))D9P^[RC-J^[T@$=@F_ZB )@@G@@@[A@@2AG@@@@)@'@SE[<@AO@)@_@*E[<@AO])S0[>@@$)@F_@[#@['@$)@F_@[]@IQ@@@@@@ZC )@@G@@@CV@F_@[]@IO AH@@@@)[^@K*AG@TK@)[B@8@@@@@@@@@@@@@ ED$XF ZD )@@G@@ED$TB ------------@$)@[/@[]@ISAI@@@@)[I[C@@@@@@@)[U@C@ @@@@@@@@@@@@ZE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@[@@@@@@@@@@@@@@@AJ@@@@)[V@C@)[<@8@#A]=()*S0O>GZF )@@G@@ @@@@@@8@[O@@@@@W@^@)^@)^@)^@)*SDFF* AK@@@@)[%[S*@@ @@@ZG )@@G@@@@@@@@[[@@@@@@@@@@@&Q@]V^0@@@@@@@@@@@@@@@@@@@@@@[[@@@@@@@@@@@[-@['AL@@@@ZH )@@G@@)[5@*@@@@@@@)^?@)@@@@@@@@@@@@@@@@@@@ ED$DI ED$PR @@@@@@@@@@@@ZI )@@G@@@@@@@@AM@@@@)^0[C*@@@@@@) ]@C@ED$TB ED$TA @@@@@@@@@@@@@@@@@@@@@@@@ZJ )@@G@@@@@@@@@@@@@@@[0@]/AN@@@@) #@C@) H[@@GSEM&])O@@@@@@[@@@@@[@G)@@K@@-@@@@B@ZK )@@G@@@@@@@@@B@@@@@K@@@@@@@@@@ AO@@@@) P[K@#A]=()* @@@@@@@@@@@@[@@@@@[@G)ZL )@@G@@@@K@@@@I@@P@@@@@@@@B@@@@@C@@@@@@@@@@@@@@@@AP@@@@)C_[K@@0M) @@@@@@@@@[@@@ZM )@@G@@@@[@G)@@^@@-@ Z@BJ@@@@@@@[0@@@@@@@@@@@@@@@ ED$XF AQ@@@@)DD@C@)W@@"]ZN )@@G@@<[/ L]]T]]WK0@K0@@A#@@@AR#@@IUN')@@[[@K@@@'=@@@@R;@)@[@(E16A@@@@@@AR@@@@ZO )@@G@@)WB[A]=G@^G@[#@[#@@K0@K0@@@@@@^E)@@LAB@@@FR;@@@) @@@[AAF@@@FR;@@@;^6)@@RZP )@@G@@ C@@@EAS@@@@)WJ[I]-#@[#@@K0@^G@[#@@@AB@@@HR;@@B_AB@@@GR;@@B_A3@@@ R;@@@-ZQ )@@G@@^6)@@ AB@@@LR;@@]^AT@@@@)WS[I]-#@@K0@^G@^@K0@@@@R#K@IVN8K@@#8#@@WX OG@DEZR )@@G@@R;@@]#AF@@@JR;@@[KAF@@@HR;@@@$AU@@@@)W-[A]=G@^[#@[#@@K^[#@@@@@@@@@R#@@IWZS )@@G@@8KK@W+/K@@W=?@0@@Q[Q\)DEG])@IVC]!)( R#0@IVAV@@@@)W([A]=CE^G@^G@^G@^G@^G@ZT )@@G@@^G@@@@ @@@[IA#@@@_R#@@]_A#@@@"R#@@].A#@@@.R#@@]/'=@@@@AW@@@@)W1[A]=CEL@KZU )@@G@@0@K0@K0@K0@K0@@@@@ )@@IA )@@I )@@I^ )@@I#^+)@IF/K@@XN>8@@)@'=@@@@AX@@@@ZV )@@G@@)W9[A]=G@^G@^G@^G@^G@^G@[#@@@@^+)@I#=8@@@[ )@@IH )@@IG )@@IE )@@ID )@@ICZW )@@G@@ )@@IBAY@@@@)X[[I]-#@@K0@^G@[#@@@@@@=8@@@)^+)@IB=8@@@K^+)@IA=8@@@C^+)@I ZX )@@G@@=8@@@^^+)@I^=8@@@]AZ@@@@)XE[I]=G@[#@@K0@^G@[#@@@^+)@IH=8@@C@^+)@IG=8@@^@ZY )@@G@@^+)@IE=8@@]@^+)@ID=8@@[@^+)@ICBA@@@@)XN[A]-#@[#@@()@-@@)CK#CS@@@@@C@@@@.ZZ )@@G@@/,0@@@C8@@-)/,0@@@C/@@[1^&)@@R^6)@@U:9@@@^BB@@@@)XV@"]=C]OC]=G@^CE=G@^G@AA )@@G@@]&@@@@@@@@@@R;@@[U9*@@[U9?@@IY'=@@@@R#@@IX/,0@@@/,0@@@BC@@@@)X+[A]=CE4G@AB )@@G@@^[#@[]](#@[#@@()@@R;@@[U9*@@[U9?@@I-'=@@@@R#@@I)/K@@X$*4@@[)'=@@@@BD@@@@AC )@@G@@)X%[A]=CE4G@^[#@[@K0@K)%K0@@@@R#@@I='=@@@@R#@@I/C@@X;'=@@@@BF@@@@)X'[A]=CF^G@^G@]&@]^ UA@]A@@@@ @@@@U^&)@@Q*4@@[)AF )@@G@@'=@@@@R;@@[U9*@@[U9?@@I$'=@@@@BG@@@@)Y][A]=G@[#@ #@[]]9#@[#@@@@@@@;*@@@^AG )@@G@@AF@@@#OF@@@#C@@@@@R#@@I(/,)@4+ @@@@S ^@@@#BH@@@@)YE[I]=@K0@EKQ*]@-[U@@@@AH )@@G@@%8@@@(;C@@@UR#@@@@/G@@)8A#K@+/O;K@@@RFK@@#;*@@@[/C@@+@BI@@@@)YN[I]=[#@@KAI )@@G@@@^[]]4@@@@@@R#@@@@/K@@YR(4F)@[O]0@@GR8@@C@R#@@@@AK )@@G@@A#@@@@BK@@@@)Y=[A]-@K0@K0@K[#@[#@@@@@@@@@@R#@@@@A7K@@WR;K@@]/K@@Y:^6)@@WAL )@@G@@^2)@@W/K@@Y(>8@@K@BL@@@@)Y?[A]=G@^G@^G@[#@[#@[#@[@@@@@/K@@Y7>@@@I?R#@@@@AM )@@G@@^+)@I^=8@[@@R#@@@@^6)@@U=@@@I:BM@@@@)Y4[A]-#@[#@[#@[#@[#@[#@[#@@@@=@@@I,AN )@@G@@R#@@@@ 4@@@U=@@@I!R#@@@@A#K@@@)@@@@@R;@^@@BN@@@@)Y/[A]=G@^G@^G@^G@^[#@[#AO )@@G@@@[#@@@9(@@[U9(@@FW9(@@FK9!@@-Q C@@@# 4@@@R*)@@@Q^+)@@QBO@@@@)Z^[I]=G@[@EAP )@@G@@S@]@)CS@CS@@:@K@[8@@@)R#@@@@AR )@@G@@A3K@@NBQ@@@@)ZQ[A]=G@]&@]@)CS@CS@CS@ G@@@@R;@@FK^,)@@N:@K@[AT )@@G@@R7@@FT/,)@+W^6)@@N*?@@@N(0@@@NBS@@@@)Z&@"]=G@^G@^G@^G@^G@^G@^G@@@@@@@@@@AU )@@G@@*)@@@Q[@@@ KC@@@FU9*@@ ]9?@@I-*)@@@Q9?@@FKBT@@@@)Z![A]=G@[#@[#@@()@)CS@@AV )@@G@@@@@@@@>8@@@^R#@@@@/,)@+>R'K@FKAB@@ M*4@@@NR;@@@- @@@ KBU@@@@)Z5@"]=G@^G@AW )@@G@@OG@^G@OG@OG@^G@@@@@@@@@@()@@@Q =@@@O/,)@CY/,)@["^2)@@P/,)@4! =@@@RBV@@@@AX )@@G@@)Z/[A]=G@OG@^G@^CF^G@OG@[@@@@@/K@@)A%8@@@]R7@@@W/K@@@!'=@@@@C@@@I\ )@@@QAY )@@G@@/K@@@!BW@@@@))^[I]=G@^G@@()@)C]@CS@@C@K@I0N8K@@G/K@@)O/K@@+@/,)@+.R;@@FWAZ )@@G@@R;K@@[^6)@@W^2)@@WBX@@@@))H[A]=G@[#@[]]1#@@K0@K0@@@@@@R#K@FYA#K@@@)8@)@@BA )@@G@@R#@@@@'=@@@@C@@@I2M#H)@@C@@@I1BY@@@@))P[A]=G@^[#@[#@@K0@K^G@@@@@@@ 0@@@PBB )@@G@@/K@@Z**)@@@Q @@@@V^6)@@N^,)@@N/K@@)T%@K@[8@@@^R#@@@@CA@@@@))>[A]=G@[@KBD )@@G@@0@K0@K^G@@@@@@@@@@)8@@^@R#@@@@/K@@)4=@@@I3R#@@@@/^K@)1>8@@^@R#@@@@CB@@@@BE )@@G@@))![A]=G@^G@^CF^[#@[#@[]]1#@@@R#@@@@'=@@@@C@@@I5^,)@@N/K@@ZX'=@@@@C@@@I4BF )@@G@@A#K@@@CC@@@@))5[I]-#@[@K0@^G@O@K0[@@9?@@@AR])@@C/K@@YA/K@@8]!8K@@,R#@@I6BG )@@G@@/K@@ZXA#K@@@)8@@@)CD@@@@))"[A]=G@^G@OG@^G@[#@@()]-)@@@AF@@[#R;@@8YCD0@[#BH )@@G@@A])@@C C@@@[A#@@[/R#@@@C9*@@['CE@@@@)-A[A]=G@OG@^G@OG@^G@^[#@[@@@@9?@@-QBI )@@G@@9*@@FM/K@@)/:@@@[<9?@@]V/,)@2L[D0@[#/,)@?XCF@@@@)-I[A]=G@^G@^G@[#@[#@[#@BJ )@@G@@@@@@@@/KC@@[^6)@@SA#K@@@)@@@@@R;@@@)^6)@FT^E)@FP9*@@FKCG@@@@)-Q[Y])@@@@@BK )@@G@@@USE E800 B,F///G ED$T@CAT,V800 A,F/// ED$T@ASG,T TPF$ CH@@@@BL )@@G@@)--[Q])@@]&@@@@@@@C/@@[1TB . DX ED$@ASG,A00 ,F///8 ED$TB@ASG,TD$TB& BM )@@G@@D$TB,ECI@@@@)-:@"]=C@^G@OC[=G@^C#OC#^C])@@@@@@@@/,0@@@/,0@@@/,0@@@9?@@FMBN )@@G@@/,0@@@C8@@;B/,0@@@CJ@@@@)-2[A]=G@^CF4G@^[#@[#@[@K0[@@@/K@@8Y/K@@)F=@@@I3BO )@@G@@R#@@@@/K@@)F*4@@@S'=@@@@C@@@I7CK@@@@)-'@"]=G@^CF^G@OG@^CF^G@OG@@@@@@@@@@BP )@@G@@C@@@I'/K@@8)'=@@@@C@@@I9/K@@8U'=@@@@C@@@I8CL@@@@)+[[Q]=CF^G@K@@@@@^@)^@)BQ )@@G@@ELHCDOC*)C1J^[ADDGC9MCDH^[KELJ^[ID9OC1DD- /K@@8Y'=@@@@CM@@@@)+F[Y])@@@@@BR )@@G@@CDPE-JD1O^@)E- D( ^[NE-[CT[D-GETJEK)D9#C(NC8)E[MCD^DDIEK)EL C(MELJCN@@@@BS )@@G@@)+Q[Q])@^CG@K0[@@@/K@@8]:8)@@]/@%@@@'=@@@@E-[D1OC(SDDN^[ID9IC))D9MC*)CL[BT )@@G@@^[ADDGCO@@@@)+)[I]=G@@K^@K0@^G@@@@@@(C@@[A/KE@@@(4@@@QC:9@@C/K@@-'/K@@-%BU )@@G@@:8)@@[/KE@@@*0@@@NCP@@@@)+([I]=G@^G@^G@@[@@@@@@@/KE@@@/K@@+2!@K@@V!@@@@VBV )@@G@@L)D@@CR:D@@CHJ0@[A0@@@[ACB0@[ACQ@@@@)+2[Q]=G@^CF^G@K@@C*,^@)EL[D1B^[JC0)BW )@@G@@^[JE(OD(]C(MC*)D1PCTTCTG/K@@8U'=@@@@C@@@I;CR@@@@)+.[Q]=G@@K@K0@@@@ @G@@CBX )@@G@@ @G@@^A#?@@ R#)@IV/KE@@@%0V@@@?@)@+/R;:@@@A#K@[ A]0@@XCS@@@@)=*4@@[)'=@@@@CO )@@G@@R;@@[UDG@@@@)> [A]+&@]^@]@-@G-)@C@@@@@@@@@C/@@@X/K@@>I>8@@)@R#@@@@/,0@@@CP )@@G@@C8@@$//,0@@@C/@@[1DH@@@@)>H[A]=C@-]@KK)HK)EK0@K)%@@@@@'=@@@@R#@@J#/,0@@@CQ )@@G@@/,0@@@9?@@@M/,0@@@C/@@@]/,0@@@DI@@@@)>P[A]=@K0@K[#@@()@-[Q@@@@@@@@'=@@@@CR )@@G@@R;@@[U9*@@[U9?@@@M/@K@&G+@@@J^C[K@@G/@@@>.DJ@@@@)>X[I]=G@^[@^@K^G@@@@@@@CS )@@G@@R#K@[ C10@[)/K@@$J=9KC@@/K@@$#=9K@]@/K@@&G/K@@>)*4@@[)DK@@@@)>&[I]-@^[#@CT )@@G@@[]]1@K0@@@@@=8@@@)R#@@@@/K@@>3'=@@@@C@@@J /K@@>!>90@@]/K@@>\:8K@@]DL@@@@CU )@@G@@)>\[A]-@K0@K)?ES@CK@C]^@0@@@@@/,0@@@C8@@$_/,0@@@C/@@[1'=@@@@C@@@JA/K@@&@CV )@@G@@>90@@^DM@@@@)>7[A]-]@5]@(#@[]](#@ #@@()@@@R;@@[U9()@[U/K@@8Y'=@@@@R#@@JBCW )@@G@@/,0@@@/,0@@@9?@@@MDN@@@@)>_[I]=CE4G@^[@K^[#@[@@@;C@@@#/@@@&,R7@@[)A#@@*BCX )@@G@@A#@@* A#@@*#9*@@*[9?@@[<'=@@@@DO@@@@)&C[I]-@K0@]&@]^[2@-@*@@C@@@[ /,0@@@CY )@@G@@C8@@*M/,0@@@C/@@[%/KE@@[R]0@@X/K@@&U%8@@@#DP@@@@)&L[A]=C =CA)K)VK)SK0@K)CZ )@@G@@?@@@@@'=@@@@R#@@JC/,0@@@/,0@@@C8K@@GC@@@@L/,0@@@/,0@@@DQ@@@@)&T[A]=G@M&@DA )@@G@@]^[2@-@*CKFC@@@@@@C8@@&&/,0@@@C@@@[ /,0@@@C8@@*M/,0@@@C/@@[%/K@@8YDR@@@@DB )@@G@@)&-[I]=C ^CA^G@^CF^G@K@@EL[D1^C1[ETO^[JD0)^[ID9O/K@@8Y'=@@@@C@@@JD/,0@@@DC )@@G@@/,0@@@DS@@@@)&%[I])@()@-@W)CKE@@@@@@C@@@[ /,0@@@C8@@*M/,0@@@C/@@[%CT ^0)DD )@@G@@C- E1DD([E))^[AD9MDT@@@@)&3[A]=C =[][L][-#@[]]1#@^@@@@^[CCDN/K@@8Y'=@@@@DE )@@G@@C@@@JD/,0@@@/,0@@@C8@@&'/,0@@@DU@@@@)&;[Q])@@ES@CKB@@@/,0@@@C/@@[% 0&^@)DF )@@G@@D8)DDOC(^^[OETDC9IE))CDNE[HC(IC(LE(D^[ID8)DV@@@@)$ [A]=[][KK)QK^C ^CA^G@DG )@@G@@@@@@@@C@@@JD/,0@@@/,0@@@C8@@$V/,0@@@C@@@[ /,0@@@C8@@*MDW@@@@)$H[A]=CF^@(DH )@@G@@)@-@W)CKE]^]0@@@@@/,0@@@C@@@[ /,0@@@C8@@*M/,0@@@C/@@[%/K@@>+'=@@@@DX@@@@DI )@@G@@)$P[I]=[][L][-#@[]]1@@@@C)! ([CD]D- ^[^DDN/K@@>='=@@@@C@@@JE/,0@@@/,0@@@DJ )@@G@@C8@@*_DY@@@@)$Y[Q])@^[#@@@@@@@?80@@';?0@@AA60@@Q/K@@<;%8K@@[R#K@[ @@@@JDK )@@G@@ @@@@IE- C)&CT#C(KDZ@@@@)$*[Q]-@K@^G@OG@@@;?0@@A @@@@J[C0@[A/C0@8S%80@@+DL )@@G@@D@0@@J:80@@-/K@@$7/K@@$:?80@@0EA@@@@)$2[Q]-@[#@^[#@[@@/K@@$0AB)@[AG@)@@JDM )@@G@@H80@@0T8)@@E/K@@8S?80@@0?80@@'/K@@<;:80@@ EB@@@@)$/[Y])@@@@@ DN )@@G@@ & @FREE @USE && @ASG,AEC@@@@)*B[A]-#@[#@DO )@@G@@[#@[#@@()@-[+-)]@@/K@@8 /,0@@@C8@@^7[@K@G)C@K@[>A#K@ [R#K@JF ED@@@@DP )@@G@@)*J[Q]=G@^G@@@@@@@C*)CDND9O^[]CT[D1IC))^0)C1DC(G^[DD0)C1DD- /KE@@@ @@@ GDQ )@@G@@^,)@@OEE@@@@)*T[Y])@@@@@DDGC*)E(O^[AD9PE-KD-JCTFC([C))D- ^[ME))C1DDDIE[PDR )@@G@@^0)^@)C(^BK)ETDC9IEF@@@@)*=[Y])@@@@@E(HC(^^[[ETNE-DD9IE*)D9KFC)^@)D9QC(MDS )@@G@@^[MC(#CDPE-JCTF^@)C*)D-JE9MDDOEG@@@@)*\[Y])@@@@@ET C),CL ^[PD1JE))^[#CDIDT )@@G@@D([D1^^[#D9HCDPE-JC*,^@)CDADDG^[^CDO^[AD9MEH@@@@)*'[Y])@@@@@E(I^@&C(M^[MDU )@@G@@D1JE-CCLT^[[E(NC*)^[DD0)C*,^@)D0)E(ND- ^[DD8)C1D^[[E(OEI@@@@)( @,])@@@@@DV )@@G@@)FI@K@)FW@K@@@@@@@@@@@@@@@@@@@______@@@@@@@@@@[C@@@@@&@@@@@O@@@@@EEJ@@@@DW )@@G@@)FY[S@@@@@@@@FREE,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DX )@@G@@@@@@@@EK@@@@)F([S@@@@@@@2. A ED$S@FREE,1. A ED$S@FREE,S2. RA ED$DY )@@G@@@FREE,S1. RA ED$EL@@@@)F4[K@@@@@@@@@@@@@00 ,F///6 ED$DI@ASG,T DZ )@@G@@ED$TA.@FREE ED$TB.@FREE EM@@@@)@T[U@@@@@@@@SYM &,,PR& @SYM & & EA )@@G@@@BRKPT0& ///200G &,F2@ASG,C& @FREE EN@@@@)@=@U@)F"@C@)@$@+1)(/ OGEB )@@G@@ ^G ^@C@@@"%/K@@W[A]0@(D@(E16A K% K% ))^@)D@? )1,,CP& EO@@@@)@:[#]]1]#D#EC )@@G@@@[#@[@K0@K0@K@@@@@/K@@@5*)@@I^ =@@@O/,)@CY*=@@@O ?@@@U'=@@@@'=@@@@EP@@@@ED )@@G@@)@3[#@K)?K0@K0@K0@K0@K^G@@@@@@*)@@IE/K@@WH*=@@@S =@@@V *@@@U *@@@V'=@@@@EE )@@G@@C@@@":EQ@@@@)@;[F@K@()@)CKOCS@@@@@@@;O@@@=T8@@@ER#@@]/'=@@@@R#K@"?R;@@]/EF )@@G@@N;)@@ 8N)@[G/,)@CYER@@@@)[^[EK0@K^G@^G@^[]]1@K@@/,)@:1/K@@)^'=@@@@C@@@"!EG )@@G@@H[@@]/C[@@@_/K@@[G?@@@@_W8@@@DES@@@@)[H[F#@[@K0@K^G@^[@K0@@@?8@@@'RZ@@DEEH )@@G@@/K@@E"/K@@[5*)@@IG/K@@[O*C@@@[/,)@2M C@@@]ET@@@@)[Q[]K^[#@@K[@@@@@@@@[@@EI )@@G@@@@@@@@/K@@SQ:8)@@!/K@@SM:8)@@:RZ)@F_/K@@S4/K@@[T?8@@@0EU@@@@)@@@"@U&@DN@EJ )@@G@@^()]O0[ES@>G@M&@C@@@@@@@@LN@]7@LC@GH@RP@DR@@F@F,@@P@UK@@Q@):@@L@GKEV@@@@EK )@@G@@)@B@"@U&@DN@^()]O0[ES@>G@M&@C@@@@@@@@@T@%6@BR@-?@@V@-%@ON@ V@PL@D\@UP@E(EL )@@G@@@FC@F:EW@@@@)@I@"@U&@DN@^()]O0[ES@>G@M&@C@@@@@@@@@D@RO@@C@HW@@B@:+@@N@SEEM )@@G@@@GO@SC@@O@V#@@H@SKEX@@@@)@P@,@U&@DN@^()]O0[ES@)@)[Y@MK@@@@@@R#)@",N8K@@UEN )@@G@@@@A@:+@@R@M9@IN@K$@IB@N<@@I@E4EY@@@@)[)@;#@H@ES[*S[*#6@S@@@@@@@@8@@@@@@@EO )@@G@@/KI@@@RB,J_"/,0@[8?8I@@@R;@@@M/K@@[$2CY)@@EZ@@@@)@U@"@U&@DN@^()]O0[ES@>GEP )@@G@@@M&@C@@@@@@@LAS@T]FIN@F,LNP@UJPRI@UKQUI@):LNQ@)%LOC@GKFA@@@@)@-@"@U&@DN@EQ )@@G@@^()]O0[ES@>G@M&@C@@@@@@@CSF@AMPLI@D\CLI@-,SET@-"TAB@+VOMI@8YEXI@$=FB@@@@ER )@@G@@)@*@"@U&@DN@^()]O0[ES@>G@M&@C@@@@@@@SPL@+ZTCH@EZTYP@DVAUT@QYPUN@VHMSC@A4ES )@@G@@LCH@A(FC@@@@)@\@"@U&@DN@^()]O0[ES@>G@M&@C@@@@@@@CPT@)[TIM@YZOFF@ XOPR@TNET )@@G@@CPU@VPLNS@VNSIT@VQFD@@@@)@6@"@U&@DN@^()]O0[ES@>G@M&@C@@@@@@@CAS@BDSTA@#&EU )@@G@@MAX@-8MAI@BXEXC@A9CCH@E>SCA@)PFE@@@@)@.@"@U&@DN@^()]O0[ES@>G@M&@C@@@@@@@EV )@@G@@NEX@SEGOT@SCHEA@SKEND@8YTOP@%6BRI@-?VER@-%FF@@@@)[^@"@U&@DN@^()]O0[ES@>GEW )@@G@@@M&@C@@@@@@@INS@E4DEL@ROCHA@HWDOC@Y5BOT@:+SAV@-,OUT@V#FG@@@@)[F@"@U&@DN@EX )@@G@@^()]O0[ES@>G@M&@C@@@@@@@ADD@= SEQ@)!DIT@OAINP@E"APP@:+RET@M9INL@K$FH@@@@EY )@@G@@)[M@I@U&@C@@)[$@2]&@[N@[]#H@@@@@@@@@R#)@",/,0@@@R;)@['R;K@F_R;@@@[N8K@@9EZ )@@G@@MOV@O^FI@@@@)[![##@[#@H@ES[*S[*]A@S@@@@@@@/KI@@@RB,@@T/,0@[8?8I@@UR;@@[AFA )@@G@@/K@@[52C")@URF0@['FJ@@@@)[5[F@K)?K^G@@K^CF@@@@@@/KF@@@'=@@@@C@@@"0/KF@@@FB )@@G@@>8@@^@R#@@@@/K@@@5'=@@@@C@@@"\FK@@@@)["[]()@-@@)CK#CS@C@-@^@@@@@@@/,0@@@FC )@@G@@C/@@@ /K@@]A(?@@@Q/,0@@@C8@@@@/,0@@@C/@@[1FL@@@@)]A[F]@1]#KK)Z^C[[]@C@@@FD )@@G@@C@@@@K/,0@@@C/@@@-/,0@@@C/@__//,0@@@A#@@@K'=@@@@/,0@@@FM@@@@)]J[F][8K)^KFE )@@G@@)GK0@^@K)]@@/,0@@@C/@@@,/K@@]S>8@)@@R#@@@@/,0@@@/,0@@@C/@__//,0@@@FN@@@@FF )@@G@@)]S[EK)CK0@^@K)]K0@@@@@@>8@@@)R#@@@@/,0@@@C/@@@,/K@@]$=8@)@@R#@@@@/,0@@@FG )@@G@@C@@@@VFO@@@@)]-[F@@K0@K)C^C@=C])@@@@/,0@@@/,0@@@C/@@@)/,0@@@R3@@FS:8@@@_FH )@@G@@O;@@@[R#@@@V/K@@]$FP@@@@)]%[F@K)\]&@]^[0-@?CKC@@/,0@@@C/@@@'/,0@@@C@@@@SFI )@@G@@/,0@@@C/@@[%/KE@@@'=@@@@C@@@"1FQ@@@@)]3[N][-@K)?^[@@@@^0)D-#D[[EK'^0)CT#FJ )@@G@@E-[CK'/K@@@5/,)@]!/KE@@@'=@@@@C@@@"2/,0@@@FR@@@@)].[U@@@@@@@E-[CLND1 BK&FK )@@G@@CDSD-DBK&^[HCDPE-JE)'^0)D-DD(DBK&^[#CTCCDM^0)D(ND[[EK'FS@@@@)#C[U@@@@@@@FL )@@G@@C*'^0)^[#CDNBK&^@)D(DE-N^[KD-DBK&^@)CTCCDM^@)C(SCDMBK&^[OCTCBK&^@)FT@@@@FM )@@G@@)#N[U@@@@@@@F[]ELD^@)^@)E[GDDOD))C-NCTIE-MC(M^[KD1PD(]DD C0)DS)CLMEDPDD#FN )@@G@@ETOCC)FU@@@@)#Y[M@@^G@^@@@@@@@/,)@2M^%)@@OFC)^@)C(HD9MD9^^[HE(IDDHC(JC0)FO )@@G@@D9JDS)C(L^[GC(A^[NFV@@@@)#*[]K]&@]^@]@O0@K)IK@@@@@@@@@C8@@]9/,0@@@C/@@[%FP )@@G@@/K@@ )/,0@@@C/@@[1/K@@#!(@@@@HFW@@@@)#0[F][L#@@K^C^^CA=G@[@@/,0@ S:8@@B_FQ )@@G@@RB@@@G/,0@@@/,0@@@/,0@ S:8@@B_RF@@@F/,0@@@FX@@@@)#9[#][[][(#@@K^C^^CA=G@FR )@@G@@@@@@@@RB@@@H/,0@@@/,0@@@/,0@ S:8@@B_RF@@@H/,0@@@/,0@@@FY@@@@)^[[]K^C^^CAFS )@@G@@=G@^C =CA=G@@@@@@@RF@@@E/,0@@@/,0@@@RF@@@A/,0@@@/,0@@@/,0@ S:8@@B_FZ@@@@FT )@@G@@)^D[#][T][(#@[][T][-@K)?ES@@@@C/@@[%'=@@@@C@@@"3/,0@@@/,0@@@RF@@@J/,0@@@FU )@@G@@/,0@@@GA@@@@)^L[F]@9@K)O[#@@^G@@@@@@*O @DEO#@@@ R;@@@[RPP@DE @@@[ R9K@@@FV )@@G@@/,0@@@C8@@#B/,0@@@GB@@@@)^U[M@K[][[@@@@@@@C@@@@MN9K@@[/K@@^GK@@@@) :[#@K0@K^GGG )@@G@@@^[#@[#@[#@@@@@@@@R#)@[/9*)@]V9?)@['/K@@ 4(*@@@O/,)@2M[+A@I#/K@@ 'GL@@@@GH )@@G@@) 3[F#@@K^[@K)?K[]@=@@@@/,0@@@C@@@@M/K@@8U'=@@@@C@@@"//K@@ -/@K@AGA#K@@MGI )@@G@@A#)@]XGM@@@@) /[EK)^K0@K^[]@T@K^C[)@/,0@@@C8@@""/K@@A /,0@@@C8@@"./K@@A#GJ )@@G@@()A@I#/,0@@@C/@@@[GN@@@@)A []K)^K0@K0@K0@K0@K^G@@@@@@@(*@@@O/K@@ !A#@@[/GK )@@G@@R#@@]X9*@@['9?@@]V/,0@@@C/@@@]GO@@@@)AH@:@K)EK^CF4@@@@)I#@S@@@@@@@N@@@@@GL )@@G@@B@@@@@Q@@@@@/K@@@5'=@@@@C@@@"_/,0@@@/K@@@5GP@@@@)IA[@@@@@@@@)AM@F#@@@@@@GM )@@G@@RB@@@ U@@@@[E@@@@@M@@@@@L@@@@@S@@@@[X@@@@[D@@@@[P@@@@@GQ@@@@)AN[]ES@ G@^GN )@@G@@CG4G@@K0@@@@@@@@@@[ @@@ X80@@#;*0@@[RB0@@ /,0@@@R;)@F_R;K@G@P;@@@[GR@@@@GO )@@G@@)AV[]()@-)@-[O-)@O0@K)IK^C @@@/,0@@@C8@@;N/,0@@@C/@@[%A#@@F_'=@@@@&B@@@ GP )@@G@@R;@@F_GS@@@@)A<[##@[][P][-@K)?K^[@@@@@@@@@/,0@A!/,)@3//K@@@5'=@@@@C@@@_@GQ )@@G@@/,0@@@/,0@@@C@@@F_GT@@@@)A:[N#@[@@K0@@K@@@/,)@3//KF@@@ @@@@H/KF@@@:CK@@KGR )@@G@@R;K@B_/KF@@@*@@@@H/K@@@5AFK@@HGU@@@@)A5[E^G@^[@K0@K0@K^G@@@@AFK@@I/,0@A!GS )@@G@@RFK@@I:^K@@I/,)@3//K@@@5ABK@@HR;K@B_(@@@@HGV@@@@)A"[N@@@[#@@@@@@@@AB)@@IGT )@@G@@;?)@@A;C)@@#;G)@@#;C)@@#;G)@@#+8KBBBR;K777(@@@@H/,)@2MGW@@@@)BC[N@K[@K^@GU )@@G@@K^[@@@/K@@BR:@K@@S/K@@BR:8K@@N/K@@BP:@K@@R/K@@BP:8K@@U/,)@2M/K@@@5GX@@@@GV )@@G@@)BM[F@K)?K^G@^[#@[@@@@@@ MF$$,@USE /K@@@5 4@@@V/K@@@5^6)@@V/K@@@5'=@@@@GW )@@G@@C@@@_[GY@@@@)BV[E[@]&@]^@]@-[O@@@@@@'=@@@@R#@@_]/,0@@@C/@@[1N[K@@H/,)@2MGX )@@G@@ @@@@L& &*ED$MGZ@@@@)B=[F@K)A^C]OC#[]@-]@(@@R#@@_#/,0@@@/,0@@@C@@@@LGY )@@G@@/,0@@@/,0@@@C@@@[ /,0@@@C8@@BTHA@@@@)B![F]](@K)%K[@^@@@@@@@@N8)@@D/K@@B)GZ )@@G@@G9K@@[/K@@CS!9K@@E/C@@B5'=@@@@R#@@_^'=@@@@HB@@@@)B6[E()@-[%-)@CS@]@C@@@@HA )@@G@@O#)@_ ;*)@@M/K@@C[>8@^@@R#@@@@R#)@@GA\@@@8'=@@@@R;@@@;HC@@@@)B_[]K)?ES@CHB )@@G@@KVC]@-)@-)@@@@@@@@9*@@F_R#K@@.R#@@_A8K)@B6'=@@@@R;@@@8'=@@@@R#@@@IHD@@@@HC )@@G@@)CB[#]#X#@[#@[#@[#@[#@@K0@@@@@A\@@@8R;@@@AA#K@G^A#)@G#A#@@G]A#)@G[R#)@[;?)@@#;C)@@#;G)@@#+8K@BB/K@@@5'=@@@@HP@@@@HQ )@@G@@)D\[N@K@K@@@@@@@@@R;@@@-!8@@@-O;@@@[*@@@@HW8@@@^/K@@ES(@@@@H"K@@@Q/,)@4OHR )@@G@@/,)@2MHQ@@@@)D9[F#@@^G@^@K^G@^G@@@@@A3@@@ R7@@@ /K@@EB*@@@@H/,)@2M[E)@@LHS )@@G@@C')@]^!')@]^A7@@@ HR@@@@)E][F#@[#@[#@[#@[@K@@@@@W8@@@^R#K@@Q @@@@G/,)@4OHT )@@G@@/K@@@5^E)@@LAB@@@LRF@@@L^6)@@ HS@@@@)EF[M^G@^@^G@@K0@@[A)@@LC')@]^!')@]^HU )@@G@@A3@@@ R;@@@-!8@@@-/K@@EQ?4@@@ O;@@@[*@@@@HHT@@@@)EP[F@K^CF^G@[#@[#@@K0@@HV )@@G@@AB@@@LR;@@]^^E)@@LA3@@@ R;@@@-^6)@@ '=@@@@C@@@_K/K@@@5HU@@@@)EY[F@K^@^G@HW )@@G@@^[@K@@@@@@@@/,0@A!/,)@3//K@@@5ABK@@FR;K@@):8KCLG/,0@A!/,)@3//K@@@5HV@@@@HX )@@G@@)E$[##@[@^G@^G@^G@^G@^G@@@@@@@R#@@@@^,)@@N*0@@@NA#K@@@)@@@@@R;@@@)/K@@@5HY )@@G@@ABK@@GHW@@@@)E\[EK[#@[@K0@K0@K^G@@@@RFK@@K/K@@M.?C@@@[CC@@@]/K@@@5A#)@@@HZ )@@G@@-8K@^@/K@@@5>8@@^@HX@@@@)E8[EK^G@^[#@[@K0@K0@K@@/K@@F#*)@@I^^,)@@U/K@@M.IA )@@G@@^2)@@Q/K@@E"()@@IG/K@@M.:8K@@:HY@@@@)F[[F@K)?K^G@^[#@[@K^G@@ ?@@@O/,)@1:IB )@@G@@/K@@@!(C@@@[/K@@FC*)@@IG/,)@:1'=@@@@C@@@_LHZ@@@@)FE[EK0@K[#@@K0@K0@K0@@@IC )@@G@@*C@@@[[X?@DD: K@@HC9)@[@CXW@DD @@@@HC@@@_M]$0@ GG;@@@[IA@@@@)FN[#@K0@K^GID )@@G@@@^G@^[#@@@@@@@@@@@O;K@@[[LX@DE/,)@F+:DK@@FCXW@DD/K@@FTC[K@[&/K@@FQIB@@@@IE )@@G@@)FV[F#@[@K0@K^G@^[@K0@@@C9K@@)CO!@DE/K@@F#/,)@19AFK@@#/K@@FQ$F@@@[/K@@FZIF )@@G@@!CK@@JIC@@@@)F=[F#@@K0@[@^G@^G@@@@@@^&)@@VA\K@@P/KE@@]/K@@F=?@K@@I/KE@@]IG )@@G@@!CK@@JO;K@@[[LX@DEID@@@@)F![#@K0@K0@K0@K0@K0@K0@K@@@@@/?0@%7(0@@@P[^@@@[IH )@@G@@C^@@@[:C@@@]CC@@@[ ?@@@P/K@@F\IE@@@@)F5[F@K^[#@[@K^G@^[#@@@@CXY@DDC@0@",II )@@G@@GC)@@]C@)@_N/K@@@5**@@@V/K@@7+/,)@0B/,)@1:IF@@@@)F"[##@[@K0@K^G@^[#@[@@@IJ )@@G@@@@@@@@/K@@GC(?@@@P/K@@F.$B)@@[/K@@F5% K@@F/K@@G]:LZ)DEIG@@@@)GA[##@[@K0@IK )@@G@@K^G@^[@K0@@@@@@@@@A\K@@P/K@@@5/K@@F5*?@@@P/,)@!Z()@@I^/,)@]!*)@@I^IH@@@@IL )@@G@@)GI[##@[@K0@K0@K0@K0@K0@K0@@@@[^@@@[C^@@@[:C@@@]CC@@@[ 0@@@T ?@@@P/K@@GLIM )@@G@@^&)@@VII@@@@)GQ[F#@[@^G@^G@^G@^@K0@@:Y,@DDO;)@@[/K@@G&!C)@@[CD)@@HRF)@@]IN )@@G@@C')@@)/?0@%7(0@@@PIJ@@@@)GZ[F@K0@K^G@[#@[#@[@K@@/,)@0B/,)@1:^2)@@TAF)@@]IO )@@G@@P;)@@[[Y,@DD/K@@G&%X,@DD/K@@GVIK@@@@)G*[F@K0@K^G@@^G@^@@@@@@8#)@G\ANW)DEIP )@@G@@&;@@@[R;K@@)R;)@@#RF@@@#/K@@@5**@@@V/K@@7+IL@@@@)G1[EK0@K0@^G@[@K0@K@@@@IQ )@@G@@C@K@",[^@@@]/G@@G&O;@@@]*0@@@TG8@@@[H^@@@[OF@@@]&;@@@@IM@@@@)G'[F@K0@^G@IR )@@G@@^[@K0@K^G@@@*0@@@T/K@@HL:LZ)DE/K@@G&!@0@_OCXY@DDC@0@@HGC)@@]C@)@_NIN@@@@IS )@@G@@)H#[F@K0@K^[#@[@K0@K0@K@/K@@G'%M\@DC:M\@DD/K@@G'*0@@@T/K@@G&/K@@HB$BK@@]IT )@@G@@/K@@HIIO@@@@)HG[EK^G@^[@K0@K^G@^@@@@/K@@HR(?@@@P/K@@G.$B)@@[/K@@HN/K@@H^IU )@@G@@%X,@DD/K@@G"P;K@@[IP@@@@)HP[F#@[@K0@K^G@^[@K0@K@R@K@", 0@@@U/K@@@5/K@@G&IV )@@G@@*?@@@P/,)@!Z()@@I^/,)@]!*)@@I^IQ@@@@)HY[#@K0@K0@^G@^[#@[@@@@@@@@@@/K@@H+IW )@@G@@$C)@@[/K@@H3%W]@DE:8@@@)CW])DEOC)@@]R@)@",IR@@@@)H&[##@[#@@()@-@W)CKECS@IX )@@G@@CS@@@@RZG@DER#@@@B/,0@@@C8@@;(/,0@@@C/@@[%A#@@@BRF@@@]IS@@@@)H,[#][[][-@IY )@@G@@K)?K^G@^G@@@@@@@@@$8K@@] C[@@BA@-@@B/K@@@5'=@@@@C@@@_P/,0@@@/,0@@@IT@@@@IZ )@@G@@)H6[F@K^G@^G@^[#@[@K@@@@O8)@@[/K@@H*/K@@H9$C)@@[/K@@H3:W]@DERZ])DE/K@@H"JA )@@G@@/K@@H8IU@@@@)H_[F#@[#@[#@@K^@K@@@@@@%8K@@A/K@@II:8K@@G/@K@IJ/,)@2M @@@@QJB )@@G@@ )@@@P ?@@@SAC)@@]IV@@@@)IC[EK^[#@[@^G@^G@@@@@@@G8@@@[C@@@@B^,)@@S:8K@@GJC )@@G@@/,)@2M[A)@@#/,)@4L/K@@K=:8KALLIW@@@@)IL[F#@[#@@K^[@K0@K^G@@@CC@@@#/K@@JBJD )@@G@@*)@@@P/K@@N0/A)@J"/K@@IR*@@@@S^+)@@P!@@@@CIX@@@@)IU[E[#@[@^[#@[#@@@@@@@@JE )@@G@@CC@@@A!C@@@A/@@@I9&;@@@@8#)@IXANW)DE&;@@@[R;K@@)R;)@@#IY@@@@)I<[F#@[#@@KJF )@@G@@^G@^[@K^G@@@ ?@@@RC@0@",C@)@",C@K@",[^@@@]/G@@I9G8@@@[H@@@@CG@@@@BIZ@@@@JG )@@G@@)I?[F@K0@^G@^G@^[#@[@K@@/K@@I_/K@@I\$@K@@C/K@@I5%LM)DECXL@DDR@)@@HO@K@@BJH )@@G@@R@K@_NJA@@@@)I5[F#@[@K0@K^[@K0@K^@@@/K@@K^/,)@0B*0@@@P/,)@1:/])@KZ/K@@JUJI )@@G@@*?@@@R/K@@I?$BK@@]JB@@@@)I"[F@K0@^[#@[#@[#@[@K@@/K@@J>/K@@I_$B0@@A[TZ@DEJJ )@@G@@CLY)DE/K@@JE:@K@@I^2)@@U8 )@INJC@@@@)JB[##@[@K^G@[#@[@K0@@@@@@@@@@CXW@DEJK )@@G@@/K@@JN:@@@@DO;@@@[R#@@@CR@)@",R#0@",^2)@@UJD@@@@)JJ[F#@[#@[@K^G@@@@@@@@@JL )@@G@@C@)@@]H8K@@[C@K@@]C@@@@]^,)@@R/K@@J>/K@@JF$B0@@A[TZ@DEJE@@@@)JS[F#@[@K0@JM )@@G@@^G@^G@^@K@@@/K@@J>?@K@@GG@K@",C^K@@A!^K@@AH8K@@[CCK@@#/K@@I5*?@@@SJF@@@@JN )@@G@@)J-[##@[#@[#@[@K0@K0@K^G@@@@@@AF0@@#/K@@J:!^K@@ACCK@@#/K@@JZ$B0@@A[TZ@DEJO )@@G@@CLW)DEJG@@@@)J([#@K[#@[#@[@K0@K0@@@@@@@@@@CTZ@DEC^0@@A/K@@J?$B0@@A[TZ@DEJP )@@G@@C9K@@)/K@@J0H@0@_MJH@@@@)J1[##@[@K0@K^G@^G@^G@^G@@@@@@RF@@@J!C@@@JRF@@@#JQ )@@G@@]$0@ G/,)@1:]\0@ G8#0@J0[LZ@DEJI@@@@)J9[F#@[@K0@K^[@K^[#@@@@**@@@V/K@@K^JR )@@G@@/,)@0B/,)@1:/])@KZ/,)@!Z()@@I^/,)@19AF@@@#JJ@@@@)K][#@K^G@^G@^G@^G@^G@^@JS )@@G@@@@@@@@/K@@KG(?@@@T^,)@@O 0@@@R 4@@@P ?@@@V8 )@IN/K@@KZJK@@@@)KE[F#@@K0@KJT )@@G@@[]#(#@[#@@@@#])@@QHA)@@# 0@@@V'=@@@@R;K]WK/K@@KL(0@@@V/KA@@@ ?@@@TJL@@@@JU )@@G@@)KN[]()@-@W)CKE]^]2^#]A@@@@@@@(=@@@S/,0@@@/,0@@@C@@@@Q/,0@@@C8@@;>/,0@@@JV )@@G@@C/@@[%JM@@@@)KV[F@K)?K0@K^G@^[@K)?K@/K@@@5'=@@@@C@@@_Q/K@@@5*0@@@U/K@@7+JW )@@G@@ =@@@N'=@@@@C@@@_@JN@@@@)K=[EK0@K[@K^[#@[@@@@@@@/!)@S5^,)@@T/,)@4O/@K@K4JX )@@G@@/,)@2MC')@@-/K@@IF^,)@@SC')__"JO@@@@)K![F@K0@K[@[@K0@@@@@@@@]\0@ G/,K@N(JY )@@G@@A#K@@Q*@@@@H/,)@3/C')@@-/K@@@5**@@@V/,)@QNJP@@@@)K6[#@K0@K0@^G@^G@^G@^G@JZ )@@G@@@@@@@@AN!@DG*)@@IHAN!@DFRN!@DDR#@@@HRFK@@#]$0@ G/,)@1:JQ@@@@)K"[F@^G@^G@KA )@@G@@^G@^[#@@@@@@O;@@@]O;@@@[AN)@DG/K@@LA()@@IHAN)@DEAN)@DFR;)@@:8#K@K'JR@@@@KB )@@G@@)LB[##@[@K0@K0@K0@K0@K^G@@@@@@^-)@I /,)@!Z )@@I# )@@I N-0@I#N-)@I /,)@1'KC )@@G@@AF@@@#JS@@@@)LJ[##@[#@[#@[@K0@K0@ES@CS@@@@AB@@[%R;@@G)CE)@@B *@@@T/,)@:1KD )@@G@@^%)@@T[E)@@B^-0@I#JT@@@@)LR[##@[@ES@CKBC]@-)@@@@@@@@@@O9K@@[*)@@IHR[K@",KE )@@G@@R[@@",/,0@@@C/@@[%G]0@",CE0@@[JU@@@@)LZ[F#@@K0@^[#@[#@[#@@@@?]0@@^CX^)DEKF )@@G@@ )@@@T =@@@TC#K@_MP90@@[*)@@IHP90@@]RD0@@#JV@@@@)L*[N@^[#@[][@K[@@:9@@[^KG )@@G@@/K@@MK:9@@[D/K@@L&:9@@@)/,0@@@RN )DG/K@@L!:#K@@^/K@@MZJW@@@@)L2[N@^@K[@^KH )@@G@@@*@@@@C9K@/T/K@@MJ:9@@[2/K@@MH:9@@[=/K@@MK:9@@[(/K@@MJ:9@@[M/K@@MHJX@@@@KI )@@G@@)L/[#@K)SES@CS@ G@^C#-][K@@@@@/,0@@@R#@@@L/,0@@@C/@@[%AB@@[%R;@@['/,0@@@KJ )@@G@@/,K@N8JY@@@@)M^[EK)KK)SK^CF^@E]@@@@@/K@@L/C9K@/YC[@@@Q/K@@8U'=@@@@C@@@_RKK )@@G@@/,0@@@/,0@@@R#@@@KJZ@@@@)MH[F#@[@K0@K0@^@K^G@@@@*)@@@T/K@@L=:[@@@Q/K@@MEKL )@@G@@?]0@@^CX^)DE^&)@@T/K@@MK^+)@@TKA@@@@)MQ[N@^C^^G@^@K[@@ @@@@H/K@@MKO9K@@[KM )@@G@@/K@@MKO90@@[/K@@MX*=@@@T/,0@@@R#@@@K/K@@MXKB@@@@)M)[F#@@[#@[@K0@K)KK@@@@KN )@@G@@/K@@M+/,0@@@RN )DG/K@@M(!CK@@#O;K@@]Q#K@@ O90@@[*)@@IHKC@@@@)M([F][>#@[#KO )@@G@@@@@K0@K)S@@@/,0@@@A3@@ GO;@@@[*@@@@HW8@@@^;G@@@=RF@@@J!C@@@J/,0@@@KD@@@@KP )@@G@@)M2[E()@-)@)C]@C@)@@@@@@/K@@N0(@@@@S/K@@@5H;@@@[/K@@@5/,)@04/,)@!ZAB@@[%KQ )@@G@@R;@@['KE@@@@)M;[F#@@K0@K[#@[#@@K@@@@/K@@NF%8K@@:RFK@@K]$0@ GG;@@@[/,)@1:KR )@@G@@CAK@@^H;@@@[]\0@ GKF@@@@)N^[##@[@K0@K0@K0@K^[@@@@@@@@@C@@@_N/K@@NHR#@@_MKS )@@G@@^E)@@] 0@@@Q *@@@T/,)@:1^%)@@TKG@@@@)NG[##@@K0@K^G@^[#@[#@@@@@@@@@:DK@@FKT )@@G@@CXW@DD/K@@NPC[K@[&/K@@NM(0@@@Q @@@@HGC@@@]KH@@@@)NO[F@K0@^G@^[#@[@K0@K@@KU )@@G@@/,)@19AFK@@#/K@@NM$F@@@[/K@@NV!CK@@JO;K@@[[LX@DE/,)@F+KI@@@@)NX[F#@[@K0@KV )@@G@@K^G@^@K^@@@@/,K@N(/K@@N0(@@@@S/K@@@5 0@@@Q/K@@N3**@@@P8 K@M"(*@@@VKJ@@@@KW )@@G@@)N&[##@[#@[@K^[#@@K0@@@@@@@@@@R#@@ GM#H)@@N0K@ GC@@@_TC@K@_S/K@@N@^%)@@PKX )@@G@@CAK@@^KK@@@@)N,[F#@@K^CF^[@^G@^@@@@@/,K@N8 *@@@PG;@@@[/,)@1:/K@@@5'=@@@@KY )@@G@@C@@@_U/KD@@@A#@@@MKL@@@@)N7[F@K^[#@@[#@[#@@@@@@@A#@@ GR#@@@MM#H)@@N@K@@IKZ )@@G@@;C)@@SR#)@@MC@@@_SC@K@_T/K@@@5KM@@@@)O@[F@K@K0@K^G@[@@@@@@@@/,@@QQ[#@@[CLA )@@G@@ 4@@@P/K@@OB^6)@@P/KD@@@H;@@@[/K@@QN/,)@04KN@@@@)OD[F#@[#@[#@[@K^[#@[@K@LB )@@G@@/@K@P$/,)@2M[E)@@B/,)@4O/@K@8S/,)@2M @@@^1^A)@]/ ^@@@CKO@@@@)OM[#@K0@K0@LC )@@G@@K[#@[#@[#@@@@@@@@@^,)@@TCE)@@B[E)@@CC])@@S/K@@QN?E)@@B[A)@@B/,)@4OKP@@@@LD )@@G@@)OU[F@K^G@^G@^G@^[@K^@@@/,)@QE/,)@0B/,)@1:/,)@P%[A)@@DHE)@@BCA)@@B/,)@QNLE )@@G@@/!)@S5KQ@@@@)O<[F@K0@K0@K^[#@[@K0@K@/K@@O8(^@@@C/K@@@5**@@@V/,)@QE/!)@S5LF )@@G@@^,)@@TCE)@@C8 )@OZKR@@@@)O?[#@K0@ES@ CI4G@^CJ[#@@@@@@@O#@@^1R;@@@^'=@@@@LG )@@G@@A3K@^\R;K@@@R;@@^? @@@^1/,K@P7KS@@@@)O4[F#@[#@@K0@K^@K0@K0@@A#)@ GR#*@]/LH )@@G@@G;@@@[/,)@1:R]@@_MAB@@@CP;@@@[RB@@@CA#@@^1KT@@@@)O.[##@[#@[@K0@K0@K^G@^@LI )@@G@@@@@@@@/K@@PE**@@@V/,)@!Z()@@I^M#*)]/R#)@_VN0S)]/]$0@ GKU@@@@)P [EK0@K^G@LJ )@@G@@^[@K)2^G@@@@(4@@@PH;@@@['=@@@@/,)@04/K@@O,*^@@@C/K@@O9?^)@]/R;*@@@KV@@@@LK )@@G@@)PI[#@K0@K0@K^G@^G@^[#@@@@@@@@RF@@@B/K@@P=!E)@@BCE)@@C/K@@PW?E)@@CCA)@@BLL )@@G@@/K@@@5KW@@@@)PQ[##@[#@[#@@K0@K^G@@@@@@@@@@P;@@@[RF@@@B/K@@RX[A)@@BH])@@GLM )@@G@@GA)@@B[E)@@BCA)@@BKX@@@@)PY[##@[#@@K0@K0@K^[]]0@@@@@@@'=@@@@C@@@_W/K@@RXLN )@@G@@CA)@@BAB@@@BP;@@@[RB@@@BAF@@@BKY@@@@)P&[F@K0@K0@K^G@^G@@K@@@/,K@P7!9@@[0LO )@@G@@G9@@@[K00@ GRB0@]//K@@OQAB@@@BRF@@@B/K@@@5KZ@@@@)P\[]K0@K0@K^G@^G@^G@@@@LP )@@G@@@@@@@@/KE@@@AB0@]/M#")]/N0K@ GR#)@_VA#J)]/R#@@ G&;0@@[LA@@@@)P7[##@[@K^CLQ )@@G@@E=[#@@()@O).@@@@@@R;K@@@R;@@^?^&)@@Q/^@@72'=@@@@R#@@_X/K@@P.*=@@@QLB@@@@LR )@@G@@)P_[F#@[]#0K0@K0@K0@^G@@R;0@@[AB@@@CO;@@@[RB@@@CA#@@^1O#@@^1R;@@@^'=@@@@LS )@@G@@A3K@^\LC@@@@)QC[E^@K0@K0@K0@K@@@@@@@R])@[D/?0@%8^,)@@O @@@ G 0@@@PN]K@@ELT )@@G@@/A)@QN/KE@@@/KD@@@LD@@@@)QL[E^[]]1@K0@@@@@@@@@@@G;@@@[C])@@S/KC@@@*0@@@PLU )@@G@@/K@@8U'=@@@@C@@@_Y/KE@@@ @@@@QLE@@@@)QU[F#@[@K[#@[@K0@K^@@@@/K@@Q?=@@@_ZLV )@@G@@R#@@@@/K@@Q?(4@@@U/KC@@@/,)@QN/!)@S5^,)@@TLF@@@@)Q<[F#@[@K^@K^G@^G@^@@@@LW )@@G@@/K@@@5 ^@@@E[E)@@E/A)@Q\?')@@ /,)@4O/@K@Q9/,)@2M^6)@@TLG@@@@)Q?[#@K)?K]&LX )@@G@@@]^[2@-@*@@@@@@@@@C8@@@ /,0@@@C8@@.3/,0@@@C/@@[%/K@@@5'=@@@@C@@@_)LH@@@@LY )@@G@@)Q4[F][T][-@K)?K@K0@K0@@AF@@@E(C@@@ER;@Z_" @@@@E/K@@@5'=@@@@C@@@_@/,0@@@LZ )@@G@@/,0@@@LI@@@@)Q.[##@[#@[@K)?K^G@^[#@@@@@@@@(0@@@W/K@@RF(4@@@T/?0@%7'=@@@@MA )@@G@@C@@@_-[F@@@CAE)@@DLJ@@@@)R [#@K0@^G@^[#@[#@[#@@@@@@@@@CE)@@C ^@@@E 4@@@TMB )@@G@@/?0@%7A#K@ G)8@@@CR#@@ G/K@@RELK@@@@)RH[F#@[@K^G@[@K^G@@@@@@:8K@@:RFK@@KMC )@@G@@/K@@@5/K@@:9*@@@@ERE)@@D/,)@K^/!)@S5^,)@@TLL@@@@)RQ[F#@[@K^G@^[@K^G@^@@@MD )@@G@@/K@@R,!E)@@B/,)@4L/@K@R)/,)@2M[E)@@B/,)@4L/,)@2M^2)@@RLM@@@@)RZ[#@^[#@[#ME )@@G@@@[#@[#@[@@@@@@@@@@/K@@@5**@@@V C@@@#[A)@@#CE)@@B/K@@N0(@@@@S/A)@QNLN@@@@MF )@@G@@)R$[F#@[@^[@K^[#@[#@@@@@[A)@@#HE)@@B8 )@R=/K@@K^/,)@0B/])@R9H;@@@[/,)@1:MG )@@G@@]\0@ GLO@@@@)R0[##@[#@@K0@K^[#@[#@@@@@@@@@[A)@@#CA)@@B/,)@K^/!)@S5^,)@@TMH )@@G@@G')@@[CE)@@B[A)@@BLP@@@@)R8[F@^G@[#@[@^[#@@@@@@@(0@@@R/K@@S]C])@[C/K@@S@MI )@@G@@(4@@@PG')@@[*0@@@RC])@@S/K@@R=LQ@@@@)S[[EK0@K^[#@[#@[@K^@@@@/K@@S4/,)@2MMJ )@@G@@/K@@@5 0@@@R 4@@@P/,)@K^/!)@S5^,)@@TG;@@@[LR@@@@)SE[N@^@K^@K^G@^@@/,)@2MMK )@@G@@^E)@@]/K@@S5C')@@[/K@@SO/K@@SN:8K@@+/K@@SR:8K@@-/,)@2MLS@@@@)SO[N@K^G@^[ML )@@G@@@@^G@@^,)@@TG])@@SD])@@QC')@@[(@@@@Q/,)@4O/,)@2M^E)@@]/K@@S>/,)@4LLT@@@@MM )@@G@@)SY[F@K^[@K^[@K0@K@@@@@@8 )@S+(*@@@V/K@@K^/,)@\"/,)@1:/?0@%7/K@@S\/,)@K^MN )@@G@@/!)@S5LU@@@@)S$[F#@[@K^[#@[@K0@^G@@@*)@@I^/KA@@[ ?@@@T/K@@S\(?@@@T/K@@K^MO )@@G@@/,)@0B/,)@1: ?@@@VLV@@@@)S0[N@^[@K^G@[@K@@H')@@[/])@T@/K@@S::])@@S[A)@@#MP )@@G@@/,)@4O/K@@@5/,)@!Z*@@@@Q/K@@@5LW@@@@)S'[MK[@K^[@K^G@^@/?0@%7(0@@@P/K@@S:MQ )@@G@@/?0@%7/K@@S*/?0@%78 )@S-G])@@S/E)@S>H])@@SLX@@@@)T^[E*C]@)C]A@]@-)@)@@@@MR )@@G@@/,K@N8 ?@@@V/K@@T (*@@@V/K@@TF/,)@\"/,)@1:/,K@N(R80@@5LY@@@@)TH[##@[@K0@MS )@@G@@K0@K0@^G@^G@@@@@@@A#@@F_R#@@[&/K#@@@ C@@@#^,)@@O @@@ G/,)@!Z()@@I^LZ@@@@MT )@@G@@)TP[F#@[#@@K0@@ES@ G@@@@R;)@F_R;K@F_O;@@@[*@@@@HW8@@@^RFK@@[ @@@@G @@@^6MU )@@G@@ @@@^4MA@@@@)TY[#]#G()@-)@O0@K)@K0@K)D@@@@C/@@@:/,0@@@C@@@@"/,0@@@C/@@[1MV )@@G@@AB@@^5R;@@]V/,0@@@MB@@@@)T&[#]@D#@[@K0@K)]K0@K)]K@@@@@/K@@T2/,0@@@C)@@F_MW )@@G@@/,0@@@C=@@F_/K@@T,*)@@@V/,0@@@MC@@@@)T,[##@@K)/,0@@@MR@@@@NO )@@G@@)V\[F]#OK0@K^G@[@K)_K0@@**@@@V'=@@@@O#@@_&;*@@@M9*K@['9?K@@>AZW@[/R;K@@,NP )@@G@@'=@@@@MS@@@@)V8[#@K0@K^[]^[#@[]^ @@@@@@@@@R#@@_*'=@@@@^+)@@N'=@@@@R#@@_$NQ )@@G@@/K@@V_*)@@@N/K@@W]MT@@@@)W@[#]^[@K0@K^G@]&@]A@]@@@@@@@/K@@WE*)@@@VR;@@[7NR )@@G@@A#@@[7/K@@@5 =@@@S/K@@UK'=@@@@MU@@@@)WC[#]#)K0@K-]^G@^G@^G@@@@@@@@*)@@@VNS )@@G@@ =@@@V =@@@S/KE@@@'=@@@@ 0@@[7/KE@@@'=@@@@MV@@@@)WK[#@ES@CK@C]^@2^A)-[]@NT )@@G@@@@@@@@/,0@@@A#@@@L'=@@@@/,0@@@C8@@/5/,0@@@C/@@[1/K@@W4MW@@@@)WS[F]@0K)YKNU )@@G@@)EK^[@K^@@@@/,)@W^R#@@_%/,)@X&/,)@W^R#@@_(/,0@@@/,0@@@C@@@@L/,0@@@MX@@@@NV )@@G@@)W-[#@K]&@]^@@-)@-@U)@@@@@@@@@8K)@W&/,0@@@9?@@[BN8)@@E/,0@@@C/@@[1/,)@W^NW )@@G@@R#@@_:MY@@@@)W([F]@(@K^[@K^@K-#@@@@@'=@@@@R;@@@]/,)@W^R#@@_!/,)@W^R#@@_?NX )@@G@@/,)@W^R#@@_?/,0@@@MZ@@@@)W2[##@[@ES@CK@C]^@2A@]^[*@@@@/,0@@@9?@@[8/,0@@@NY )@@G@@C8@@@Z/,0@@@C/@@[1/,)@\MR#@@H[NA@@@@)W'[#]@(@K)%ES@CK@C]^@2A@@@@@@9?@@[8NZ )@@G@@/,0@@@C8@@@T/,0@@@C/@@[1'=@@@@R#@@_,/,0@@@NB@@@@)X][#]@5]@(@K)%ES@CK@CS@OA )@@G@@C@@@@@/K@@XH*)@@@V/,0@@@C/@@[1'=@@@@R#@@_#/,0@@@/,0@@@NC@@@@)XE[#@K)AK^[OB )@@G@@]@T#@[]@5]@0@@@@@@/,0@@@/,0@@@9?@@[8/,0@@@C8@@@8@@@)R#@@@@O;K@@[R#K@@V/,0@@@OL )@@G@@C/@@@(/,0@@@9?B@@ANL@@@@)YQ[F#@@[]@)K)]K)E@@@@@@/KE@@@/,0@@@/,0@@@C/@@@)OM )@@G@@/,0@@@R#@@@HR#K@@V=8@@^@R#@@@@NM@@@@)YZ[E()@-@@-)@-)@CS@@)@@/K@@Y%?8@@@ION )@@G@@R#@@@AR5)@F>=8@)@@R#@@@@R5)@FT/,0@@@C/@@[1NN@@@@)Y*[F]@X@K^C]L]@L@K)AK@@OO )@@G@@/,)@]B/,0@@@C8@@_1/,0@@@C/@@@]/,0@@@C@A@@D/K@@Y?/,0@@@NO@@@@)Y1[F@K^CF4@OP )@@G@@K^[]]1@@@@@@/K@@@5'=@@@@C@@@_U/K@@Y'*@@@@S/K@@@5'=@@@@C@@@_2/,)@X&NP@@@@OQ )@@G@@)Y'[F#@[@K^@K@K@@@@@@@@@/,)@4LR;K@41(@@@@H/,)@2M[])@[D/,)@4L/@K@8S/,)@2MOR )@@G@@ *@@@SNQ@@@@)Z#[F#@[@K[#@[#@[@K0@K@@/,)@1:]\0@ G/,K@N(^2)@@S^%)@@S:8K@@POS )@@G@@/@K@ZC/,)@2M[A)@@BNR@@@@)ZG[F#@@K0@K[#@@K0@@@@@@R;@@@^AN[)DER;@@@)AN[)DEOT )@@G@@R;@@@,/K@@ZO(*@@@S&8K@@[R^K@@BNS@@@@)ZP[##@[#@[#@[#@[#@[#@[#@@@@@@R;[@@@OU )@@G@@ K[@DK K[@DJ K[@DI K[@DH K[@DG K[@DFAN[@DENT@@@@)ZX[##@[#@[@K0@K^G@^G@@@OV )@@G@@@@@@@@O;@@@[A#W@F_R#K@[&/,)@!Z]$0@ G/,)@19ACK@@#!C@@@#NU@@@@)Z>[F@K^G@^GOW )@@G@@@^G@[@K0@K@@/,)@19ACK@@#8KK@Z*$8K@]^AN[@DERZ])DENCK@@[R@)@",/,)@?-NV@@@@OX )@@G@@)Z,[N@K0@K^[@K^@K@+9K@B_/,K@N8C[K@@G/G@@$=/K@@@58MK@ZC/K@@K^/,)@0B 0@@@SOY )@@G@@/,)@1:NW@@@@)Z8[M@K[#@@K^@@@@@R#@@_3/K@@ZHO@K@@NR^K@@B+9)@@J/K@@Z,?9)@@1OZ )@@G@@?9)@@' @@@[D:9)@[SNX@@@@))][F]]-#@@@ES@CKB@@@@@@C@@@@K/,0@@@C/@@[%W9@@@/PA )@@G@@;P@@@=W9@[IC;P@@@=C[@@#M'=@@@@NY@@@@))F[#][T@K)O^C =CA=CA^@@@@@@@@C@@@_6PB )@@G@@/,0@@@/,0@@@/,0@@@C@@@@L/,0@@@C8@@_4/,0@@@NZ@@@@))N[F]]1@]&@]^[2@)C@@@@@PC )@@G@@R#@@@Q/,)@4L/@K@)-/,)@2M/,0@@@C/@@[%N8)@@G/K@@@5'=@@@@OA@@@@))W[F][C@K^CPD )@@G@@C=[][W@@@@@@/,0@@@C@@@_9/,0@@@9?@@_7#])@[]H])@[]W')@@^;Q)@@=/,0@@@OB@@@@PE )@@G@@))>[F@K)SK^CF^[#@[#@[@K@/?0@%7/K@@UL^%)@@U^&)@@V/K@@@5'=@@@@C@@@_'/,0@@@PF )@@G@@8K)@)-OC@@@@)),[F@^G@[#@[@K^[@@@@@@@C[)@_;/@K@8P/,)@2M/K@@-@(C@@@KC'@@@OPG )@@G@@[ )@@]C9)@[=/,)@1:OD@@@@))7[F@[@K0@]&@[N@[]^K@@@/,0@@@R;)@['R;K@['R;@@@]PH )@@G@@9()@['/ K@)9;HK@@AC[K@@HC[0@_/OE@@@@)-@[EK^[@K^G@^[@K@@@@@@@/,)@0B/,)@4OPI )@@G@@/,)@2M[A)@@]/])@-A/,)@4O/@K@-C/,)@2MC')@@[OF@@@@)-D[F@K0@K0@[@^G@^@@@@@@PJ )@@G@@8#)@-KA#H)G)&;K@@[/G)@-MP#)@@HR;)@@NR3K@ GR#@@[&/K@@7+OG@@@@)-M[F#@[#@[#PK )@@G@@@[@@^@@@@@@@')G)-ZG8)@@0W8K@@E;GK@@=C@K@@QC@@@",9()@G29!)@['[2@@ GOH@@@@PL )@@G@@)-V[#@K^G@^[#@[#@[#@[#@@@@@@@@AZ)@G3AN)@G3AV)@G3AR)@G3/K@@-CGA)@@]/,)@1:PM )@@G@@/^K@-ROI@@@@)-<[##@[#@[#@[#@[@^[#@@@@@@@@@ )@@I^/K@@-N @@@@Q/K@@-*AZ)@G2PN )@@G@@AN)@G2AV)@G2AR)@G2OJ@@@@)-:[F@K0@K^[@^@@@@@@@@@@C')@]^(@@@@Q/K@@8P!')@] PO )@@G@@/,)@4O/,)@2M/K@@@5^+)@I^/K@@@5OK@@@@)-4[F#@@K0@K^[@[#@@@@@@@[E)@@JC')@]^PP )@@G@@!')@]^/,)@4O/,)@2M/K@@@5[A)@@AH')@@[[E)@@AOL@@@@)-.[N@^G@^[@^[@K@@R#0@@OPQ )@@G@@/,)@4L/@K@@5/,)@2MC]@@@JC@0@",8#@@-_ OG@DEC8@@]#/K@@@5OM@@@@)+B[EK^[#@@KPR )@@G@@^@ES@@@@@@@@C/@@[%C[K@@J/K@@+]/K@@+E?@0@@Q[Q\)DEG])@",/K@@+I!')@]^ON@@@@PS )@@G@@)+K[F]@9@K)O[][T][)K@@@@C@@@_6R#0@@L/,0@@@/,0@@@C@@@@QG')@@[/,0@@@C8@@/>PT )@@G@@/,0@@@OO@@@@)+T[F]]1@K^[#@[@K0@K0@K@/,K@>]CE@@@K =@@@W/K@@@5[CK@@F/,0@A!PU )@@G@@/,)@3//K@@+]'=@@@@OP@@@@)++[F@K0@K^G@^@()@-]EO^@/^)@&9R'K@$A'=@@@@R;@@[FPV )@@G@@/K@@+0^&)@@W/K@@+$*@@@D^/K@@+:OQ@@@@)+:[]()@-]G)CS@CS@C]A@]@@@@@@@/,)@5OPW )@@G@@A#@@D]R#@@_.A#K@[PA#K@D^/^)@+('=@@@@R;@@[FOR@@@@)+3[F@K^[@K0@K^[#@[#@@@@PX )@@G@@?E)@@B[A)@@B/,)@4O/,)@2M[E)@@B/,)@4O/@K@<3/,)@2M/,)@52OS@@@@)+/[#@K0@K0@PY )@@G@@K^[#@[#@[#@@@@@@@@()@@ICHE)@@BCA)@@B/,)@QN/!)@S5^,)@@TCE)@@B/K@@QNOT@@@@PZ )@@G@@)<^[#@K0@K0@K0@^G@^G@^@@@@@@@@/,)@1:A#@@@MR#@@ GH;@@@[*)@@IB]\0@ G*)@@IBQA )@@G@@/,)@!ZOU@@@@)]PC@@@@)=K[EK0@K^G@[#@[@K^@@@@@/@K@=9/,)@2MQK )@@G@@/,)@5"A<@@I^P;@@@[R<@@I^/?0@T A<@@I^O;@@@[PD@@@@)=T[F@K0@K^[#@[#@[@K^G@@QL )@@G@@CE)@@B/,)@1:/K@@QN?E)@@B[A)@@B/,)@4L/,)@2M[E)@@B/,)@4LPE@@@@)=+[F@^[@K^GQM )@@G@@@^G@^[@@@@@@/K@@=//,)@6JHE)@@BCA)@@B8 )@==/K@@=//,)@6JH')@@[/])@=$PF@@@@QN )@@G@@)=:[EK0@K0@K0@K^[#@[@K@@/,)@6^8 )@=((*@@@V/,)@1:/,)@!Z()@@ICA#@@ GR#@@DDQO )@@G@@G;@@@[PG@@@@)=4[F@K0@K0@K0@K[@K^@@@@C@@@_"/K@@=(/,)@1:C')__"/K@@@5 C@@@#QP )@@G@@^,)@@O @@@ G/,0@$VPH@@@@)=.[F]].@@K0@K0@^@@@@@@@R#@[@@ @@@@Q )@@@R @@@D^QQ )@@G@@PF$ D$XF,T@USE E/K@@=3'=@@@@PI@@@@)>A[#]]*()@-@@)CK#CS@]A@@@@@@@RD@@@]QR )@@G@@H9)@@[CD)@@[/,0@@@C8@@$Q/,0@@@C/@@[1'=@@@@PJ@@@@)>I[MK^G@@K[@K^@@@/K@@>>/K@@>S%8@@@,/K@@>I:8@@@)O9@@@[RZ^@DE/K@@>3?[)@@^PK@@@@)>S[##@[#@[#QT )@@G@@@@ES@ G@^CG0@@@@@@^])@@Q/,0@@@R;)@['R;K@['R;@@@[AZ@@['A#K@['R#K@[&PL@@@@QU )@@G@@)>)[##@[]@D@K^CE=G@^[#@@@@@@@@9*@@[U9?@[@]AD@@@]'=@@@@R#@[@[/K@@>I/,0@@@QV )@@G@@C4@@['PM@@@@)>*[]()@-[Q-)@)C]^ M@-)@@@@@@@^+)@@R/G@@&6'=@@@@R#@[@^/K@@>0QW )@@G@@*4@@[)'=@@@@R;@@[UPN@@@@)>0[EK0@^C]=G@^G@^G@^@@@/@T@@[/,)@2L9*@@[R9*@@[LQX )@@G@@9?@@[9[F#@[#@[#@[@^@K^@@@@@/,)@2L/K@@&TQY )@@G@@%8K@@\/K@@&F:8K@@*/@K@&TRFK@@K9*@@[H9?@@]VPP@@@@)&][F@K0@K0@K0@K[@^@@@@@QZ )@@G@@/K@@&3%8K@@*/K@@&T:8K@@)/@K@&TRFK@@K9*@@[L9?@@]V/@K@&3PQ@@@@)&F[F#@[#@[#RA )@@G@@@@K0@^G@^G@@O;@@@[*@@@[S[[)@[S:9)@@![[)@[S:9)@@:CX?@DERF@@@] @@@[SPR@@@@RB )@@G@@)&O[##@[@K^[#@@()@-[))@@@@@@@@/^)@&9'=@@@@R;@@[F[])@[R/,)@4O/@K@&3/,)@2MRC )@@G@@AF@@@]PS@@@@)&W[##@[#@[#@[#@[#@[#@@K0@@@@@*@@@[S/KD@@[:@K@[[##@[@K0@K0@K0@^G@^@@@@@@@@/,)@69[)@@F=G8@@@[%0@@F=C)@@F=[:0@F=/K@@*5SE )@@G@@9*@@F=QQ@@@@)(![]()@-@W)CKECS@CKF]^]@@@@@@/,0@@@C/@@@)/,0@@@CC@@@^/,0@@@SF )@@G@@C8@@;$/,0@@@C/@@[%QR@@@@)(5[F#@[@K^CC=[@K)+K)SK@C@@[@N/,0@@@/,0@@@9?@[@LSG )@@G@@/K@@(//,0@@@9?@[@J/K@@('*0@@@WQS@@@@)("[#]]1@K0@K)%K^G@^CE=@@@@@@@R#@[@QSH )@@G@@'=@@@@*0@@@OR#@[@P'=@@@@*4@@@OR#@[@O'=@@@@QT@@@@)%A[F]](@K)%^G@^@K0@@@@@SI )@@G@@O;@@@[*)@@I#R;@@)@/K@@%-()@@IF @@@@G'=@@@@R#@[@R'=@@@@QU@@@@)%J[F#@@K0@^SJ )@@G@@G@[#@@K0@@@@*)@@ICO;@@@K*)@@IBO;@@@C*)@@IAO;@@@^*)@@I O;@@@]*)@@I^QV@@@@SK )@@G@@)%S[EK0@^G@[#@@K0@@@@@@@O;@@C@*)@@IHO;@@^@*)@@IGO;@@]@*)@@IEO;@@[@*)@@IDSL )@@G@@O;@@@)QW@@@@)%-[F]^=K^CE=G@^[@K)%K@@R#@[@T'=@@@@R#@[@S/K@@%!*)@@@S'=@@@@SM )@@G@@R#@@_] @@@@G'=@@@@QX@@@@)%%[F]]*K^G@[]#CK@@@@@@@C8@@@[/K@@%2C8@@@['=@@@@SN )@@G@@=8@@@^R#@@@@/K@@%2 @@@@G'=@@@@QY@@@@)%3[F]]T#[KE]@-)@)C]A@@@9?@@ ]/,)@5LSO )@@G@@/,)@4([F@@@^/?K@:8@^@@R#@@@@AB@@@ OB@@@ RM@@@@)??[F#@@K^[#TE )@@G@@@[#@[@K^G@@@(4@@@V')G)!BC@)@_MQFK@@G*C@@@GC@K@",C@@@",/KE@@@(^@@@ RN@@@@TF )@@G@@)?5[F@[@^[#@[@K0@@@@@@@@:C0@@I/K@@!#:^0@@G')G@!JP;0@@)/K@@?;?80@[-?80@[;TG )@@G@@/K@@?;RO@@@@)?"[F#@[#@@K0@K^G@[#@[@@/K@@:9AFK@@G/KE@@@*C@@@G/K@@?3AFK@@[TH )@@G@@%80@@)[W.)DERB0@@IRP@@@@)!B[F#@[#@[#@[#@[@K[@@@@/KE@@@/K@@?3$#)@@KC@@@",TI )@@G@@/K@@!GRR"@F"RV"@F"RN"@F"RZ"@F"RQ@@@@)!K[##@[#@[#@[#@@K)KK^G@@@@@@@RB@@@JTJ )@@G@@/K@@?U/,0@@@C/@@@:AR"@F"AV"@F"AN"@F"AZ"@F"RR@@@@)!S[F@K0@K0@^G@^G@^[#@@@TK )@@G@@:8@@@_R3@@ G/K@@!SA#W@F_R#W@H+/KF@@[ )@@@ORB@@@J8#@@!WRS@@@@)!-[F@K0@K[@TL )@@G@@K0@K^G@@@@@@O;@@@[P7@@@ /K@@!:!0@@@ /K@@!, @@@@G/K@@!&!4@@@ /K@@7+RT@@@@TM )@@G@@)!%[F@K0@K0@@K0@K^G@@@@@*)@@I#/K@@!6*=@@@SA#@@[ ;*@@@MO;@@@[P7@@@ R3@@@ TN )@@G@@/K@@!,RU@@@@)!3[##@[#@[#@[#@[@ES@CKBCS@@@@**@@@U/,0@@@C/@@[%/K@@, (=@@@VTO )@@G@@^&)@@V*)@@I ^%)@@URV@@@@)!;[F@[][1@^C -][@@@@@@@/,0@@@C/@@@'/,0@@@C@@@@STP )@@G@@/K@@,]/,0@@@C8K@@BC@@@@S/K@@,@RW@@@@),^[F][-#@[@K0@K0@K[@@@@;D@@@M/[@@,/TQ )@@G@@C[@@[ /K@@,/(*@@@U(=@@@N/K@@,/*=@@@S/,0@@@RX@@@@),H[]K0@K]&@]^[2@O0@K)J@TR )@@G@@@@@@@@/,0@@@C/@@[%/K@@,P/,0@@@C/@@[%/K@@,N*=@@@VH9@@@[RY@@@@),P[N@K0@[@[TS )@@G@@@K0@K@/K@@,T(=@@@U/K@@,Z%9)@@):9K@@)')B),%C9K@@%P9)@@[R5)@@ R[0@",RZ@@@@TT )@@G@@),Z[E^[#@[@K0@K^G@@@@@@@R#@@@M^&)@@U/K@@,$ =@@@U/K@@,&(=@@@U/K@@,$%9)@@$TU )@@G@@[[)@@LSA@@@@),*[#][[@K0@K0@K0@K0@K^@@@@@@@R[0@",/K@@,\CP&@G)CT&@G)CL&@G)TV )@@G@@CX&@G)/K@@,T/,0@@@SB@@@@),0[E[#@@K^G@^CA^@@@@@@@R#@@"3/,0@@@ =@@@U/K@@,TTW )@@G@@?@)@@KP7)@@ O;)@@[O9)@@[R#)@@ASC@@@@),9[F#@[@K[#@[@K^G@^G@@@9*K@]T9?K@['TX )@@G@@/K@@\#/K@@\@*=@@@VR#@@[ /K@@\K/K@@\V*0@@@SSD@@@@)\][N@K@^[@K0@@@@@M[O)@@TY )@@G@@P9@@@[O5@@@ R[@@_SR[K[@ZN@K@@J;C0@@MR#0@[ 'K@@_+'K@[@YSE@@@@)\G[##@[@K0@TZ )@@G@@K^CF[#@@()@@@@@@@@R;@@[7A#@@[7/KE@@@'=@@@@/K@@\V*0@@@S/K@@\M*=@@@SSF@@@@UA )@@G@@)\O[##@[@K)6^G@^CM1#@@@@@@@@@@A#@@@,/KE@@@'=@@@@ 0@@[7/KE@@@'=@@@@/K@@\SUB )@@G@@*)@@@VSG@@@@)\W[]()@-[%CS@CS@CS@CS@CS@@@@@R7K@ GR7@@@W^,)@@W()@@ G ?@@@WUC )@@G@@/KE@@@'=@@@@R;@@@,SH@@@@)\=[MK[@^[#@[@K0@@R;@@@#^2)@@W/K@@\0*)@@ G/K@@\;UD )@@G@@%8@@@]/K@@\3%8K@@*/K@@\3?8@@@]SI@@@@)\,[F#@[@K0@K0@[@K0@K0@@ 4@@@W 0@@@WUE )@@G@@/K@@\;%8K@@+/KF@@@ 4@@@W 0@@@W/K@@\;A7@@@WSJ@@@@)\7[##@[#@[#@[@K0@K0@^G@UF )@@G@@@@@@@@^,)@@V/KF@@@^+)@ G*?@@@W/K@@0B^,)@@W()@@ G ?@@@WSK@@@@)\_[F@K^G@[@UG )@@G@@K0@K^G@^G@@@ ?@@@OR])@@Y/,)@1:A])@@Y/K@@1U:8@@@0R7@@ G/,0@\+/K@@0BSL@@@@UH )@@G@@)0C[##@[@K0@K0@K0@ES@CK=C@@@@@/K@@8 /,0@@@C8@@ ]A#@@G)R#@@[& C@@@#/K@@7+UI )@@G@@(0@@@PSM@@@@)0K[]K0@K^G@^[#@@()@O0@@@@@@@@R;)@G)R;K@G)R3@@ G/K@@0Y(?@@@WUJ )@@G@@/K@@0@0@@@ G/KE@@@SN@@@@)0S[F]^L#@@[#@[#@[@K0@@@(0@@@N/K@@0=(4@@@RA3@@ GUK )@@G@@;C@@@[O;@@@[T8@@@#R3@@ G/,0@@@SO@@@@)0-[#@K0@K0@K0@K^G@^[#@@@@@@@@ ?@@ GUL )@@G@@/K@@0%(4@@@R/K@@0B?<0@ G ?@@ G ^@@ G/K@@0=SP@@@@)0([##@[#@[@K0@K^[#@[@@@UM )@@G@@@@@@@@/K@@04(*@@ G/K@@0^/K@@0B*=@@ G/K@@0\(?@@ G =@@ GSQ@@@@)01[F#@[@K0@UN )@@G@@^G@[@K^@@@@@C@)@_MC@K@",C@@@",/KE@@[*?@@@VG;@@@[ *@@ G/K@@0^!:0@ GSR@@@@UO )@@G@@)0'[#@K0@^G@^[#@[#@[#@@@@@@@@@RV"@GZRN"@GZRZ"@GZ/K@@0'AFK@@#%80@@)[K.)DEUP )@@G@@')G)0_SS@@@@)1][F#@[@K^G@^@K0@K0@@@@P#)@@HRF)@@ARFK@@#R;@@@)/K@@0'$3)@ GUQ )@@G@@C@@@",/K@@1^RR"@GZST@@@@)1F[EK0@K^G@@[#@@@@@@@@@[0@@ GG8@@@[*@@@@HW8@@@^UR )@@G@@;O@@@=CC@@@#8#)@1GANH)DE&;K@@[SU@@@@)1O[F#@@^G@^G@[#@[@K0@@@R3@@ G/K@@1>US )@@G@@(?@@@W/KE@@[AF@@@#A3@@ GR;@@@[/KE@@[*C@@@#SV@@@@)1X[]()@O0@K-^K0@@K0@@@@UT )@@G@@@@@@@@A3@@ G;C@@@[O;@@@[T8@@@#R3@@ G/,0@@@R;)@G)R;K@G)SW@@@@)1>[F#@[@K0@UU )@@G@@K[@K0@K0@@@@/@E@@@*?@@@OC0@@ G/K@@04H;@@@[/K@@0B**@@ G/K@@0^()@@IASX@@@@UV )@@G@@)1,[E^G@^G@@()@-[+)CS@@@ @@@ G/K@@8 /,0@@@C8@@^7G;)@@[[@K@ [C@K@ G/KE@@@UW )@@G@@:8@@@_SY@@@@)17[F#@@K0@@[#@@@@@@@@@@[0@@ GG8@@@[*@@@@HW8@@@^;O@@@=/@E@@@UX )@@G@@RF@@@#/KE@@@^,)@@OSZ@@@@)2@[F#@[#@[@K^[#@[@K0@K@/K@@2 $FK@@#')J)2ECKH@DDUY )@@G@@R[@@_SC@K@_MC@0@",[@W@GZC@K@[&TA@@@@)2D[M@K[@^G@^G@@@@9?@@[&^%)@@W/K @@@UZ )@@G@@C@0@",AR^)@@/!K@2IAV^@@@AN^@@@AZ^@@@/KE@@@TB@@@@)2N[F#@[#@@K^[#@@K0@K0@@VA )@@G@@!C)@@[CC)@@] @@@@H C@@@KR#0@",R[@[@Z @@@@PA#@@]X9*@@]VTC@@@@)2W[F@^G@[@KVB )@@G@@0@K^G@^G@@@@(*@@@WCWI@DD/K@@3J(*@@@W/K@@2V:8@@@)CWI@DDG8)@@[/K@@37TD@@@@VC )@@G@@)2>[N@[@K@K^@@@@@@?8@@@'/K@@3J/K@@2,?8@@[-?8@@[;/K@@3J/K@@2%?8@@[[?8@@[VVD )@@G@@/K@@26TE@@@@)2\[MK^@^[@^@@@@@@:8@@@?/K@@3P:8@@@)/K@@3H/K@@3J:8@@@=%8@@@!VE )@@G@@/K@@3J/K@@22?8@@@0TF@@@@)29[N@^@K[@^@@@@@@:8@@@*/K@@3H:8@@@\/K@@3H:8@@@:VF )@@G@@/K@@3H:8@@@-/K@@3H:8@@@)/K@@3HTG@@@@)3#[N@^@K[@^[@@@@@/K@@3J/K@@3H:8@@@,VG )@@G@@/K@@3H:8@@@%/K@@3H:8@@@$/K@@3H:8@@@(/K@@3HTH@@@@)3H[F#@[@K[#@[@^@@@@@@@@VH )@@G@@H8)@@[/K@@2UB@@@@WE )@@G@@)5_[##@@()@-]W)[N@[]^/@@@@@@@@/KE@@@/,0@@@R;@@C_/KE@@@/K@@$@/,0@@@R;@@C_WF )@@G@@AB@@DAUC@@@@)6B[F#@@K[@K0@K0@K0@K0@@R#@@[&^+)@@W()@@DD )@@@W/K@@6J%8@@@+WG )@@G@@/K@@6G:8@@@*R7@@DDUD@@@@)6K[##@[#@@()@-]K)]A@]@@@@@@@@/K@@6B0@@@DD/KE@@@WH )@@G@@/K@@$@/,0@@@R;@@C_ ?@@@OA#@@G)UE@@@@)6S[##@[#@[@K0@K0@K0@K0@K@@@@@/K@@6(WI )@@G@@()@@@W =@@DD ?@@DD(=@@DD/K@@6J?)@@DDR#@@[TUF@@@@)6)[##@@()@O0@K-^K0@@@@@WJ )@@G@@@@@@@@;C@@@[O;@@@[T8@@@#R3@@DD/,0@@@R;)@G)R;K@G)R3@@DDUG@@@@)6*[##@[#@[@WK )@@G@@K0@K0@K^G@^G@@@@@@ )@@DD *@@DD/K@@6J!*@@DDR#@@[T/K@@6\(*@@DDA3@@DDUH@@@@WL )@@G@@)60[F#@@K0@K[#@@K0@K0@@@ *@@F=[)@@F=C8@@@[[0@@F=R;@@@ /K@@68*?@@@N/KE@@[WM )@@G@@]$0@DDUI@@@@)69[]()@-]U)CKU]A@]A@]A@@@@@@@*0@@@WR3@@F-A#@@F$;@@@@M'=@@@@WN )@@G@@/K@@8 /,0@@@C8@@^7UJ@@@@)7[[F@^G@^@K0@ES@CS@CS@@L@K@F&C@K@^/D8@@FWA3K@F-WO )@@G@@+8@@@\/K@@7BA3K@F-)8@@@K/K@@7 UK@@@@)7E[F#@[#@[@K-B[@^G @@@@/K@@-':8)@@#WP )@@G@@/K@@8]:8)@@]/@%@@@'=@@@@/K@@7Q*?@@@N[^)@F>UL@@@@)7N[E^[#@@K0@[]^S@@@@@@@WQ )@@G@@'=@@@@/^%@@@ @@@@HR\)@@N/KE@@@ @@@F&/K@@'Q/KE@@@:80@@^UM@@@@)7W[F#@[#@@^WR )@@G@@G ^[#@[@ES@@C/@@[%/K@@7!*=@@@S/K@@8]/K@@-':8)@@#/@%@@@^6)@F>(4@@F>UN@@@@WS )@@G@@)7>[#]@9@K)O^C =CA^[]]0@@@@@@@'=@@@@C@@@_@/,0@@@/,0@@@C@@@@S/,0@@@C8@@;ZWT )@@G@@/,0@@@UO@@@@)7![F#@[#@[#@[#@[@^@ES@@C/@@[%C[K@@G/K@@7_=8@)@@/K@@%6 C@@@#WU )@@G@@^,)@@O @@@ G 0@@@PUP@@@@)76[#]@9@K)O^C OCA^[]]0@@@@@@@'=@@@@C@@@_R/,0@@@WV )@@G@@/,0@@@C@@@@L/,0@@@C8@@/?/,0@@@UQ@@@@)7"[F@K^CF^[@K)?K^G@^G @/K@@-.*)@@@QWW )@@G@@/K@@8Y'=@@@@C@@[@F/K@@8U'=@@@@C@@[@(/K@@8UUR@@@@)8B[]()@-@W)CKE]^]%^#]@@WX )@@G@@@@@@@@C@@[@%/,0@@@/,0@@@C@@@@L/,0@@@C8@@;H/,0@@@C/@@[%US@@@@)8J[F]]0K^[]WY )@@G@@].@K^CF^@@@@/K@@8U'=@@@@C@@@_[/K@@8Y'=@@@@C@@[@:/K@@8Y%9K@@ '=@@@@UT@@@@WZ )@@G@@)8S[F@K)?K0@K^G@^[@K)?K@/K@@(_'=@@@@C@@[@!/K@@8Y^+)@@S/K@@@5(=@@@R'=@@@@XA )@@G@@C@@[@?UU@@@@)II@S^G@K@@@)8-@:#@[@K0@K0@@@@:8@@@[R\@@IIA#@@IJ/K@@8\**@@@VXB )@@G@@/K@@8-@@@@@@@@@@@@UV@@@@)8&[F@^@K^G@[#@[#@@@@@@@ ?@@IIAB@@IIO;@@@[RB@@IIXC )@@G@@/K@@8_:8@@@E/K@@9F:8@@@]/K@@8'UW@@@@)8\[F#@[] [#@[@K0@^G@[@@/K@@8Y!8@@@#XD )@@G@@^%)@@V%8@@@[R7@@II/K@@8Y**@@@V'=@@@@R#@@[#UX@@@@)88[##@[#@@()@-@W)CKEC[NXE )@@G@@@@@@@@C/@@[%/K@@9J/,0@@@C8@[@,/,0@@@C/@@[%/K@KIIR#@@IJUY@@@@)9@[#]@9@K)OXF )@@G@@K0@K)P^C^^G@@@@@@@C0@@II/,0@@@C/@@@!/,0@@@C4@@II/,0@@@C8@@;K/,0@@@UZ@@@@XG )@@G@@)9C[#][P][(@ES@CKBC]^]+A@@@@@@C^@@II/,0@@@C8@[@0/,0@@@C/@@[%/K@@9J/,0@@@XH )@@G@@/,0@@@VA@@@@)9K[F][P][-@K)?K0@^[@K@@/K@@9+2CH)9'R#K@",N8K@@#RF@@II'=@@@@XI )@@G@@C@@@_@/,0@@@/,0@@@VB@@@@)9T[M*C@]@]^ 8@@@@:8@]]E'=@@@@O#@@@HO#@@@I'KK[@2XJ )@@G@@Q;K@@@;*K@@A+8K@__RBX@99R;@@9.VC@@@@)9<[N@^@K[@K^[]]0@'=@@@@C@@[@5/K@@@!XK )@@G@@/K@@9::8@]AE/K@@93:8@]ME/K@@93:8@]PE/K@@9:VD@@@@)9![F]^^@^[]](@@@@@@@@@@XL )@@G@@R#@[@7'=@@@@R#@[@6$$ YQZ MF@ASG,AR MF$$@FREE,'=@@@@VE@@@@)96[N]](@K)%XM )@@G@@K@@@@@YNTAX MAGE SCSF$ I[MEE@C^+E^@^^)E^@@/K@@@!'=@@@@R#@@_H'=@@@@VF@@@@XN )@@G@@)'@[U@@@@@@@ILE D-OF-FSDF ENAS NO FILE HINPUT R CSF$AND FOL COMMILLEGAXO )@@G@@ERROR VG@@@@)'F@+@@@@@@@)IN@D#@^@@@@)'J@N#@@@@@@%8@@@[R7@@IL/K@@'JCKS XP )@@G@@00 TRAEEDS 8OR EXCVH@@@@)'L[#]#D#@@K^[@K)?ES@@@@@@@@@@R;@@^7'=@@@@C@@[@8XQ )@@G@@/K@@8 /K@@'Q:9K@@MC1K@IL'=@@@@VI@@@@)'T[F]^5@K^[#@[@K^G@^G@@^2)@@P9*)@^7XR )@@G@@9?)[@V:@@[@;9?@@ ]9?)[@9/,)@5L/K@@'V/,0@@@VJ@@@@)'+[F#@@K0@[@K0@K^G@@@@@XS )@@G@@A#@@[/R#@[@"9*@@['9?@[@/H;0@@[=8@@[@R#@@@@>8@@@)R#@@@@VK@@@@)':[]()@-[%[XT )@@G@@N@[]@[@K)A@@@@@@@@/,0@@@C8@[@_/,0@@@C/@@[1C[K@@GT8@@@^'=@@@@R;@@[]VL@@@@XU )@@G@@)'3[##@[]@4K)]]&@]^^U^[K@@@@@@/,0@@@/,0@@@R;@@F_R#K@@L/,0@@@C/@@@,/,0@@@XV )@@G@@9?@@FWVM@@@@)';[#@K)%K^G@^G@^G@])-)@@@@@@@R#@@@@R80@@5^+)@@O^A)@@JA#@@H+XW )@@G@@R#@[[@'=@@@@R#@[@[VN@@@@);#[MK0@K0@K@@@@@@E && ED FILPECIFIT IN ST & NOXX )@@G@@ELEMEN/K@@:# @@@F: @@@F*=8@@@)VO@@@@);H[U@@@@@@@ELMD9MCDS^[ ETTD1OE(N^@&XY )@@G@@ETOCDOCDO^@&C*)^0)C(HD9^EK)^@)C(MELJDC\D8)VP@@@@);S[U@@@@@@@C9[D))DDGD- XZ )@@G@@^0)^@)C(JC0' 0)^@)C1GD9RD9QC(MDDGC*)E(O^[AD9PE-K 0)^@)VQ@@@@);<[U@@@@@@@YA )@@G@@EK'^0)D(DE- C- D-DDDIC8)D(DETNES'^0)D-DD1 BK&^@)ET#CDICDIC),CTJD(HVR@@@@YB )@@G@@);,[U@@@@@@@D1PD( DDIC8)D(DETNDDIC))D1J^[AC(^ 0)E[KD-DD1N^[[CTODDJD9MEL YC )@@G@@D1J^[#VS@@@@);9[U@@@@@@@C))CDO^[PET E9CC(ICDIC))CTJD(HC9[D))DDGD- E-TE[ YD )@@G@@D-DC))DDIE1[ELDCS)VT@@@@)/^[U@@@@@@@C(MC(I^[MC(AD-DD1 D9M^@)^[ ELMC(ICT YE )@@G@@C(AC(MD(I^[MCTJD-PC*)A@)^[GDDIVU@@@@)/J[U@@@@@@@DDIE1[D- ^@)D0)C1DEL^^[DYF )@@G@@EK)E9JC([C- C-A^[CD1J^[NCDPE-JELMD9MCT ^[ VV@@@@)/U[U@@@@@@@BK&^@)CTCCDMYG )@@G@@DDJD0)DDICDOE- ELHDDIC8)D(DETNEK'^0)^[#D[[C(^DDOD-DC))VW@@@@)/>[U@@@@@@@YH )@@G@@C(#E)'^[MC(E^[ACD#C1DD- D@)D9IE[PD1#C(NES)C- E[M^0)^@)E-[CK'CL[C))VX@@@@YI )@@G@@)/0[U@@@@@@@DDIE[P AT & T ON &RINTOUSITE PEND ON^[PET C*)DDIE-ADDGE[MDDIYJ )@@G@@^0)^@)VY@@@@)/;[U@@@@@@@EK)^@)C(MELJDDJD0)C9ICDOC- ETDC(IE))C(GC(HC(^ 0)YK )@@G@@ETNE(HC- ^[[E))D(JVZ@@@@).A[U@@@@@@@C(ADDI^[PD1^C1DD- EL[D*)E[MD9BD9M^@)YL )@@G@@^[ ELME-DD9IDDBD1[^[^C(NC1DD- WA@@@@).L[U@@@@@@@ETURN EASE R** PLDECK**YM )@@G@@ CARD ****NOC- ^@)FC)D(J (JD1GEL CD^C(^^@)WB@@@@).W[U@@@@@@@CTTCTGCDIE))YN )@@G@@F[DETOD1JD1 D9M^@)^[ ELM^[D (JEL CD^ TO: ISTINGTHIS LWC@@@@).$[U@@@@@@@YO )@@G@@C*)C1P^[ADDGD([DDG 0)^@)C1DC(^E[ CTDC- ^[NE))D(JELMC(#DDICTJC*)^@)WD@@@@YP )@@G@@).2[U@@@@@@@^@!^[^D(JE1 C9[D))DDGD- C)'^0)D-JE9 ES)CDGD-DD1 D(PD*)D(DD1DYQ )@@G@@D-G^@)WE@@@@)..[U@@@@@@@D@)^@)CL[E-#^[DD0)D9RC(^^[[D-G^[ID9OCDPE-J 0)^@)YR )@@G@@E(HC(^^[[ETNDDOE-JWF@@@@)"C[U@@@@@@@DDGC*)E-[^[ACC)C-[^[[ES)C1DD- EL[D*)YS )@@G@@E[MD9BC-DE))E-J^[ D(KE))CDOE- WG@@@@)"N[U@@@@@@@D9M^[]E1 D))EK)D- C-DE-JYT )@@G@@D( ^[ C*)ET[E))E-CDS)D1JC-]CDIDS)^0)DD]CDIWH@@@@)"Y[U@@@@@@@E-DD( D([F@)YU )@@G@@DDGD))D1B^[OCDDD1D^[MC(HE-DD( CTOD-TD9MEL ^[DD1#E(DD-OWI@@@@)"(@E@)IO[C@YV )@@G@@@])@@@@@^@]/@@[@@@@]^@]#^@)^@)D[^C8_^@)^@)D(NC8_ K%^@)D([DDGBK)^@)WJ@@@@YW )@@G@@)IX[C*@O0O@()*O0OESE@@@@@@^@-<@@#@-$@@^@-W ED$TB @@^@-S ED$TA YX )@@G@@@@A@]VWK@@@@)I&[C()*[<@AO)!EKQ)@@@@@@]@@@@@[@@@@@@C@@@@@K@@@@@[@@[@8]@@@YY )@@G@@ ED$DI @[G@*3WL@@@@)I\[@()*O])O0[]&@DN[K1)#ESE@@@@8]@+/@[C@*:@[^@.MYZ )@@G@@@@)@@@@[ @/'@@[@FW@@[@FK@[^@*$WM@@@@)I7[C* G ]&]-N[K()*@@@@@ ED$S2 ZA )@@G@@ ED$S1 @[B@+5@[E@+F@[B@+P@[C@+#@[D@]VWN@@@@)J@[C])O@()*O0OE[K@@@@@@ZB )@@G@@@[I@['@@]@]V@[A@*-@[ @*W^<@C]@@@^@]V@@I@]VJECTED@ . REWO@@@@)JD@** @@@@@ZC )@@G@@)"%@+* @E@@@@[C@"+@@[@@Q@[[@@#@[J@"NUND EOF FO*[@@@[@[E@['@[J@['WP@@@@ZD )@@G@@)",[EE[KES@ G@]&@@@@@@@@D1JELHEK)^@)E(KE[ @[-@['@[#@['@[ @]V@[^@.M@[^@;-ZE )@@G@@@@[@@@WQ@@@@)"7[EES@ @])[N@@@@@@@@@@@[Q@]VOFF&&&ON&&&&@[B@.*_____@D1JD1 ZF )@@G@@@@[@#N@@[@H+CDG^@)WR@@@@)_@[]()@O]&@[N@@()@O0@]&@@@@@@@@]@@(FROM: @[[@F"ZG )@@G@@@@^@@Z@@^@]V@@]@@>@[^@;P@[A@['WS@@@@)_C[E*@O0@ES@ G@@* @@@@@@[A@/A@[#@;'ZH )@@G@@@@[@@H@@]@@$@[@@F_@@]@@< MF$$ @[^@.\WT@@@@)_L[E*@ G@])O0@ES@ G@@@@ZI )@@G@@@@[@H[@@[@G)@[C@['@[]@;4@[L@['@@[@]^@@[@@]@@[@@[@[]@@^WU@@@@)_U[E*[KES@ ZJ )@@G@@@E[KES@@@@@@@[@@]V@[[@/L@[B@"[@@K@@@@[ @/G@@^@F'@[C@.9@@[@D=@[D@;.WV@@@@ZK )@@G@@)_<[]*[N@@()@O])O0@ES@@@@@@@@@@[G@]V@]E@]V@[@@X)@][@V_@@ @[8@@ @]VPR$&&&ZL )@@G@@@[^@/*WW@@@@)_:[E()@O0@E[N@@@()@O0@@@@W@]/@[I@]V&-(&&&^@)^@)D(NC8_@@#@]VZM )@@G@@@[D@.Q@#Q@]V@6[@[, 3 - < PQ )@@G@@@E@@@[ . TYPE: 1 - =, 2 - >, 3 - <, 4 - NOT = (!) @]@@@@PR )@@G@@ . @^@@@@ AXR$. @^@@@@$(4) LIT. PS )@@G@@@]@@@@$(3). @]@@@@ . @A@@@@PF FORM 12,6,18 PT )@@G@@. @]@@@@ . @C@@@@IFWKR*. . $H IFWKR PU )@@G@@ @E@@@@ S,H2 X11,RETURN . $P SAVE RETURN ADDR PV )@@G@@@C@@@@ L,S3 A12,0,X10 . $P SAVE IF TYPE @E@@@@ L PW )@@G@@ X7,X10 . $P SET PTR TO OPERAND 1 @A@@@@ A,U X7,PX )@@G@@2 . @E@@@@ L,U A13,1 . $P SET DN IND TOPY )@@G@@ 1 @G@@@@ SLJ GETSYM . $W GETSYM - GET VALUE PZ )@@G@@OF OP 1 @E@@@@ TP A1 . $T WAS VALUE FOUQA )@@G@@ND ? @C@@@@ J SYMERR . $A YES NO,SYMERR@E@@@@QB )@@G@@ L X6,A1 . $P SAVE OP 1 PARAMETERS @E@@@@ QC )@@G@@ L A6,A0 . X6 - ADDR , A6 - LENGTH @C@@@@ L QD )@@G@@ A7,A2 . A7 - OFFSET @C@@@@ L A8,A3 QE )@@G@@. A8 - TYPE @E@@@@ TNE,U A8,4 . $T IS OP 1 NOT AQF )@@G@@ SET PTR ? @G@@@@ L,U A8,3 . $P SET OP 1 TYPE TO PIQG )@@G@@C 9 COMP @E@@@@ A X7,A14 . $P SET PTR TO OPQH )@@G@@ERAND 2 @E@@@@ L,U A13,2 . $P SET DN IND TO 2 QI )@@G@@ @G@@@@ SLJ GETSYM . $W GETSYM - GET VALUE OF OP QJ )@@G@@2 @E@@@@ TP A1 . $T WAS VALUE FOUND ? QK )@@G@@ @C@@@@ J SYMERR . $A YES NO,SYMERR@E@@@@ QL )@@G@@ TNE,U A3,4 . $T IS OP 2 NOT A SET PTR ? @G@@@@ L,UQM )@@G@@ A3,3 . $P SET OP 2 TYPE TO PIC 9 COMP @E@@@@ QN )@@G@@ A X7,A14 . $P SET PTR TO WRKER PACKET @E@@@@ TNEQO )@@G@@,U A3,1 . $T IS OP 2 TYPE PIC X ? @C@@@@ J CTEQP )@@G@@ST . $A NO YES,CTEST @E@@@@ TNE,U A8,1 . $T IQQ )@@G@@S OP 1 TYPE PIC X ? @C@@@@ J CTEST . $A NO YES,QR )@@G@@CTEST @A@@@@ . DO NUMERIC COMPARE @G@@@@ SLJ GETQS )@@G@@NUM . $W GETNUM - GET BINARY VALUE OF OP 2 @E@@@@ L QT )@@G@@ A9,A0 . $P SAVE VALUE OF OP 2 @E@@@@ L A0,QU )@@G@@A6 . $P RESTORE OP 1 PARAMETERS @A@@@@ L A1,X6 QV )@@G@@ . @A@@@@ L A2,A7 . @A@@@@ L QW )@@G@@ A3,A8 . @G@@@@ SLJ GETNUM . $W GETNUM QX )@@G@@- GET BINARY VALUE OF OP 1 @E@@@@ L A1,A9 . $P RQY )@@G@@ESTORE OP 2 VALUE @G@@@@ L X10,X7 . $P SET PARQZ )@@G@@AM ADDR FOR WRKER CALL @E@@@@ TE,U A12,1 . $T IRA )@@G@@S IF TYPE = ? @C@@@@ J NT2 . $A YES NO,RB )@@G@@NT2 @E@@@@ TE A0,A1 . $P PERFORM TEST = RC )@@G@@@C@@@@ J *RETURN . $E FALSE @C@@@@ J RD )@@G@@ XEQWKR . TRUE @E@@@@NT2 TE,U A12,2 RE )@@G@@. $T IS IF TYPE > ? @C@@@@ J NT3 . $A YRF )@@G@@ES NO,NT3 @E@@@@ TG A1,A0 . $P PERFORM TEST > RG )@@G@@ @C@@@@ J *RETURN . $E FALSE @B@@@@ RH )@@G@@ J XEQWKR . TRUE @C@@@[NT3 TE,U A12,3 RI )@@G@@. $T IS IF TYPE < @C@@@[ J NT4 . $A YES NO,NT4 RJ )@@G@@@D@[@@NT3 TG A0,A1 . $P PERFORM TEST < @D@@@[ RK )@@G@@ TG A0,A1 . $P PERFORM TEST < @C@@@@ J *RERL )@@G@@TURN . $E FALSE @B@@@@ J XEQWKR . TRM )@@G@@RUE @E@@@[NT4 TE A0,A1 . $P PERFORM TEST NOT = RN )@@G@@@B@@@[ J XEQWKR . $E TRUE @B@@@[ J *RERO )@@G@@TURN . FALSE @A@@@@ . DO CHARACTER COMPARE @E@@@@RP )@@G@@CTEST TNE,U A3,3 . $T IS OP 2 TYPE PIC 9 COMP ?@C@@@@ RQ )@@G@@ J TYPERR . $A NO YES,TYPERR@E@@@@ TNE,U A8,3 RR )@@G@@ . $T IS OP 1 TYPE PIC 9 COMP ?@C@@@@ J TYPERR RS )@@G@@. $A NO YES,TYPERR@G@@@@ L X10,X7 . $P SET PARAM ADDRT )@@G@@R FOR WRKER CALL @E@@@@ L X5,A1 . $P SAVE OPRU )@@G@@ 2 ADDR @E@@@@ L A9,A0 . $P SAVE OP 2 LENRV )@@G@@GTH @E@@@@ L A3,A7 . $P SET OP 1 OFFSET RW )@@G@@ @E@@@@ AN,U A6,1 . $P SET CHAR LOOP CNTRS RX )@@G@@@A@@@@ AN,U A9,1 . @G@@@@ LXI,U A2,1 RY )@@G@@ . $P SET INC FLDS OF OFFSET PTRS @A@@@@ LXI,U A3,RZ )@@G@@1 . @E@@@@ LXI,U X5,1 . $P SET INC FLDS SA )@@G@@OF ADDR PTRS@A@@@@ LXI,U X6,1 . @E@@@@CT2 EX SB )@@G@@ CHAR1,A3 . $P GET NEXT CHAR OF OP 1 @E@@@@ EX CHASC )@@G@@R2,A2 . $P GET NEXT CHAR OF OP 2 @E@@@@ TNE A0,A1 SD )@@G@@ . $T ARE CHARS EQUAL ? @C@@@@ J CT4 SE )@@G@@. $A NO YES,CT4 @E@@@@ TNE,U A12,1 . $T IS THIS NOT TSF )@@G@@EST = ? @C@@@@ J *RETURN . $E FALSE EXIT @E@@@[SG )@@G@@ TNE,U A12,4 . $T IS THIS NOT TEST NOT = @C@@@[ SH )@@G@@ J XEQWKR . $E TRUE EXIT @E@@@@ TE,U A12,2 SI )@@G@@ . $T IS THIS TEST > ? @C@@@@ J CT3 SJ )@@G@@. $A YES NO,CT3 @E@@@@ TG A1,A0 . $P PERFORM TEST SK )@@G@@> @C@@@@ J *RETURN . $E FALSE @C@@@@SL )@@G@@ J XEQWKR . TRUE @E@@@@CT3 TG A0,SM )@@G@@A1 . $P PERFORM TEST < @C@@@@ J *RETURN SN )@@G@@ . $E FALSE @C@@@@ J XEQWKR . TRUE SO )@@G@@ @E@@@@CT4 TLEM,U A2,6 . $T IS OP 2 OFFSET < 6 ? SP )@@G@@@A@@@@ J $+2 . @E@@@@ LXM,U A2,1 SQ )@@G@@ . $P SET OP 2 OFFSET TO 1 @E@@@@ TLEM,U A3,6 SR )@@G@@. $T IS OP 1 OFFSET < 6 ? @A@@@@ J $+2 . SS )@@G@@@E@@@@ LXM,U A3,1 . $P SET OP 1 OFFSET TO 1 @E@@@@ST )@@G@@ JGD A6,$+2 . $T MORE CHAR IN OP 1 ? @C@@@@ SU )@@G@@ J CT7 . $A YES NO,CT7 @E@@@@ JGD A9,CT2 SV )@@G@@ . $T MORE CHAR IN OP 2 ? @C@@@@ SW )@@G@@. $A NO YES,CT2 @E@@@@ TNE,U A12,3 . $T IS THIS NOT TSX )@@G@@EST < ? @C@@@@ J *RETURN . $E FALSE EXIT @E@@@@SY )@@G@@CT5 EX CHAR1,A3 . $P GET NEXT CHAR OF OP 1 @E@@@@ SZ )@@G@@ TE,U A0,' ' . $T IS CHAR A SPACE ? @C@@@@ J TA )@@G@@ CT6 . $A YES NO,CT6 @E@@@@ TLEM,U A3,6 TB )@@G@@. $T IS OP 1 OFFSET < 6 ? @A@@@@ J $+2 . TC )@@G@@@E@@@@ LXM,U A3,1 . $P SET OP 1 OFFSET TO 1 @E@@@@TD )@@G@@ JGD A6,CT5 . $T MORE CHAR IN OP 1 ? @C@@@@ TE )@@G@@ . $A NO YES,CT5 @D@@@@ TE,U A12,1 TF )@@G@@ . $P ITEMS ARE EQUAL @D@[@@ J *RETURN . $E FTG )@@G@@ALSE IF TEST > @E@@@[ J *RETURN . $E FALSE IF TESTTH )@@G@@ >, NOT = @E@@@@ J XEQWKR . TRUE IF TEST = TI )@@G@@ @C@@@@CT6 TE,U A12,1 . $P OP1 > OP2 @D@[@@ TJ )@@G@@ J XEQWKR . $E TRUE IF TEST > @E@@@[ J XEQTK )@@G@@WKR . $E TRUE IF TEST >, NOT = @E@@@@ J *RETURN TL )@@G@@ . FALSE IF TEST = @E@@@@CT7 JGD A9,CT8 TM )@@G@@. $T MORE CHAR IN OP 2 ? @C@@@@ . $A NTN )@@G@@O YES,CT8 @E@@@@ TE,U A12,1 . $P ITEMS ARE EQUAL TO )@@G@@ @E@[@@ J *RETURN . $E FALSE IF TEST > OR < TP )@@G@@@F@@@[ J *RETURN . $E FALSE IF TEST > OR < OR NOT = TQ )@@G@@@E@@@@ J XEQWKR . TRUE IF TEST = @E@@@@TR )@@G@@CT8 TNE,U A12,2 . $T IS THIS NOT TEST > ? @C@@@@ TS )@@G@@ J *RETURN . $E FALSE EXIT @E@@@@CT9 EX CHAR2,A2 TT )@@G@@ . $P GET NEXT CHAR OF OP 2 @E@@@@ TE,U A1,' ' TU )@@G@@. $T IS CHAR A SPACE ? @C@@@@ J CT10 . $A YTV )@@G@@ES NO,CT10 @E@@@@ TLEM,U A2,6 . $T IS OP 2 OFFSET < 6 TW )@@G@@? @A@@@@ J $+2 . @E@@@@ LXM,U A2,TX )@@G@@1 . $P SET OP 2 OFFSET TO 1 @E@@@@ JGD A9,CT9 TY )@@G@@ . $T MORE CHAR IN OP 2 ? @C@@@@ TZ )@@G@@. $A NO YES,CT9 @D@@@@ TE,U A12,1 . $P ITEMS ARE EQUUA )@@G@@AL @D@[@@ J *RETURN . $E FALSE IF TEST < @E@@@[UB )@@G@@ J *RETURN . $E FALSE IF TEST <, NOT = @E@@@@ UC )@@G@@ J XEQWKR . TRUE IF TEST = @C@@@@CT10 TE,UD )@@G@@U A12,1 . $P OP1 < OP2 @D@[@@ J XEQWKR UE )@@G@@. $E TRUE IF TEST < @E@@@[ J XEQWKR . $E TRUE IFUF )@@G@@ TEST <, NOT = @E@@@@ J *RETURN . FALSE IF TESTUG )@@G@@ = @]@@@@ . @A@@@@CHAR1 NOP . UH )@@G@@@A@@@@ L,S1 A0,0,X6 . @A@@@@ L,S2 A0,0,X6 UI )@@G@@ . @A@@@@ L,S3 A0,0,X6 . @A@@@@ L,SUJ )@@G@@4 A0,0,X6 . @A@@@@ L,S5 A0,0,X6 . @A@@@@UK )@@G@@ L,S6 A0,0,*X6 . @A@@@@CHAR2 NOP UL )@@G@@. @A@@@@ L,S1 A1,0,X5 . @A@@@@ L,S2 A1,UM )@@G@@0,X5 . @A@@@@ L,S3 A1,0,X5 . @A@@@@ UN )@@G@@ L,S4 A1,0,X5 . @A@@@@ L,S5 A1,0,X5 . UO )@@G@@@A@@@@ L,S6 A1,0,*X5 . @]@@@@ . @E@@@@TYPERRUP )@@G@@ P$RINT (PF 1,8,TEM) . $P PRINT TYPE ERROR MESSAGE @E@@@@SYMERR L,UUQ )@@G@@ A0,1 . $P SET FATAL ERROR FLAG @A@@@@ S A0,UR )@@G@@FATAL . @A@@@@ J *RETURN . $E @]@@@@ . US )@@G@@ @]@@@@$(4). @A@@@@RETURN + 0 . @E@@@@UT )@@G@@TEM 'INVALID FIELD TYPE COMBINATION IN IF STATEMENT. '.@A@@@@ UU )@@G@@ END . ___LXI,U A2,1 . $P SET INC FLDS UV )@@G@@OF OFFSET PTRS @A@@@@ LXI,U A3,*[@@@@*SDFF*@[@@@@ . UW )@@G@@@A@@@@ . ** CALL$WK ** @[@@@@ . @B@@@@ . REUX )@@G@@ORG EDITOR WORKER ROUTINE @A@@@@ . TO SET UP AND EXECUTEUY )@@G@@@C@@@@ . CALL TO EXTERNAL SUBROUTINE @[@@@@ . @^@@@@UZ )@@G@@ . CALL IS @A@@@@ . LX,U X10,PARAM @A@@@@VA )@@G@@ . LMJ X11,CALL$WK@#@@@@ . WHERE @C@@@@ . VB )@@G@@ ------------------------------- @C@@@@ . PARAM: LENGTH VC )@@G@@ :TYPE: +(CALL$WK) : @C@@@@ . :--------------------------VD )@@G@@---: @C@@@@ . : 11 : : : : @C@@@@ . VE )@@G@@ :-----------------------------: @C@@@@ . : VF )@@G@@ : @C@@@@ . :-- ROUTINE NAME VG )@@G@@ --: @C@@@@ . : : @C@@@@ . VH )@@G@@ :-----------------------------: @C@@@@ . : VI )@@G@@ : @C@@@@ . = PARAMETER PTRS VJ )@@G@@ = @C@@@@ . : : @C@@@@ . VK )@@G@@ ------------------------------- @B@@@@ . TYPE IS #VL )@@G@@ OF PARAMETERS @[@@@@ . @C@@@@ . INPUT OF CALL RTN(XVM )@@G@@,Y,Z) @C@@@@ . WILL PRODUCE CALLING PKET OF@B@@@@VN )@@G@@ . LMJ X11,RTN @A@@@@ . VO )@@G@@ + X @A@@@@ . + Y @A@@@@ . VP )@@G@@ + Z @C@@@@ . + $,('EDITOR')VQ )@@G@@ @C@@@@ . WHERE X,Y,Z ARE GIVEN @C@@@@ . VR )@@G@@ T1 - CHAR LENGTH @C@@@@ . VS )@@G@@ S3 - CHAR OFFSET (1-6) @C@@@@ . H2 - ABS WORD ADDVT )@@G@@R @[@@@@ . @#@@@@ AXR$. @#@@@@$(4) LIT. @A@@@@VU )@@G@@PF FORM 12,6,18 . @A@@@@INSTR FORM 6,4,4,4,2,16 VV )@@G@@. @]@@@@$(3). @[@@@@ . @C@@@@CALL$WK*. VW )@@G@@. $H CALL$WK @D@@@@ S,H2 X11,RETURN . $P SAVE RETURN AVX )@@G@@DDR @E@@@@ L X7,X10 . $P SET PTR TO RTN NAME VY )@@G@@@A@@@@ A,U X7,2 . @E@@@@ L,S3 A7,0,X10 VZ )@@G@@ . $P GET # OF PARAMETERS @G@@@@ TG,U A7,26 WA )@@G@@. $T ARE THERE > 25 PARAMS ON CALL ? @C@@@@ J MAXPRM WB )@@G@@ . $A NO YES,MAXPRM@C@@@@ DL A0,0,X7 . $P GET RTNWC )@@G@@ NAME @F@@@@ L X9,(3,LD$TBL) . $P SET PTR TO SUBRTN JUMP TAWD )@@G@@BLE @F@@@@ L R1,0,X9 . $P GET # SUBRTNS DEFINED IN WE )@@G@@SJT @E@@@@SRCHLP JGD R1,$+2 . $T MORE ENTRIES IN SJT WF )@@G@@@C@@@@ J NOFIND . $A YES NO,NOFIND@F@@@@ DTEWG )@@G@@ A0,1,*X9 . $T IS THIS SJT ENTRY FOR RTN ? @C@@@@ J WH )@@G@@ SRCHLP . $A YES NO,SRCHLP@F@@@@ L A0,0,X9 WI )@@G@@. $P GET SUBRTN SEG LOAD TBL ADDR @A@@@@ L A1,A0 WJ )@@G@@. @E@@@@ MSI,U A0,4 . $P GET SEG LOAD TBL ADDR WK )@@G@@@A@@@@ A,U A0,SLT$ . @C@@@@ L A3,A0 WL )@@G@@ . $P SAVE ADDR @E@@@@ TN 0,A0 . $T HAS SEGWM )@@G@@ BEEN LOADED @C@@@@ J LOADED . $A NO YES,LOADEDWN )@@G@@@A@@@@ L A0,A1 . @A@@@@ SZ A1 WO )@@G@@ . @C@@@@ ER LOAD$ . $P LOAD SEGMENT @E@@@@WP )@@G@@LOADED L,H2 X5,1,A3 . $P GET START ADDR OF SEG @D@@@@ WQ )@@G@@ DL A0,0,X7 . $P GET SUBRTN NAME @E@@@@ L X9,WR )@@G@@(3,ENTRY$) . $P SET PTR TO ENTRY PT TBL @E@@@@EPSLP TP 1,X9 WS )@@G@@ . $T MORE ENTRY PTS IN TBL @C@@@@ J NOFIND WT )@@G@@. $A YES NO,NOFIND@E@@@@ DTE A0,1,*X9 . $T IS THIS SUBRTWU )@@G@@N ENTRY PT @C@@@@ J EPSLP . $A YES NO,EPSLP @D@@@@WV )@@G@@ L,H2 X5,0,X9 . $P SET ENTRY PT ADDR @E@@@@ A,UWW )@@G@@ X7,2 . $P SET TO 1ST PARAM @G@@@@ L X6,WX )@@G@@(1,PRMLST) . $P SET PTR TO CALL PARAM LIST @A@@@@ SZ WY )@@G@@ A13 . @G@@@@PRMLP JGD A7,$+2 . $T ANY MORWZ )@@G@@E PARAMS TO BE SET UP ? @C@@@@ J ENDPRM . $A YXA )@@G@@ES NO,ENDPRM@E@@@@ A,U A13,1 . $P INCREMENT DATANAME XB )@@G@@PTR @G@@@@ SLJ GETSYM . $W GETSYM - GET PARAM VALUE XC )@@G@@ADDR @E@@@@ JN A1,SYMERR . $T WAS GET SUCCESSFUL XD )@@G@@? @C@@@@ . $A YES NO,SYMERR@E@@@@ XE )@@G@@ A X7,A14 . $P SET PTR TO NEXT PARAM @G@@@@ S,TXF )@@G@@1 A0,0,X6 . $P SET PARAM PTR IN CALL PKET @A@@@@ XG )@@G@@ S,S3 A2,0,X6 . @A@@@@ S,H2 A1,0,*X6 . XH )@@G@@@C@@@@ J PRMLP . $J PRMLP @G@@@@ENDPRM L,UXI )@@G@@ A0,EDNME . $P SET UP WALKBACK WORD IN CALL PKET @A@@@@ XJ )@@G@@ S,H2 A0,0,X6 . @A@@@@ L A0,X6 . XK )@@G@@@A@@@@ LSSL A0,18 . @A@@@@ SSL A0,18 XL )@@G@@ . @A@@@@ S,H1 A0,0,*X6 . @G@@@@ L XM )@@G@@ A0,RINSTR . $P PUT RETURN JUMP INSTR AT END OF CALL @A@@@@ XN )@@G@@ S A0,0,X6 . @C@@@@ LMJ X11,0,X5 . $W CXO )@@G@@ALL SUBRTN @A@@@@PRMLST RES 27 . $E @]@@@@ . XP )@@G@@@E@@@@MAXPRM P$RINT (PF 1,8,MPM) . $P PRINT ERROR MESSAGE @C@@@@XQ )@@G@@ J SYMERR . $J SYMERR @E@@@@NOCORE P$RINT (PXR )@@G@@F 1,9,NCM) . $P PRINT ERROR MESSAGE @C@@@@ J SYMERR XS )@@G@@ . $J SYMERR @E@@@@NOFIND P$RINT (PF 1,6,NFM) . $P PRINT EXT )@@G@@RROR MESSAGE @E@@@@SYMERR L,U A0,1 . $P SET FATAL ERRXU )@@G@@OR FLAG @A@@@@ S A0,FATAL . @A@@@@ J XV )@@G@@ *RETURN . $E @]@@@@$(4). @A@@@@RETURN + 0 XW )@@G@@ . @E@@@@RINSTR + (INSTR 074,4,0,0,1,RETURN) . J *RETURNXX )@@G@@ INSTR@A@@@@EDNME 'EDITOR' . @G@@@@MPM 'ERROR - XY )@@G@@MAXIMUM OF 25 PARAMETERS ALLOWED ON CALL' . @G@@@@NCM 'ERXZ )@@G@@ROR - NO CORE AVAILABLE TO LOAD CALLED SUBROUTINE ' . @E@@@@NFM YA )@@G@@ 'ERROR - CALLED ROUTINE IS UNDEFINED ' . @^@@@@ ENDYB )@@G@@ . ___G PRROR MESSAGE @E@@@@SYMERR*[@@@@*SDFF*@#@@@@ YC )@@G@@ AXR$. @]@@@@LD$TBL*. @B@@@@ + (ENDTBL-LD$TBL-1)/3 YD )@@G@@. @A@@@@ 'SORTINT ' . @ @@@@ + R$SYE )@@G@@EG1 . @A@@@@ 'SORTPUT ' . @ @@@@ + YF )@@G@@ R$SEG1 . @A@@@@ 'SORTRUN ' . @ @@@@ YG )@@G@@ + R$SEG1 . @A@@@@ 'SORTGET ' . @ @@@@YH )@@G@@ + R$SEG1 . @A@@@@ENDTBL + 0 . YI )@@G@@@#@@@@ END . ___^@)^@)^@)^@)^@)^@)^@,*[@@@@*SDFF*@[@@@@ . YJ )@@G@@@A@@@@ . ** PRINTV ** @[@@@@ . @B@@@@ . REYK )@@G@@ORG EDITOR WORKER ROUTINE @D@@@@ . TO PRINT VARIABLES FRYL )@@G@@OM CORE BUFFERS @[@@@@ . @^@@@@ . CALL IS @A@@@@ . YM )@@G@@ LX,U X10,PARAM @A@@@@ . LMJ X11,PRINTV YN )@@G@@@^@@@@ . WHERE @D@@@@ . ----------------YO )@@G@@--------------- @D@@@@ . PARAM: N :TYPE: +(PRINTV)YP )@@G@@ : @D@@@@ . :-----------------------------: @D@@@@YQ )@@G@@ . : 4 : 0/1: : : @D@@@@ . YR )@@G@@ :-----------------------------: @D@@@@ . = YS )@@G@@ = @D@@@@ . :---------------YT )@@G@@--------------: @D@@@@ . : VAR ADDR : INDX ADDR/0YU )@@G@@ : @D@@@@ . :-----------------------------: @D@@@@YV )@@G@@ . = = @D@@@@ . YW )@@G@@ :-----------------------------: @D@@@@ . : YX )@@G@@VAR ADDR :400 ---- 000: @D@@@@ . :---------------YY )@@G@@--------------: @D@@@@ . :FD VALUE OF INDEX (LFT JUSTYZ )@@G@@) : @D@@@@ . :-----------------------------: @D@@@@ZA )@@G@@ . = = @D@@@@ . ZB )@@G@@ :-----------------------------: @D@@@@ . :000ZC )@@G@@ ----- 0000:CHAR LENGTH/LT: @D@@@@ . :---------------ZD )@@G@@--------------: @D@@@@ . : ZE )@@G@@ : @D@@@@ . = LITERAL STRING = @D@@@@ZF )@@G@@ . : : @D@@@@ . ZG )@@G@@ ------------------------------- @E@@@@ . ALL ZH )@@G@@ADDR ARE TO SYMBOL TBL ENTRIES @B@@@@ . TYPE GIVESZI )@@G@@ COMMAND - @F@@@@ . 0 - PRINT COMMAND - CONVERT AZJ )@@G@@ND PRINT @F@@@@ . 1 - DISPLAY COMMAND - PRINT OZK )@@G@@CTAL IMAGE @G@@@[ . 2 - MONITOR COMMAND - PRINT OZL )@@G@@N CONSOLE IF BATCH@G@@@[ . ZM )@@G@@ MODE @[@@@@ . @#@@@@ AXR$. @#@@@@$(4) ZN )@@G@@ LIT. @]@@@@$(3). @[@@@@ . @A@@@@PF FORM 12,6,18 ZO )@@G@@ . @[@@@@ . @C@@@@PRINTV*. . $H PRINTV ZP )@@G@@ @D@@@@ S,H2 X11,RETURN . $P SAVE RETURN ADDR @D@@@@ZQ )@@G@@ S X10,PKET . $P SAVE PKET ADDR @F@@@@ L,SZR )@@G@@3 A15,0,X10 . $P GET COMMAND TYPE FROM PKET @E@@@[ SZ ZS )@@G@@ CONPRT . $P CLEAR MONITOR FLAG @E@@@[ TE,U A15ZT )@@G@@,2 . $T IS THIS MONITOR COMMAND @C@@@[ J PRT1 ZU )@@G@@ . $A YES NO,PRT1 @G@@@[ SZ A15 . $P RESET FZV )@@G@@UNCTION TO PRINT COMMAND @D@@@[ L,U A0,1 . $P SZW )@@G@@ET MONITOR FLAG @A@]@[ S A0,CONFLG . @A@@@] ZX )@@G@@ S A0,CONPRT . @E@[@@ SZ A13 . $P IZY )@@G@@NITIALIZE VAR CNTR @E@@@[PRT1 SZ A13 . $P INITIALZZ )@@G@@IZE VAR CNTR @F@@@@ L X7,X10 . $P SET PTR TO FIAA )@@G@@RST PKET ENTRY @A@@@@ A,U X7,2 . @D@@@@ AB )@@G@@ L,T1 A7,0,X10 . $P SAVE PKET LENGTH @F@@@@ L,U A6,AC )@@G@@72 . $P SET CHAR LENGTH OF PRINT LINE @A@@@@ TZ POPAD )@@G@@T . @A@@@@ L,U A6,132 . @E@@@@ AE )@@G@@ E$DIT PVPKT . $P INITIALIZE LINE BUFFER @A@@@@ E$DAF )@@G@@ITX . @E@@@@PRT2 L A0,X7 . $P GET CURAG )@@G@@RENT DISP IN PKET @A@@@@ AN A0,PKET . @D@@@@ AH )@@G@@ TNE A0,A7 . $T AT END OF PKET ? @C@@@@ J PRTAI )@@G@@END . $A NO YES,PRTEND@E@@@@ A,U A13,1 . $P IAJ )@@G@@NCREMENT VAR CNTR @E@@@@ SLJ GETSYM . $W GETSYM AK )@@G@@- GET SYM VALUE @D@@@@ TP A1 . $T VARIABLE FOUNAL )@@G@@D ? @A@@@@ J *RETURN . $E @E@@@@ L X5,AM )@@G@@A1 . $P SAVE VAR LOC PARAMS @A@@@@ L X6,A2 AN )@@G@@ . @A@@@@ L A10,A0 . @D@@@@ L,UAO )@@G@@ A11,1 . $P SET PRT TYPE TO 1 @E@@@@ JNZ A15,PICX AP )@@G@@ . $T IS THIS DISPLAY COMMAND @C@@@@ AQ )@@G@@. $A NO YES,PICX @D@@@@ TNE,U A3,3 . $T IS TYPE COMP AR )@@G@@? @C@@@@ J PICCMP . $A NO YES,PICCMP@D@@@@ AS )@@G@@ TNE,U A3,4 . $T IS TYPE SET PTR @C@@@@ J PICAT )@@G@@SET . $A NO YES,PICSET@E@@@@ L A11,A3 . $P SAU )@@G@@ET TYPE FOR PRINT @B@@@@ J PICX . $J PICX AV )@@G@@@D@@@@PICCMP L R4,A10 . $P SAVE ITEM LENGTH @E@@@@ AW )@@G@@ JGD A10,$+2 . $T IS ITEM LENGTH ZERO ? @C@@@@ J AX )@@G@@ ERR3 . $A NO YES,ERR3 @D@@@@ SZ A1 AY )@@G@@. $P INITIALIZE VALUE @A@@@@ SZ A2 . @E@@@@AZ )@@G@@ LXI,U X5,1 . $P SET PTRS FOR TRANSFER @A@@@@ BA )@@G@@ LXI,U X6,1 . @E@@@@PC1 EX CHAR,X6 . $P GBB )@@G@@ET NEXT CHAR OF ITEM @E@@@@ LDSL A1,6 . $P SHIFT PBC )@@G@@REVIOUS VALUE @E@@@@ A A2,A0 . $P ADD THIS CHARBD )@@G@@ TO VALUE @E@@@@ TLEM,U X6,6 . $T IS CHAR OFFSET < 6 BE )@@G@@? @A@@@@ J $+2 . @D@@@@ LXM,U X6,BF )@@G@@1 . $P SET OFFSET TO 1 @C@@@@ JGD A10,PC1 BG )@@G@@. $T MORE CHARS ? @C@@@@ . $A NO YES,PC1 BH )@@G@@@E@@@@ L A0,(0606060606060) . $P INITIALIZE FD BUFFER @A@@@@BI )@@G@@ S A0,CBUF . @A@@@@ S A0,CBUF+1 BJ )@@G@@. @A@@@@ S A0,CBUF+2 . @E@@@@ L X4,BK )@@G@@(-1,CBUF+2) . $P SET CONVERT BUFF PTR @C@@@@ DI A1,(10000BL )@@G@@00000) . $P SPLIT VALUE @C@@@@ L R6,A1 . $P SAVE TOBM )@@G@@P PART@D@@@@ L A1,A2 . $P SET FOR CONVERT @A@@@@BN )@@G@@ L,U A3,5 . @G@@@@PC2 JZ A1,PC3 BO )@@G@@. $T NONZERO VALUE REMAINING THIS PART ? @C@@@@ BP )@@G@@ . $A YES NO,PC3 @D@@@@ L A2,A1 . $P GET NEXBQ )@@G@@T DIGIT @A@@@@ SZ A1 . @A@@@@ DI,BR )@@G@@U A1,10 . @D@@@@ A,U A2,060 . $P CONVERTBS )@@G@@ IT TO FD @C@@@@ EX SAVE,A3 . $P SAVE IT @F@@@@BT )@@G@@ JGD A3,PC2 . $T MORE ROOM IN THIS BUFF WORD ? @E@@@@BU )@@G@@ L,U A3,5 . $P SET TO NEXT EARLIER WORD @B@@@@ BV )@@G@@ J PC2 . $J PC2 @E@@@@PC3 L A1,R6 BW )@@G@@. $P GET TOP HALF OF VALUE @C@@@@ JZ A1,PC4 . $T IBX )@@G@@S IT ZERO ? @C@@@@ SZ R6 . $A NO YES,PC4 @E@@@@BY )@@G@@ LXM,U X4,CBUF+1 . $P ZERO SAVED TOP HALF VALUE@E@@@@ BZ )@@G@@ L,U A3,2 . $P RESET CONVERT BUFF PTR @B@@@@ J CA )@@G@@ PC2 . $J PC2 @A@@@@PC4 L A0,R4 . CB )@@G@@@E@@@@ L,T1 A10,CMPCNV,A0 . $P GET CONVERTED ITEM LENGTH@G@@@@CC )@@G@@ L,S3 X6,CMPCNV,A0 . $P GET CONVERTED ITEM CHAR OFFSET CD )@@G@@@F@@@@ L,H2 X5,CMPCNV,A0 . $P GET CONVERTED ITEM ABS ADDR CE )@@G@@@D@@@@ L,U A11,2 . $P SET TYPE TO PIC 9 @F@@@@PICX CF )@@G@@ A X7,A14 . $P SET PKET PTR TO NEXT ENTRY @E@@@@ CG )@@G@@ JGD A10,$+2 . $T IS ITEM LENGTH ZERO ? @C@@@@ J CH )@@G@@ ERR3 . $A NO YES,ERR3 @E@@@@ LXI,U X5,1 CI )@@G@@. $P SET PTRS FOR PRINT @A@@@@ LXI,U X6,1 . CJ )@@G@@@E@@@@ SZ A9 . $P SET ZERO-SUPPRESS FLAG @C@@@@CK )@@G@@ TNE,U A11,1 . $T IS TYPE PIC 9@E@@@@ L,U A9,CL )@@G@@1 . $P SET ZERO-SUPPRESS FLAG @E@@@@ E$DITR PVPKT CM )@@G@@ . $P REOPEN OUTPUT BUFFER @E@@@@PX1 E$COLN CN )@@G@@. $P GET CURRENT COLUMN NUMBER@E@@@@ TG A0,A6 . $T MCO )@@G@@ORE ROOM ON THIS LINE @G@@@@ SLJ PRTLN . $W PRTLN -CP )@@G@@ PRINT LN & GET NEW LINE @C@@@@ EX CHAR,X6 . $P GCQ )@@G@@ET NEXT CHAR@E@@@@ JNZ A15,PDISP . $T IS THIS DISPLAY COMCR )@@G@@MAND @C@@@@ . $A NO YES,PDISP @E@@@@ CS )@@G@@ JNZ A9,PX2 . $T IS ZERO-SUP FLAG SET @C@@@@ CT )@@G@@ . $A YES NO,PX2 @D@@@@ L,U A9,1 CU )@@G@@. $P RESET Z-S FLAG @D@@@@ TE,U A0,060 . $T IS CHARCV )@@G@@ A ZERO ? @C@@@@ J PX2 . $A YES NO,PX2 @C@@@@CW )@@G@@ SZ A9 . $P SET Z-S FLAG @F@@@@ TZ A10CX )@@G@@ . $T IS THIS LAST CHAR OF ITEM ? @C@@@@ L,U A0,CY )@@G@@5 . $P SUPPRESS ZERO@E@@@@PX2 LMJ X11,ECHAR$ . $P PCZ )@@G@@UT CHAR INTO PRT LINE @E@@@@PX3 TLEM,U X6,6 . $T IS CHARDA )@@G@@ OFFSET < 6 ? @A@@@@ J $+2 . @E@@@@ DB )@@G@@ LXM,U X6,1 . $P SET CHAR OFFSET TO 1 @E@@@@ JGDDC )@@G@@ A10,PX1 . $T MORE CHAR IN ITEM ? @E@@@@ E$DITX DD )@@G@@ . $P CLOSE OUTPUT BUFFER @D@@@@ J PRT2 DE )@@G@@ . $A YES,PX1 NO,PRT2 @D@@@@PICSET L A10,0,A1 . $P GDF )@@G@@ET SET PTR VALUE @E@@@@ E$DIT SPKT . $P CONVERT PTR TDG )@@G@@O FD OCTAL @A@@@@ L A0,A10 . @A@@@@ L,UDH )@@G@@ A1,12 . @A@@@@ LMJ X11,EOCTF$ . @A@@@@DI )@@G@@ E$DITX . @E@@@@ L,U X5,SBUF DJ )@@G@@. $P SET ADDR OF PTR VALUE @E@@@@ L,U X6,1 . $P SDK )@@G@@ET CHAR OFFSET TO 1 @E@@@@ L,U A10,12 . $P SET CHADL )@@G@@R LENGTH TO 12 @D@@@@ L,U A11,1 . $P SET TYPE TO PDM )@@G@@IC X @B@@@@ J PICX . $J PICX @[@@@@ . @A@@@@DN )@@G@@PDISP L,U A1,2 . @G@@@@ LMJ X11,EOCTF$ DO )@@G@@. $P PUT OCTAL IMAGE OF CHAR IN O BUF @B@@@@ J PX3 DP )@@G@@ . $J PX3 @[@@@@ . @A@@@@PRTEND E$DITR PVPKT . DQ )@@G@@@E@@@@ SLJ PRTLN . $W PRTLN - PRINT LAST LINE @A@@@@DR )@@G@@ E$DITX . @A@@@@ J *RETURN DS )@@G@@. $E @[@@@@ . @B@@@@PRTLN + 0 . $H PRTLN @E@@@@DT )@@G@@ E$DITX . $P CLOSE OUTPUT LINE BUFFER @E@@@@ DU )@@G@@ P$RINT (PF 1,22,PVBUF) . $P PRINT OUTPUT LINE @E@@@[ TNZDV )@@G@@ CONPRT . $T IS THIS MONITOR COMMAND @C@@@[ J PRTDW )@@G@@LN2 . $A YES NO,PRTLN2@E@#@[ TNZ POPT . $T IDX )@@G@@S THIS BATCH MODE @E@@@# TNZ MOPT . $T IS THISDY )@@G@@ MONITOR MODE @C@@@[ J PRTLN2 . $A YES NO,PRTLN2DZ )@@G@@@D@^@# JK MKEY,$+2 . $T IS JUMP KEY SET @C@^@# EA )@@G@@ J PRTLN2 . $A YES NO,PRTLN2@F@@@[ C$OM COMPKT EB )@@G@@ . $P SEND LINE TO SYSTEM CONSOLE @G@[@@ E$DIT PVPKT EC )@@G@@ . $P OPEN NEW OUTPUT LINE BUFFER @F@@@[PRTLN2 E$DIT PVPED )@@G@@KT . $P OPEN NEW OUTPUT LINE BUFFER @A@@@@ J *PREE )@@G@@TLN . $E @[@@@@ . @A@@@@ICHAR NOP . EF )@@G@@@A@@@@ L,S1 A10,0,A1 . @A@@@@ L,S2 A10,0,A1 EG )@@G@@ . @A@@@@ L,S3 A10,0,A1 . @A@@@@ L,SEH )@@G@@4 A10,0,A1 . @A@@@@ L,S5 A10,0,A1 . @A@@@@EI )@@G@@ L,S6 A10,0,*A1 . @[@@@@ . @A@@@@CHAR NOP EJ )@@G@@ . @A@@@@ L,S1 A0,0,X5 . @A@@@@ EK )@@G@@ L,S2 A0,0,X5 . @A@@@@ L,S3 A0,0,X5 . EL )@@G@@@A@@@@ L,S4 A0,0,X5 . @A@@@@ L,S5 A0,0,X5 EM )@@G@@ . @A@@@@ L,S6 A0,0,*X5 . @[@@@@ . @A@@@@EN )@@G@@SAVE S,S1 A2,0,*X4 . @A@@@@ S,S2 A2,0,X4 EO )@@G@@. @A@@@@ S,S3 A2,0,X4 . @A@@@@ S,S4 A2,EP )@@G@@0,X4 . @A@@@@ S,S5 A2,0,X4 . @A@@@@ EQ )@@G@@ S,S6 A2,0,X4 . @[@@@@ . @]@@@@$(4). @A@@@@RETURNER )@@G@@ + 0 . @A@@@[CONPRT + 0 . ES )@@G@@@A@@@[COMPKT C$OMPK,0 50,PVBUF . @A@@@@PKET + 0 ET )@@G@@ . @A@@@@CBUF RES 3 . @[@@@@ . @A@@@@EU )@@G@@CMPCNV + 0 . @A@@@@ + (PF 1,6,CBUF+2)EV )@@G@@ . @A@@@@ + (PF 3,4,CBUF+2) . @A@@@@ + (PFEW )@@G@@ 5,2,CBUF+2) . @A@@@@ + (PF 6,1,CBUF+2) . @A@@@@ EX )@@G@@ + (PF 8,5,CBUF+1) . @A@@@@ + (PF 10,3,CBUF+1) . EY )@@G@@@A@@@@ + (PF 12,1,CBUF+1) . @A@@@@ + (PF 13,6,EZ )@@G@@CBUF) . @A@@@@ + (PF 15,4,CBUF) . @A@@@@ + FA )@@G@@ (PF 17,2,CBUF) . @A@@@@ + (PF 18,1,CBUF) . @]@@@@FB )@@G@@$(3). @B@@@@GETSYM* + 0 . $H GET @E@@@@ FC )@@G@@ TZ,H1 0,X7 . $T IS ENTRY A LITERAL @C@@@@ J FD )@@G@@ VAR . $A YES NO,VAR @E@@@@ L,XH2 A0,0,X7 FE )@@G@@. $P GET LITERAL LENGTH @G@@@@ . $T IFF )@@G@@S LENGTH ZERO (BAD VAR NAME) ? @E@@@@ JN A0,NUM FG )@@G@@. $T IS ENTRY A NUMERIC @C@@@@ . $A NFH )@@G@@O YES,NUM @C@@@@ JZ A0,UNDEF . $A NO YES,UNDEF @D@@@@FI )@@G@@ L,U A3,1 . $P SET TYPE TO PIC X @E@@@@ L,UFJ )@@G@@ A2,1 . $P SET CHAR OFFSET TO 1 @E@@@@ L A1,FK )@@G@@X7 . $P SET WORD ADDR OF LITERAL @A@@@@ A,U A1,1 FL )@@G@@ . @G@@@@ SZ A4 . $P CALCULATE # WORDS IFM )@@G@@N PKET ENTRY @A@@@@ L A5,A0 . @A@@@@ FN )@@G@@ AN,U A5,1 . @A@@@@ DI,U A4,6 . FO )@@G@@@A@@@@ A,U A4,2 . @E@@@@ L A14,A4 FP )@@G@@ . $P SAVE AS PKET ENTRY LENGTH@C@@@@ J *GETSYM FQ )@@G@@. $E RETURN @[@@@@ . @B@@@@NUM . $H NFR )@@G@@UM @E@@@@ L,T3 A0,0,X7 . $P GET NUMERIC LENGTH FS )@@G@@@D@@@@ L,U A3,2 . $P SET TYPE TO PIC 9 @E@@@@ FT )@@G@@ L,U A2,1 . $P SET CHAR OFFSET TO 1 @E@@@@ L FU )@@G@@ A1,X7 . $P SET WORD ADDR OF LITERAL @A@@@@ A,U A1,FV )@@G@@1 . @G@@@@ SZ A4 . $P CALCULATE # WFW )@@G@@ORDS IN PKET ENTRY @A@@@@ L A5,A0 . @A@@@@FX )@@G@@ AN,U A5,1 . @A@@@@ DI,U A4,6 FY )@@G@@. @A@@@@ A,U A4,2 . @E@@@@ L A14FZ )@@G@@,A4 . $P SAVE AS PKET ENTRY LENGTH@E@@@@ L,S1 A4,0,A1 GA )@@G@@ . $P GET FIRST CHAR OF NUMBER @E@@@@ TNE,U A4,060 GB )@@G@@. $T IS FIRST CHAR A ZERO @C@@@@ J N1 . $A NGC )@@G@@O YES,N1 @E@@@@ SLJ GETNUM . $W GETNUM - GET BIANRYGD )@@G@@ VALUE@B@@@@ J N2 . $J N2 @G@@@@N1 SLJGE )@@G@@ GETONUM . $W GETONUM - GET BINARY VALUE, OCTAL @C@@@@N2 GF )@@G@@ S A0,NBUF . $P SAVE VALUE @D@@@@ L,U A0,6 GG )@@G@@ . $P SET LENGTH TO 6 @D@@@@ L,U A1,NBUF . $P SGH )@@G@@ET VALUE ADDR @E@@@@ L,U A2,1 . $P SET CHAR OFFSGI )@@G@@ET TO 1 @E@@@@ L,U A3,3 . $P SET TYPE TO PIC 9 CGJ )@@G@@OMP @C@@@@ J *GETSYM . $E RETURN @[@@@@ . GK )@@G@@@B@@@@VAR. . $H VAR @E@@@@ TZ,H2 0,XGL )@@G@@7 . $T IS AN INDEX GIVEN ? @C@@@@ J V1 GM )@@G@@ . $A NO YES,V1 @E@@@@ L,U A14,1 . $P SET PKEGN )@@G@@T ENTRY LENGTH @E@@@@ SZ A0 . $P SET INDEX VALGO )@@G@@UE TO 0 @B@@@@ J V3 . $J V3 @E@@@@V1 GP )@@G@@ L,XH2 A0,0,X7 . $P GET INDEX ADDR VALUE @E@@@@ TN GQ )@@G@@ A0 . $T IS INDEX VARIABLE GIVEN ?@C@@@@ J V2 GR )@@G@@ . $A NO YES,V2 @E@@@@ L,S4 A0,0,X7 . $P GGS )@@G@@ET INDEX FLAG FIELD @E@@@@ TE,U A0,040 . $T IS INDEGT )@@G@@X VALUE GIVEN @C@@@@ J SET . $A YES NO,SET GU )@@G@@@D@@@@ L A0,1,X7 . $P GET INDEX VALUE @A@@@@ GV )@@G@@ L A1,BLANKS . @G@@@@ SLJ FD$BIN . $W FGW )@@G@@D$BIN - CONVERT INDEX TO BINARY @E@@@@ TZ STATUS GX )@@G@@. $T WAS CONVERT SUCCESSFUL @C@@@@ J ERR24 . $A YGY )@@G@@ES NO,ERR24 @E@@@@ L,U A14,2 . $P SET PKET ENTRY LENGGZ )@@G@@TH @B@@@@ J V3 . $J V3 @E@@@@V2 L HA )@@G@@ X10,A0 . $P SET SYMBOL TBL ADDR @A@@@@ SZ A0 HB )@@G@@ . @F@@@@ SLJ GETVAR . $W GETVAR - GET HC )@@G@@ADDR OF INDEX @C@@@@ TP A1 . $T INDEX FOUND ?HD )@@G@@@C@@@@ J ERR1 . $A YES NO,ERR1 @E@@@@ L,UHE )@@G@@ A14,1 . $P SET PKET ENTRY LENGTH @C@@@@ TNE,U A3,HF )@@G@@1 . $T IS TYPE PIC X@C@@@@ J ERR17 . $A NHG )@@G@@O YES,ERR17 @D@@@@ JZ A0,ERR12 . $T IS INDEX LENGTH 0 HH )@@G@@@C@@@@ . $A NO YES,ERR12 @F@@@@ SLJHI )@@G@@ GETNUM . $W GETNUM - GET VALUE OF INDEX @F@@@@V3 L,HHJ )@@G@@1 X10,0,X7 . $P GET SYMBOL TBL ADDR FROM PKET @E@@@@ SLJHK )@@G@@ GETVAR . $W GETVAR - GET ADDR OF ITEM@D@@@@ TP A1 HL )@@G@@ . $T VARIABLE FOUND ? @C@@@@ J ERR2 HM )@@G@@. $A YES NO,ERR2 @C@@@@ JZ A0,ERR3 . $T IS LENGTH 0 HN )@@G@@@C@@@@ . $A NO YES,ERR3 @C@@@@ J HO )@@G@@ *GETSYM . $E RETURN @[@@@@ . @B@@@@SET. HP )@@G@@ . $H SET @E@@@@ AND,U A0,7 . $P GET LINHQ )@@G@@K TYPE CODE @E@@@@ TG,U A1,4 . $T IS THIS RESERHR )@@G@@VED WORD @C@@@@ J RSVWD . $A NO YES,RSVWD @D@@@@HS )@@G@@ L X10,A1 . $P SAVE LINK TYPE @E@@@@ L,HHT )@@G@@1 A0,0,X7 . $P GET SET SYM TBL ADDR @E@@@@ L,S3 A2,HU )@@G@@0,A0 . $P GET MODE OF SET (OLD/NEW)@C@@@@ L,T1 A0,1,A0 HV )@@G@@ . $P GET SET CODE @A@@@@ LSSL A0,24 . @A@@@@HW )@@G@@ SSL A0,24 . @E@@@@ L,H1 A1,1,X7 HX )@@G@@. $P GET RECORD SYM TBL ADDR @D@@@@ JZ A1,SET2 . $T IHY )@@G@@S RECORD GIVEN @C@@@@ . $A YES NO,SET2 HZ )@@G@@@D@@@@ TE,U A2,1 . $T WAS SET MODE OLD @F@@@@ IA )@@G@@ L,S3 A2,0,A1 . $P GET MODE OF RECD (OLD/NEW) @E@@@@ IB )@@G@@ L,T1 A1,1,A1 . $P GET RECORD SEQ NUMBER @A@@@@ AN,IC )@@G@@U A1,1 . @E@@@@ TG,H1 A1,TT1 . $T IS SEQ ID )@@G@@NUMBER VALID @C@@@@ J UNDEF . $A YES NO,UNDEF IE )@@G@@@E@@@@ A,H2 A1,TT1 . $P GET SEQ TBL ENTRY ADDR @D@@@@IF )@@G@@ L,T1 A1,0,A1 . $P GET RECORD CODE @A@@@@ LSSIG )@@G@@L A1,24 . @A@@@@ SSL A1,24 . @E@@@@IH )@@G@@SET2 SLJ GETSET . $W GETSET - GET SET POINTERS@E@@@@ II )@@G@@ JN A1,SETERR . $T SET POINTERS FOUND @C@@@@ IJ )@@G@@ . $A YES NO,SETERR@E@@@@SET1 EX GETPTR,X10 IK )@@G@@. $P GET PROPER SET PTR @A@@@@ S A4,SBUF . IL )@@G@@@E@@@@ L,U A1,SBUF . $P SET ADDR OF PTR VALUE @E@@@@IM )@@G@@ L,U A2,1 . $P SET CHAR OFFSET TO 1 @E@@@@ IN )@@G@@ L,U A0,6 . $P SET CHAR LENGTH TO 6 @E@@@@ L,UIO )@@G@@ A3,4 . $P SET TYPE TO SET PTR @E@@@@ L,U A14IP )@@G@@,2 . $P SET LENGTH OF PKET ENTRY @C@@@@ J *GETSYM IQ )@@G@@ . $E RETURN @[@@@@ . @A@@@@GETPTR NOP IR )@@G@@. @A@@@@ L A4,A2 . @A@@@@ L A4,IS )@@G@@A3 . @A@@@@ NOP . @[@@@@ . IT )@@G@@@A@@@@RSVWD L X10,X7 . @E@@@@ SLJ GETRSV IU )@@G@@ . $W GETRSV - GET RES WRD LOC @E@@@@ TZ STATUS IV )@@G@@. $T WAS THERE ERROR IN GETRSV@C@@@@ J ERR24 . $A NIW )@@G@@O YES,ERR24 @D@@@@ JN A1,RSVERR . $T WAS RES WRD FOUND IX )@@G@@@C@@@@ . $A YES NO,RSVERR@E@@@@ L IY )@@G@@ A14,A4 . $P SAVE PKET ENTRY LENGTH @F@@@@ TNE,U A3,IZ )@@G@@3 . $T IS TYPE PIC X (RECORD-NAME) @G@@@@ L,U A3,JA )@@G@@4 . $P SET TYPE TO SETPTR TO PRT IN OCTAL @C@@@@ J JB )@@G@@ *GETSYM . $E RETURN @[@@@@ . @C@@@@GETONUM + 0 JC )@@G@@ . $H GETONUM @E@@@@ L R1,A0 . $P SJD )@@G@@AVE CHAR LENGTH OF NUM @E@@@@ SZ A0 . $P INITIALJE )@@G@@IZE RETURN VALUE @E@@@@ JGD R1,$+2 . $T IS CHAR LENGTJF )@@G@@H > 0 @A@@@@ J *GETONUM . $E @E@@@@GON1 L JG )@@G@@ A3,0,A1 . $P GET NEXT WORD OF NUMBER @E@@@@ A,U A1,JH )@@G@@1 . $P SET INDEX TO NEXT WORD @E@@@@ L,U R2,5 JI )@@G@@ . $P SET CHAR OF WORD COUNTER @A@@@@GON2 SZ A2 JJ )@@G@@. @E@@@@ LDSL A2,3 . $P GET TOP HALF OF NEXT CHARJK )@@G@@@F@@@@ TE,U A2,6 . $T IS TOP HALF 06 (VALID OCTAL) JL )@@G@@@C@@@@ J ERR5 . $A YES NO,ERR5 @E@@@@ SZ JM )@@G@@ A2 . $P CLEAR TOP HALF OF CHAR @G@@@@ LDSL A2,JN )@@G@@3 . $P GET BOTTOM HALF OF CHAR (VALUE) @F@@@@ LSSJO )@@G@@L A0,3 . $P MULTIPLY PREVIOUS RESULT BY 8 @F@@@@ A JP )@@G@@ A0,A2 . $P ADD THIS CHAR VALUE TO RESULT @E@@@@ JGDJQ )@@G@@ R1,$+2 . $T MORE CHAR TO BE CONVERTED@A@@@@ J *GEJR )@@G@@TONUM . $E @E@@@@ JGD R2,GON2 . $T MORE CHAR IN JS )@@G@@THIS WORD @D@@@@ J GON1 . $A YES,GON2 NO,GON1 JT )@@G@@@[@@@@ . @D@@@@UNDEF L A1,(01000000) . $P SET ERROR CODE JU )@@G@@@B@@@@ J ERR2 . $J ERR2 @[@@@@ . @E@@@@SETERRJV )@@G@@ LSSL A1,1 . $P GET GETSET ERROR CODE @A@@@@ SSLJW )@@G@@ A1,19 . @E@@@@ L A1,ERRCDE,A1 . $P CONVERTJX )@@G@@ TO PV ERR CDE @E@@@@ JN A1,SERR1 . $T IS IT MANUAL JY )@@G@@SET ERROR @C@@@@ . $A NO YES,SERR1 @D@@@@JZ )@@G@@ LSSL A1,18 . $P FORMAT ERROR CODE @B@@@@ J KA )@@G@@ ERR2 . $J ERR2 @E@@@@SERR1 SZ A2 . $P SKB )@@G@@ET ALL PTR VALUES TO 0 @A@@@@ SZ A3 . @A@@@@KC )@@G@@ SZ A4 . @B@@@@ J SET1 KD )@@G@@. $J SET1 @[@@@@ . @E@@@@RSVERR LSSL A1,1 . $P GET GETKE )@@G@@RSV ERROR CODE @A@@@@ SSL A1,19 . @E@@@@ KF )@@G@@ L A4,RERCDE,A1 . $P CONVERT TO PV ERR CDE @B@@@@ J KG )@@G@@ ERR4 . $J ERR4 @[@@@@ . @D@@@@ERR1 LSSL A1,1 KH )@@G@@ . $P GET ERROR CODE @A@@@@ SSL A1,19 . KI )@@G@@@A@@@@ L A4,A1 . @E@@@@ E$DIT PVPKT KJ )@@G@@ . $P PRINT INDEX ERROR MESSAGE@A@@@@ E$COPY 29,EM1 KK )@@G@@. @B@@@@ J ERR20 . $J ERR20 @E@@@@ERR12 E$DKL )@@G@@IT PVPKT . $P PRINT INDEX ERROR MESSAGE@A@@@@ E$COPY 29KM )@@G@@,EM1 . @B@@@@ J ERR30 . $J ERR30 @E@@@@KN )@@G@@ERR17 E$DIT PVPKT . $P PRINT INDEX ERROR MESSAGE@A@@@@ KO )@@G@@ E$COPY 29,EM1 . @A@@@@ L A0,A13 . KP )@@G@@@A@@@@ LMJ X11,EDECV$ . @A@@@@ E$COPY 15,EM17 KQ )@@G@@ . @A@@@@ J ERR23 . @[@@@@ . @D@@@@KR )@@G@@ERR2 LSSL A1,1 . $P GET ERROR CODE @A@@@@ SSLKS )@@G@@ A1,19 . @A@@@@ L A4,A1 . @F@@@@KT )@@G@@ E$DIT PVPKT . $P SET UP PROPER ERROR MESSAGE @A@@@@KU )@@G@@ E$COPY 20,EM2 . @A@@@@ERR20 L A0,A13 KV )@@G@@. @A@@@@ LMJ X11,EDECV$ . @A@@@@ TNE,U A4,KW )@@G@@3 . @A@@@@ J ERR225 . @A@@@@ KX )@@G@@ TNE,U A4,2 . @A@@@@ J ERR22 . KY )@@G@@@A@@@@ TNE,U A4,1 . @A@@@@ J ERR21 KZ )@@G@@ . @A@@@@ E$COPY 31,EM20 . @A@@@@ J LA )@@G@@ ERR23 . @A@@@@ERR21 E$COPY 13,EM21 . @A@@@@LB )@@G@@ J ERR23 . @A@@@@ERR22 E$COPY 24,EM22 LC )@@G@@. @A@@@@ J ERR23 . @A@@@@ERR225 E$COPY 41LD )@@G@@,EM23 . @A@@@@ERR23 E$DITX . @D@@@@ LE )@@G@@ P$RINT (PF 1,22,PVBUF) . $P PRINT MESSAGE @E@@@@ERR24 L A1,LF )@@G@@(-1) . $P SET ERROR FLAG RETURN @A@@@@ J *GETSYM LG )@@G@@ . $E @[@@@@ . @E@@@@ERR3 E$DIT PVPKT . $P PRINT ELH )@@G@@RROR MESSAGE @A@@@@ E$COPY 20,EM2 . @A@@@@ERR30 LI )@@G@@ L A0,A13 . @A@@@@ LMJ X11,EDECV$ . LJ )@@G@@@A@@@@ E$COPY 16,EM3 . @B@@@@ J ERR23 LK )@@G@@ . $J ERR23 @F@@@@ERR4 E$DIT PVPKT . $P SET UP PROPERLL )@@G@@ ERROR MESSAGE @A@@@@ E$COPY 37,EM4 . @B@@@@ LM )@@G@@ J ERR20 . $J ERR20 @E@@@@ERR5 E$DIT PVPKT LN )@@G@@. $P PRINT ERROR MESSAGE @A@@@@ E$COPY 20,EM2 . LO )@@G@@@A@@@@ L A0,A13 . @A@@@@ LMJ X11,EDECVLP )@@G@@$ . @A@@@@ E$COPY 20,EM5 . @B@@@@ J LQ )@@G@@ ERR23 . $J ERR23 @[@@@@ . @]@@@@$(4). @A@@@@PVPKT LR )@@G@@ E$PKT 22,PVBUF . @A@@@@PVBUF RES 22 . LS )@@G@@@A@@@@SPKT E$PKT 3,SBUF . @A@@@@SBUF RES 3 LT )@@G@@ . @A@@@@NBUF + 0 . @A@@@@BLANKS ' LU )@@G@@ ' . @[@@@@ . @A@@@@ERRCDE + 0 LV )@@G@@. @A@@@@ + 0 . @A@@@@ + 0 LW )@@G@@ . @A@@@@ + 1 . @A@@@@ LX )@@G@@ + 1 . @A@@@@ + 1 . LY )@@G@@@A@@@@ + -1 . @A@@@@ + 1 LZ )@@G@@ . @A@@@@ + 0 . @[@@@@ . @A@@@@MA )@@G@@RERCDE + 0 . @A@@@@ + 0 MB )@@G@@. @A@@@@ + 1 . @A@@@@ + 1 MC )@@G@@ . @A@@@@ + 1 . @[@@@@ . MD )@@G@@@C@@@@EM1 '***ERROR - INDEX OF DATANAME ' . @ @@@@EM17 ' IME )@@G@@S NOT NUMERIC' . @A@@@@EM2 '***ERROR - DATANAME ' . @C@@@@EM20 MF )@@G@@ ' HAS NO VALUE CURRENTLY DEFINED' . @ @@@@EM21 ' IS UNDEFINED'MG )@@G@@ . @B@@@@EM22 ' HAS ILLEGAL INDEX VALUE' . @E@@@@EM23 ' HMH )@@G@@AS INDEX BEYOND RANGE CURRENTLY DEFINED' . @A@@@@EM3 ' HAS ZERMI )@@G@@O LENGTH' . @D@@@@EM4 '***ERROR - RESERVED WORD OF DATANAME 'MJ )@@G@@ . @A@@@@EM5 ' IS BAD OCTAL STRING' . @[@@@@ . @#@@@@ MK )@@G@@ END . ___R (VALUE) @F@@@@ LSSL A0,3 . $P MML )@@G@@*[@@@@*SDFF*@^@@@@ AXR$ @]@@@@$(1) @]@@@@ . MM )@@G@@ @]@@@@TF$IB* . @C@@@@ SX,H2 X11,RETURN . $H TFMN )@@G@@$IB @G@@@@ SLJ FRSTED . $P FLUSH SQW INDEX BUF MO )@@G@@ON 1ST EDIT @E@[@@ LA,H1 A0,0,X10 . $P RECORD NUMBER MP )@@G@@TO A0 @E@@@[ LA A0,0,X10 . $P RECORD NUMBER TO A0 MQ )@@G@@@E@@@@ TNE,U A0,0 . $T IS RECORD NUMBER = 0@E@@@@MR )@@G@@ J IBERR1 . $A YES,IBERR1 NO @G@@@@ MS )@@G@@ LA A2,RECNMC . $P CURRENT NUMBER OF RECORDS TO A2 @G@@@@MT )@@G@@ TLE A2,A0 . $ RCD# <= CUR # OF RECORDS MU )@@G@@@E@@@@ ER ERR$ . $ NO,EXIT YES @E@@@@MV )@@G@@ ANA,U A0,1 . $P DECREMENT RCD# @G@[@@ MW )@@G@@ SA,H1 A0,0,X10 . $P NEW RECORD NUMBER TO PACKET @G@@@[MX )@@G@@ SA A0,0,X10 . $P NEW RECORD NUMBER TO PACKET MY )@@G@@@G@@@@ LMJ X11,TF$IA . $W TF$IA CALL TEMP FILE INST MZ )@@G@@AFTER @A@[@@ LA,H1 A1,0,X10 .@A@@@[ LA NA )@@G@@ A1,0,X10 .@A@@@@ AA,U A1,1 .@G@[@@ NB )@@G@@ SA,H1 A1,0,X10 . $P RESTORE RCD NUMBER TO PACKET @G@@@[NC )@@G@@ SA A1,0,X10 . $P RESTORE RCD NUMBER TO PACKET ND )@@G@@@C@@@@ J *RETURN . $E EXIT @]@@@@IBERR1 . NE )@@G@@@G@@@@ LA,U A1,1 . $P RETURN NONZERO STATUS NF )@@G@@ @C@@@@ SA,T1 A1,2,X10 . @C@@@@ NG )@@G@@ J *RETURN . $E EXIT @]@@@@$(2) @^@@@@RETURNNH )@@G@@ + 0 @^@@@@ END ___@@@^@)^@)^@)^@)^@)ET[NI )@@G@@ -CAC)^@)^@)CC1 )0 -SAC0*[@@@@*SDFF*@[@@@@$(1) @#@@@@ AXR$ NJ )@@G@@@C@@@@ . DELETE FCN OF TEMP FILE ACCESS METHOD @[@@@@ . @]@@@@NK )@@G@@TF$DLT* . @A@@@@ SX,H2 X11,RETURN @I@@@@ SLNL )@@G@@J FRSTED . $P FLUSH INDEX BUF IF THIS IS FRST EDIT NM )@@G@@@D@[@@ LA,H1 A2,1,X10 . $P RCD#1 TO A2 @D@@@[ NN )@@G@@ LA A2,3,X10 . $P RCD#3 TO A2 @D@[@@ LA,H2 NO )@@G@@ A3,1,X10 . $P RCD#2 TO A3 @D@@@[ LA A3,4,X10 NP )@@G@@ . $P RCD#4 TO A3 @G@@@@ LA A4,RECNMC . $P CUNQ )@@G@@RREN # OF RECORDS TO A4 @D@[@@ TG,U A2,1 .NR )@@G@@ $T RCD#1 < 1 @D@@@[ TG,U A2,1 . $T RCD#3 < NS )@@G@@1 @E@@@@ J DLTGT1 . $A NO,DLTGT1 YES,DLTER1NT )@@G@@@A@@@@ J DLTER1 .@]@@@@DLTGT1 . @G@[@@ NU )@@G@@ TLE A4,A2 . $T RCD#1 <= CURRENT # OF RECORDS @G@@@[NV )@@G@@ TLE A4,A2 . $T RCD#3 <= CURRENT # OF RECORDS NW )@@G@@@E@@@@ J DLTER1 . $A NO,DLTER1 YES @E@[@@NX )@@G@@ TLE A3,A2 . $T RCD#1 <= RCD#2 @E@@@[ NY )@@G@@ TLE A3,A2 . $T RCD#3 <= RCD#4 @E@@@@ J NZ )@@G@@ DLTER1 . $A NO,DLTER1 YES @G@[@@ TG OA )@@G@@ A4,A3 . $T RCD#2 > CURRENT # OF RECORDS @G@@@[ TGOB )@@G@@ A4,A3 . $T RCD#4 > CURRENT # OF RECORDS @E@@@@ OC )@@G@@ J DLTGT2 . $A NO,DLTGT2 YES @G@[@@ LAOD )@@G@@ A3,A4 . $P REPLACE RCD#2 BY CURRENT NUMBER @G@@@[ OE )@@G@@ LA A3,A4 . $P REPLACE RCD#4 BY CURRENT NUMBER @]@@@@OF )@@G@@DLTGT2 . @D@[@@ LA A0,A3 . $P RCD#2 TO A0 OG )@@G@@@D@@@[ LA A0,A3 . $P RCD#4 TO A0 @E@[@@ OH )@@G@@ ANA A0,A2 . $P RCD#2 - RCD#1 TO A0 @E@@@[ ANOI )@@G@@A A0,A2 . $P RCD#4 - RCD#3 TO A0 @G@@@@ AA,U OJ )@@G@@ A0,1 . $P # OF RECORDS DELETED TO A0 @G@[@@ SAOK )@@G@@,H1 A0,0,X10 . $P # OF RECORDS DELETED TO PACKET @G@@@[ OL )@@G@@ SA A0,0,X10 . $P # OF RECORDS DELETED TO PACKET @G@@@@OM )@@G@@ SA,H2 A0,DELSAV . $ # OF REC TO DEL TO H2 OF DELSAV ON )@@G@@@A@@@@ LA A0,A2 .@G@[@@ AN,U A0,1OO )@@G@@ . $P RCD#1 - 1 TO A0 ( RCD#3 ) @G@@@[ AN,U OP )@@G@@ A0,1 . $P RCD#3 - 1 TO A0 ( RCD#2 ) @E@[@@ SAOQ )@@G@@,H2 A0,0,X10 . $P RCD#3 TO PACKET @E@@@[ SA OR )@@G@@ A0,1,X10 . $P RCD#2 TO PACKET @F@[@@ SA,H1 A3,DOS )@@G@@ELSAV . $ RCD#1 TO H1 OF DELSAV @F@@@[ SA,H1 A3,DOT )@@G@@ELSAV . $ RCD#3 TO H1 OF DELSAV @]@@@@DLTLP1 @G@@@@ OU )@@G@@ LA,H1 A3,DELSAV . $P RECORD # TO BE DELETED TO A3 @G@@@@OV )@@G@@ TNZ,H2 DELSAV . $T ARE WE DONE WITH ALL RECORDS OW )@@G@@@E@@@@ J DLTDON . $A YES,DELTON NO @G@@@@OX )@@G@@ LMJ X11,LOCINX . $W LOCINX LOCATE INDEX OF RECORD OY )@@G@@@F@@@@ . WILL RETURN INDEX IN LCINX OZ )@@G@@@E@@@@ . ADDR OF INDEX IN LCINXA@G@@@@PA )@@G@@ . INDEX BLK ADDR IN H2 OF INXPKT+1 PB )@@G@@@F@@@@ . INDEX BLK # IN H2 OF INXPKT PC )@@G@@@D@@@@ SLJ INDXUPD . $W INDXUPD @G@@@@ PD )@@G@@ LA,H2 A0,INXPKT+1 . $P ADDRESS OF INDEX BLOCK TO A0 @G@@@@PE )@@G@@ LA,H2 A1,1,A0 . $P # OF INDICES IN BLOCK TO A1 PF )@@G@@@B@@@@ LA A3,A1 . $ @B@@@@ ANA,U PG )@@G@@ A3,1 . $ @G@@@@ SA,H2 A3,1,A0 . $P UPPH )@@G@@DATE # OF INDICES IN BLK @A@@@@ LA A2,INXREL .PI )@@G@@@A@@@@ AA,U A2,1 .@G@@@@ TNE A1,APJ )@@G@@2 . $T INDEX FOUND WAS LAST INX IN BLK @E@@@@ J PK )@@G@@ DLTGT3 . $A YES,DLTBT3 NO @A@@@@. PREPARE FOR PUSHING INPL )@@G@@DICES UP @G@@@@ TLE A1,A2 . $P INDEX # TO DELPM )@@G@@ETE <= # OF INXS @A@@@@ ER ERR$ .@E@@@@ PN )@@G@@ LX,H2 X8,LCINXA . $P ADDR OF INX TO X8 @B@@@@ AXPO )@@G@@,U X8,2 . @G@@@@ ANA A1,A2 .PP )@@G@@ $P # OF INDICES TO MOVE UP TO A1 @B@@@@ MSI,U A1,2 PQ )@@G@@ . $ @F@@@@ LR R1,A1 . $P # OF WORDS TO PR )@@G@@MOVE TO R1 @G@@@@ LA,U A2,2 . $P # OF LOCATIONSPS )@@G@@ BY WHICH TO PUSH @E@@@@ SZ A0 . $P DIRECTIOPT )@@G@@N CODE TO A0@G@@@@ SLJ IPUSH . $W IPUSH CALL ROUPU )@@G@@TINE TO PUSH INXES@]@@@@DLTGT3 @G@@@@ LX X9,RNDSAV PV )@@G@@ . $P ADDR OF RANDOM TABLE ENTRY TO X9@A@@@@ LA A0,0PW )@@G@@,X9 .@A@@@@ ANA,U A0,1 .@G@@@@ SAPX )@@G@@ A0,0,X9 . $P UPDATE NUM OF ENTRIES IN RNDTAB @A@@@@ PY )@@G@@ LA,H1 A0,DELSAV .@A@@@@ ANA,U A0,1 .PZ )@@G@@@G@@@@ SA,H1 A0,DELSAV . $P UPDATE REC # TO BE DELETEDQA )@@G@@ NEXT @A@@@@ LA,H2 A0,DELSAV .@A@@@@ ANA,U QB )@@G@@ A0,1 .@G@@@@ SA,H2 A0,DELSAV . $P UPD # OQC )@@G@@F RECORDS TO BE DELETED @C@@@@ J DLTLP1 . $J DLQD )@@G@@TLP1 @A@@@@DLTDON . DONE WITH DELETING RECORDS @F@@@@ LA QE )@@G@@ A0,RECNMC . $P UPDATE CUR = OF RECORDS @A@[@@ ANA,H1 QF )@@G@@ A0,0,X10 .@A@@@[ ANA A0,0,X10 .@A@@@@ QG )@@G@@ SA A0,RECNMC .@G@[@@ LA,H2 A0,0,X10 .QH )@@G@@ $P UPDATE CUR REC = TO RCD=1 - 1 @G@@@[ LA A0,1,X10 QI )@@G@@ . $P UPDATE CUR REC = TO RCD=1 - 1 @A@@@@ SA,H2 A0,CQJ )@@G@@URREC .@C@@@@ J *RETURN . $E EXIT @ @@@@QK )@@G@@DLTER1 . ERROR IN DELETE @E@@@@ LA,U A0,1 .QL )@@G@@ $P ERROR STATUS 1 TO A0@F@@@@ SA,T1 A0,2,X10 . $P ERQM )@@G@@ROR STATUS TO PACKET @C@@@@ J *RETURN . $E EXQN )@@G@@IT @[@@@@/ @[@@@@ . @E@@@@ . SUBROUTINE TO MOVE A BLOCK OF INDQO )@@G@@ICES UPWARD OR DOWNWARD @D@@@@ . UPON ENTRY X8 HAS ADDRESS OF BLOCK TO QP )@@G@@BE MOVED @G@@@@ . A2 HAS # OF LOCATIONS BY WHICH BLOCK ISQQ )@@G@@ TO BE PUSHED @D@@@@ . A0 INDICATES DIRECTION 0 = UPWARQR )@@G@@D @D@@@@ . 1 = DOWNWARD @C@@@@QS )@@G@@ . R1 HAS # OF WORDS IN BLOCK @[@@@@ . @]@@@@IPUSH*QT )@@G@@ . @^@@@@ + 0 @F@@@@ JZ A0,IPUSH1 QU )@@G@@ . $T PUSH UPWARD OR DOWNWARD @F@@@@ QV )@@G@@ . $A UPWARD,IPUSH1 DOWNWARD @ @@@@ AX X8,R1 QW )@@G@@@^@@@@ ANX,U X8,1@ @@@@ LX X9,X8 @ @@@@QX )@@G@@ AX X9,A2 @ @@@@ LXI,U X8,-1 @ @@@@QY )@@G@@ LXI,U X9,-1 @ @@@@ BT X9,0,*X8 @ @@@@QZ )@@G@@ J *IPUSH @[@@@@ . @]@@@@IPUSH1 . @A@@@@ RA )@@G@@ LX X9,X8 .@A@@@@ ANX X9,A2 .RB )@@G@@@^@@@@ LXI,U X8,1@^@@@@ LXI,U X9,1@ @@@@ RC )@@G@@ BT X9,0,*X8 @ @@@@ J *IPUSH @[@@@@$(2) RD )@@G@@@G@@@@DELSAV + 0 . H1 HAS 1ST REC = TO BE DELETERE )@@G@@D @G@@@@ . H2 HAS = OF RECS TO BE RF )@@G@@DELETED @A@@@@RETURN + 0 .@#@@@@ ENRG )@@G@@D ___S DELETED TO A0 @G@[@@ SA,H1 A0,0,X10 .RH )@@G@@*[@@@@*SDFF*@[@@@@ . @A@@@@ . ** PRINTL ** @[@@@@RI )@@G@@ . @B@@@@ . REORG EDITOR WORKER ROUTINE @C@@@@ . RJ )@@G@@ TO PRINT LINES FROM THE DATA FILE@[@@@@ . @^@@@@ . CALL IS RK )@@G@@ @A@@@@ . LX,U X10,PARAM @A@@@@ . RL )@@G@@ LMJ X11,PRINTL @^@@@@ . WHERE @D@@@@ . RM )@@G@@ ------------------------------- @D@@@@ . PARAM: 2/4 RN )@@G@@:TYPE: +(PRINTL) : @D@@@@ . :---------------------RO )@@G@@--------: @D@@@@ . : 3 : 0/1: : : RP )@@G@@@D@@@@ . :-----------------------------: @D@@@@ . RQ )@@G@@ : FIELDATA VALUE N, : @D@@@@ . RR )@@G@@ :-- LEFT JUST., BLANK FILLED--: @D@@@@ . :NOT PRESERS )@@G@@NT FOR TYPES 5 - 8 : @D@@@@ . ----------------------RT )@@G@@--------- @[@@@@ . @ @@@@ . TYPE - @C@@@@ . RU )@@G@@ 1 - P N 5 - P! @C@@@@ . 2 - RV )@@G@@PN N 6 - PN! @C@@@@ . 3 - PR N 7 RW )@@G@@- PR! @C@@@@ . 4 - PO N 8 - PO! @[@@@@ . RX )@@G@@@#@@@@ AXR$. @#@@@@$(4) LIT. @A@@@@PF FORM 12,RY )@@G@@6,18 . @]@@@@$(3). @[@@@@ . @C@@@@PRINTL*. RZ )@@G@@ . $H PRINTL @D@@@@ S,H2 X11,RETURN . $P SSA )@@G@@AVE RETURN ADDR @G@@@@ L,U A11,72 . $P SET MARGINS FSB )@@G@@OR 72 OR 132 CHAR LINE @A@@@@ TZ POPT . @A@@@@SC )@@G@@ L,U A11,132 . @A@@@@ L,U A12,12 SD )@@G@@. @A@@@@ TZ POPT . @A@@@@ L,U A12SE )@@G@@,22 . @G@@@@ L,U A10,RDA . $P SET PTR TO STSF )@@G@@ART OF LINE BUFFER @A@@@@ A,U A10,1 . @C@@@@SG )@@G@@ L,S3 A8,0,X10 . $P GET TYPE @F@@@@ TLE,U A8,SH )@@G@@5 . $T IS IT PRINT ALL (TYPE 5-8) ? @C@@@@ J PTLSI )@@G@@1 . $A YES NO,PTL1 @E@@@@ L A7,(-1) . $P SSJ )@@G@@ET LOOP COUNTER NEGATIVE@E@@@@ AN,U A8,4 . $P RESET TSK )@@G@@YPE TO 1 - 4 @E@@@@ SZ LN . $P SET CURRENT LSL )@@G@@INE TO 0 @B@@@@ J PTL4 . $J PTL4 @E@@@@PTL1 SM )@@G@@ DL A0,2,X10 . $P GET FD NUMBER FROM PARAM @G@@@@ SLJSN )@@G@@ FD$BIN . $W FD$BIN - CONVERT FD TO BINARY @A@@@@ SO )@@G@@ L A7,A0 . @F@@@@ TNZ A7 . $T WSP )@@G@@AS A NON-ZERO NUMBER INPUT ? @E@@@@ A,U A7,1 . $P SSQ )@@G@@ET ZERO VALUE TO 1 @F@@@@PTL4 L,U A0,RDA . $P GET ADDSR )@@G@@R OF MC LINE BUFFER @A@@@@ A,U A0,1 . @E@@@@SS )@@G@@ S A0,TFPKT+1 . $P PUT IT IN TF$AM PACKET @E@@@@ ST )@@G@@ L A0,LN . $P GET CURRENT LINE NUMBER @C@@@@ TZ SU )@@G@@ A0 . $T IS IT ZERO ? @C@@@@ AN,U A0,1 SV )@@G@@. $P SUBTRACT 1 @F@@@@ S A0,LN . $P RESTORE NEW VSW )@@G@@ALUE TO LN NUM @G@@@@PTL5 JN A7,$+3 . $P IF PRINT ALL,SX )@@G@@ DON'T CHECK LOOP COUNT @G@@@@ JGD A7,$+2 . $T MORE LISY )@@G@@NES TO BE PRINTED (LP CNT>0)? @E@@@@ J *RETURN . $E RSZ )@@G@@ETURN TO MAIN CONTROL @E@@@@ L A0,LN . $P GET CURTA )@@G@@RENT LINE NUMBER @G@@@@ A,U A0,1 . $P ADD 1 TO GET TB )@@G@@LINE TO BE PRINTED @F@@@@ S A0,LN . $P SAVE NETC )@@G@@W LN AS CURRENT LN NUM @G@[@@ TNE,H1 A0,RDA . $T IS LINETD )@@G@@ PRESENTLY IN LINE BUFFER ? @G@@@[ TNE A0,RDALN . $T ISTE )@@G@@ LINE PRESENTLY IN LINE BUFFER ? @C@@@@ J PTL6 TF )@@G@@. $A NO YES,PTL6 @G@[@@ S,H1 A0,TFPKT . $P PUT LINE NUMBTG )@@G@@ER INTO TF$AM PACKET @G@@@[ S A0,TFPKT . $P PUT LINTH )@@G@@E NUMBER INTO TF$AM PACKET @A@@@@ L,U X10,TFPKT . TI )@@G@@@F@@@@ LMJ X11,TF$RMR . $W TF$RMR - GET LINE FROM T$FILE TJ )@@G@@@E@@@@ TZ STATUS . $T WAS READ SUCCESSFUL ? @C@@@@TK )@@G@@ J PTL7 . $A YES NO,PTL7 @F@[@@ L A0,TL )@@G@@TFPKT . $P GET LINE NUMBER AND LENGTH @D@@@[ L A0,TM )@@G@@TFPKT . $P GET LINE NUMBER @E@[@@ S A0,RDA TN )@@G@@. $P PUT IT IN LINE BUFFER @E@@@[ S A0,RDALN . $P PTO )@@G@@UT IT IN LINE BUFFER @D@@@[ L,H2 A0,TFPKT+2 . $P GET LINTP )@@G@@E LENGTH @E@@@[ S A0,RDA . $P PUT IT IN LINE BUFFTQ )@@G@@ER @A@@@@PTL6 L A0,A8 . @F@@@@ SLJ *PTTR )@@G@@LLST,A0 . $W PERFORM PROPER FORMAT PRINT @B@@@@ J PTLTS )@@G@@5 . $J PTL5 @F@@@@PTL7 SLJ SENDEOF . $W SENDEOFTT )@@G@@ - PRINT E0F MESSAGE @D@@@@ SZ LN . $P SET LN TU )@@G@@TO ZERO @E@@@@ J *RETURN . $E RETURN TO MAIN CONTTV )@@G@@ROL @[@@@@ . @A@@@@PTLLST + 0 . @A@@@@ TW )@@G@@ + PL$P . @A@@@@ + PL$PN . TX )@@G@@@A@@@@ + PL$PR . @A@@@@ + PL$PO TY )@@G@@ . @[@@@@ . @A@@@@ . PRINT FIELDATA ROUTINE @[@@@@TZ )@@G@@ . @B@@@@PL$P + 0 . $H PL$P @D@@@@ L UA )@@G@@ A9,A10 . $P GET BUFFER PTR @E@[@@ L,H2 A5,RDA UB )@@G@@ . $P GET LINE CHAR LENGTH @E@@@[ L A5,RDA UC )@@G@@. $P GET LINE CHAR LENGTH @A@@@@ MSI,U A5,6 . UD )@@G@@@A@@@@P1 E$DIT PEDPKT . @E@@@@ L A1,A11 UE )@@G@@ . $P GET MAX PRT LN SIZE @F@@@@ TG A1,A5 UF )@@G@@. $T IS LINE BIGGER THAN PRT LN ? @F@@@@ L A1,A5 UG )@@G@@. $P SET PRT LN SIZE TO LINE SIZE @G@@@@ AN A5,A1 UH )@@G@@. $P SUBTRACT PRT LN SIZE FROM LINE SIZE @C@@@@ L A0,A9 UI )@@G@@ . $P GET IMAGE PTR@G@@@@ A A9,A12 . $P UPDATE UJ )@@G@@IMAGE PTR FOR NEXT PRT LN @E@@@@ LMJ X11,ECOPY$ . $P CUK )@@G@@OPY IMAGE INTO PTR LN @A@@@@ E$DITX . @D@@@@UL )@@G@@ P$RINT (PF 1,22,PEDBUF) . $P PRINT PRT LN @E@@@@ JNZUM )@@G@@ A5,P1 . $T MORE LINE TO BE PRINTED ?@C@@@@ UN )@@G@@ . $A NO YES,P1 @A@@@@ J *PL$P . $E UO )@@G@@@[@@@@ . @C@@@@ . PRINT FIELDATA WITH NUMBERS ROUTINE @[@@@@UP )@@G@@ . @B@@@@PL$PN + 0 . $H PL$PN @D@@@@ L UQ )@@G@@ A9,A10 . $P GET BUFFER PTR @E@[@@ L,H2 A5,RDA UR )@@G@@ . $P GET LINE CHAR LENGTH @E@@@[ L A5,RDA US )@@G@@. $P GET LINE CHAR LENGTH @A@@@@ MSI,U A5,6 . UT )@@G@@@A@@@@ E$DIT PEDPKT . @D@[@@ L,H1 A0,RDA UU )@@G@@ . $P GET LINE NUMBER @C@[@@ S A0,WORD . $P SUV )@@G@@AVE IT @G@[@@ E$DECF 10,WORD . $P PUT LINE NUMBER INTUW )@@G@@O 1ST PRT LN @G@@@[ E$DECF 10,RDALN . $P PUT LINE NUMBUX )@@G@@ER INTO 1ST PRT LN @A@@@@ E$CHAR ':' . @A@@@@UY )@@G@@ E$SKIP 1 . @G@@@@ L A1,A11 UZ )@@G@@. $P GET # REMAINING CHAR IN 1ST PRT LN @A@@@@ AN,U A1,12 VA )@@G@@ . @G@@@@ TG A1,A5 . $T WILL LINE NOT FIT OVB )@@G@@N 1ST PRT LN ? @F@@@@ L A1,A5 . $P SET PRT LN SIVC )@@G@@ZE TO LINE SIZE @G@@@@ AN A5,A1 . $P SUBTRACT PRT VD )@@G@@LN SIZE FROM LINE SIZE @C@@@@ L A0,A9 . $P GET IMAVE )@@G@@GE PTR@G@@@@ A A9,A12 . $P UPDATE IMAGE PTR FOR NEXTVF )@@G@@ PRT LN @A@@@@ AN,U A9,2 . @E@@@@ LMJVG )@@G@@ X11,ECOPY$ . $P COPY IMAGE INTO PRT LN @A@@@@ E$DITX VH )@@G@@ . @D@@@@ P$RINT (PF 1,22,PEDBUF) . $P PRINT PRT VI )@@G@@LN @E@@@@ JNZ A5,N1 . $T MORE LINE TO BE PRINTED ?VJ )@@G@@@A@@@@ J *PL$PN . $E @A@@@@N1 E$DIT PEDPKT VK )@@G@@ . @E@@@@ L A1,A11 . $P GET MAX PRT LN SIZEVL )@@G@@ @F@@@@ TG A1,A5 . $T IS LINE BIGGER THAN PRT LVM )@@G@@N ? @F@@@@ L A1,A5 . $P SET PRT LN SIZE TO LINE SVN )@@G@@IZE @G@@@@ AN A5,A1 . $P SUBTRACT PRT LN SIZE FROMVO )@@G@@ LINE SIZE @C@@@@ L A0,A9 . $P GET IMAGE PTR@G@@@@VP )@@G@@ A A9,A12 . $P UPDATE IMAGE PTR FOR NEXT PRT LN VQ )@@G@@@E@@@@ LMJ X11,ECOPY$ . $P COPY IMAGE INTO PRT LN @A@@@@VR )@@G@@ E$DITX . @D@@@@ P$RINT (PF 1,22,PEDBUVS )@@G@@F) . $P PRINT PRT LN @E@@@@ JNZ A5,N1 . $T MORE LIVT )@@G@@NE TO BE PRINTED ?@C@@@@ . $A NO YES,N1 VU )@@G@@@A@@@@ J *PL$PN . $E @[@@@@ . @A@@@@ . PRVV )@@G@@INT OCTAL ROUTINE @[@@@@ . @B@@@@PL$PO + 0 VW )@@G@@. $H PL$PO @D@@@@ L A9,A10 . $P GET BUFFER PTR VX )@@G@@@E@[@@ L,H2 A5,RDA . $P GET LINE CHAR LENGTH @E@@@[VY )@@G@@ L A5,RDA . $P GET LINE CHAR LENGTH @A@@@@ VZ )@@G@@ MSI,U A5,6 . @E@@@@ L A4,A12 . $P SWA )@@G@@ET PRT LN WORD LP CNTR @A@@@@ SSL A4,1 . @A@@@@WB )@@G@@ AN,U A4,2 . @A@@@@ E$DIT PEDPKT WC )@@G@@. @D@[@@ L,H1 A0,RDA . $P GET LINE NUMBER @C@[@@WD )@@G@@ S A0,WORD . $P SAVE IT @G@[@@ E$DECF 10WE )@@G@@,WORD . $P PUT LINE NUMBER INTO 1ST PRT LN @G@@@[ E$DWF )@@G@@ECF 10,RDALN . $P PUT LINE NUMBER INTO 1ST PRT LN @A@@@@ WG )@@G@@ E$CHAR ':' . @A@@@@ E$SKIP 1 . WH )@@G@@@B@@@@ J O2 . $J O2 @E@@@@O1 L A4,WI )@@G@@A12 . $P SET PRT LN WORD LP CNTR @A@@@@ SSL A4,1 WJ )@@G@@ . @A@@@@ AN,U A4,1 . @A@@@@ E$DWK )@@G@@IT PEDPKT . @E@@@@O2 L,U A1,6 . $P GET FULWL )@@G@@L WORD SIZE @G@@@@ TG A1,A5 . $T IS MORE THAN WM )@@G@@1 WORD LEFT IN LINE ? @F@@@@ L A1,A5 . $P SET WORWN )@@G@@D SIZE TO LINE SIZE @G@@@@ AN A5,A1 . $P SUBTRACWO )@@G@@T WORD SIZE FROM LINE SIZE @F@@@@ L,U A1,12 . $P GWP )@@G@@ET # OCTAL DIGITS IN WORD @E@@@@ L A0,A9 . $P GWQ )@@G@@ET ADDR OF WORD OF LINE @C@@@@ L A0,0,A0 . $P GET WORWR )@@G@@D @G@@@@ A,U A9,1 . $P UPDATE PTR TO NEXT WORD FWS )@@G@@OR NEXT PRT @E@@@@ LMJ X11,EOCTF$ . $P CONVERT WORD TO OCTWT )@@G@@AL @E@@@@ TZ A5 . $T MORE WORDS IN LINE ? WU )@@G@@@C@@@@ . $A YES NO,O3 @G@@@@ JGDWV )@@G@@ A4,O2 . $T MORE PRT SPACE ON THIS PRT LN ? @C@@@@ WW )@@G@@ E$DITX . $A NO YES,O2 @D@@@@O3 P$RINT (PF 1,22WX )@@G@@,PEDBUF) . $P PRINT PRT LINE @E@@@@ JNZ A5,O1 . $T MWY )@@G@@ORE LINE TO BE PRINTED ?@C@@@@ . $A NO YES,WZ )@@G@@O1 @A@@@@ J *PL$PO . $E @[@@@@ . @A@@@@ . XA )@@G@@ PRINT RECORD ROUTINE @[@@@@ . @B@@@@PL$PR + 0 XB )@@G@@ . $H PL$PR @E@@@@ L X6,A10 . $P SET INDEX TO XC )@@G@@RECORD IMAGE@A@@@@ E$DIT PEDPKT . @E@[@@ L,HXD )@@G@@1 A0,RDA . $P GET DATA FILE LINE NUMBER@A@[@@ S A0,XE )@@G@@WORD . @E@[@@ E$DECF 10,WORD . $P PUT IT IN FIRXF )@@G@@ST PRT LINE @F@@@[ E$DECF 10,RDALN . $P PUT LINE # IN FIRSTXG )@@G@@ PRT LINE @G@@@@ E$COPY 16,RTL . $P PUT 'RECORD TYPE' IXH )@@G@@N 1ST PRT LINE @A@@@@ E$DITX . @D@@@@ XI )@@G@@ TNZ 0,X6 . $T IS DBP VALUE 0 ? @C@@@@ J PCRXJ )@@G@@ . $A NO YES,PCR @D@@@@ L,T1 A1,1,X6 . $P GXK )@@G@@ET RECORD CODE @G@@@@ TNE,T1 A1,NMEBUF . $T IS IT THE SAMXL )@@G@@E AS LAST REC CDE FOUND?@C@@@@ J PR3 . $A NO YES,XM )@@G@@PR3 @G@@@@ L,H2 A0,C8 . $P SET PTR TO FIRST NAME OF XN )@@G@@C8 TABLE @A@@@@ A,U A0,28 . @G@@@@PR1 TNEXO )@@G@@,T1 A1,0,A0 . $T IS THIS ENTRY FOR CURRENT REC CODE ? @C@@@@ XP )@@G@@ J PR2 . $A NO YES,PR2 @F@@@@ L,T3 A2,0,A0 XQ )@@G@@ . $T IS LINK FOR THIS ENTRY 0 ? @C@@@@ JZ A2,ERROR XR )@@G@@ . $A NO YES,ERROR @G@@@@ A A0,A2 . $P ADD LINXS )@@G@@K TO SET PTR TO NEXT C8 ENTRY @B@@@@ J PR1 . $J PXT )@@G@@R1 @G@@@@PR2 LXI,U A0,1 . $P SAVE C8 ENTRY AS LAST RECXU )@@G@@ FOUND @A@@@@ L A1,(1,NMEBUF) . @A@@@@ L,UXV )@@G@@ R1,6 . @A@@@@ BT A1,0,*A0 . @A@@@@XW )@@G@@PR3 E$DITR PEDPKT . @G@@@@ E$COPY 30,NAME XX )@@G@@. $P PUT RECORD NAME IN 1ST PRT LINE @A@@@@ E$DITX XY )@@G@@ . @E@@@@ P$RINT (PF 1,22,PEDBUF) . $P PRINT 1ST PRT LIXZ )@@G@@NE @C@@@@ L A0,0,X6 . $P GET DBP @G@@@@ YA )@@G@@ SLJ DBP$APS . $W DBP$APS - CONVERT IT TO AREA/PG/SLOT @D@@@@YB )@@G@@ L A6,A1 . $P SAVE AREA CODE @E@@@@ L YC )@@G@@ X8,A4 . $P SAVE PTR TO C3 ENTRY @D@@@@ DL A4,YD )@@G@@A2 . $P SAVE PG AND SLOT @C@@@@ S A0,WORD YE )@@G@@. $P SAVE DBP @A@@@@ E$DIT PEDPKT . @G@@@@ YF )@@G@@ E$COPY 6,DBPL . $P PUT 'DBP - ' INTO 2ND PRT LINE @E@@@@YG )@@G@@ E$OCTF 12,WORD . $P PUT DBP INTO 2ND PRT LINE@E@@@@ YH )@@G@@ JZ A6,PR35 . $T IS THIS ARTIFICIAL DBP ? @C@@@@ E$CYI )@@G@@OPY 3,DASH . $A NO YES,PR35 @G@@@@ DL A0,1,X8 YJ )@@G@@. $P PUT AREA NAME INTO 2ND PRT LINE @A@@@@ LMJ X11,EFD2$YK )@@G@@ . @A@@@@ E$CHAR '/' . @F@@@@ E$DYL )@@G@@ECV A4 . $P PUT PG NO INTO 2ND PRT LINE @A@@@@ E$CYM )@@G@@HAR '/' . @F@@@@ E$DECV A5 . $P PUT SLOYN )@@G@@T NO INTO 2ND PRT LINE @A@@@@PR35 E$DITX . @E@@@@YO )@@G@@ P$RINT (PF 1,22,PEDBUF) . $P PRINT 2ND PRT LINE @E@@@@ YP )@@G@@ A,U X6,1 . $P SET PTR TO RECORD HEADER @F@[@@ L,HYQ )@@G@@2 A0,RDA . $P GET DATA FILE IMAGE LENGTH @F@@@[ L YR )@@G@@ A0,RDA . $P GET DATA FILE IMAGE LENGTH @A@@@@ AN,YS )@@G@@U A0,1 . @G@@@@ TE,H2 A0,0,X6 . $T IS THERYT )@@G@@E BOTH AN OLD & NEW RECORD ? @C@@@@ J PR4 . $A NYU )@@G@@O YES,PR4 @E@@@@ L,U A6,2 . $P SET ONE RECORD FLAGYV )@@G@@ @A@@@@ E$DIT PEDPKT . @E@@@@ SLJ PRFYW )@@G@@ORM . $W PRFORM - PRINT OUT RECORD@A@@@@ J *PL$PR YX )@@G@@ . $E @E@@@@PR4 L,U A6,1 . $P SET NEW RECORD FLAGYY )@@G@@ @A@@@@ E$DIT PEDPKT . @A@@@@ E$COPY 4,YZ )@@G@@NEWL . @E@@@@ SLJ PRFORM . $W PRFORM - PRINZA )@@G@@T NEW RECORD@F@@@@ A,H2 X6,0,X6 . $P SET PTR TO OLD RECOZB )@@G@@RD HEADER @E@@@@ SZ A6 . $P SET OLD RECORD FLAGZC )@@G@@ @A@@@@ E$DIT PEDPKT . @A@@@@ E$COPY 4,ZD )@@G@@OLDL . @E@@@@ SLJ PRFORM . $W PRFORM - PRINZE )@@G@@T OLD RECORD@A@@@@ J *PL$PR . $E @A@@@@PCR E$DZF )@@G@@ITR PEDPKT . @E@@@@ L,T1 A0,1,X6 . $P GET CONZG )@@G@@TROL RECORD TYPE @A@@@@ LSSL A0,1 . @E@@@@ ZH )@@G@@ DL A0,CRT,A0 . $P PUT TYPE IN 1ST PRT LINE @A@@@@ LMJZI )@@G@@ X11,EFD2$ . @A@@@@ E$COPY 11,CRL . @E@@@@ZJ )@@G@@ L,T1 A0,1,X6 . $P GET CONTROL RECORD TYPE @E@@@@ ZK )@@G@@ L A0,CRF,A0 . $P GET DATA HEADER WORD @D@@@@ LMJZL )@@G@@ X11,EFD1$ . $P PUT IT IN PRT LN @A@@@@ E$SKIP 1 ZM )@@G@@ . @E@@@@ L A0,2,X6 . $P GET DATA WORD FROM ZN )@@G@@RECORD@E@@@@ LMJ X11,EOCTV$ . $P PUT IT IN PRT LN IN OCTALZO )@@G@@@A@@@@ E$DITX . @E@@@@ P$RINT (PF 1,22ZP )@@G@@,PEDBUF) . $P PRINT 1ST PRT LINE @A@@@@ J *PL$PR ZQ )@@G@@. $E @[@@@@ . @E@@@@ . ROUTINE TO PRINT RECORD - RECORD PTRS ZR )@@G@@IN OCTAL, @E@@@@ . RECORD DATA IN FIEZS )@@G@@LDATA @[@@@@ . @C@@@@PRFORM + 0 . $H PRFORM ZT )@@G@@@G@@@@ E$COPY 16,RHL . $P PUT 'RECORD HEADER' IN NEXT PRTZU )@@G@@ LINE @A@@@@ L,U A1,12 . @G@@@@ L A0,ZV )@@G@@0,X6 . $P PUT RECORD HEADER IN NEXT PRT LINE @A@@@@ LMJZW )@@G@@ X11,EOCTF$ . @A@@@@ E$DITX . @F@@@@ZX )@@G@@ P$RINT (PF 1,22,PEDBUF) . $P PRINT RECORD HEADER LINE @A@@@@ZY )@@G@@ L A0,A6 . @D@@@@ L,T1 A1,0,X6 ZZ )@@G@@. $P GET RECORD CODE @G@@@@ TNE,T1 A1,FDW,A0 . $T IS IT TAA )@@G@@HE SAME AS LAST CODE FOUND ? @C@@@@ J PRF5 . $A NAB )@@G@@O YES,PRF5 @E@@@@PRF1 L,H2 A0,*CN5,A0 . $P GET ADDR OF C5/C11 AC )@@G@@TABLE @E@@@@ TNZ A0 . $T DOES C11 TABLE EXIST ? AD )@@G@@@E@@@@ L,H2 A0,*CN5 . $P GET ADDR OF C5 TABLE @G@@@@AE )@@G@@PRF2 TNE,T1 A1,0,A0 . $T IS THIS ENTRY FOR THIS RECORD ? AF )@@G@@@C@@@@ J PRF4 . $A NO YES,PRF4 @E@@@@ L,TAG )@@G@@3 A2,0,A0 . $T IS LINK TO NEXT ENTRY 0 ?@C@@@@ JZ A2,AH )@@G@@PRF3 . $A NO YES,PRF3 @E@@@@ A A0,A2 . $P RAI )@@G@@ESET PTR TO NEXT ENTRY @B@@@@ J PRF2 . $J PRF2 AJ )@@G@@@G@@@@PRF3 TE,U A6,2 . $T IS THIS 1ST PASS OF ONE RECORD AK )@@G@@CALL ?@C@@@@ J ERROR . $A YES NO,ERROR @F@@@@ AL )@@G@@ L,U A6,3 . $P SET ONE RECORD, 2ND PASS FLAG @A@@@@ AM )@@G@@ SZ A0 . @B@@@@ J PRF1 . $J PAN )@@G@@RF1 @F@@@@PRF4 TNE,U A6,3 . $T IS 2ND PASS FLAG NOT SET AO )@@G@@? @D@@@@ L,U A6,2 . $P SET 1ST PASS FLAG @E@@@@AP )@@G@@ L,T3 A2,1,A0 . $P GET FIRST DATA WORD DISP @A@@@@ AQ )@@G@@ L A0,A6 . @G@@@@ S,T3 A2,FDW,A0 . $P SAR )@@G@@AVE DISP AS LAST RECORD FOUND @A@@@@ S,T1 A1,FDW,A0 AS )@@G@@. @E@@@@PRF5 L,T3 A5,FDW,A0 . $P GET FIRST DATA WORD DISP AT )@@G@@@A@@@@ L A6,A5 . @F@@@@ AN,U A5,1 AU )@@G@@ . $P CONVERT IT TO # RECORD PTRS @E@@@@ JZ A5,PRF8 AV )@@G@@ . $T ARE THERE ANY PTRS ? @C@@@@ L A9,X6 AW )@@G@@. $A YES NO,PRF8 @E@@@@ A,U A9,1 . $P SET PTR TO 1SAX )@@G@@T REC PTR @E@@@@ L A4,A12 . $P SET PRT LN WORD CNTAY )@@G@@R @A@@@@ SSL A4,1 . @A@@@@ AN,U A4,AZ )@@G@@3 . @A@@@@ E$DIT PEDPKT . @E@@@@ BA )@@G@@ E$COPY 13,PTRL . $P PUT PTR HEADER IN PRT LN @B@@@@ J BB )@@G@@ PRF7 . $J PRF7 @E@@@@PRF6 L A4,A12 . $P SBC )@@G@@ET PRT LN WORD CNTR @A@@@@ SSL A4,1 . @A@@@@BD )@@G@@ AN,U A4,2 . @A@@@@ E$DIT PEDPKT BE )@@G@@. @E@@@@PRF7 AN,U A5,1 . $P DECREMENT REC PTR CNT BF )@@G@@@A@@@@ L,U A1,12 . @E@@@@ L A0,A9 BG )@@G@@ . $P GET ADDR OF THIS REC PTR @D@@@@ L A0,0,A0 BH )@@G@@. $P GET REC PTR VALUE @E@@@@ A,U A9,1 . $P SET PTRBI )@@G@@ TO NEXT REC PTR @G@@@@ LMJ X11,EOCTF$ . $P PUT OCTAL VALBJ )@@G@@UE OF REC PTR IN PRT LN @A@@@@ E$SKIP 1 . @D@@@@BK )@@G@@ TZ A5 . $T MORE REC PTRS ? @C@@@@ BL )@@G@@ . $A YES NO,PRF75 @F@@@@ JGD A4,PRF7 BM )@@G@@. $T MORE SPACE ON THIS PRT LN ? @C@@@@ E$DITX BN )@@G@@. $A NO YES,PRF7 @D@@@@PRF75 P$RINT (PF 1,22,PEDBUF) . $P PRINT PRT BO )@@G@@LN @D@@@@ JNZ A5,PRF6 . $T MORE REC PTRS ? @C@@@@BP )@@G@@ . $A NO YES,PRF6 @D@@@@PRF8 L,H2 A5,BQ )@@G@@0,X6 . $P GET RECORD LENGTH @G@@@@ AN A5,A6 BR )@@G@@. $P SUBTRACT FDW DISP TO GET # DATA WORDS@G@@@@ MSI,U A5,6 BS )@@G@@ . $P CONVERT # WORDS TO # CHARACTERS @F@@@@ L A9,BT )@@G@@X6 . $P SET PTR TO FIRST DATA WORD @F@@@@ A A9,BU )@@G@@A6 . $T ANY DATA WORDS IN RECORD ? @C@@@@ JZ A5,BV )@@G@@PRF10 . $A YES NO,PRF10 @A@@@@ E$DIT PEDPKT . BW )@@G@@@E@@@@ E$COPY 6,DATL . $P PUT DATA HEADER IN PRT LN@E@@@@BX )@@G@@ L A1,A11 . $P GET MAX PRT LN SIZE @E@@@@ BY )@@G@@ AN,U A1,6 . $P ADJUST IT FOR HEADER WORD@E@@@@ SZ BZ )@@G@@ A15 . $P SET FIRST LINE FLAG @B@@@@ J PRFCA )@@G@@95 . $J PRF95 @A@@@@PRF9 E$DIT PEDPKT . @E@@@@CB )@@G@@ L A1,A11 . $P GET MAX PRT LN SIZE @F@@@@PRF95 CC )@@G@@ TG A1,A5 . $T IS LINE BIGGER THAN PRT LN ? @F@@@@ CD )@@G@@ L A1,A5 . $P SET PRT LN SIZE TO LINE SIZE @G@@@@ CE )@@G@@ AN A5,A1 . $P SUBTRACT PRT LN SIZE FROM LINE SIZE @E@@@@CF )@@G@@ L A0,A9 . $P GET IMAGE PTR THIS PRT LN@G@@@@ CG )@@G@@ A A9,A12 . $P UPDATE IMAGE PTR FOR NEXT PRT LN @E@@@@CH )@@G@@ JNZ A15,$+3 . $T IS THIS NOT FIRST LINE @E@@@@ CI )@@G@@ AN,U A9,1 . $P ADJUST FOR HEADER WORD @A@@@@ L,UCJ )@@G@@ A15,1 . @E@@@@ LMJ X11,ECOPY$ . $P COPY IMCK )@@G@@AGE INTO PRT LN @A@@@@ E$DITX . @D@@@@ CL )@@G@@ P$RINT (PF 1,22,PEDBUF) . $P PRINT PRT LN @G@@@@ JNZ A5,CM )@@G@@PRF9 . $T MORE LINE LEFT TO BE PRINTED ? @C@@@@ CN )@@G@@ . $A NO YES,PRF9 @A@@@@PRF10 J *PRFORM CO )@@G@@. $E @[@@@@ . @ @@@@ . TABLE ERROR EXIT @[@@@@ . @B@@@@CP )@@G@@ERROR. . $H ERROR @A@@@@ LSSL A1,24 CQ )@@G@@ . @A@@@@ SSL A1,24 . @D@@@@ S CR )@@G@@ A1,WORD . $P SAVE RECORD CODE @E@@@@ E$DIT PEDPKT CS )@@G@@ . $P FORMAT WARNING MESSAGE @A@@@@ E$COPY 20,ERL1 CT )@@G@@. @A@@@@ E$OCTF 5,WORD . @A@@@@ E$COPY 18CU )@@G@@,ERL2 . @A@[@@ L,H1 A0,RDA . @A@[@@ CV )@@G@@ S A0,WORD . @A@[@@ E$DECV WORD . CW )@@G@@@A@@@[ E$DECV RDALN . @A@@@@ E$DITX CX )@@G@@ . @E@@@@ P$RINT (PF 1,22,PEDBUF) . $P PRINT WARNING MECY )@@G@@SSAGE @A@@@@ J *PL$PR . $E @[@@@@ . @[@@@@ . CZ )@@G@@@]@@@@$(4). @A@@@@RETURN + 0 . @A@@@@WORD DA )@@G@@ + 0 . @[@@@@ . @A@@@@NMEBUF + 0 DB )@@G@@ . @A@@@@NAME RES 5 . @[@@@@ . @A@@@@DC )@@G@@FDW + 0 . @A@@@@ + 0 DD )@@G@@. @A@@@@ + 0 . @A@@@@CN5 + C5 DE )@@G@@ . @A@@@@ + C11 . @A@@@@ DF )@@G@@ + C11 . @A@@@@TFPKT + 0 . DG )@@G@@@A@@@@ + 0 . @A@@@@ + 0 DH )@@G@@ . @A@@@@STATUS EQUF TFPKT+2,,T1 . @A@@@@PEDPKT E$PDI )@@G@@KT 22,PEDBUF . @A@@@@EOFLN 'EOF: ' . @A@@@@DJ )@@G@@RTL ': RECORD TYPE - ' . @A@@@@DBPL 'DBP - ' DK )@@G@@. @A@@@@DASH ' - ' . @A@@@@NEWL 'NEW ' DL )@@G@@ . @A@@@@OLDL 'OLD ' . @A@@@@CRT DM )@@G@@ ' ' . @A@@@@ 'AREA ' . DN )@@G@@@A@@@@ 'END-OF-SET ' . @A@@@@ 'OWNER ' DO )@@G@@ . @A@@@[ 'DIRECT ' . @A@@@@CRL ' CDP )@@G@@ONTROL - ' . @A@@@@CRF ' ' . @A@@@@DQ )@@G@@ 'AREA: ' . @A@@@@ 'SET: ' DR )@@G@@. @A@@@@ 'OWNER:' . @A@@@[ 'KEY: ' DS )@@G@@ . @A@@@@RHL 'RECORD HEADER - ' . @A@@@@PTRL DT )@@G@@ 'SET PTRS: ' . @A@@@@DATL 'DATA: ' . DU )@@G@@@A@@@@ERL1 'UNKNOWN RECORD CODE ' . @A@@@@ERL2 ' DETECTED AT LDV )@@G@@INE ' . @A@@@@PEDBUF RES 22 . @A@@@@ ENDDW )@@G@@ . ___ . @E@@@@ E$COPY 13,PTRL DX )@@G@@. $P PUT PTR HEADER IN PRT LN @B@@@@ J PRF7 . $J PDY )@@G@@*[@@@@*SDFF*@]@@@@ . @A@@@@ . ** PERFORM ** DZ )@@G@@@]@@@@ . @G@@@@ . THIS ELEMENT CONTAINS THE PERFORM, RETEA )@@G@@URN, AND GOTO @E@@@@ . WORKER ROUTINES FOR THE REOEB )@@G@@RG EDITOR @]@@@@ . @A@@@@ . PERFORM CALL IS: EC )@@G@@ @A@@@@ . LX,U X10,PARAM @A@@@@ . ED )@@G@@ LMJ X11,PERFORM@^@@@@ . WHERE @E@@@@ . EE )@@G@@ ------------------------------- @E@@@@ . PARAM: EF )@@G@@ 10 : 0 : +(PERFORM) : @E@@@@ . :---------EG )@@G@@--------------------: @E@@@@ . : 6 : EH )@@G@@ : @E@@@@ . :---------------------EI )@@G@@--------: @E@@@@ . : EJ )@@G@@ : @E@@@@ . :-- PROC QUALIFIER --: EK )@@G@@ @E@@@@ . : : EL )@@G@@@E@@@@ . :-----------------------------: @E@@@@EM )@@G@@ . : : @E@@@@ . EN )@@G@@ :-- PROC FILE NAME --: @E@@@@ . EO )@@G@@ : : @E@@@@ . EP )@@G@@ :-----------------------------: @E@@@@ . : EQ )@@G@@ : @E@@@@ . :-- PROC ER )@@G@@ELEMENT NAME --: @D@@@@ . : ES )@@G@@ : @D@@@@ . :---------------------------ET )@@G@@--: @D@@@@ . : : @D@@@@EU )@@G@@ . :-- PROC VERSION --: @D@@@@ . EV )@@G@@ : : @D@@@@ . ----EW )@@G@@--------------------------- @[@@@@ . @ @@@@ . RETURN CALL ISEX )@@G@@: @A@@@@ . LX,U X10,PARAM @G@@@@ . EY )@@G@@ LMJ X11,PRFRET (INTERNAL CALL FROM PERFORM) @^@@@@ . EZ )@@G@@ WHERE @D@@@@ . ------------------------------- FA )@@G@@@D@[@@ . PARAM: 2 : 0 : : @D@@@[ . FB )@@G@@ PARAM: 2 : 0/1: : @D@@@@ . FC )@@G@@ :-----------------------------: @D@@@@ . : 9 : FD )@@G@@ : @D@@@@ . ----------------------FE )@@G@@--------- @C@@@[ . TYPE 0-RETURN, 1-ABORT @[@@@@FF )@@G@@ . @^@@@@ . GOTO CALL IS: @A@@@@ . LX,U X10,PFG )@@G@@ARAM @A@@@@ . LMJ X11,GOTO @^@@@@ . WHEFH )@@G@@RE @D@@@@ . ------------------------------- @D@@@@FI )@@G@@ . PARAM: 3 : 2 : +(GOTO) : @D@@@@ . FJ )@@G@@ :-----------------------------: @D@@@@ . : 7 FK )@@G@@ : : @D@@@@ . :---------------FL )@@G@@--------------: @D@@@@ . : LABEL NUMBER (FD, LFT JUSFM )@@G@@T): @D@@@@ . ------------------------------- @[@@@@FN )@@G@@ . @#@@@@ AXR$. @#@@@@$(4) LIT. @A@@@@PF FORFO )@@G@@M 12,6,18 . @]@@@@$(3). @C@@@@PERFORM*. FP )@@G@@ . $H PERFORM @E@@@@ S,H2 X11,RETURN . $P SAVE FIFQ )@@G@@NAL RETURN ADDR @E@@@@ SZ STKPTR . $P CLEAR NESTED-FR )@@G@@CALL STACK @D@@@@PRFORM S X10,FLNMAD . $P SAVE PACKET ADDR FS )@@G@@@F@@@@ DL A0,6,X10 . $P PUT ELEMENT NAME IN PFS$ PKET FT )@@G@@@A@@@@ DS A0,PFPPKT+2 . @E@@@@ DL A0,8,X10 FU )@@G@@ . $P PUT VERSION IN PFS$ PKET @A@@@@ DS A0,PFPPKT+6 FV )@@G@@. @G@@@@ SZ,T1 PFPPKT+5 . $P ZERO OUT FLAG BITS IN PFSFW )@@G@@$ PKET @G@@@@ LMJ X11,PINITIAL . $W PINITIAL - ASSOCFX )@@G@@IATE INT FILE NAME@E@@@@ JZ A0,NOFIND . $T WAS ASSOCIATIFY )@@G@@ON MADE @C@@@@ . $A YES NO,NOFIND@G@@@@FZ )@@G@@ DS A0,PFPPKT . $P PUT INT FILE NAME IN PFS$ PKET GA )@@G@@@A@@@@ L,U R1,8 . @E@@@@ L A0,FLNMADGB )@@G@@ . $P MOVE PROC NAME TO PBLOCK @A@@@@ A,U A0,2 GC )@@G@@. @A@@@@ LXI,U A0,1 . @A@@@@ L A1,GD )@@G@@(1,PBLOCK) . @A@@@@ BT A1,0,*A0 . @C@@@@ GE )@@G@@ L,U A0,PFPPKT . $P CALL PFS$ @D@@@@ ER PFS$ GF )@@G@@ . $T WAS ELEMENT FOUND @C@@@@ JNZ A2,PFPERR . $A YGG )@@G@@ES NO,PFPERR@F@@@@ L A2,PRCTEP . $P SET PTR FOR PROC TBGH )@@G@@L SEARCH @D@@@@ DL A0,PBLOCK+4 . $P GET ELEMENT NAME GI )@@G@@@E@@@@ L R1,PRCCNT . $P GET # PARSED PROCS @G@@@@GJ )@@G@@TBLSRC SE A0,14,*A2 . $P SEARCH FOR MATCH, 1ST WRD ELT NAME GK )@@G@@@C@@@@ . $T MATCH MADE @C@@@@ J GL )@@G@@ NEWENT . $A YES NO,NEWENT@F@@@@ TE A1,5,A2 GM )@@G@@. $T DOES 2ND WRD ELT NAME MATCH @C@@@@ J TBLSRC GN )@@G@@. $A YES NO,TBLSRC@A@@@@ DL A3,PBLOCK+2 . @E@@@@ GO )@@G@@ DTE A3,2,A2 . $T DOES FILE NAME MATCH @C@@@@ J GP )@@G@@ TBLSRC . $A YES NO,TBLSRC@A@@@@ DL A3,PBLOCK GQ )@@G@@. @E@@@@ DTE A3,0,A2 . $T DOES QUALIFIER MATCH GR )@@G@@@C@@@@ J TBLSRC . $A YES NO,TBLSRC@A@@@@ DL GS )@@G@@ A3,PBLOCK+6 . @E@@@@ DTE A3,6,A2 . $T DOES VEGT )@@G@@RSION MATCH @C@@@@ J TBLSRC . $A YES NO,TBLSRCGU )@@G@@@E@@@@ L,T2 A3,PFPPKT+8 . $P GET CURRENT CYCLE # @E@@@@GV )@@G@@ TE,T2 A3,9,A2 . $T DOES CYCLE # MATCH @C@@@@ GW )@@G@@ J REPRSE . $A YES NO,REPRSE@G@@@@ TNZ,T1 9,A2 GX )@@G@@ . $T WAS THERE A SYNTAX ERR IN LAST PARSE @C@@@@ J EXIGY )@@G@@STS . $A YES NO,EXISTS@G@@@@REPRSE L,H1 A1,8,A2 . $P SGZ )@@G@@ET UP PRIME BLOCK LIMITS FOR REPARSE@A@@@@ S A1,LSTADR HA )@@G@@. @A@@@@ L,H2 A1,8,A2 . @A@@@@ S A1,HB )@@G@@CURADR . @C@@@@ J SETENT . $J SETENT HC )@@G@@@F@@@@NEWENT L A0,PRCCNT . $P GET # CURRENTLY PARSED PROCS HD )@@G@@@D@@@@ TG,U A0,50 . $T IS PROC TBL FULL @C@@@@ HE )@@G@@ J MAXPRC . $A NO YES,MAXPRC@E@@@@ A,U A0,1 HF )@@G@@ . $P INCREMENT PROC COUNT @A@@@@ S A0,PRCCNT HG )@@G@@. @G@@@@ L A0,0,*A2 . $P INCREMENT PRCTBL PTR TO NHH )@@G@@EW ENTRY @A@@@@ L A0,LAST$D . @A@@@@ A,UHI )@@G@@ A0,1 . @E@@@@ S A0,CURADR . $P GET STAHJ )@@G@@RT OF PRIME BLOCK @F@@@@ L,H2 A1,PFPPKT+9 . $P GET SECTOR LEHK )@@G@@NGTH, PROC TEXT @F@@@@ LSSL A1,6 . $P CALCULATE PRIHL )@@G@@ME BLOCK SIZE @A@@@@ A A0,A1 . @E@@@@ HM )@@G@@ S A0,LSTADR . $P SAVE END OF PRIME BLOCK @A@@@@ S HN )@@G@@ A0,LAST$D . @D@@@@ ER MCORE$ . $P MCORE PHO )@@G@@RIME BLOCK @E@@@@SETENT S A2,SAVADR . $P SAVE PROC TBL ENTRYHP )@@G@@ ADDR @A@@@@ LXI,U A2,1 . @E@@@@ L A0,HQ )@@G@@(1,PBLOCK) . $P BUILD PROC TBL ENTRY @A@@@@ L,U R1,9 HR )@@G@@ . @A@@@@ BT A2,0,*A0 . @D@@@@ SZ,HS )@@G@@T1 0,A2 . $P ZERO ERROR FLAG @C@@@@ L,T2 A0,PFPPKTHT )@@G@@+8 . $P SET CYCLE # @A@@@@ S,T2 A0,0,A2 . @E@@@@HU )@@G@@ SZ EOFFLG . $P RESET EOF FLAG IN PINPUT @F@@@@ HV )@@G@@ DL A0,PFPPKT . $P SET INT FILE NAME FOR SDFI @A@@@@ HW )@@G@@ DS A0,SDFPKT . @E@@@@ L A0,PFPPKT+10 . $P SHX )@@G@@ET FILE DISP FOR SDFI @A@@@@ S A0,SDFPKT+5 . @C@@@@HY )@@G@@ L,U A0,SDFPKT . $P OPEN SDFI @D@@@@ LMJ X11HZ )@@G@@,SDFIO . $T OPEN SUCCESSFUL @C@@@@ J SDFERR IA )@@G@@. $A YES NO,SDFERR@A@@@@ L,U A0,SDFPKT . @D@@@@ IB )@@G@@ LMJ X11,SDFI . $P READ FIRST IMAGE @D@@@@ J SDFIC )@@G@@ERR . $T IS THIS SDF FILE @C@@@@ J FILERR ID )@@G@@. $A YES NO,FILERR@A@@@@ SZ,S3 SDFPKT+10 . @A@@@@ IE )@@G@@ L A1,(05001,0,0) . @G@@@@ TE A1,SDFPKT+10 . $T IIF )@@G@@S 1ST IMAGE LABEL FOR FD FILE @C@@@@ J FILERR IG )@@G@@. $A YES NO,FILERR@A@@@@ L A1,('*SDFF*') . @D@@@@ IH )@@G@@ TE A1,INBUF+1 . $T IS LABEL *SDFF* @C@@@@ J FILII )@@G@@ERR . $A YES NO,FILERR@E@@@@ L,U A0,ZERO . $P CIJ )@@G@@LEAR LABEL CHECK BUFFER @A@@@@ L A1,(1,LBLBLK) . @A@@@@IK )@@G@@ L,U R1,280 . @A@@@@ BT A1,0,*A0 IL )@@G@@. @F@@@@ SZ ERRFLG . $P INITIALIZE SYNTAX ERROR FIM )@@G@@LAG @D@@@@ SZ LININC . $P INITIALIZE LINE # @A@@@@IN )@@G@@ L,U A0,1 . @A@@@@ S A0,FLINE IO )@@G@@. @D@@@@PARSLP L A0,FLINE . $P INCREMENT LINE # @A@@@@IP )@@G@@ A A0,LININC . @A@@@@ S A0,FLINE IQ )@@G@@. @A@@@@ L,U X10,INPKT . @G@@@@ LMJ X11IR )@@G@@,PINPUT . $W PINPUT - READ NEXT LINE FROM ELEMENT @E@@@@ TNZIS )@@G@@ LININC . $T WAS FILE ERROR DETECTED @C@@@@ J SDFIT )@@G@@ERR . $A NO YES,SDFERR@G@@@@ LMJ X11,PARSE0 . $P CIU )@@G@@ALL PARSER-0 TO STRIP OFF LABEL @A@@@@ + INBUF IV )@@G@@. @A@@@@ + LABEL . @E@@@@ LMJ X11IW )@@G@@,PARSE . $P CALL PARSER TO PARSE LINE@A@@@@ + INBUF IX )@@G@@ . @A@@@@ + WRKPKT . @E@@@@ SZ IY )@@G@@ SYNCDE . $P RESET SYNTAX ERROR CODE @F@@@@ TZ LABIZ )@@G@@EL . $T DOES LINE NOT HAVE A LABEL @C@@@@ SLJ LBLJA )@@G@@CHK . $W DO LBLCHK @D@@@@ TNZ,S1 WRKPKT+1 . $T WJB )@@G@@AS SYNTAX O.K. @G@@@@ SLJ SYNERR . $W SYNERR - FLAGJC )@@G@@ LINE AS SYNTAX ERROR @G@@@@ TZ ERRFLG . $T HAS SYNJD )@@G@@TAX ERROR OCCURRED IN PROC @C@@@@ J PARSLP . $A NJE )@@G@@O YES,PARSLP@F@@@@ L A0,LABEL . $P SAVE LABEL IN PARSEJF )@@G@@D PACKET @A@@@@ S,H2 A0,WRKPKT+1 . @D@@@@ L JG )@@G@@ A3,WRKPKT . $P GET PACKET LENGTH @A@@@@ SSL A3,24 JH )@@G@@ . @E@@@@ L R1,A3 . $P SAVE AS TRANSFER CNJI )@@G@@T @F@@@@ A A3,CURADR . $P ADD IT TO CURRENT CORE ADJJ )@@G@@DR @G@@@@ L A1,INBUF . $P CONVERT TEXT CHAR LEN TO JK )@@G@@WRD LEN + 1 @A@@@@ A,U A1,6 . @A@@@@ SZ JL )@@G@@ A0 . @A@@@@ DI,U A0,6 . @A@@@@JM )@@G@@ TZ A1 . @A@@@@ A,U A0,1 JN )@@G@@. @A@@@@ S A0,INBUF . @F@@@@ A A3,JO )@@G@@A0 . $P ADD TEXT LENGTH TO CORE ADDR @E@@@@ L A2,JP )@@G@@LSTADR . $P GET LAST ADDR OF BLOCK @E@@@@ TG A2,A3 JQ )@@G@@ . $T WILL LINE FIT IN BLOCK @C@@@@ J STORE JR )@@G@@. $A NO YES,STORE @E@@@@ AN A3,CURADR . $P GET TOTAL LINJS )@@G@@E LENGTH @F@@@@ A,U A3,1 . $P ADD 1 FOR END-OF-BLJT )@@G@@OCK FLAG @A@@@@ L A2,CURADR . @A@@@@ L JU )@@G@@ A0,LAST$D . @A@@@@ AU,U A0,1 . @G@@@@JV )@@G@@ S A1,0,A2 . $P SET BLOCK LINK IN END-OF-BLOCK FLAG JW )@@G@@@F@@@@ S A1,CURADR . $P SAVE START ADDR OF NEW BLOCK JX )@@G@@@E@@@@ TLE,U A3,64 . $T IS LINE SIZE > 64 WORDS @E@@@@JY )@@G@@ L,U A3,64 . $P SET NEW BLOCK SIZE TO 64 @A@@@@ JZ )@@G@@ A A0,A3 . @D@@@@ ER MCORE$ . $P MKA )@@G@@CORE NEW BLOCK @A@@@@ S A0,LAST$D . @F@@@@ KB )@@G@@ S A0,LSTADR . $P SAVE END ADDR OF NEW BLOCK @A@@@@STORE KC )@@G@@ L A2,CURADR . @A@@@@ LXI,U A2,1 . KD )@@G@@@E@@@@ L A0,(1,WRKPKT) . $P SAVE PARSED PACKET @A@@@@KE )@@G@@ BT A2,0,*A0 . @D@@@@ L A0,INBUF KF )@@G@@. $P GET TEXT LENGHT @E@@@@ L R1,A0 . $P SAVE ASKG )@@G@@ TRANSFER CNT @D@@@@ LSSL A0,24 . $P FORMAT TEXT LKH )@@G@@INK @A@@@@ A A0,FLINE . @A@@@@ S A0,KI )@@G@@INBUF . @A@@@@ L A0,(1,INBUF) . @D@@@@ KJ )@@G@@ BT A2,0,*A0 . $P SAVE LINE TEXT @A@@@@ LXI,U A2,KK )@@G@@0 . @F@@@@ S A2,CURADR . $P SAVE CORE PTRKL )@@G@@ FOR NEXT LINE @C@@@@ J PARSLP . $J PARSLP KM )@@G@@@A@@@@FLUSH L A0,CURADR . @E@@@@ SZ 0,A0 KN )@@G@@ . $P SET END-OF-PROC FLAG @A@@@@ L,U A0,SDFPKT KO )@@G@@. @C@@@@ LMJ X11,SDFIC . $P CLOSE SDFI @A@@@@ KP )@@G@@ L,U A1,1 . @F@@@@ TNE A1,FLINE . $T WKQ )@@G@@ERE THERE ANY LINES IN PROC @E@@@@ S A1,ERRFLG . $P SKR )@@G@@ET SYNTAX ERROR FLAG @F@@@@ L A2,SAVADR . $P GET ADDKS )@@G@@R OF PROC TBL ENTRY @A@@@@ L A1,ERRFLG . @G@@@@KT )@@G@@ S,T1 A1,9,A2 . $P SET ERROR FLAG IN ENTRY IF SYNTAX ERRKU )@@G@@@E@@@@ TZ ERRFLG . $T WAS THERE A SYNTAX ERROR @C@@@@KV )@@G@@ J NOXEQ . $A NO YES,NOXEQ @G@@@@EXISTS L,H2 A0,KW )@@G@@8,A2 . $P GET START ADDR OF PROC PACKETS @A@@@@ S KX )@@G@@ A0,TBLADR . @A@@@@ S A0,CURADR . @E@@@@KY )@@G@@ TNZ STKPTR . $T IS THIS NESTED PERFORM @C@@@@ KZ )@@G@@ J XEQ . $A YES NO,XEQ @D@@@@ TNZ LOPT LA )@@G@@ . $T IS LIST MODE ON @C@@@@ J XEQ . $A YLB )@@G@@ES NO,XEQ @E@@@@ E$DIT PREPKT . $P PRINT ENTERING PROCLC )@@G@@ MSG @A@@@@ E$COPY 20,ENM1 . @A@@@@ SLJ BLDLD )@@G@@NME . @A@@@@ E$DITX . @A@@@@ LE )@@G@@ P$RINT (PF 1,22,PREBUF) . @B@@@@ J XEQ . $J XLF )@@G@@EQ @E@@@@XEQLP L A0,CURADR . $P GET ADDR OF LAST PKET LG )@@G@@@E@@@@ L A1,0,A0 . $P GET LENGTH OF LAST PKET @A@@@@LH )@@G@@ SSL A1,24 . @E@@@@ A A0,A1 LI )@@G@@. $P GET ADDR OF LAST TEXT @E@@@@ L A1,0,A0 . $P GLJ )@@G@@ET LENGTH OF LAST TEXT @A@@@@ SSL A1,24 . @E@@@@LK )@@G@@ A A0,A1 . $P GET ADDR OF NEXT PKET @A@@@@ LL )@@G@@ S A0,CURADR . @E@@@@ TZ,T1 0,A0 . $T ILM )@@G@@S THIS END-OF-BLOCK FLAG@C@@@@ J XEQ . $A YES NO,LN )@@G@@XEQ @E@@@@ TNZ 0,A0 . $T IS THIS END-OF-PROC FLAG LO )@@G@@@C@@@@ J PRFRET . $A NO YES,PRFRET@F@@@@ L LP )@@G@@ A0,0,A0 . $P RESET POINTER TO NEXT BLOCK @A@@@@ S LQ )@@G@@ A0,CURADR . @E@@@@XEQ L X10,CURADR . $P GET PARLR )@@G@@SED PKET ADDR @D@@@@ TNZ LOPT . $T IS LIST MODE LS )@@G@@ON ? @C@@@@ J XEQWKR . $A YES NO,XEQWKR@D@@@@ LT )@@G@@ L,H2 A0,1,X10 . $P GET LINE LABEL @A@@@@ S A0,LU )@@G@@LABEL . @E@@@@ L,S1 A1,1,X10 . $P GET PKET FUNCLV )@@G@@TION CODE @F@@@@ TNE,U A1,15 . $T IS THIS AN UNLABELELW )@@G@@D COMMENT @C@@@@ JZ A0,XEQWKR . $A NO YES,XEQWKR@D@@@@LX )@@G@@ L A0,0,X10 . $P GET ADDR OF TEXT @A@@@@ SSLLY )@@G@@ A0,24 . @A@@@@ A X10,A0 . @E@@@@LZ )@@G@@ SLJ P$LPRT . $W P$LPRT - PRINT THE LINE @E@@@@ MA )@@G@@ L X10,CURADR . $P GET PARSED PKET ADDR @E@@@@XEQWKR* L,SMB )@@G@@1 A0,1,X10 . $P GET PKET FUNCTION CODE @A@@@@ TG,U A0,MC )@@G@@16 . @A@@@@ SZ A0 . @F@@@@ MD )@@G@@ LMJ X11,*WKRAD,A0 . $W EXECUTE PROPER WORKER ROUTINE @F@@@@ ME )@@G@@ TZ FATAL . $T DID FATAL ERROR OCCUR IN WKR @C@@@@ MF )@@G@@ J FTLERR . $A NO YES,FTLERR@B@@@@ J XEQLP MG )@@G@@ . $J XEQLP @A@@@@ . WORKER ROUTINE ADDRESS @]@@@@WKRAD.MH )@@G@@ @A@@@@ + WKRERR . @A@@@@ + LOCMI )@@G@@ATE$ . @A@@@@ + INSERT . @A@@@@ MJ )@@G@@ + PRINTL . @A@@@@ + PRINTV . MK )@@G@@@A@@@@ + WKRERR . PROC@B@@@@ + PRFWKR ML )@@G@@ . PERFORM @A@@@@ + GOTO . @A@@@@ MM )@@G@@ + IFWKR . @B@@@@ + PRFRET . RETUMN )@@G@@RN @A@@@@ + LET . @A@@@@ + CALMO )@@G@@L$WK . @A@@@@ + EDIT$WK . @A@@@@ MP )@@G@@ + INTRP . @A@@@@ + CHANGE$ . MQ )@@G@@@A@@@@ + COMMNT . @]@@@@$(3). @C@@@@COMMNTMR )@@G@@. WORKER ROUTINE TO NO-OP COMMENT LINES @A@@@@ SZ FATAL MS )@@G@@ . @A@@@@ J 0,X11 . @E@@@@PRFWKR. WOMT )@@G@@RKER ROUTINE TO HANDLE PERFORMS WITHIN PROCS @G@@@@ L A0,MU )@@G@@STKPTR . $P INCREMENT # ENTRIES ON PERFORM STACK @A@@@@ AU,MV )@@G@@U A0,1 . @A@@@@ S A1,STKPTR . @F@@@@MW )@@G@@ MSI,U A0,10 . $P GET NEXT AVAIL ADDR ON STACK @A@@@@MX )@@G@@ A,U A0,STACK . @A@@@@ LXI,U A0,1 MY )@@G@@. @A@@@@ L,U R1,10 . @A@@@@ L A1,MZ )@@G@@(1,PBLOCK) . @E@@@@ BT A0,0,*A1 . $P MOVE PBLOCK TNA )@@G@@O THE STACK @A@@@@ L A0,STKPTR . @D@@@@ TG,NB )@@G@@U A0,50 . $T IS STACK FULL ? @C@@@@ J MXDPTH NC )@@G@@ . $A NO YES,MXDPTH@C@@@@ J PRFORM . $J PRFORM ND )@@G@@ @[@@@@ . @A@@@@PRFRET. RETURN WORKER ROUTINE @E@@@[ NE )@@G@@ L,S3 A0,0,X10 . $P GET TYPE OF RETURN @E@@@[ TNENF )@@G@@,U A0,1 . $T IS THIS RETURN OR ABORT @E@@@[ J PRFNG )@@G@@ABT . $A RETURN ABORT,PRTABT @D@@@@ L A0,STKPTRNH )@@G@@ . $P GET PERFORM DEPTH @G@@@@ TNZ A0 . $T INI )@@G@@S THIS PERFORM WITHIN PERFORM ? @E@@@@ J *RETURN NJ )@@G@@. $E RETURN CONTROL TO USER @E@@@@ AN,U A0,1 . $P DNK )@@G@@ECREMENT DEPTH NUMBER @A@@@@ S A0,STKPTR . @F@@@@NL )@@G@@ MSI,U A0,10 . $P GET ADDR LAST ENTRY ON STACK @A@@@@NM )@@G@@ A,U A0,STACK . @A@@@@ LXI,U A0,1 NN )@@G@@. @A@@@@ L,U R1,10 . @A@@@@ L A1,NO )@@G@@(1,PBLOCK) . @F@@@@ BT A1,0,*A0 . $P MOVE STACK ENNP )@@G@@TRY TO PBLOCK @G@@@@ TZ FATAL . $T DID FATAL ERRNQ )@@G@@OR OCCUR IN SBRTN @C@@@@ J FTLERR . $A NO YES,NR )@@G@@FTLERR@D@@@@ TNZ LOPT . $T IS LIST MODE ON @C@@@@NS )@@G@@ J XEQLP . $A YES NO,XEQLP @F@@@@ E$DIT PRENT )@@G@@PKT . $P PRINT RETURNING TO PROC MSG @A@@@@ E$COPY 24NU )@@G@@,RTM1 . @A@@@@ SLJ BLDNME . @A@@@@ NV )@@G@@ E$DITX . @A@@@@ P$RINT (PF 1,22,PREBUF) . NW )@@G@@@B@@@@ J XEQLP . $J XEQLP @[@@@@ . @A@@@[PRFABTNX )@@G@@. ABORT WORKER ROUTINE @D@@@[ L,U A0,1 . $P SNY )@@G@@ET FATAL FLAG @A@@@[ S A0,FATAL . @E@@@[ NZ )@@G@@ P$RINT (PF 5,8,ABTM1) . $P PRINT ABORT MESSAGE @A@@@[ P$ROA )@@G@@INT (PF 1,8,ABTM2) . @A@@@[ P$RINT (PF 1,8,ABTM1) . @A@@@[OB )@@G@@ P$RINT (PF 3,0,ABTM1) . @C@@@[ J FTLERR OC )@@G@@. $J FTLERR @[@@@[ . @^@@@@ . ERROR ROUTINES@[@@@@ . OD )@@G@@@E@@@@NOFIND. PROC NAME NOT IN PROC FILE . $H NOFIND @E@@@@OE )@@G@@ E$DIT PREPKT . $P FORMAT ERROR MESSAGE @A@@@@ OF )@@G@@ E$COPY 20,NFM1 . @A@@@@ L X8,FLNMAD . OG )@@G@@@A@@@@ L,S1 A0,2,X8 . @A@@@@ TNE,U A0,' ' OH )@@G@@ . @A@@@@ J NFND3 . @A@@@@ TNEOI )@@G@@,U A0,'*' . @A@@@@ J NFND2 . @A@@@@OJ )@@G@@ DL A0,2,X8 . @A@@@@ LMJ X11,EFD2$ OK )@@G@@. @A@@@@NFND2 E$CHAR '*' . @A@@@@NFND3 DL A0,OL )@@G@@4,X8 . @A@@@@ LMJ X11,EFD2$ . @A@@@@ OM )@@G@@ E$CHAR '.' . @A@@@@ DL A0,6,X8 . ON )@@G@@@A@@@@ LMJ X11,EFD2$ . @A@@@@ L,U A0,' ' OO )@@G@@ . @A@@@@ TNE,S1 A0,8,X8 . @A@@@@ J OP )@@G@@ NFND4 . @A@@@@ E$CHAR '/' . @A@@@@OQ )@@G@@ DL A0,8,X8 . @A@@@@ LMJ X11,EFD2$ OR )@@G@@. @A@@@@NFND4 E$COPY 10,NFM2 . @A@@@@ E$DITX OS )@@G@@ . @D@@@@ P$RINT (PF 1,22,PREBUF) . $P PRINT MESSOT )@@G@@AGE @E@@@@ L,U A0,1 . $P SET FATAL ERROR FLAG OU )@@G@@@A@@@@ S A0,FATAL . @C@@@@ J PRFRET OV )@@G@@ . $J PRFRET @[@@@@ . @C@@@@LBLCHK. LABEL CHECK OW )@@G@@. $H LBLCHK @A@@@@ + 0 . @A@@@@ OX )@@G@@ L A1,LABEL . @E@@@@ TG,U A1,10000 . $T IOY )@@G@@S LABEL VALUE > 10,000 @C@@@@ J MAXLBL . $A NO YES,OZ )@@G@@MAXLBL@F@@@@ AN,U A1,1 . $P GET INDEX TO LABEL CHK BIPA )@@G@@T @A@@@@ SZ A0 . @A@@@@ DI,U A0,PB )@@G@@36 . @D@@@@ L A2,LBLBLK,A0 . $P GET LABEL CHKPC )@@G@@ BIT @A@@@@ SSC A2,0,A1 . @E@@@@ JB A2,PD )@@G@@DUPLBL . $T IS LABEL BIT ALREADY SET @C@@@@ PE )@@G@@ . $A NO YES,DUPLBL@D@@@@ A,U A2,1 . $P SET LABPF )@@G@@EL CHK BIT @A@@@@ LSSC A2,0,A1 . @A@@@@ S PG )@@G@@ A2,LBLBLK,A0 . @A@@@@ J *LBLCHK . $E @F@@@@PH )@@G@@DUPLBL L,U A0,1 . $P SET DUP LBL SYNTAX ERR CODE @A@@@@PI )@@G@@ S A0,SYNCDE . @E@@@@ SZ,S1 WRKPKT+1 PJ )@@G@@. $P SET SYNTAX ERROR FLAG @A@@@@ J *LBLCHK . $E PK )@@G@@@F@@@@MAXLBL L,U A0,2 . $P SET MAX LBL SYNTAX ERR CODE PL )@@G@@@A@@@@ S A0,SYNCDE . @E@@@@ SZ,S1 WRKPKT+1 PM )@@G@@ . $P SET SYNTAX ERROR FLAG @A@@@@ J *LBLCHK PN )@@G@@. $E @[@@@@ . @C@@@@SYNERR. SYNTAX ERROR . $H SYNERR PO )@@G@@@A@@@@ + 0 . @F@@@@ TZ ERRFLG PP )@@G@@ . $T IS THIS FIRST SYNTAX ERROR ? @C@@@@ J SYN2 PQ )@@G@@ . $A YES NO,SYN2 @F@@@@ E$DIT PREPKT . $P FORMAT PR )@@G@@PROC SYN ERR HEADER @A@@@@ E$COPY 24,SNM1 . @A@@@@PS )@@G@@ SLJ BLDNME . @A@@@@ E$SKIP 1 PT )@@G@@. @A@@@@ E$CHAR ':' . @A@@@@ E$DITX PU )@@G@@ . @D@@@@ P$RINT (PF 1,22,PREBUF) . $P PRINT HEADPV )@@G@@ER @E@@@@ L,U A0,1 . $P SET SYNTAX ERROR FLAG PW )@@G@@@A@@@@ S A0,ERRFLG . @E@@@@SYN2 L A1,INBUF PX )@@G@@ . $W P$LPRT - PRINT BAD LINE @A@@@@ A,U A1,6 PY )@@G@@. @A@@@@ SZ A0 . @A@@@@ DI,U A0,PZ )@@G@@6 . @A@@@@ TZ A1 . @A@@@@ QA )@@G@@ A,U A0,1 . @A@@@@ SZ INBUF . QB )@@G@@@A@@@@ S,T1 A0,INBUF . @A@@@@ L A0,FLINE QC )@@G@@ . @A@@@@ S,H2 A0,INBUF . @A@@@@ L,UQD )@@G@@ X10,INBUF . @A@@@@ SLJ P$LPRT . @E@@@@QE )@@G@@ L A0,SYNCDE . $P PRINT SYNTAX TYPE LINE @A@@@@ QF )@@G@@ L A0,SNMLST,A0 . @A@@@@ ER PRINT$ . QG )@@G@@@A@@@@ J *SYNERR . $E @[@@@@ . @E@@@@NOXEQ. TERQH )@@G@@MINATE EXECUTION DUE TO SYNTAX ERR . $H NOXEQ @A@@@@ L A0,QI )@@G@@FLINE . @F@@@@ TE,U A0,1 . $T WERE THERE ANQJ )@@G@@Y LINES IN PROC @C@@@@ J NOX2 . $A NO YES,NOX2 QK )@@G@@@E@@@@ E$DIT PREPKT . $P PRINT NO-LINES MSG @A@@@@QL )@@G@@ E$COPY 23,NXM2 . @A@@@@ SLJ BLDNME QM )@@G@@. @A@@@@ E$DITX . @A@@@@ P$RINT (PQN )@@G@@F 1,22,PREBUF) . @E@@@@NOX2 P$RINT (PF 1,7,NXM1) . $P PRINT TERM MEQO )@@G@@SSAGE @E@@@@ L,U A0,1 . $P SET FATAL ERROR FLAQP )@@G@@G @A@@@@ S A0,FATAL . @C@@@@ J PRFQQ )@@G@@RET . $J PRFRET @[@@@@ . @C@@@@WKRERR. ILLEGAL WORKERQR )@@G@@ CODE . $H WKRERR @E@@@@ P$RINT (PF 1,4,WKM1) . $P PRINT IQS )@@G@@LLEGAL WKR MESSAGE@E@@@@ L,U A0,1 . $P SET FATAL ERRQT )@@G@@OR FLAG @A@@@@ S A0,FATAL . @C@@@@ J QU )@@G@@ FTLERR . $J FTLERR @[@@@@ . @C@@@@MXDPTH. MAX DEPTH QV )@@G@@OF PERFORMS . $H MXDPTH @E@@@@ P$RINT (PF 1,6,MDM1) . $P PQW )@@G@@RINT ERROR MESSAGE @E@@@@ L,U A0,1 . $P SET FATQX )@@G@@AL ERROR FLAG @A@@@@ S A0,FATAL . @C@@@@ QY )@@G@@ J FTLERR . $J FTLERR @[@@@@ . @A@@@@ . FAQZ )@@G@@TAL ERROR EXIT ROUTINE @[@@@@ . @E@@@@FTLERR E$DIT PREPKT RA )@@G@@. $P PRINT FATAL ERROR MESSAGE@A@@@@ E$COPY 23,FTLM1 . RB )@@G@@@A@@@@ SLJ BLDNME . @A@@@@ E$COPY 21,FTLM2RC )@@G@@ . @A@@@@ E$DITX . @A@@@@ P$RRD )@@G@@INT (PF 1,22,PREBUF) . @A@@@@ L X10,CURADR . @A@@@@RE )@@G@@ L,H2 A0,1,X10 . @A@@@@ S A0,LABEL RF )@@G@@. @A@@@@ L A0,0,X10 . @A@@@@ SSL A0,RG )@@G@@24 . @A@@@@ A X10,A0 . @E@@@@ RH )@@G@@ SLJ P$LPRT . $W P$LPRT - PRINT BAD LINE @E@@@@ L RI )@@G@@ A7,STKPTR . $P GET PERFORM NEST DEPTH @C@@@@ JGD A7,RJ )@@G@@$+2 . $T IS DEPTH > 0 @C@@@@ J *RETURN . $E RRK )@@G@@ETURN @A@@@@ P$RINT (PF 1,7,MDM2) . @E@@@@ L,URL )@@G@@ X7,STACK . $P PRINT PERFORM HISTORY @A@@@@MDLP1 E$DIT PRERM )@@G@@PKT . @A@@@@ E$COPY 4,DASH . @A@@@@ RN )@@G@@ L,H2 A0,8,X7 . @A@@@@ L A1,0,A0 . RO )@@G@@@A@@@@ SSL A1,24 . @A@@@@ A A0,A1 RP )@@G@@ . @A@@@@ L,H2 A0,0,A0 . @A@@@@ L,URQ )@@G@@ A1,4 . @A@@@@ LMJ X11,EDECF$ . @A@@@@RR )@@G@@ E$COPY 4,DASH2 . @A@@@@ L A0,X7 RS )@@G@@. @A@@@@ DL A0,0,A0 . @A@@@@ LMJ X11RT )@@G@@,EFD2$ . @A@@@@ E$CHAR '*' . @A@@@@ RU )@@G@@ L A0,X7 . @A@@@@ A,U A0,2 . RV )@@G@@@A@@@@ DL A0,0,A0 . @A@@@@ LMJ X11,EFD2$RW )@@G@@ . @A@@@@ E$CHAR '.' . @A@@@@ L RX )@@G@@ A0,X7 . @A@@@@ A,U A0,4 . @A@@@@RY )@@G@@ DL A0,0,A0 . @A@@@@ LMJ X11,EFD2$ .RZ )@@G@@ @A@@@@ E$CHAR '/' . @A@@@@ L A0,SA )@@G@@X7 . @A@@@@ A,U A0,6 . @A@@@@ SB )@@G@@ DL A0,0,A0 . @A@@@@ LMJ X11,EFD2$ . SC )@@G@@@A@@@@ A,U X7,10 . @A@@@@ E$DITX SD )@@G@@ . @A@@@@ P$RINT (PF 1,22,PREBUF) . @A@@@@ JGDSE )@@G@@ A7,MDLP1 . @E@@@@ J *RETURN . $E RETURN SF )@@G@@CONTROL TO USER @[@@@@ . @A@@@@ . ROUTINE TO PRINT TEXT LINE SG )@@G@@@[@@@@ . @C@@@@P$LPRT + 0 . $H P$LPRT @E@@@@SH )@@G@@ L A5,0,X10 . $P GET LINE WORD LENGTH @A@@@@ SI )@@G@@ SSL A5,24 . @A@@@@ AN,U A5,1 . SJ )@@G@@@E@@@@ MSI,U A5,6 . $P CALCULATE CHAR LENGTH @A@@@@SK )@@G@@ AN,U A5,1 . @A@@@@ SZ A4 SL )@@G@@. @G@@@@ DI,U A4,60 . $P CALCULATE # PRINT LINES NSM )@@G@@EEDED @F@@@@ A,U A5,1 . $P SET FINAL PRINT LINSN )@@G@@E LENGTH @A@@@@ L A7,X10 . @G@@@@ A,USO )@@G@@ A7,1 . $P SET PTR TO START OF LINE IMAGE @A@@@@ SP )@@G@@ E$DIT PREPKT . @A@@@@ E$CHAR '#' . SQ )@@G@@@A@@@@ L,H2 A0,0,X10 . @A@@@@ L,U A1,4 SR )@@G@@ . @C@@@@ LMJ X11,EDECF$ . $P OUTPUT LINE #@A@@@@SS )@@G@@ E$CHAR ':' . @F@@@@ TNZ LABEL ST )@@G@@. $T DOES LINE NOT HAVE A LABEL @A@@@@ J P$LP01 SU )@@G@@. @C@@@@ E$DECF 5,LABEL . $P OUTPUT LABEL @A@@@@ SV )@@G@@ E$SKIP 1 . @A@@@@ J P$LP02 . SW )@@G@@@A@@@@P$LP01 E$SKIP 6 . @G@@@@P$LP02 JZ A4,P$LP3 SX )@@G@@ . $T IS MORE THAN 1 PRINT LINE NEEDED ? @A@@@@ AN,U A4,SY )@@G@@1 . @E@@@@ J P$LP2 . $A NO,P$LP3 YES,SZ )@@G@@P$LP2 @A@@@@P$LP1 E$DIT PREPKT . @D@@@@ E$CTA )@@G@@OL 12 . $P SET LEFT MARGIN @E@@@@P$LP2 L,U A1,60 TB )@@G@@ . $P SET TO COPY 60 CHARACTERS@A@@@@ L A0,A7 TC )@@G@@. @G@@@@ A,U A7,10 . $P UPDATE IMAGE PTR FOR NEXTTD )@@G@@ PRINT LINE @F@@@@ LMJ X11,ECOPY$ . $P COPY IMAGE TO PRINTTE )@@G@@ BUFFER @A@@@@ E$DITX . @C@@@@ P$RTF )@@G@@INT (PF 1,12,PREBUF) . $P PRINT LINE@G@@@@ JGD A4,P$LP1 TG )@@G@@. $T MORE PRINT LINES NEEDED (>1) ? @C@@@@ TH )@@G@@ . $A NO YES,P$LP1 @G@@@@ E$DIT PREPKT . $P SET UP TI )@@G@@TO PRINT LAST PRINT LINE @D@@@@ E$COL 12 . $P STJ )@@G@@ET LEFT MARGIN @E@@@@P$LP3 L A1,A5 . $P GET # CHARACTTK )@@G@@ERS IN LINE @E@@@@ L A0,A7 . $P GET LINE IMAGE PTR TL )@@G@@ @F@@@@ LMJ X11,ECOPY$ . $P COPY IMAGE TO PRINT BUFFETM )@@G@@R @A@@@@ E$DITX . @C@@@@ P$RINT (PTN )@@G@@F 1,12,PREBUF) . $P PRINT LINE@C@@@@ J *P$LPRT . $E RTO )@@G@@ETURN @[@@@@ . @[@@@@ . @G@@@@BLDNME + 0 TP )@@G@@. ROUTINE TO BUILD PROC NAME FOR ERROR MSG@A@@@@ L,S1 A0,PBLOCKTQ )@@G@@ . @A@@@@ TNE,U A0,' ' . @A@@@@ J TR )@@G@@ BNME3 . @A@@@@ TNE,U A0,'*' . @A@@@@TS )@@G@@ J BNME2 . @A@@@@ DL A0,PBLOCK TT )@@G@@. @A@@@@ LMJ X11,EFD2$ . @A@@@@BNME2 E$CHAR '*TU )@@G@@' . @A@@@@BNME3 DL A0,PBLOCK+2 . @A@@@@ TV )@@G@@ LMJ X11,EFD2$ . @A@@@@ E$CHAR '.' . TW )@@G@@@A@@@@ DL A0,PBLOCK+4 . @A@@@@ LMJ X11,EFD2$TX )@@G@@ . @A@@@@ L,U A0,' ' . @A@@@@ TNETY )@@G@@,S1 A0,PBLOCK+6 . @A@@@@ J *BLDNME . @A@@@@TZ )@@G@@ E$CHAR '/' . @A@@@@ DL A0,PBLOCK+6 UA )@@G@@. @A@@@@ LMJ X11,EFD2$ . @A@@@@ J *BLUB )@@G@@DNME . @[@@@@ . @[@@@@ . @D@@@@MAXPRC. MAX NUMBER OF EUC )@@G@@LEMENTS PARSED . $H MAXPRC @E@@@@ P$RINT (PF 1,7,MPM1) . $PUD )@@G@@ PRINT ERROR MESSAGE @A@@@@ L,U A0,1 . @A@@@@UE )@@G@@ S A0,FATAL . @A@@@@ J FTLERR UF )@@G@@. @[@@@@ . @[@@@@ . @C@@@@FILERR. ELEMENT NOT FD SDFF . $H FUG )@@G@@ILERR @G@@@@ E$DIT PREPKT . $P FORMAT AND PRINT ERUH )@@G@@ROR MESSAGE @A@@@@ E$COPY 8,FRM1 . @A@@@@ UI )@@G@@ SLJ BLDNME . @A@@@@ E$COPY 19,FRM2 . UJ )@@G@@@A@@@@ E$DITX . @A@@@@ P$RINT (PF 1,22UK )@@G@@,PREBUF) .@A@@@@ L,U A0,1 . @A@@@@ S UL )@@G@@ A0,FATAL . @C@@@@ J PRFRET . $J PRFRET UM )@@G@@ @[@@@@ . @[@@@@ . @B@@@@PFPERR. ELEMENT NOT FOUND . $H PFPEUN )@@G@@RR @G@@@@ E$DIT PREPKT . $P FORMAT AND PRINT ERROR MEUO )@@G@@SSAGE @A@@@@ SLJ BLDNME . @A@@@@ E$CUP )@@G@@OPY 28,PFM1 . @A@@@@ E$DITX . @B@@@@UQ )@@G@@ P$RINT (PF 1,22,PREBUF) . @A@@@@ L,U A0,1 UR )@@G@@ . @A@@@@ S A0,FATAL . @C@@@@ J US )@@G@@ PRFRET . $J PRFRET @[@@@@ . @[@@@@ . @C@@@@SDFERRUT )@@G@@. I/O ERROR READING ELEMENT . $ H SDFERR @G@@@@ E$DIT PREPKT UU )@@G@@ . $P FORMAT AND PRINT ERROR MESSAGE @A@@@@ E$COPY 10UV )@@G@@,SFM1 . @A@@@@ L,S1 A0,SDFPKT+3 . @A@@@@ UW )@@G@@ L,U A1,3 . @A@@@@ LMJ X11,EOCTF$ . UX )@@G@@@A@@@@ E$COPY 9,SFM2 . @A@@@@ SLJ BLDNME UY )@@G@@ . @^@@@@ E$DITX . @B@@@@ P$RINT (PF 1,22UZ )@@G@@,PREBUF) . @A@@@@ L,U A0,1 . @A@@@@ VA )@@G@@ S A0,FATAL . @C@@@@ J PRFRET . $J PVB )@@G@@RFRET @[@@@@ . @[@@@@ . @]@@@@$(4). @A@@@@RETURN + VC )@@G@@ 0 . @A@@@@ERRFLG + 0 . @A@@@@VD )@@G@@PBLOCK* RES 10 . @A@@@@CURADR EQUF PBLOCK+8,,H2 VE )@@G@@. @A@@@@LSTADR EQUF PBLOCK+8,,H1 . @A@@@@TBLADR EQUF PBLVF )@@G@@OCK+9,,H2 . @A@@@@FLINE + 0 . @A@@@@LABEL VG )@@G@@ + 0 . @A@@@@INPKT + 0,SDFPKT . VH )@@G@@@A@@@@ + FLUSH,0 . @A@@@@LININC EQUF INPKT,,H1VI )@@G@@ . @A@@@@EOFFLG EQUF INPKT+1,,H2 . @A@@@@PREPKT E$PVJ )@@G@@KT 22,PREBUF . @A@@@@PREBUF RES 22 . @A@@@@VK )@@G@@FLNMAD + 0 . @A@@@@SAVADR + 0 VL )@@G@@. @A@@@@PFPPKT + ' ' . @A@@@@ + ' VM )@@G@@ ' . @A@@@@ + 0 . @A@@@@ VN )@@G@@ + 1,0 . @A@@@@ + ' ' . VO )@@G@@@A@@@@ + 0 . @A@@@@ + 010000,0 VP )@@G@@ . @A@@@@ + 0 . @A@@@@ + VQ )@@G@@ 0 . @A@@@@ + 0 . @A@@@@VR )@@G@@SDFPKT + ' ' . @A@@@@ + 0 VS )@@G@@. @A@@@@ + 02000,0 . @A@@@@ + 448VT )@@G@@,0 . @A@@@@ + 0 . @A@@@@ VU )@@G@@ + IN1,IN2 . @A@@@@ + 16,399 . VV )@@G@@@A@@@@ + 1,INBUF+1 . @A@@@@ + 1,0 VW )@@G@@ . @A@@@@ + 0 . @ @@@@PRCTEP + VX )@@G@@ 10,PRCTBL-10 @A@@@@SYNCDE + 0 . @A@@@@ZERO VY )@@G@@ + 0 . @F@@@[ABTM1 '**************************VZ )@@G@@**********************' . @F@@@[ABTM2 '****** USER DID AN ABORT WWA )@@G@@ITHIN A PERFORM ******' . @A@@@@NFM1 'PERFORM ERROR: PROC ' . WB )@@G@@@A@@@@NFM2 ' NOT FOUND' . @A@@@@SNMLST + (PF 1,6,SWC )@@G@@NM2) . @A@@@@ + (PF 1,6,SNM3) . @A@@@@ + WD )@@G@@ (PF 1,6,SNM4) . @C@@@@SNM1 'SYNTAX ERROR(S) IN PROC ' . WE )@@G@@ @E@@@@SNM2 '****** SYNTAX ERROR ******' . WF )@@G@@@E@@@@SNM3 '****** DUPLICATE LABEL VALUE ******' . @E@@@@WG )@@G@@SNM4 '****** LABEL VALUE > 9999 ******' . @E@@@@NXM1 WH )@@G@@ 'PERFORM NOT EXECUTED DUE TO SYNTAX ERROR. ' . @C@@@@NXM2 'NOWI )@@G@@ LINES FOUND IN PROC ' . @C@@@@WKM1 'ILLEGAL COMMAND FOUNWJ )@@G@@D ' . @E@@@@MDM1 'MAXIMUM PERFORM DEPTH OF 50 EXCEEDED' WK )@@G@@ . @C@@@@FTLM1 '***FATAL ERROR IN PROC ' . @A@@@@WL )@@G@@FTLM2 ' AT FOLLOWING LINE***' . @E@@@@MDM2 ' PERFORM CALL HISTOWM )@@G@@RY (FIRST TO LAST): ' . @E@@@@MPM1 'LIMIT OF 50 PERFORM ELEMENWN )@@G@@TS EXCEEDED.' . @A@@@@FRM1 'ELEMENT ' . @A@@@@WO )@@G@@FRM2 ' NOT FD SDF FORMAT.' . @C@@@@PFM1 ' SYMBOLIC ELEMENT NOWP )@@G@@T FOUND.' . @A@@@@SFM1 'I/O ERROR ' . @A@@@@SFM2 WQ )@@G@@ ' READING ' . @A@@@@ENM1 '#---> ENTERING PROC ' . WR )@@G@@@C@@@@RTM1 '#---> RETURNING TO PROC ' . @A@@@@DASH '--WS )@@G@@>#' . @A@@@@DASH2 ' -- ' . @A@@@@WT )@@G@@LBLBLK RES 280 . @A@@@@STKPTR + 0 WU )@@G@@. @A@@@@STACK RES 51*10 . @A@@@@IN1 RES 448WV )@@G@@ . @A@@@@IN2 RES 448 . @]@@@@$(3). WW )@@G@@ @]@@@@ . @]@@@@ . @]@@@@ . @C@@@@GOTO*.WX )@@G@@ . $H GOTO @E@@@@ L,S3 A0,0,X10 WY )@@G@@ . $P GET GOTO ADDR TYPE @E@@@@ TE,U A0,1 WZ )@@G@@. $T IS ADDR AN ABS ADDR @C@@@@ J SEARCH . $A YXA )@@G@@ES NO,SEARCH@C@@@@ L A0,2,X10 . $P GET ABS ADDR @E@@@@XB )@@G@@ S A0,CURADR . $P MAKE IT CURRENT ADDR @C@@@@ XC )@@G@@ J XEQ . $J XEQ @E@@@@SEARCH L A0,2,X10 XD )@@G@@ . $P GET FD LINE NUMBER @A@@@@ L A1,(' ') XE )@@G@@. @E@@@@ L A2,STATUS . $P SAVE PREVIOUS STATUS XF )@@G@@@G@@@@ SLJ FD$BIN . $W FD$BIN - CONVERT IT TO BINARY XG )@@G@@ @E@@@@ S A2,STATUS . $P RESTORE STATUS VALUE XH )@@G@@@E@@@@ L A1,TBLADR . $P GET FIRST PKET ADDR @E@@@@XI )@@G@@SRCHLP L,H2 A2,1,A1 . $P GET LINE # THIS PKET @E@@@@ XJ )@@G@@ TNE A2,A0 . $T IS THIS NEEDED LINE @C@@@@ J XK )@@G@@ FOUND . $A NO YES,FOUND @E@@@@ L A2,0,A1 XL )@@G@@. $P GET LENGTH OF THIS PKET @A@@@@ SSL A2,24 . XM )@@G@@@E@@@@ A A1,A2 . $P SET TO THIS TEXT @E@@@@XN )@@G@@ L A2,0,A1 . $P GET LENGTH OF THIS TEXT @A@@@@ XO )@@G@@ SSL A2,24 . @E@@@@ A A1,A2 . $P SXP )@@G@@ET TO NEXT PKET @E@@@@ TZ,T1 0,A1 . $T IS THERXQ )@@G@@E A NEXT PKET @C@@@@ J SRCHLP . $A NO YES,SRCHLPXR )@@G@@@E@@@@ TNZ 0,A1 . $T IS THIS END-OF-PROC @C@@@@XS )@@G@@ J GTERR . $A NO YES,GTERR @E@@@@ L A1,XT )@@G@@0,A1 . $P SET TO NEXT BLOCK @C@@@@ J SRCHLP XU )@@G@@ . $J SRCHLP @E@@@@GTERR P$RINT (PF 1,4,GOM1) . $P PRINT GXV )@@G@@OTO ERR MESSAGE @E@@@@ L,U A0,1 . $P SET FATAL ERRXW )@@G@@OR FLAG @A@@@@ S A0,FATAL . @C@@@@ J XX )@@G@@ FTLERR . $J FTLERR @G@@@@FOUND S A1,CURADR XY )@@G@@. $P SAVE ABS ADDR AS CURRENT ADDR @G@@@@ S A1,2,X10 XZ )@@G@@ . $P SAVE ABS ADDR IN GOTO PKET @E@@@@ L,U A0,YA )@@G@@1 . $P SET GOTO ADDR TYPE TO ABS@A@@@@ S,S3 A0,0,X10 YB )@@G@@ . @C@@@@ J XEQ . $J XEQ @]@@@@YC )@@G@@ . @]@@@@$(4). @C@@@@GOM1 'ILLEGAL GOTO ADDRESS ' YD )@@G@@. @^@@@@ END . ___ @A@@@@ + FLUYE )@@G@@SH,0 . @A@@@@LININC EQUF INPKT,,H1 . @A@@@@EOFFLGYF )@@G@@ EQUF INPKT+1,,H2 *[@@@@*SDFF*@[@@@@$(1) @G@@@@TF$IA* . TEMPORARYYG )@@G@@ FILE ACCESS METHOD, INSERT AFTER A GIVEN RECORD @#@@@@ AXYH )@@G@@R$ @B@@@@PF1 FORM 12,6,18 . @G@#@@IOVFNUM EQYI )@@G@@U 2 . # OF OVERFLOW INDEX BLOCKS @E@@@@ YJ )@@G@@ . EQU SHOULD BE REMOVED EVENTUALLY @C@@@@ SXYK )@@G@@,H2 X11,RETURN . $H TF$IA @G@@@@ SZ,S6 SW2 YL )@@G@@ . $P ZERO OUT ZERO RECORD SWITCH @G@@@@ YM )@@G@@ . SWITCH IS SET BY LOCINX IF 0 RCD@G@@@@ SLJ YN )@@G@@ FRSTED . $P FLUSH SQW INDEX BUF ON 1ST EDIT @I@[@@ LAYO )@@G@@,H1 A3,0,X10 . RECORD NUMBER TO INSERT AFTER TO A3 YP )@@G@@@I@@@[ LA A3,0,X10 . RECORD NUMBER TO INSERT AFTEYQ )@@G@@R TO A3 @G@@@@ LMJ X11,LOCINX . $W LOCATE IYR )@@G@@NDEX OF RECORD @G@@@@ . WILL YS )@@G@@RETURN INDEX IN LCINX @G@@@@ .YT )@@G@@ ADDR OF INDEX IN LCINXA @G@@@@ YU )@@G@@ . INX BLOCK ADDR IN INXPKT+1 @G@@@@ YV )@@G@@ . IF RCD# WANTED IS ZERO, WILL RETURN@G@@@@ YW )@@G@@ . INFORMATION ON RCD#1 AND SET S6(SW2@E@@@@ TZYX )@@G@@ A0 . $T SUCCESSFUL @E@@@@ ER YY )@@G@@ ERR$ . $A NO,EXIT YES @]@@@@ . @C@@@@ . PREYZ )@@G@@PARE TO INSERT RECORD IN TEMP FILE @]@@@@ . @E@[@@ ZA )@@G@@ LA,H2 A1,0,X10 . $P RECORD LENGTH TO A1 @E@@@[ LAZB )@@G@@,H2 A1,2,X10 . $P RECORD LENGTH TO A1 @G@@@@ AA,U ZC )@@G@@ A1,1 . $P ADD ONE WORD FOR HEADER @G@@@@ SAZD )@@G@@ A1,RECLEN . $P TOTAL LENGTH TO RECLEN @G@@@@ ZE )@@G@@ LA,H2 A2,1,X10 . $P ADDR OF RCD TO INSERT TO A2 @G@@@@ZF )@@G@@ SA A2,RECADD . $P ADDR OF RCD TO RECADD ZG )@@G@@@G@@@@IALP1 . CHECK IF THERE IS SPACE FOR RECORD IN TEMP FILE BLOCK ZH )@@G@@ @G@@@@ TNZ TBWRSW . $ ANYTHING WRITTEN IN TZI )@@G@@EMP BLOCK @G@@@@ LMJ X11,TINIT . $ NO, INITIALIZE ZJ )@@G@@TEMP BLOCK @G@@@@ LMJ X11,TSPACE . $T ANY SPAZK )@@G@@CE LEFT IN TEMP FILE @E@@@@ JZ A2,IAFGT2 . $A YZL )@@G@@ES,IAFGT2 NO @E@@@@ LMJ X11,TBWRT1 . $P WRITE TEZM )@@G@@MP FILE OUT @G@@@@ J IALP1 . $J IALP1 GO BACK ZN )@@G@@CHECK ANOTHER BLK @A@@@@IAFGT2 . FOUND SPACE IN TEMP BLOCK @G@@@@ ZO )@@G@@ LX X9,TWADDR . $P ADDR OF TEMP BLOCK TO X9 @G@@@@ZP )@@G@@ AX X9,TBRELW . $P X9 POINTS TO NEW LOC IN TEMP BLKZQ )@@G@@@A@@@@ LA A3,RECLEN .@G@@@@ SA,H2 A3,0ZR )@@G@@,X9 . $P RCD LENGTH TO H2 OF TEMP ENTRY @G@@@@ AA,U ZS )@@G@@ A3,EXTRAW . $P RCD LENGTH + EXTRAW TO A3 @G@@@@ SAZT )@@G@@ A3,RECLN1 . $P RCD + EXTRAW TO RECLN1 @G@@@@ ZU )@@G@@ SA,H1 A3,0,X9 . $P RECORD LENGTH + EXTRAW HI(TBUF) @E@@@@ZV )@@G@@ LA A3,RECLEN . $P RECORD LENGTH TO A3 @G@@@@ ZW )@@G@@ AX,U X9,1 . $P RECORD DESTINATION TO X9 @A@@@@ZX )@@G@@ ANA,U A3,1 .@E@@@@ LR R1,A3 ZY )@@G@@ . $P RECORD LENGTH TO R1 @G@@@@ LX X8,RECADD .ZZ )@@G@@ $P RECORD ORIGINATING ADDR TO X8 @G@@@@ SLJ RTRANS AA )@@G@@ . $W RTRANS TRANSFER RECORD TO TEMP B@G@@@@ LMJ X11,AB )@@G@@FRMINX . $W FRMINX FORM INDEX FOR NEW RECORD@A@@@@ LA AC )@@G@@ A5,TBRELW .@A@@@@ AA A5,RECLN1 .@E@@@@ AD )@@G@@ SA A5,TBRELW . $P UPDATE TBRELW @^@@@@ LAAE )@@G@@,U A0,1@G@@@@ SA A0,TBWRSW . $P SET TBWRSW , WAF )@@G@@RITE IN TEMP BLK @]@@@@ . @G@@@@ . PREPARE TO INSERT INDEX FORAG )@@G@@MED WHICH IS TO BE FOUND IN INDEX @A@@@@ . CHECK FIRST IF SPACE AH )@@G@@IS AVAILABLE@]@@@@ . @E@@@@ SLJ INDXUPD AI )@@G@@ . $W INDXUPD @G@@@@ . MAJ )@@G@@ARK INDEX BLK FOR UPDATE @G@@@@ LX,H2 X9,INXPKT+1 .AK )@@G@@ $P INDEX BLOCK ADDRESS TO X9 @G@@@@ LA,H2 A3,1,X9 AL )@@G@@ . $P # OF INDICES IN BLOCK TO A3 @C@@@@ LA A0,RAM )@@G@@EMINDX . @C@@@@ TLE A0,A3 . AN )@@G@@ @C@@@@ ER ERR$ . @C@@@@ AO )@@G@@ ANA A0,A3 . @E@@@@ SA A0,RAP )@@G@@EMINDX . $P UPDATE REMINDX @G@@@@ TG,U A3,INDNUM AQ )@@G@@ . $T ANY MORE SPACE IN INDEX BLOCK @G@@@@ AR )@@G@@ . INDNUM = ( IBSIZE/2 - 1) @E@@@@ J AS )@@G@@ IANSPC . $A NO,IANSPC YES @A@@@@ LA A4,AAT )@@G@@3 .@E@@@@ . PREPARE TO PUSH INDICES & UPDATE # OF INDICES IN BLAU )@@G@@OCK @G@@@@ AA,U A4,1 . $P ADD TO NUMBER OF INDAV )@@G@@ICES @G@@@@ SA,H2 A4,1,X9 . $P UPDATE # OF INAW )@@G@@DICES IN BLOCK @G@@@@ SLJ INSINDEX . $W INSINAX )@@G@@DEX INSERT INDEX @E@@@@ . A3 HAS # OAY )@@G@@F INDICES IN BLOCK@E@@@@ . DO NOT PUSH LASTAZ )@@G@@ INDEX @G@@@@ . USES LCINXA (ADDR OF LBA )@@G@@OCATED INDEX) @G@@@@ . INXREL (RELBB )@@G@@ LOC WITHIN INX BLOCK) @G@@@@ . RECADBC )@@G@@D (ADDR OF REC TO BE INSERTED)@A@@@@ . BD )@@G@@@G@@@@ . UPDATES IASAVA (ADD OF INSERT POINBE )@@G@@T) @E@@@@ J IADONE . $J IADONE BF )@@G@@@C@@@@IANSPC . NO SPACE AVAILABLE IN INDEX BLOCK @C@@@@ . L$BG )@@G@@SNAP 'IAOVF ',,16,IOBFENT @C@@@@ . PRINT OVERFLOW MESSAGBH )@@G@@E IF DEBUGGING @C@@@@ . A3 HAS # OF INDICES IN CURRENT BLOCK BI )@@G@@@A@@@@ . X9 HAS INDEX BLOCK ADDRESS @]@@@@ . @]@@@@ BJ )@@G@@ . @G@@@@ LA A4,A3 . $P # OF INDICES IN BLOCK TO BK )@@G@@A4 @^@@@@ MSI,U A4,2@^@@@@ LXI,U X9,0BL )@@G@@@G@@@@ AX X9,A4 . $P X9 POINTS TO LAST INDEX IN BLOCBM )@@G@@K @A@@@@ LA A0,X9 @A@@@@ TLE BN )@@G@@ A0,LCINXA @^@@@@ ER ERR$@G@@@@ TNE BO )@@G@@ A0,LCINXA . $T IS INDEX TO INSERT AFTER LAST IN BLK@E@@@@ J BP )@@G@@ IALASTI . $A YES,IALASTI NO @]@@@@ . @C@@@@BQ )@@G@@ . SAVE LAST INDEX OF BLOCK IN LASTISAVE @E@@@@ . # OF INDICES INBR )@@G@@ BLOCK WILL NOT CHANGE AS RESULT @]@@@@ . @A@@@@ BS )@@G@@ DL A0,0,X9 @A@@@@ DS A0,LASTISAVE BT )@@G@@@G@@@@ SLJ INSINDEX . $W INSINDEX INSERT INDEX IN PLACE BU )@@G@@ @E@@@@ . A3 HAS # OF INDICES IN BLOCKBV )@@G@@@E@@@@ . DO NOT PUSH LAST INDEX @G@@@@BW )@@G@@ . USES LCINXA (ADDR OF LOCATED INDEX) BX )@@G@@@G@@@@ . INXREL (REL LOC WITHIN INX BLBY )@@G@@OCK) @G@@@@ . RECADD (ADDR OF REC TO BZ )@@G@@BE INSERTED)@A@@@@ . @G@@@@ CA )@@G@@ . UPDATES IASAVA (ADD OF INSERT POINT) @A@@@@ CB )@@G@@ . @C@@@@ J IAOVFLP1 . $J ICC )@@G@@AOVFLP1 @]@@@@ . @]@@@@ . @]@@@@IALASTI @]@@@@CD )@@G@@ . @C@@@@ . INDEX TO INSERT AFTER IS LAST INDEX IN BLOCK @G@@@@CE )@@G@@ . SAVE INDEX TO BE INSERTED INSTEAD OF SAVING THE LAST INDEX IN BLK CF )@@G@@@]@@@@ . @E@@@@ LA A0,INDEX . $P INDEX FORMED CG )@@G@@TO A0 @G@@@@ LA A2,RECADD . $P ADDR OF RECORD TO BCH )@@G@@E INSERTED TO A0 @E@@@@ LA A1,0,A2 . $P DBP OF RECORDCI )@@G@@ TO A1 @A@@@@ DS A0,LASTISAVE @G@@@@ CJ )@@G@@ . $P SAVE INDEX + DBP IN LASTISAVE @]@@@@ . CK )@@G@@ @]@@@@ . @]@@@@IAOVFLP1 @]@@@@ . @A@@@@ . CHECL )@@G@@CK IF OVERFLOW IS DEFINED @]@@@@ . @G@@@@ LX,H2 CM )@@G@@ X9,INXPKT+1 . $P INDEX BLOCK ADDRESS TO X9 @G@@@@ SXCN )@@G@@ X9,ORBLKAD . $P SAVE ADDR OF ORIGINAL BLK @E@@@@ CO )@@G@@ LA,H2 A0,0,X9 . $P OVF INDICATOR TO A0 @E@@@@ JZCP )@@G@@ A0,IANOVFB . $T ANY OVERFLOW BLOCK @E@@@@ CQ )@@G@@ . $A NO,IANOVFB YES @]@@@@ . @C@@@@ . GETCR )@@G@@ OVERFLOW BLOCK POINTED TO BY A0 @]@@@@ . @G@@@@ CS )@@G@@ SA,H2 A0,INXPKT . $P OVF BLOCK # TO INXPKT @C@@@@CT )@@G@@ LMJ X11,INXBUF . $W INXBUF @A@@@@ TZ,H1 CU )@@G@@ INXPKT @^@@@@ ER ERR$@G@@@@ LX CV )@@G@@ X9,INXPKT+1 . $P ADDR OF NEW BUFFER BLOCK TO X9 @G@@@@ CW )@@G@@ . ADDRESS MAY BE THAT OF AN @E@@@@ CX )@@G@@ . OVERFLOW BUFFER @]@@@@ . CY )@@G@@@A@@@@ . UPDATE # OF INDICES LEFT TO GO @]@@@@ . @A@@@@ CZ )@@G@@ .@A@@@@ LA A2,REMINDX .DA )@@G@@@A@@@@ TLE,H2 A2,1,X9 .@A@@@@ ER ERR$DB )@@G@@ .@A@@@@ ANA,H2 A2,1,X9 @A@@@@ SADC )@@G@@ A2,REMINDX @]@@@@ . @]@@@@IAOVSPCHK . @]@@@@ . DD )@@G@@ @G@@@@ . CHECK IF INDEX CAN BE INSERTED WITHOUT PUSHING OTHER INDIDE )@@G@@CES DOWN @]@@@@ . @G@@@@ LA,H2 A3,1,X9 .DF )@@G@@ $P # OF INDICES IN BLOCK TO A3 @G@@@@ TG,U A3,INDNUM DG )@@G@@ . $T CAN WE HAVE ONE MORE INDEX IN BL@E@@@@ J IANSDH )@@G@@PCOV . $J NO,IANSPCOV YES @G@@@@ SLJ INSFIRST DI )@@G@@ . $W INSERT INDEX FIRST IN BLOCK @G@@@@ SLJ INDNDJ )@@G@@UMUPD . $W INDNUMUPD UPDATE # OF INDICES @G@@@@ SLJ DK )@@G@@ INDXUPD . $W INDXUPD MARK BLOCK FOR UPDATE @C@@@@ J DL )@@G@@ IADONE . $J IADONE @]@@@@ . @]@@@@ . DM )@@G@@@]@@@@IANSPCOV @]@@@@ . @C@@@@ . NO SPACE TO INSERT ON OVERFDN )@@G@@LOW BLOCK @G@@@@ . PREPARE TO SAVE LAST INDEX OF BLOCK, PUSH INDDO )@@G@@ICES DOWN TO MAKE SPACE @]@@@@ . @A@@@@ LX X8,XDP )@@G@@9 .@G@@@@ LA,H2 A4,1,X9 . $P # OF INDICES IDQ )@@G@@N BLOCK TO A4 @A@@@@ MSI,U A4,2 .@G@@@@ DR )@@G@@ AX X8,A4 . $P X8 POINTS TO LAST INDEX IN BLOCK@A@@@@DS )@@G@@ DL A0,0,X8 @I@@@@ DS A0,LASTITEDT )@@G@@MP . $P SAVE LAST INDEX TEMPORARILY UNTIL @G@@@@ DU )@@G@@ . INDEX FROM PREVIOUS BLOCK IS @C@@@@ DV )@@G@@ . STORED @G@@@@ LA,H2 A3,1DW )@@G@@,X9 . $P # OF INDICES IN BLOCK TO A3 @G@@@@ ANA,U DX )@@G@@ A3,1 . $P REDUCE # OF INDICES TO PUSH @C@@@@ SLDY )@@G@@J INSFIRST . $P INSFIRST@I@@@@ . L$SNAP 'NOSPAD',0DZ )@@G@@,20,IOBFENT . @G@@@@ EA )@@G@@ . WILL PUSH INDICES DOWN BY 2 WRDS@G@@@@ EB )@@G@@ . & STORE WHATEVER WAS IN @G@@@@EC )@@G@@ . LASTITEMP FIRST IN BLOCK ED )@@G@@@G@@@@ DL A0,LASTITEMP . $P INX FROM LASTITEMP TO LASTEE )@@G@@ISAVE @A@@@@ DS A0,LASTISAVE .@G@@@@ J EF )@@G@@ IAOVFLP1 . $J IAOVFLP1 GO REPEAT FOR INX @]@@@@ . EG )@@G@@@]@@@@IANOVFB @C@@@@ . NO OVERFLOW BLOCK DEFINED, CREATE A NEW ONE EH )@@G@@@G@@@@ SLJ OBLKADD . $W OBLKADD GET ADDRESS OF NEWEI )@@G@@ BLK @G@@@@ SLJ OIINIT . $W OIINIT INITIALIZE NEEJ )@@G@@W BLOCK @G@@@@ . $P OIINIT WILL INEK )@@G@@CREMENT IBNUMWO @A@@@@ LX X8,OIWADDR .@A@@@@ EL )@@G@@ DL A0,LASTISAVE .@G@@@@ DS A0,2,X8 .EM )@@G@@ $P INDEX SAVED TO NEW OVF BLOCK @A@@@@ LA,H2 A3,1,X8 EN )@@G@@ .@A@@@@ AA,U A3,1 .@G@@@@ SA,H2 EO )@@G@@ A3,1,X8 . $P INCREMENT # OF INDICES IN BLK @]@@@@IADONE . EP )@@G@@@A@@@@ LA A0,RECNMC .@A@@@@ AA,U A0,1EQ )@@G@@ .@G@@@@ SA A0,RECNMC . $P UPDATE CURRENTER )@@G@@ # OF RECORDS @A@[@@ LA,H1 A0,0,X10 .@A@@@[ ES )@@G@@ LA A0,0,X10 .@A@@@@ AA,U A0,1 .ET )@@G@@@E@@@@ SA A0,CURREC . $P UPDATE CURRENT RCD# @G@[@@EU )@@G@@ SA,H1 A0,0,X10 . $P RETURN NEW RCD NUM TO CALLING PROG EV )@@G@@@G@@@[ SA A0,0,X10 . $P RETURN NEW RCD NUM TO CALLING PEW )@@G@@ROG @G@@@@ LA A0,RNDSAV . $P ADDR OF RANDOM TABLEEX )@@G@@ ENTRY @G@@@@ LA A1,0,A0 . $P # OF INDICES FEY )@@G@@ROM RNDTAB TO A1 @E@@@@ AA,U A1,1 . $P INCREMENEZ )@@G@@T # IN A1 @G@@@@ SA A1,0,A0 . $P UPDATE # OF INFA )@@G@@DICES IN RNDTAB @E@@@@ SZ,T1 2,X10 . $P SET ZEROFB )@@G@@ RETURN CODE@A@@@@ J *RETURN @]@@@@ . FC )@@G@@@]@@@@ . @]@@@@ . @]@@@@ . @]@@@@ . FD )@@G@@@]@@@@ . @C@@@@INSINDEX + 0 . FE )@@G@@@G@@@@ LX X8,LCINXA . $P ADDRESS OF INDEX FOUND TO FF )@@G@@X8 @G@@@@ TZ,S6 SW2 . $T WAS RECORD # WANTED FG )@@G@@= 0 @E@@@@ J IAGT2 . $A YES,IAGT2 NOFH )@@G@@ @G@@@@ AX,U X8,2 . $P X8 POINTS TO BLK TO FI )@@G@@BE MOVED @G@@@@IAGT2 SX X8,IASAVA . $P SAVE ADDRESS WFJ )@@G@@HERE TO INSERT @A@@@@ LA A2,INXREL .@G@@@@ FK )@@G@@ AA,U A2,1 . $T INDEX FOUND WAS LAST INX IN BLK @G@@@@FL )@@G@@ TNE A2,A3 . BLOCK CANNOT BE COMPLETELY FULL FM )@@G@@@E@@@@ J IAGT3 . $A YES,IAGT3 NO @]@@@@FN )@@G@@ . @^@@@@ . PUSH INDICES DOWN @]@@@@ . @]@@@@ . FO )@@G@@ @G@@@@ TG,U A3,INDNUM . $T IS INDEX BLOCK FUFP )@@G@@LL @C@@@@ AN,U A3,1 . @]@@@@FQ )@@G@@ . @G@@@] TZ,S6 SW2 . $T WAS REC TO FR )@@G@@INSERT AFTER = 0 @I@@@] AA,U A3,1 . $P INCREFS )@@G@@MENT # OF INDICES TO PUSH @G@@@@ AN A3,A2 FT )@@G@@ . $P # OF INDICES TO PUSH TO A3 @A@@@@IAGT5 MSI,U A3,2FU )@@G@@ .@G@@@@ LR R1,A3 . $P # OF WORDS TO FV )@@G@@PUSH TO R1 @G@@@@ LA,U A2,2 . $P # OF LOCFW )@@G@@S BY WHICH TO PUSH TO A2@G@@@@ LA,U A0,1 . $P DIFX )@@G@@RECTION CODE 1 (DOWN) TO A0 @G@@@@ SLJ IPUSH .FY )@@G@@ $W IPUSH CALL ROUTINE TO PUSH DOWN @E@@@@IAGT4 . STORE NEW INDEX IN LOCFZ )@@G@@ATION POINTED TO BY IASAVA @E@@@@ LA A5,INDEX .GA )@@G@@ $P INDEX FORMED TO A5 @A@@@@ LX X8,IASAVA .@G@@@@GB )@@G@@ SA A5,0,X8 . $P INDEX FORMED TO INDEX BLOCK GC )@@G@@@A@@@@ LA A0,RECADD @E@@@@ LA A4,0GD )@@G@@,A0 . $P DBP OF RECORD TO A4 @E@@@@ SA A4,1,X8 GE )@@G@@ . $P DBP TO INDEX BLOCK @C@@@@ J *INSINDEX GF )@@G@@ . $E EXIT @]@@@@IAGT3 . @G@@@@ TNZ,S6 SW2 .GG )@@G@@ $T WAS RCD# TO INSERT AFTER = 0 @E@@@@ J IAGT4 GH )@@G@@ . $A NO,IAGT4 YES @G@@@@ TG,U A3,INDNUM GI )@@G@@ . $T IS INDEX BLOCK FULL @C@@@@ J $+2 GJ )@@G@@ . @C@@@@ AA,U A3,1 . GK )@@G@@@A@@@@ ANA A3,A2 .@C@@@@ J IAGTGL )@@G@@5 . $J IAGT5 @]@@@@ . @]@@@@ . @]@@@@ . GM )@@G@@ @]@@@@ . @]@@@@ . @]@@@@ . @G@@@@ . SUBGN )@@G@@ROUTINE THAT WILL INCREMENT VALUE OF IOVFPTR TO POINT TO THE @E@@@@GO )@@G@@ . RIGHT ENTRY IN TABLE IOBFTAB (RELATIVE POINTER) @]@@@@ . GP )@@G@@ @A@@@@OVFPTINC + 0 .@A@@@@ LA GQ )@@G@@ A2,IOVFPTR .@A@@@@ JNZ A2,OVFPTGT1 .@A@@@@ GR )@@G@@ LA,U A2,1 .@A@@@@ J $+2 .GS )@@G@@@^@@@@OVFPTGT1 SZ A2 @A@@@@ SA A2,IOVFPTR GT )@@G@@@A@@@@ J *OVFPTINC @]@@@@ . @]@@@@ . GU )@@G@@ @]@@@@ . @G@@@@ . SUBROUTINE TO OBTAIN AN ADDRESS FOR AN GV )@@G@@OVERFLOW INDEX BLOCK @G@@@@ . IF NECESSARY, AN OVERFLOW INDEX BGW )@@G@@LOCK MIGHT HAVE TO BE WRITTEN @^@@@@ . OUT TO FREE UP SPACE.@C@@@@GX )@@G@@ . UPON ENTRY, X9 POINTS TO CURRENT INDEX BLOCK @G@@@@ . UPON RETURN, OIGY )@@G@@WADDR HAS NEW INDEX BLOCK ADDRESS, IOBFTAB UPDATED @C@@@@OBLKADD + GZ )@@G@@ 0 . $H @^@@@@ LXI,U X9,0@A@#@@HA )@@G@@ LX,U X8,IOBFTAB @A@@@# LX X8,IOVFRADHB )@@G@@ @G@@@@ AX X8,IOVFPTR . $P X8 POINTS TO NEXT AVHC )@@G@@AIL ENTRY @A@@@@ .@A@@@@ HD )@@G@@ .@E@@@@ LA,H1 A1,0,X8 . $P BLHE )@@G@@OCK NUMBER TO A1 @E@@@@ JZ A1,OBLKGT1 . $T IS BLOCKHF )@@G@@ # = 0 @E@@@@ . $A YES,OBLKGT2 NOHG )@@G@@ @G@@@@ TE,H1 A1,0,X9 . $T BLOCK # SAME AS CURRHH )@@G@@ENT @E@@@@ J OBLKGT1 . $A NO,OBLKGT1 YESHI )@@G@@ @A@@@@ LA A2,X9 @G@@@@ TE,H2 HJ )@@G@@ A2,0,X8 . $T IS CURRENT BLOCK SAME @E@@@@ J HK )@@G@@ OBLKGT1 . $A NO,OBLKGT1 YES @]@@@@ . @C@@@@HL )@@G@@ . BLOCK IS THE SAME, POINT TO NEXT ONE @]@@@@ . @G@@@@HM )@@G@@ SLJ OVFPTINC . $W OVFPTINC POINT TO NEXT BLOCK HN )@@G@@@I@#@@ LX,U X8,IOBFTAB . $P REPOINT X8 TO NEXT AVAIHO )@@G@@LABLE ENTRY @I@@@# LX X8,IOVFRAD . $P REPOIHP )@@G@@NT X8 TO NEXT AVAILABLE ENTRY @C@@@@ AX X8,IOVFPTRHQ )@@G@@ . @E@@@@OBLKGT1 . IF THERE IS A BLOCK IN BUFFER THEN FLUHR )@@G@@SH IT OUT @]@@@@ . @G@@@@ LA A2,IOBFENT .HS )@@G@@ $T # OF ENTRIES IN BUF = # OF BLKS @A@@@@ TE,U A2,IOVFNUMHT )@@G@@ .@E@@@@ J OBLKGT11 . $A NO,OBLKGT11 YES HU )@@G@@@G@@@@ LA,H1 A1,0,X8 . $P BLOCK # TO WRITE OUT TO A1HV )@@G@@ @E@@@@ LA,H2 A2,0,X8 . $P BLOCK ADDRESS TO A2 HW )@@G@@@G@@@@ LA,U A3,010 . $P WRITE FUNCTION CODE TO A3 HX )@@G@@ @G@@@@ LMJ X11,IBIOW . $W IBIOW ISSUE I/O AND HY )@@G@@WAIT @E@@@@ J OBLKGT2 . $J OBLKGT2 HZ )@@G@@ @]@@@@ . @]@@@@ . @]@@@@ . @]@@@@OBLKGTIA )@@G@@11 . @C@@@@ AA,U A2,1 . @G@@@@ IB )@@G@@ SA A2,IOBFENT . $P INCREMENT # OF OVF INX BLKS @]@@@@IC )@@G@@ . @]@@@@ . @A@@@@OBLKGT2 LA,H2 A0,0,X8 ID )@@G@@@G@@@@ SX A0,OIWADDR . $P NEW OVF BLK ADDR TO OIWADDIE )@@G@@R @G@@@@ SLJ OVFPTINC . $W OVFPTINC INCREMENT OIF )@@G@@VF POINTER @A@@@@ LA A0,IBNUMWO @F@#@@ SAIG )@@G@@,H1 A0,0,X8 . $P NEW OVF BLK # TO IOBFTAB @G@@@# SAIH )@@G@@,H1 A0,0,X8 . $P NEW OVF BLK # TO INX OVF TAB @I@@@@ . II )@@G@@ L$SNAP 'OBLKAD',0,20,IOBFENT . IJ )@@G@@ @C@@@@ J *OBLKADD . $E EXIT @]@@@@ . IK )@@G@@ @]@@@@ . @E@@@@ . SUBROUTINE TO INITIALIZE AN OVERFLOW INIL )@@G@@DEX BLOCK @G@@@@ . UPON ENTRY, OIWADDR WILL CONTAIN ADDRESS OF OIM )@@G@@VERFLOW BLOCK @C@@@@OIINIT* . . $H IN )@@G@@ @^@@@@ + 0 @A@@@@ LX X8,(0,ZEROIO )@@G@@S) @A@@@@ LX X9,OIWADDR @^@@@@ LXI,U IP )@@G@@ X9,1@A@@@@ LR,U R1,IBSIZE @G@@@@ BT IQ )@@G@@ X9,0,*X8 . $P ZERO OUT NEW INDEX BLOCK @G@@@@ LAIR )@@G@@ A0,IBNUMWO . $P NEXT INDEX BLOCK # TO A0 @G@@@@ IS )@@G@@ LX X11,OIWADDR . $P INITIALIZE BLOCK # IN HEADER @A@@@@IT )@@G@@ SA,H1 A0,0,X11 .@G@@@@ LX X8,ORBLKADIU )@@G@@ . $P ADDRESS OF ORIGINAL BLK @G@@@@ SA,H2 A0,0IV )@@G@@,X8 . $P OVF BLK NUMBER TO ORIG BLK @^@@@@ AA,U IW )@@G@@ A0,1@G@@@@ SA A0,IBNUMWO . $P INCREMENT # OF INDEXIX )@@G@@ BLOCKS @C@@@@ J *OIINIT . $E EXIT @]@@@@IY )@@G@@ . @]@@@@ . @]@@@@ . @G@@@@ . SUBROUTINE TO IIZ )@@G@@NSERT INDEX FROM LASTISAVE AT THE BEGINNING OF @A@@@@ . INDEX BLOJA )@@G@@CK POINTED TO BY X9 @C@@@@ . UPON ENTRY. X9 HAS ADDRESS OF INDEX BLJB )@@G@@OCK @E@@@@ . A3 HAS NUMBER OF INDICES IN BLOCK JC )@@G@@@]@@@@ . @C@@@@INSFIRST + 0 . $H JD )@@G@@@G@@@@ JZ A3,IAOVFINS . $T # OF INDICES IN BLOCK = 0 JE )@@G@@ @E@@@@ . $A YES,IAOVFINS NO JF )@@G@@@]@@@@ . @E@@@@ . PUSH INDICES DOWN TO ALLOW SPACE FOR ONE INDEJG )@@G@@X AT THE TOP@]@@@@ . @A@@@@ LX X8,X9 JH )@@G@@@G@@@@ AX,U X8,2 . $P X8 POINTS TO BEGINNING OF JI )@@G@@PUSH @^@@@@ MSI,U A3,2@G@@@@ LR R1,A3 JJ )@@G@@ . $P # OF WORDS TO PUSH TO R1 @G@@@@ LA,U A2,2JK )@@G@@ . $P # OF LOCATIONS BY WHICH TO PUSH @G@@@@ LA,U JL )@@G@@ A0,1 . $P DIRECTION CODE 1 (DOWN) @C@@@@ LRJM )@@G@@ R2,X9 . SAVE X9 @G@@@@ SLJ IPUSH JN )@@G@@ . $W IPUSH MOVE BLOCK OF INDICES @E@@@@ LX X9,RJO )@@G@@2 . RESTORE X9 @]@@@@ . @]@@@@IAOVFINS . JP )@@G@@@G@@@@ DL A0,LASTISAVE . $P INDEX FROM LAST BLOCK JQ )@@G@@ @G@@@@ DS A0,2,X9 . INSERT INDEX FROM LAST JR )@@G@@SAVE @C@@@@ J *INSFIRST . $E EXIT @]@@@@JS )@@G@@ . @C@@@@INDNUMUPD + 0 . $H @]@@@@JT )@@G@@ . @G@@@@ . SUBROUTINE TO INCREMENT # OF INDICES IN INDEX BLOCKJU )@@G@@ POINTED TO BY X9 @]@@@@ . @A@@@@ LA,H2 A0,1,X9 JV )@@G@@ @G@@@@ AA,U A0,1 . $P INCREMENT # OF INDICJW )@@G@@ES @A@@@@ SA A0,1,X9 @C@@@@ J JX )@@G@@ *INDNUMUPD . $E EXIT @]@@@@ . @]@@@@ . JY )@@G@@@]@@@@$(2) @E@@@@IOBFENT* + 0 . # OF OVF BLJZ )@@G@@OCK ENTRIES @G@@@@IOVFPTR + 0 . RELATIVE POINTER KA )@@G@@TO NEXT BLOCK @^@@@@OIWADDR + 0 @F@#@@IOBFTAB* RES KB )@@G@@ IOVFNUM . OVERFLOW INDEX BLOCK TABLE @G@@@@ KC )@@G@@ . --------------------------- @G@@@@ KD )@@G@@ . *INX BLK NUM * BUF ADDRESS* @G@@@@ KE )@@G@@ . --------------------------- @G@@@@KF )@@G@@REMINDX* + 0 . # OF REMAINING INDICES ON OVERFLOW KG )@@G@@@G@@@@ORBLKAD + 0 . ORIGINAL INDEX BLOCK ADDREKH )@@G@@SS @G@@@@LASTISAVE RES 2 . LAST INDEX ENTRY ON BLOKI )@@G@@CK SAVED @G@@@@LASTITEMP RES 2 . TEMP SAVE FOR LASKJ )@@G@@T INDEX ENTRY @G@@@@IASAVA + 0 . SAVE ADDRESKK )@@G@@S WHERE TO INSERT @G@@@@IAINDX RES 2 . SAVE KL )@@G@@INDEX+DBP FROM LAST BLOCK @C@@@@RETURN + 0 KM )@@G@@ . @]@@@@ . @^@@@@ END ___ @E@@@@KN )@@G@@*[@@@@*SDFF*@]@@@@$(1) @^@@@@ AXR$ @]@@@@ . KO )@@G@@ @A@@@@ . SEQUENTIAL WRITE, FILE CREATION @]@@@@TF$SQW* . @A@@@@KP )@@G@@ S,H2 X11,RETURN @E@@@@ TZ CRETSW KQ )@@G@@ . $T IS FILE CREATED YET @C@@@@ ER ERR$ .KR )@@G@@ $E @E@@@@ TNZ IDFASW . $T ARE FILES ASSIKS )@@G@@GNED @E@@@@ LMJ X11,FILASG . $A NO,FILASG YES KT )@@G@@@A@@@@ . .@]@@@@ . @G@@@@SQWLP1KU )@@G@@ . . POINTERS SHOULD POINT TO 1ST BLK@G@@@@KV )@@G@@ TNZ IBWRSW . $T ANYTHING WRITTEN ON THAT BLK KW )@@G@@@G@@@@ LMJ X11,IINIT . $W INIT INITIALIZE BLOCK KX )@@G@@ @E@@@@ LMJ X11,ISPACE . $T WAS SPACE AVAILABLE KY )@@G@@@E@@@@ JZ A2,SQWYSP . $A YES,SQWYSP NO @G@@@@KZ )@@G@@ LMJ X11,IBWRT1 . $W IBWRT1 WRITE INDEX BLOCK OUT LA )@@G@@@E@@@@ . $P POINT TO NEXT BLOCK @C@@@@LB )@@G@@ J SQWLP1 . $J SQWLP1 @C@@@@ . SPACE WAS AVAILLC )@@G@@ABLE FOR INDEX ENTRY @]@@@@SQWYSP . @E@@@@ LA,H2 LD )@@G@@ A1,0,X10 . $P REC LENGTH TO A1 @G@@@@ AA,U A1,1LE )@@G@@ . $P ADD 1 FOR REC LENGTH HDR @E@@@@ SA LF )@@G@@ A1,RECLEN . $P REC LENGTH TO RECLEN@E@@@@ LA,H2 A2,1LG )@@G@@,X10 . $P REC ADDRESS TO A2 @G@@@@ SA A2,RECADD LH )@@G@@ . $P REC ADDRESS TO RECADD @G@@@@SQWLP2 TNZ TBWRLI )@@G@@SW . $T ANYTHING WRITTEN ON TEMP BLOCK @A@@@@ LMJ LJ )@@G@@ X11,TINIT @G@@@@ LMJ X11,TSPACE . $W TSPACE (LK )@@G@@ANY SPACE IN TEMP BLOCK)@E@@@@ JZ A2,SQWFSN . $T SPLL )@@G@@ACE FOUND @E@@@@ . . $A YES,SQWFLM )@@G@@SN NO @G@@@@ LMJ X11,TBWRT1 . $W TBWRT1 WRITE TLN )@@G@@EMP BLOCK OUT @C@@@@ J SQWLP2 . $J SQWLP2 LO )@@G@@@]@@@@SQWFSN . @G@@@@ LX X9,TWADDR . $P ADDRESS LP )@@G@@OF TEMP BLOCK TO X9 @G@@@@ AX X9,TBRELW . $P POLQ )@@G@@INT TO NEW LOC IN TEMP BLOCK @E@@@@ LA A3,RECLEN .LR )@@G@@ $P RECORD LENGTH TO A3 @G@@@@ SA,H2 A3,0,X9 . $PLS )@@G@@ RCD LENGTH TO H2 OF TEMP @G@@@@ A,U A3,EXTRAW .LT )@@G@@ $P ADD # OF EXTRA WORDS TO REC LGTH@I@@@@ SA A3,RECLN1 LU )@@G@@ . $P LENGTH OF REC +EXTRAW TO RECLN1 @I@@@@ SALV )@@G@@,H1 A3,0,X9 . $P RCD LENGTH + EXTRAW TO TEMP ENT LW )@@G@@@C@@@@ LA A3,RECLEN . @A@@@@ AXLX )@@G@@,U X9,1 .@A@@@@ ANA,U A3,1 .@G@@@@LY )@@G@@ LR R1,A3 . $P # OF WORDS TO TRANSFER TO R1 LZ )@@G@@@E@@@@ LX X8,RECADD . $P RECORD ADDRESS TO X8@G@@@@MA )@@G@@ SLJ RTRANS . $W TRANSFER RECORD TO TEMP BLOCK MB )@@G@@@G@@@@ LMJ X11,FRMINX . $W FRMINX FORM INDEX FOR RECOMC )@@G@@RD @G@@@@ . WILL RETURN INDEX TOMD )@@G@@ LOC INDEX @C@@@@ LA A5,TBRELW . @E@@@@ME )@@G@@ AA A5,RECLN1 . $P UPDATE TBRELW @A@@@@ MF )@@G@@ SA A5,TBRELW .@C@@@@ LA,U A0,1 MG )@@G@@ . @G@@@@ SA A0,TBWRSW . $P SET TBWRSW MH )@@G@@TO IND TEMP BLK WR@G@@@@ LA A0,IBRELW . $P RELATIVEMI )@@G@@ LOCATION IN INDX BLOCK @G@@@@ LMJ X11,INSIBL . $W INMJ )@@G@@SIBL INSERT IN INDEX BLOCK; @G@@@@ .MK )@@G@@ $ AT RELATIVE LOCATION IN A0 @A@@@@ LA A0,IBRELW ML )@@G@@ .@A@@@@ AA,U A0,2 .@G@@@@ SA MM )@@G@@ A0,IBRELW . $P UPDATE REL LOCATION IN INX BLOCK@A@@@@ LAMN )@@G@@ A5,RECNMW @^@@@@ AA,U A5,1@G@@@@ SAMO )@@G@@ A5,RECNMW . $P UPDATE NUMBER OF RECORDS STORED @I@@@@ MP )@@G@@ SA A5,RECNMC . $P UPDATE CURRENT NUMBER OF RECORDS MQ )@@G@@ @C@@@@ J *RETURN . $E @]@@@@ . MR )@@G@@ @]@@@@IIOERR @C@@@@ LX,U X10,IIOPKT . $ MS )@@G@@ @C@@@@ LMJ X11,IOERR . $ @C@@@@TIOERRMT )@@G@@ LX,U X10,TIOPKT . $ @C@@@@ LMJ X11,MU )@@G@@IOERR . $ @]@@@@ . @]@@@@ . @]@@@@ . MV )@@G@@ @]@@@@ . @]@@@@ . @]@@@@ . @]@@@@ . MW )@@G@@ @]@@@@ . @]@@@@/ @]@@@@ . @]@@@@ . MX )@@G@@ @]@@@@ . @G@@@@ . SUBROUTINE TO INSERT INDEX IN INDEX BLOMY )@@G@@CK AT REL LOC GIVEN BY A0 @G@@@@ . WILL ALSO UPDATE # OF INDICES MZ )@@G@@IN BLOCK AND IN RANDOM TABLE ENTRY @]@@@@ . @]@@@@INSIBL . NA )@@G@@@C@@@@ SX,H2 X11,RET1 . $H INSIBL @G@@@@ LANB )@@G@@ A1,IWADDR . $P ADDRESS OF INDEX BLOCK TO A1 @G@@@@ NC )@@G@@ AA A0,A1 . $P A0 POINTS TO INDEX BLOCK LOC @E@@@@ND )@@G@@ LA A2,INDEX . $P INDEX TO A2 @E@@@@ NE )@@G@@ SA A2,0,A0 . $P INDEX TO INDEX BLOCK@C@@@@ LANF )@@G@@ A2,RECADD . @E@@@@ LA A2,0,A2 NG )@@G@@ . $P DBP TO A2 @E@@@@ SA A2,1,A0 .NH )@@G@@ $P DBP TO INDEX BLOCK @C@@@@ LA,H2 A3,1,A1 . $ NI )@@G@@ @C@@@@ AA,U A3,1 . $ @G@@@@ NJ )@@G@@ SA,H2 A3,1,A1 . $P UPDATE # OF INDICES IN INDEX BLK@A@@@@NK )@@G@@ LX X8,RNDADD .@A@@@@ AX X8,RNDIDX NL )@@G@@ .@A@@@@ LA A1,0,X8 .@A@@@@ A,U NM )@@G@@ A1,1 .@G@@@@ S A1,0,X8 . $P UPDATE #NN )@@G@@ OF INDICES IN RAND TBL @C@@@@ LA,U A0,1 . NO )@@G@@ @G@@@@ SA A0,IBWRSW . $P UPDATE INX BLK WRNP )@@G@@ITE SW @C@@@@ J *RET1 . $E @]@@@@NQ )@@G@@ . @C@@@@ . SUBROUTINE TO INITIALIZE TEMP FILE BLOCK @]@@@@NR )@@G@@ . @]@@@@TINIT* . @A@@@@ SX,H2 X11,RET1 NS )@@G@@@A@@@@ LX X8,(0,ZEROS) @A@@@@ LX X9,TNT )@@G@@WADDR @^@@@@ LXI,U X9,1@A@@@@ LR,U R1,TNU )@@G@@BSIZE @G@@@@ BT X9,0,*X8 . $P ZERO OUT TEMP NV )@@G@@FILE BLOCK @A@@@@ J *RET1 @]@@@@ . NW )@@G@@ @C@@@@ . SUBROUTINE TO FORM INDEX FOR RECORD @]@@@@ . NX )@@G@@ @A@@@@FRMINX* SX,H2 X11,RET1 @E@@@@ LA NY )@@G@@ A4,TBNUMW . $P BLOCK NUMBER TO A4 @G@@@@ MSI,U A4,TNZ )@@G@@BSIZE . $P WORD # AT BEGINNING OF BLK TO A4@G@@@@ AA OA )@@G@@ A4,TBRELW . $P A4 HAS WORD # IN TEMP FILE @E@@@@ DSOB )@@G@@L A4,36 . $P PREPARE TO DIVIDE @E@@@@ DI,U OC )@@G@@ A4,28 . $P SECTOR NUMBER TO A4 @G@@@@ OD )@@G@@ . $P RELATIVE LOCATION W SECT TO A5 @A@@@@ SA OE )@@G@@ A4,INDEX @G@@@@ S,S1 A5,INDEX . $P STOR INDOF )@@G@@EX FORMED IN INDEX @A@@@@ J *RET1 @]@@@@OG )@@G@@ . @C@@@@ . SUBROUTINE TO INITIALIZE INDEX BLOCK @C@@@@OH )@@G@@IINIT* . . $H @A@@@@ SX,H2 OI )@@G@@ X11,RET1 @A@@@@ LX X8,(0,ZEROS) @A@@@@ OJ )@@G@@ LX X9,IWADDR @^@@@@ LXI,U X9,1@A@@@@ OK )@@G@@ LR,U R1,IBSIZE @E@@@@ BT X9,0,*X8 .OL )@@G@@ $P ZERO OUT INDEX BLOCK@A@@@@ LA A4,IBNUMW @C@@@@OM )@@G@@ LX X11,IWADDR . @G@@@@ SA,H1 ON )@@G@@ A4,0,X11 . $P INITIALIZE # OF BLOCK IN HEADER @G@@@@ SZOO )@@G@@ IBWRSW . $P RESET SW TO INDICATE NO WRITE @C@@@@ OP )@@G@@ J *RET1 . $E @]@@@@ . @G@@@@ . SUBOQ )@@G@@ROUTINE TO CHECK IF THERE IS AVAILABLE SPACE FOR INDEX ENTRY IN @A@@@@OR )@@G@@ . INDEX BLOCK POINTED TO BY IWADDR @A@@@@ . PERCENT FILL IS IN LOCATIONOS )@@G@@ IFILL@]@@@@ . @]@@@@ISPACE . @A@@@@ SX,H2 X11,OT )@@G@@RET1 @A@@@@ LA,U A5,IBSIZE @A@@@@ ANOU )@@G@@A A5,IBRELW @C@@@@ LA,U A4,100 . OV )@@G@@ @E@@@@ AN,U A4,IFILL . $P 100-IFILL TO A4 OW )@@G@@@C@@@@ LA,U A1,IBSIZE . @G@@@@ MSOX )@@G@@I A1,A4 . $P # OF RESERVED WRDS TO A1 @C@@@@ OY )@@G@@ DSL A1,36 . @C@@@@ DI,U A1,1OZ )@@G@@00 . @C@@@@ TNZ A2 . PA )@@G@@ @C@@@@ J $+2 . @C@@@@ PB )@@G@@ AA,U A1,1 . @G@@@@ AN A5,APC )@@G@@1 . $P # OF FREE WORDS TO A5 @^@@@@ LA,U PD )@@G@@ A2,1@A@@@@ TLE A2,A5 @A@@@@ J PE )@@G@@ ISPEX0 @A@@@@ J *RET1 @^@@@@ISPEX0PF )@@G@@ LA,U A2,0@A@@@@ J *RET1 @]@@@@ . PG )@@G@@ @G@@@@ . SUBROUTINE TO TRANSFER A BLOCK FROM LOCATION POINTED TO BPH )@@G@@Y X8 TO @E@@@@ . LOCATION POINTED TO BY X9. LENGTH OF BLOCK IN R1 PI )@@G@@ @]@@@@ . @^@@@@RTRANS* + 0 @^@@@@ LXPJ )@@G@@I,U X8,1@^@@@@ LXI,U X9,1@A@@@@ BT X9,0PK )@@G@@,*X8 @A@@@@ J *RTRANS @]@@@@ . PL )@@G@@@G@@@@ . SUBROUTINE TO WRITE INDEX BLOCK OUT IN A DOUBLE BUFFERED MANNERPM )@@G@@. @C@@@@ . UPDATE DBLE BUFFERED SWITCH AND ADDRESS. @A@@@@ . USEPN )@@G@@D FOR SEQUENTIAL WRITE @A@@@@IBWRT1 SX,H2 X11,RET1 PO )@@G@@@A@@@@ LA A4,IBNUMW @G@@@@ MSI,U A4,IPP )@@G@@BSIZE . $P WRD NUMBER OF BLOCK BEG TO A4 @A@@@@ DSL PQ )@@G@@ A4,36 @E@@@@ DI,U A4,28 . $P SECTOR NPR )@@G@@UMBER TO A4 @E@@@@ TZ A5 . $ NO REMAINDER APS )@@G@@LLOWED@^@@@@ ER ERR$@G@@@@ SA A4,ISECT PT )@@G@@ . $P SAVE SECTOR NUMBER IN ISECT @]@@@@ . @]@@@@ . PU )@@G@@ @G@@@@ TP IIOPKT+3 . $ IS INDEX I/O PACKET PV )@@G@@FREE @A@@@@ ER WAIT$ @C@@@@ TZPW )@@G@@,S1 IIOPKT+3 . $ @C@@@@ J IIOERR PX )@@G@@ . $ @A@@@@ LA,U A0,010 @G@@@@ PY )@@G@@ SA A0,IIOFUNC . $P WRITE FUNCTION TO PACKET @C@@@@PZ )@@G@@ LA A1,IWADDR . $P @G@@@@ SA QA )@@G@@ A1,IIOBUF . $P BUFFER ADDRESS TO INX I/O PACKET@G@@@@ SAQB )@@G@@ A4,IIOSECT . $P SECTOR # TO I/O PACKET @A@@@@ QC )@@G@@ LA,U A0,IIOPKT .@G@@@@ ER IO$ .QD )@@G@@ $P ISSUE I/O WITHOUT WAIT @A@@@@ TZ IDBLSW QE )@@G@@ @A@@@@ J IBWGT1 @^@@@@ LA,U QF )@@G@@ A0,1@G@@@@ SA A0,IDBLSW . $P SET IDBLSW TO POINT QG )@@G@@TO BUFFER @A@@@@ J IBWGT2 @A@@@@IBWGT1 SZQH )@@G@@ IDBLSW @]@@@@IBWGT2 @E@@@@ SZ IBWRQI )@@G@@SW . $P RESET IBWRSW @E@@@@ LA,U A0,2 QJ )@@G@@ . $P RESET IBRELW @A@@@@ SA A0,IBRELW .QK )@@G@@@A@@@@ LA A0,RNDIDX @^@@@@ AA,U A0,1QL )@@G@@@A@@@@ SA A0,RNDIDX @A@@@@ LA A0,IQM )@@G@@BNUMW .@^@@@@ AA,U A0,1@G@@@@ SA A0,IQN )@@G@@BNUMW . INCREMENT IBNUMW, NUM OF BLOCKS @]@@@@ . @A@@@@QO )@@G@@ LA A0,IDBLSW @A@@@@ LA A1,IBUF,A0QP )@@G@@ @G@@@@ SA A1,IWADDR . $P UPDATE ADDRESS OF NXQQ )@@G@@T INX BUF @]@@@@ . @C@@@@ J *RET1 .QR )@@G@@ $ @]@@@@ . @G@@@@ . SUBROUTINE TO CHECK IF TEMP FILE QS )@@G@@BLOCK, INDICATED BY TWADDR, HAS @C@@@@ . SPACE FOR RECORD WHOSE LENGQT )@@G@@TH IS IN RECLEN @E@@@@ . RETURN STATUS IS IN REGISTER A2, 0 IS SUCCESSQU )@@G@@FUL @]@@@@ . @]@@@@TSPACE* . @A@@@@ SX,H2 QV )@@G@@ X11,RET1 @G@@@@ LA,U A5,TBSIZE . $P TEMP BLOQW )@@G@@CK SIZE TO A5 @G@@@@ ANA A5,TBRELW . $P FRQX )@@G@@EE SPACE LEFT TO A5 @G@@@@ LA A2,RECLEN .QY )@@G@@ $P LENGTH OF RECORD TO A2 @C@@@@ AA,U A2,EXTRAW QZ )@@G@@ . @G@@@@ TG A5,A2 . $T LENGTH ORA )@@G@@F RECORD > FREE SPACE @E@@@@ J TSPEX0 . $A NORB )@@G@@,TSPEX0 YES @G@@@@ L,U A2,1 . $P NONZERO RC )@@G@@RETURN STATUS @C@@@@ J *RET1 . $E RD )@@G@@ @]@@@@TSPEX0 . @E@@@@ L,U A2,0 . $P ZERE )@@G@@RO RETURN STATUS @C@@@@ J *RET1 . $E RF )@@G@@@]@@@@ . @G@@@@ . SUBROUTINE TO WRITE TEMP FILE OUT IN A DOUBLRG )@@G@@E BUFFERED MANNER @E@@@@ . UPDATES DBL BUFFERED SWITCH AND BUFFER RH )@@G@@ADDRESS @C@@@@ . USED FOR SEQUENTIAL WRITE TO TEMP FILE RI )@@G@@@]@@@@ . @]@@@@TBWRT1* . @A@@@@ SX,H2 X11,RET1 RJ )@@G@@ @A@@@@ LA A4,TBNUMW @G@@@@ MSI,U RK )@@G@@ A4,TBSIZE . $P WRD NUMBER OF BLOCK BEG TO A4 @A@@@@ DSRL )@@G@@L A4,36 @E@@@@ DI,U A4,28 . $P SERM )@@G@@CTOR NUMBER TO A4 @E@@@@ TZ A5 . $ NO REMAIRN )@@G@@NDER ALLOWED@^@@@@ ER ERR$@A@@@@ SA A4,TRO )@@G@@SECT @A@@@@ TP TIOPKT+3 .@A@@@@ ERRP )@@G@@ WAIT$ .@A@@@@ TZ,S1 TIOPKT+3 .@A@@@@RQ )@@G@@ J TIOERR .@G@@@@ LA,U A0,010 RR )@@G@@ . $P WRITE FUNCTION CODE TO A0 @G@@@@ SA A0,TRS )@@G@@IOFUNC . $P WRITE FUNCTION CODE TO PACKET @E@@@@ LA RT )@@G@@ A1,TWADDR . $P BUFFER ADDRESS TO A1@G@@@@ SA A1,TRU )@@G@@IOBUF . $P BUFFER ADDRESS TO TEMP I/O PKT @G@@@@ SA RV )@@G@@ A4,TIOSECT . $P SECTOR NUMBER TO I/O PACKET @A@@@@ LARW )@@G@@,U A0,TIOPKT .@G@@@@ ER IO$ . $P ISRX )@@G@@SUE THE I/O WITHOUT WAIT @]@@@@ . @A@@@@ TZ RY )@@G@@ TDBLSW .@A@@@@ J TBWGT1 .@A@@@@ RZ )@@G@@ LA,U A0,1 .@G@@@@ SA A0,TDBLSW .SA )@@G@@ $P SET TDBLSW TO POINT TO TEMP BUF @A@@@@ J TBWGT2 SB )@@G@@ @A@@@@TBWGT1 SZ TDBLSW @]@@@@TBWGT2 . @]@@@@SC )@@G@@ . @G@@@@ SZ TBWRSW . $P RESET TEMP BLOSD )@@G@@CK WRITE SWITCH @G@@@@ SZ TBRELW . $P RESET TESE )@@G@@MP BLOCK REL WRITE LOC @]@@@@ . @A@@@@ LA A0,TSF )@@G@@DBLSW .@A@@@@ LA A1,TOBF1A,A0 .@G@@@@ SASG )@@G@@ A1,TWADDR . $P UPDATE ADDRESS OF NEXT TEMP BLCK@G@@@@ SH )@@G@@ LA A0,TBNUMW . $P INCREMENT NUMBER OF TEMP FILE ; @C@@@@SI )@@G@@ . BLOCKS @A@@@@ AA,U SJ )@@G@@ A0,1 .@A@@@@ SA A0,TBNUMW .@C@@@@ SK )@@G@@ J *RET1 . $E @]@@@@ . @]@@@@ . SL )@@G@@ @]@@@@/ @]@@@@ . @]@@@@ . @A@@@@ . SEQSM )@@G@@UENTIAL READ OF TEMP FILE @]@@@@TF$SQR* . @E@@@@ SX,H2 SN )@@G@@ X11,RETURN . $H SEQUENTIAL READ @E@@@@ TNZ IDFASO )@@G@@SW . $T ARE FILES ASSIGNED @^@@@@ ER ERR$@G@@@@SP )@@G@@ TNZ CRETSW . $T FILE HAS BEEN CREATED SW SET SQ )@@G@@@E@@@@ J SQRFLI . $J SQRFLI @E@@@@SR )@@G@@SQRFOK TNZ FLSHSW . $T EDIT BUFFERS @G@@@@ SS )@@G@@ J SQRFSL . $W SQRFLS FLUSH REST OF BUFFERS OUT@A@@@@ST )@@G@@SQRGT1 . BUFFERS HAVE BEEN FLUSHED @G@@@@ TNZ IBNUMR SU )@@G@@ . $T IS BLOCK TO READ FIRST BLOCK @E@@@@ J SQRFSV )@@G@@BL . $A YES,SQRFBL NO @A@@@@SQRGT2 . NOT FIRST INDEX BLOCSW )@@G@@K READ@E@@@@ TNZ SQRRIN . $T ANY NEXT READ INDEX SX )@@G@@@E@@@@ J SQRNRI . $A NO,SQRNRI YES @A@@@@SY )@@G@@ LA A0,IRADDR @A@@@@ AA A0,IBRELR SZ )@@G@@ @G@@@@ LA A1,0,A0 . $P NEXT INDEX IN BLOCK TA )@@G@@READ TO A1 @G@@@@ LA A3,SQRRIN . $P UPDATE NUMBER TB )@@G@@OF INDICES REM @A@@@@ ANA,U A3,1 .@A@@@@ TC )@@G@@ SA A3,SQRRIN .@G@@@@ SA A1,RINDEX .TD )@@G@@ $P INDEX OF RECORD TO LOC RINDEX @A@@@@ LA A0,IBRELR TE )@@G@@ @^@@@@ AA,U A0,2@G@@@@ SA A0,IBRELR TF )@@G@@ . $P UPDATE REL LOC WITHIN INX BLK @C@@@@ J SQRGTG )@@G@@T3 . $J SQRGT3 @E@@@@SQRNRI . NO NEXT READ INDEX IN CURRENT BLOTH )@@G@@CK READ @A@@@@ LA A2,IRADDR @G@@@@ TI )@@G@@ TZ,H2 0,A2 . $T ANY OVERFLOW DEFINED FOR BLK @E@@@@TJ )@@G@@ J SQRGT4 . $A YES,SQRGT4 NO @E@@@@SQRGT5TK )@@G@@ . NO OVERFLOW BLOCK DEFINED FOR CURRENT BLOCK @G@@@@ TZTL )@@G@@ REOFSW . $T END OF FILE SWITCH SET @E@@@@ TM )@@G@@ J SQREOF . $A YES,SQREOF NO @E@@@@ TNTN )@@G@@Z ROVFSW . $T OVERFLOW SWITCH SET @E@@@@ J TO )@@G@@ SQRNOS . $A NO,SQRNOS YES @G@@@@ LA A5,STP )@@G@@QRORB . $P ORIGINAL BLOCK NUMBER TO A4 @E@@@@ AA,U TQ )@@G@@ A5,1 . $P ADD 1 TO A4 @G@@@@ SA A5,ITR )@@G@@BNUMR . $P STORE UPDATED BLK NUM IN IBNUMR @G@@@@ SZ TS )@@G@@ ROVFSW . $P RESET OVERFLOW SWITCH @C@@@@ J TT )@@G@@ SQRGT6 . $J SQRGT6 @A@@@@SQRNOS . NO OVERFLOW SWITCH SETU )@@G@@T @G@@@@ LA A5,IBNUMR . $P NUMBER OF BLOCK TO ATV )@@G@@5 @E@@@@ AA,U A5,1 . $P ADD 1 TO A5 TW )@@G@@ @G@@@@ SA A5,IBNUMR . $P UPDATE READ BLOCK NUTX )@@G@@MBER @C@@@@SQRGT6 . UPDATED BLOCK NUMBER TO NEXT BLOCK @C@@@@TY )@@G@@ TP IIOPKT+3 . @C@@@@ ER TZ )@@G@@ WAIT$ . @C@@@@ TZ,S1 IIOPKT+3 UA )@@G@@ . @C@@@@ J IIOERR . @A@@@@UB )@@G@@ ANA,U A5,1 . @G@@@@ TE A5,IBRSTA UC )@@G@@ . $T IS IT THE SAME AS THE ORIG BLK @C@@@@ ER ERR$UD )@@G@@ . $E EXIT @A@@@@ LA,U A0,2 .@G@@@@UE )@@G@@ SA A0,IBRELR . $P RESET RELATIVE READ TO 2 UF )@@G@@@G@@@@ . PREPARE TO UPDATE DBL BUFFEREUG )@@G@@D SW @A@@@@ TZ IDBLSW .@A@@@@ J UH )@@G@@ SQRGT7 @^@@@@ LA,U A0,1@A@@@@ SA UI )@@G@@ A0,IDBLSW @A@@@@ J SQRGT8 @A@@@@SQRGT7UJ )@@G@@ SZ IDBLSW @C@@@@SQRGT8 . UPDATED DOUBLE BUFFER SWITCUK )@@G@@H @A@@@@ LA A0,IDBLSW @A@@@@ LAUL )@@G@@ A1,IBUF,A0 @E@@@@ SA A1,IRADDR . $P UPUM )@@G@@DATE ADDR OF BLOCK@G@@@@ L,H2 A2,1,A1 . $P NUMBER OUN )@@G@@F INDICES IN BLK TO A2 @G@@@@ S A2,SQRRIN . $P NUUO )@@G@@MBER OF INDICES TO SQRRIN @G@@@@ LA A3,IBNUMR UP )@@G@@ . $P # OF RECORDS READ TO A3 @]@@@@ . @C@@@@ . CHECK IF UQ )@@G@@THERE ARE ANY MORE BLOCKS TO READ @]@@@@ . @G@@@@ TGUR )@@G@@ A3,IBNUMW . $T # OF BLOCKS WRITTEN > # READ @E@@@@ US )@@G@@ J SQRSEF . $A NO,SQRSEF YES @A@@@@ L UT )@@G@@ A1,IDBLSW .@A@@@@ TZ A1 .@A@@@@UU )@@G@@ J SQRGT9 .@A@@@@ LA,U A1,1 UV )@@G@@ .@A@@@@ J SQRG10 .@A@@@@SQRGT9 SZ UW )@@G@@ A1 .@G@@@@SQRG10 . $P DOUBLEUX )@@G@@ BUFFER SW TO A1 @E@@@@ LA A2,IBNUMR . $P BLUY )@@G@@OCK NUMBER TO A2 @G@@@@ SA A2,IBRSTA . $P SAVE BLKUZ )@@G@@ # FOR WHICH READ ST @G@@@@ LMJ X11,IBREAD . $P STVA )@@G@@ART READ OPERATION FOR NXT I B@G@@@@ J SQRGT2 .VB )@@G@@ $J SQRGT2 NEW INDEX BLOCK OBTAINED @A@@@@SQRSEF . NO MORE BLOCKS TO REAVC )@@G@@D @A@@@@ LA,U A0,1 .@G@@@@ SA VD )@@G@@ A0,REOFSW . $P SET END OF FILE SWITCH @C@@@@ J VE )@@G@@ SQRGT2 . $J SQRGT2 @]@@@@ . @A@@@@SQRFBL . FIRVF )@@G@@ST BLOCK TO BE READ @G@@@@ SZ IDBLSW . $P SEVG )@@G@@T DOUBLE BUFFER SWITCH TO ZERO@E@@@@ SZ A1 .VH )@@G@@ $P PROPER SWITCH TO A1 @E@@@@ LA,U A2,0 . $P BLVI )@@G@@OCK NUMBER TO A2 @G@@@@ LMJ X11,IBREAD . $W ISSUE REVJ )@@G@@AD FOR 1ST BLOCK @A@@@@ TP IIOPKT+3 .@E@@@@VK )@@G@@ ER WAIT$ . $P WAIT FOR END OF READ@A@@@@ VL )@@G@@ TZ,S1 IIOPKT+3 .@A@@@@ J IIOERR .VM )@@G@@@A@@@@ .@A@@@@ LA A0,IVN )@@G@@DBLSW @A@@@@ LA A3,IBUF,A0 @G@@@@ SAVO )@@G@@ A3,IRADDR . $P UPDATE ADDRESS OF BLOCK @A@@@@ VP )@@G@@ LA,H2 A0,1,A3 .@G@@@@ SA A0,SQRRIN .VQ )@@G@@ $P UPDATE NUM OF INDICES IN BLK @A@@@@ LA A5,IBNUMR VR )@@G@@ .@A@@@@ AA,U A5,1 .@G@@@@ S VS )@@G@@ A5,IBNUMR . $P UPDATE # OF BLOCKS READ @G@@@@ TGVT )@@G@@ A5,IBNUMW . $T # OF BLKS WRITTEN > # READ @E@@@@ VU )@@G@@ J SQEOF1 . $A NO,SQEOF1 YES @G@@@@ VV )@@G@@ . $P PREPARE TO START NEXT OP [ READ]@A@@@@ VW )@@G@@ LA A1,IDBLSW @^@@@@ TZ A1 @A@@@@ VX )@@G@@ J SQRG11 @^@@@@ LA,U A1,1@A@@@@ VY )@@G@@ J SQRG12 @^@@@@SQRG11 SZ A1 @G@@@@SQRG12VZ )@@G@@ . . $P PROPER DBL BUFFER SW + A1 @A@@@@WA )@@G@@ LA A2,IBNUMR @G@@@@ SA A2,IBRSTA WB )@@G@@ . $P SAVE BLK # FOR WHICH READ START @C@@@@ LMJ X11,WC )@@G@@IBREAD . $W IBREAD @G@@@@ . $P DOWD )@@G@@ NOT WAIT FOR THIS I/O @]@@@@SQRG13 . @A@@@@ LA WE )@@G@@ A0,IRADDR .@G@@@@ TNZ,H2 1,A0 . $T ANY INDIWF )@@G@@CES IN BLOCK READ @G@@@@ J SQRNRI . $A NOWG )@@G@@,SQRNRI YES,SQRGT2 @A@@@@ J SQRGT2 .WH )@@G@@@]@@@@ . @]@@@@SQEOF1 . @^@@@@ LA,U A3,1@G@@@@WI )@@G@@ SA A3,REOFSW . $P SET READ END OF FILE SWITCH WJ )@@G@@@C@@@@ J SQRG13 . $J SQRG13 @]@@@@ . WK )@@G@@@A@@@@SQRGT4 . OVERFLOW DEFINED FOR BLOCK @C@@@@ . NO MORE INDICESWL )@@G@@ IN ORIGINAL BLOCK @G@@@@ TZ ROVFSW . $T WAWM )@@G@@S THIS BLOCK AN OVERFLOW BLOCK@E@@@@ J SQROBL .WN )@@G@@ $A YES,SQROBL NO @^@@@@ LA,U A0,1@E@@@@ SAWO )@@G@@ A0,ROVFSW . $P SET OVERFLOW SWITCH @A@@@@ LA WP )@@G@@ A1,IBNUMR .@G@@@@ SA A1,SQRORB . $P SAVE ORIWQ )@@G@@GINAL BLOCK # IN SQRORB @C@@@@SQROBL . NEED AN OVERFLOW INDEX BLOCK WR )@@G@@ @G@@@@ TP IIOPKT+3 . $P WAIT FOR PREVIOUS IOWS )@@G@@ TO COMPLETE@A@@@@ ER WAIT$ @A@@@@ TZWT )@@G@@,S1 IIOPKT+3 @A@@@@ J IIOERR @G@@@@WU )@@G@@ LA A1,IOBF1A . $P ADDRESS OF INDEX BLOCK TO A1 WV )@@G@@@A@@@@ LA A2,IRADDR .@G@@@@ LA,H2 A3,0WW )@@G@@,A2 . $P # OF OVERFLOW BLOCK TO A3 @G@@@@ MSI,U WX )@@G@@ A3,IBSIZE . $P WRD # AT BEG OF BLK TO A3 @E@@@@ DSWY )@@G@@L A3,36 . PREPARE TO DIVIDE @E@@@@ DI,U WZ )@@G@@ A3,28 . $P SECTOR NUMBER TO A3 @E@@@@ TZ A4 XA )@@G@@ . NO REMAINDER ALLOWED@A@@@@ ER ERR$ XB )@@G@@ .@G@@@@ LA,U A4,020 . $P READ FUNCTION CODE TXC )@@G@@O A4 @G@@@@ SA A4,IIOFUNC . $P READ FN CODE TXD )@@G@@O PACKET @G@@@@ SA A3,IIOSECT . $P SECTOR NXE )@@G@@UMBER TO PACKET @G@@@@ SA A1,IIOBUF . $P BUXF )@@G@@FFER ADDRESS TO I/O PKT @A@@@@ L,U A0,IIOPKT .XG )@@G@@@E@@@@ ER IO$ . $W IO$ ISSUE THE I/O @G@@@@XH )@@G@@ TP IIOPKT+3 . $P WAIT FOR I/O TO COMPLETE XI )@@G@@@A@@@@ ER WAIT$ @A@@@@ TZ,S1 IIOPXJ )@@G@@KT+3 @A@@@@ J IIOERR @A@@@@ LAXK )@@G@@ A1,IOBF1A .@G@@@@ SA A1,IRADDR . $P UPXL )@@G@@DATE IRADDR BY NEW OVF BLK @^@@@@ LA,U A2,2@G@@@@ XM )@@G@@ SA A2,IBRELR . $P UPDATE IBRELR TO POINT TO REL 2 @G@@@@XN )@@G@@ LA A3,IBONRR . $P UPDATE # OF OVERFLOW BLOCKS READXO )@@G@@@^@@@@ AA,U A3,1@A@@@@ SA A3,IBONRR XP )@@G@@@A@@@@ LX X8,IRADDR .@G@@@@ TNZ,H2 1,X8XQ )@@G@@ . $T ANY INDICES IN THIS BLOCK @E@@@@ J XR )@@G@@ SQRNOI . $A NO,SQRNOI YES @G@@@@ LA,H2 A4,1XS )@@G@@,X8 . $P # OF INDICES IN BLOCK TO A4 @G@@@@ SA XT )@@G@@ A4,SQRRIN . $P UPDATE SQRRIN BY # OF REM INDX @A@@@@ AXXU )@@G@@ X8,IBRELR @E@@@@ LA A5,0,X8 . $P NEXV )@@G@@XT INDEX TO A5 @G@@@@ SA A5,RINDEX . $P INDEX OFXW )@@G@@ RECORD TO RINDEX @^@@@@ ANA,U A4,1@G@@@@ SAXX )@@G@@ A4,SQRRIN . $P UPDATE # OF INDICES REMAINING @A@@@@ XY )@@G@@ LA A0,IBRELR @^@@@@ AA,U A0,2@G@@@@ XZ )@@G@@ SA A0,IBRELR . $P UPDATE RELATIVE INDX BLK PTR @A@@@@YA )@@G@@ J SQRGT3 @C@@@@SQRNOI . NO MORE INDICES AVAILYB )@@G@@ABLE IN THIS BLOCK@G@@@@ TNZ,H2 0,X8 . $T ANY OVERYC )@@G@@FLOW BLOCKS DEFINED @E@@@@ J SQRGT5 . $A NOYD )@@G@@,SQRGT5 YES,SQRGT4@C@@@@ J SQRGT4 . $ YE )@@G@@@E@@@@SQRGT3 . INDEX FOUND, BREAK DOWN AND GET TEMP FILE BLOCK @A@@@@YF )@@G@@ LA A1,RINDEX .@A@@@@ LSSL A1,6 YG )@@G@@ .@E@@@@ SSL A1,6 . $P SECTOR NUMBER TO A1 YH )@@G@@@E@@@@ DSL A1,36 . PREPARE TO DIVIDE @E@@@@YI )@@G@@ DI,U A1,TBSECT . $P BLOCK NUMBER TO A1 @G@@@@ YJ )@@G@@ . $P SECTOR WITHIN BLOCK TO A2 @A@@@@YK )@@G@@ LA A3,TBSQWN .@A@@@@ ANA,U A3,1 YL )@@G@@ .@G@@@@ TG A3,A1 . $T TEMP BLK NUM > LARGEYM )@@G@@ST SEQ WR BL@G@@@@ J SQRG14 . $J SQRG14 BLOCK YN )@@G@@IS NOT OVERFLOW @G@@@@ LMJ X11,TOREAD . $W TOREAD YO )@@G@@ OVERFLOW BLOCK @C@@@@ J SQRG15 . $J SQYP )@@G@@RG15 @C@@@@SQRG14 . BLOCK WHERE RECORD IS NOT OVERFLOW @C@@@@ YQ )@@G@@ LMJ X11,TBREAD . $W TBREAD @G@@@@ YR )@@G@@ . UPON RETURN SECTAD HAS SECTOR ADDR @A@@@@SQRG15 LA YS )@@G@@ A0,SECTAD @G@@@@ AA,S1 A0,RINDEX . $P ADDRESS YT )@@G@@OF RECORD TO A0 @E@@@@ LA,H2 A5,0,A0 . $P REYU )@@G@@CORD LENGTH TO A5 @C@@@@ ANA,U A5,EXTRAW . YV )@@G@@@B@[@@ ANA,U A5,EXTRAW . @B@@@[ ANA,U YW )@@G@@ A5,1 . @G@@@@ SA,H2 A5,2,X10 . $P REYX )@@G@@CORD LENGTH TO CALLING PACKET @^@@@@ AA,U A0,1@G@@@@ YY )@@G@@ SA A0,1,X10 . $P ADDRESS OF RECORD TO PACKET @A@@@@YZ )@@G@@ LA A1,RECNMR @^@@@@ AA,U A1,1@E@@@@ZA )@@G@@ SA A1,0,X10 . $P RECORD # TO PACKET @G@@@@ ZB )@@G@@ SA A1,RECNMR . $P UPDATE # OF RECORDS READ @G@@@@ZC )@@G@@ SZ,T1 2,X10 . $P ZERO STATUS (SUCCESSFUL) ZD )@@G@@@C@@@@ J *RETURN . $E EXIT @C@@@@SQREOF . ENDZE )@@G@@ OF FILE NO MORE RECORDS TO READ @^@@@@ LA,U A0,1@A@@@@ZF )@@G@@ SA,T1 A0,2,X10 @A@@@@ J *RETURN ZG )@@G@@ @]@@@@SQRFLI . @G@@@@ LMJ X11,IBWRT1 . $WZH )@@G@@ IBWRT1 FLUSH INDEX BUF @G@@@@ TP IIOPKT+3 ZI )@@G@@ . $P MAKE SURE I/O IS DONE @C@@@@ ER WAIT$ ZJ )@@G@@ . @G@@@@ TZ,S1 IIOPKT+3 . $P MAKE ZK )@@G@@SURE I/O IS OK @C@@@@ J IIOERR . ZL )@@G@@ @C@@@@ LA,U A0,1 . @E@@@@ ZM )@@G@@ SA A0,CRETSW . $P SET CRETSW @G@@@@ SAZN )@@G@@ A0,WRITSW . $P SET WRITSW TO INDICATE EOW @C@@@@ ZO )@@G@@ LA A1,TBNUMW . @I@@@@ SA A1,TZP )@@G@@BSQWN . $P SAVE # OF BLOCKS READ FOR EDIT @C@@@@ ZQ )@@G@@ LA A1,IBNUMW . @E@@@@ SA A1,IZR )@@G@@BNUMWO . $P UPDATE IBNUMWO @C@@@@ LA A2,RECNMW ZS )@@G@@ . @G@@@@ SA A2,RECNMC . $P SAVE ZT )@@G@@== OF RECORDS IN RECNMC @C@@@@ J SQRFOK .$J ZU )@@G@@SQRFOK@]@@@@/ @]@@@@ . @]@@@@ . @]@@@@ . ZV )@@G@@ @]@@@@ . @]@@@@ . @]@@@@ . @E@@@@ . SUBZW )@@G@@ROUTINE TO DOUBLE BUFFER TEMPORARY FILE BLOCKS. @G@@@@ . UPON ENTRZX )@@G@@Y, A1 HAS BLOCK NUM, A2 HAS REL SECTOR WITHIN BLOCK @G@@@@ . UPOZY )@@G@@N RETURN, LOCATION SECTAD WILL POINT TO BEG OF SECTOR IN BUFFER @]@@@@ZZ )@@G@@ . @]@@@@TBREAD . @C@@@@ SX,H2 X11,RET1 .AA )@@G@@ $H TBREAD @G@@@@ TNZ TBNUMR . $T ANY TEMP FILE AB )@@G@@BLOCKS READ @E@@@@ J TBRNTB . $A NO,TBRNTAC )@@G@@B YES @A@@@@TBRGT1 . A BLOCK HAS BEEN READ @A@@@@ LAAD )@@G@@ A4,TBNUMR @G@@@@ ANA,U A4,1 . $P LAAE )@@G@@ST BLOCK NUMBER READ TO A4 @G@@@@ TLE A4,A1 .AF )@@G@@ $T BLK # WANTED <= BLK # READ @E@@@@ J TBRNIN AG )@@G@@ . $A NO,TBRNIN YES @G@@@@ TE A4,A1 .AH )@@G@@ $T BLK # WANTED = BLK # READ @C@@@@ ER ERR$ AI )@@G@@ . $E EXIT @C@@@@ J TBGETS . $J TBGETS AJ )@@G@@@C@@@@TBRNIN . BLOCK WANTED IS NOT AVAILABLE @G@@@@ TPAK )@@G@@ TIOPKT+3 . MAKE SURE I/O PACKET IS FREE @A@@@@ AL )@@G@@ ER WAIT$ @G@@@@ TZ,S1 TIOPKT+3 .AM )@@G@@ MAKE SURE LAST I/O WAS OK @A@@@@ J TIOERR AN )@@G@@ .@G@@@@ . $ ANOTHER BLOCK MUST BEAO )@@G@@ READY NOW @A@@@@ LA A5,TBNUMR .@A@@@@ TZAP )@@G@@ TDBLSW .@A@@@@ J TBRGT2 .@A@@@@AQ )@@G@@ LA,U A0,1 .@G@@@@ SA A0,TDBLSW AR )@@G@@ . $P UPDATE TEMP FILE DBLE BUF SW @A@@@@ J TBRGAS )@@G@@T3 .@A@@@@TBRGT2 SZ TDBLSW .@]@@@@TBRGT3 . AT )@@G@@@G@@@@ TE A5,TBRSTA . $T IS NEXT BLOCK SAME AS STARAU )@@G@@TED @E@@@@ ER ERR$ . $E ERROR, SHOULD BE AV )@@G@@@C@@@@ AA,U A5,1 . @G@@@@ SAAW )@@G@@ A5,TBNUMR . $P UPDATE BLOCK READ TO BLOCK READ + 1@G@@@@ AX )@@G@@ LA A0,TDBLSW . $P UPDATE TRADDR (ADDR OF TEMP BLK)@A@@@@AY )@@G@@ LA A4,TBUF,A0 .@A@@@@ SA A4,TRADDR AZ )@@G@@ .@G@@@@ LMJ X11,TBRDE1 . $W TBRDE1 ST RDE OF NEXBA )@@G@@T BLK IF ANY@G@@@@ . $P WILL NOT WAIT BB )@@G@@FOR NEW I/O @A@@@@ LA A5,TBNUMR .@A@@@@ BC )@@G@@ ANA,U A5,1 .@G@@@@ TNE A1,A5 .BD )@@G@@ $T BLOCK READ SAME AS BLOCK WANTED @E@@@@ J TBGETS BE )@@G@@ . $A YES,TBGETS NO @G@@@@ TNZ TEOFSW .BF )@@G@@ $T IS TEMP FILE END OF FILE SW SET @E@@@@ J TBRNIN BG )@@G@@ . $A NO,TBRNIN YES @C@@@@ ER ERR$ .BH )@@G@@ $E EXIT @G@@@@TBRNTB . NO TEMP BLOCKS HAVE BEEN READ YET, READ BLOCKBI )@@G@@ # IN A1 @C@@@@ . REGISTERS A1 AND A2 NOT TO BE CHANGED BJ )@@G@@@A@@@@ SZ TDBLSW @G@@@@ TP TIOPBK )@@G@@KT+3 . MAKE SURE I/O PACKET IS FREE @A@@@@ ER BL )@@G@@ WAIT$ @A@@@@ TZ,S1 TIOPKT+3 @A@@@@ BM )@@G@@ J TIOERR @A@@@@ LA A3,A1 .BN )@@G@@@E@@@@ MSI,U A3,TBSECT . $P SECTOR NUMBER TO A3 @E@@@@BO )@@G@@ LA A4,TBUF . $P BUFFER ADDRESS TO A4@E@@@@ BP )@@G@@ LA,U A5,020 . $P I/O READ CODE TO A5 @E@@@@ SABQ )@@G@@ A5,TIOFUNC . $P I/O CODE TO TIOPKTT @G@@@@ SA BR )@@G@@ A4,TIOBUF . $P BUFFER ADDRESS TO TIOPKT @G@@@@ SABS )@@G@@ A3,TIOSECT . $P SECTOR NUMBER TO TIOPKT @E@@@@ BT )@@G@@ LA,U A0,TIOPKT . $P ISSUE THE I/O @^@@@@ ERBU )@@G@@ IO$ @G@@@@ TP TIOPKT+3 . $P WAIT FOR I/O TBV )@@G@@O COMPLETE @A@@@@ ER WAIT$ @A@@@@ BW )@@G@@ TZ,S1 TIOPKT+3 @A@@@@ J TIOERR BX )@@G@@@G@@@@ SA A4,TRADDR . $P UPDATE TEMP FILE ADDRESS BY )@@G@@ @A@@@@ L A5,A1 @^@@@@ AA,U BZ )@@G@@ A5,1@G@@@@ SA A5,TBNUMR . $P UPDATE # OF TEMP FILCA )@@G@@ES READ @G@@@@ LMJ X11,TBRDE1 . $W TBRDE1 ST READCB )@@G@@ OF NEXT BL IF ANY@C@@@@ J TBRGT1 . $J TBRGT1 CC )@@G@@@]@@@@ . @A@@@@TBGETS . BLOCK WANTED IS IN CORE @C@@@@ CD )@@G@@ LA A0,TDBLSW . @G@@@@ LA A0,TCE )@@G@@BUF,A0 . $P ADDR OF TEMP BUF TO A0 @G@@@@ MSI,U CF )@@G@@ A2,28 . $P REL WRD DISPLACEMENT TO A2 @G@@@@ AACG )@@G@@ A0,A2 . $P ADDRESS OF SECTOR WANTED TO A0 @G@@@@ CH )@@G@@ S A0,SECTAD . $P ADDR OF SECTOR WANTED TO SECTAD @C@@@@CI )@@G@@ J *RET1 . $P EXIT @]@@@@ . @E@@@@CJ )@@G@@TBRDE1 . SUBROUTINE TO START READ OF NEXT TEMP BLOCK IF ANY @C@@@@ CK )@@G@@ SX,H2 X11,RET2 . @G@@@@ LA A5,TCL )@@G@@BNUMR . $P A5 CONTAINS NEXT REL BLK NUMBER @G@@@@ TG CM )@@G@@ A5,TBSQWN . $T ANY MORE BLOCKS TO BE READ @E@@@@ J CN )@@G@@ TBRGT4 . $A NO,TBRGT4 YES @G@@@@ CO )@@G@@ . START NEXT READ OPERATION (NO WAIT)@A@@@@ LACP )@@G@@ A0,TDBLSW .@A@@@@ TZ A0 .@A@@@@CQ )@@G@@ J TBRGT5 .@A@@@@ LA,U A0,1 CR )@@G@@ .@A@@@@ J TBRGT6 .@G@@@@TBRGT5 SZ CS )@@G@@ A0 . $P A0 HAS THE CORRECT DBL BUF SW @E@@@@TBRGT6 LACT )@@G@@ A4,TBUF,A0 . $P BUFFER ADDRESS TO A4@A@@@@ SA CU )@@G@@ A5,TBRSTA @E@@@@ MSI,U A5,TBSECT . $P SECTOR NCV )@@G@@UMBER TO A5 @G@@@@ TP TIOPKT+3 . $P WAIT TILL TIOPCW )@@G@@KT IS CLEAR @A@@@@ ER WAIT$ .@A@@@@ CX )@@G@@ TZ,S1 TIOPKT+3 .@G@@@@ J TIOERR .CY )@@G@@ MAK SURE LAST I/O WAS OK @G@@@@ SA A4,TIOBUF CZ )@@G@@ . $P I/O BUFFER ADDR TO TIOPKT @G@@@@ SA A5,TDA )@@G@@IOSECT . $P I/O SECTOR NUMBER TO TIOPKT @G@@@@ LA,U DB )@@G@@ A0,020 . $P READ FUNCTION CODE TO A0 @G@@@@ SADC )@@G@@ A0,TIOFUNC . $P READ FUNCTION CODE TO TIOPKT @G@@@@ DD )@@G@@ LA,U A0,TIOPKT . $P ISSUE THE I/O WITHOUT WAIT @A@@@@DE )@@G@@ ER IO$ .@C@@@@ J *RET2 DF )@@G@@ . $E EXIT @]@@@@TBRGT4 . @^@@@@ LA,U A0,1@G@@@@DG )@@G@@ SA A0,TEOFSW . $P SET TEMP END OF FILE SWITCH DH )@@G@@@C@@@@ J *RET2 . $E EXIT @]@@@@ . DI )@@G@@@G@@@@ . SUBROUTINE TO INITIATE A READ OPERATION FOR INDEX BLOCK WHOSE DJ )@@G@@REL @G@@@@ . NUMBER IS IN REGISTER A2. THE PROPER DOUBLE BUFFERED SWITDK )@@G@@CH IS IN @A@@@@ . REGISTER A1 (VALUE 0 OR 1) @]@@@@ . DL )@@G@@@]@@@@IBREAD . @C@@@@ SX,H2 X11,RET1 . $H IBREAD DM )@@G@@@G@@@@ TP IIOPKT+3 . $ MAKE SURE IIOPKT IS FREE DN )@@G@@ @A@@@@ ER WAIT$ @A@@@@ TZ,S1 DO )@@G@@ IIOPKT+3 @A@@@@ J IIOERR @G@@@@ DP )@@G@@ LA,U A3,020 . $P I/O READ FN CODE TO A3 @E@@@@DQ )@@G@@ SA A3,IIOFUNC . $P I/O CODE TO PACKET @E@@@@ DR )@@G@@ LA A4,IBUF,A1 . $P BUFFER ADDRESS TO A4@G@@@@ SADS )@@G@@ A4,IIOBUF . $P BUFFER ADDRESS TO PACKET @E@@@@ DT )@@G@@ LA A5,A2 . $P REL BLK # TO A5 @E@@@@ MSDU )@@G@@I,U A5,IBSECT . $P SECTOR # TO A5 @G@@@@ SA DV )@@G@@ A5,IIOSECT . $P SECTOR NUMBER TO IIOPKT @A@@@@ LADW )@@G@@,U A0,IIOPKT .@C@@@@ ER IO$ . $W IODX )@@G@@$ @G@@@@ SA A2,IBRSTA . $P SAVE BLK NUM FOR WHIDY )@@G@@CH READ ST @A@@@@ J *RET1 @]@@@@ . DZ )@@G@@@E@@@@ . SUBROUTINE TO READ OVERFLOW TEMP FILE BLOCKS INTO TOBF1A @G@@@@EA )@@G@@ . THE RELATIVE BLOCK NUMBER IS IN A1, THE SECTOR NUMBER WITHIN BLOCK EB )@@G@@@^@@@@ . IS IN REGISTER A2. @G@@@@ . UPON RETURN, LOCATION SECTAD WILLEC )@@G@@ HAVE THE ADDRESS OF SECTOR IN CORE @]@@@@ . @]@@@@TOREAD . ED )@@G@@@C@@@@ SX,H2 X11,RET1 . $H TOREAD @A@@@@ LAEE )@@G@@ A0,TBONRR .@G@@@@ TNE A1,A0 . $T OVEF )@@G@@F BLK READ = BLK WANTED @E@@@@ J TORGT1 .EG )@@G@@ $A YES,TORGT1 NO @A@@@@ LA A3,A1 .@E@@@@EH )@@G@@ MSI,U A3,TBSECT . $P SECTOR NUMBER TO A3 @E@@@@ EI )@@G@@ LA A4,TOBF1A . $P BUFFER ADDRESS TO A4@G@@@@ LAEJ )@@G@@,U A5,020 . $P I/O READ FN CODE TO A5 @G@@@@ EK )@@G@@ TP TIOPKT+3 . $P MAKE SURE THAT PACKET IS FREE @A@@@@EL )@@G@@ ER WAIT$ .@G@@@@ TZ,S1 TIOPKT+3 EM )@@G@@ . $P MAKE SURE THAT LAST I/O WAS OK @A@@@@ J TIOEEN )@@G@@RR .@G@@@@ SA A3,TIOSECT . $P SECTOR NUMBER EO )@@G@@TO TEMP I/O PACKET@G@@@@ SA A4,TIOBUF . $P BUFFER AEP )@@G@@DDRESS TO TIOPKT @E@@@@ SA A5,TIOFUNC . $P I/EQ )@@G@@O CODE TO TIOPKT @C@@@@ LA,U A0,TIOPKT . ER )@@G@@@G@@@@ ER IO$ . $W ISSUE THE IO TO TEMP FIES )@@G@@LE @G@@@@ TP TIOPKT+3 . $P WAIT FOR I/O TO COMPET )@@G@@LETE @A@@@@ ER WAIT$ .@G@@@@ TZEU )@@G@@,S1 TIOPKT+3 . $P MAKE SURE I/O WAS GOOD @A@@@@ EV )@@G@@ J TIOERR .@G@@@@ SA A4,TRADDR EW )@@G@@ . $P SAVE BUF ADDR IN TRADDR @G@@@@ SA A1,TBONRR EX )@@G@@ . $P SAVE # OF OVF BLK READ (REL) @]@@@@TORGT1 . @C@@@@ EY )@@G@@ LA A5,A2 . $ @G@@@@ MSI,U A5,2EZ )@@G@@8 . $P RELATIVE # OF WRDS TO A5 @G@@@@ AA FA )@@G@@ A5,TOBF1A . $P ADDRESS OF SECTOR TO A5 @G@@@@ SAFB )@@G@@ A5,SECTAD . $ ADDR OF SECTOR TO LOC SECTAD @A@@@@ FC )@@G@@ J *RET1 @]@@@@ . @]@@@@ . @]@@@@FD )@@G@@SQRFSL . @G@@@@ LMJ X11,TBWRT1 . $P WRITE LAST FE )@@G@@TEMP BLOCK OUT @A@@@@ TP TIOPKT+3 @C@@@@ FF )@@G@@ ER WAIT$ . @C@@@@ TZ,S1 TIOPFG )@@G@@KT+3 . @C@@@@ J TIOERR . FH )@@G@@ @I@@@@ LX X9,IBRTAD . $P ADDR OF INX CORE FI )@@G@@REF TAB TO X9 @G@@@@ LR R1,IBFENT . $PFJ )@@G@@ # OF ENTRIES TO R1 @]@@@@FLSLP3 . @E@@@@ JGD FK )@@G@@ R1,$+2 . $T ARE WE DONE @E@@@@ J FLSGFL )@@G@@T1 . $A YES,FLSGT1 NO @E@@@@ LA,H1 A1,0,X9 FM )@@G@@ . $P INX BLK NUM TO A1@G@@@@ LA,H2 A2,0,X9 FN )@@G@@ . $P INX BLK ADDR TO A2 @G@@@@ LA,U A3,010 FO )@@G@@ . $P WRITE FUNCTION TO A3 @G@@@@ LMJ X11,FP )@@G@@IBIOW . $W IBIOW WRITE I BLOCK OUT @E@@@@ AX,U FQ )@@G@@ X9,1 . $P INCREMENT PTR @E@@@@ J FLSLFR )@@G@@P3 . $J FLSLP3 @]@@@@FLSGT1 . @I@@@@ LXFS )@@G@@ X9,TBRTAD . $P ADDR OF DATA CORE REF BLK TO X9 FT )@@G@@@G@@@@ LR R1,TBFENT . $P # OF TEMP BLKS TO R1 FU )@@G@@ @]@@@@FLSLP4 . @E@@@@ JGD R1,$+2 . $TFV )@@G@@ ARE WE DONE @E@@@@ J FLSGT2 . $A YES,FFW )@@G@@LSGT2 NO @G@@@@ LA,H1 A1,0,X9 . $P TEMP BLK NUFX )@@G@@M TO A1 @G@@@@ LA,H2 A2,0,X9 . $P TEMP FY )@@G@@BLK ADDR TO A2 @G@@@@ LA,U A3,010 . $WFZ )@@G@@ WRITE FUNCTION CODE TO A3 @C@@@@ LMJ X11,TBIOW GA )@@G@@ . $W TBIOW@E@@@@ AX,U X9,1 . $P INCREMENT PGB )@@G@@TR @E@@@@ J FLSLP4 . $J FLSLP4 GC )@@G@@@]@@@@FLSGT2 . @]@@@@ . @]@@@@ . @A@@@@ . FLUSH OVEGD )@@G@@RFLOW INDEX BLOCKS @]@@@@ . @]@@@@ . @C@@@@ GE )@@G@@ LX X9,IOVFRAD . @G@@@@ LR R1,IGF )@@G@@OBFENT . # OF OVF BLOCKS TO R1 @]@@@@FLSLP5 . @E@@@@GG )@@G@@ JGD R1,$+2 . $T ARE WE DONE @E@@@@ GH )@@G@@ J FLSGT3 . $J FLSGT3 @G@@@@ LAGI )@@G@@,H1 A1,0,X9 . OVF INX BLOCK NUM TO A1 @G@@@@ GJ )@@G@@ LA,H2 A2,0,X9 . OVF INDEX BLOCK ADDR TO A2 @C@@@@GK )@@G@@ LA,U A3,010 . @I@@@@ . L$SNAP GL )@@G@@ 'OVFLSH',2,1,IOBFENT . @E@@@@GM )@@G@@ LMJ X11,IBIOW . $W IBIOW ISSUE WRITE@E@@@@ GN )@@G@@ AX,U X9,1 . $P ADVANCE POINTER @E@@@@ J GO )@@G@@ FLSLP5 . $J FLSLP4 @]@@@@FLSGT3 . @]@@@@GP )@@G@@ . @]@@@@ . @C@@@@ LA,U A0,1 GQ )@@G@@ . @G@@@@ SA A0,FLSHSW . $P SET EDIT BUGR )@@G@@F FLUSH SW @A@@@@ . FLUSH EDIT BUFFERS IF ANY @C@@@@ GS )@@G@@ J SQRGT1 . @]@@@@/ @]@@@@ . GT )@@G@@ @G@@@@ . SUBROUTINE TO ASSIGN THE INDEX AND TEMPORARY FILES FOR THGU )@@G@@E TEMP FILE @G@@@@ . ACCESS METHOD. THE SUBROUTINE WILL ISSUE MCORE$ CALGV )@@G@@LS TO GET THE @^@@@@ . NECESSARY BUFFERS @E@@@@ . WILL ALSO MCOREGW )@@G@@ SPACE FOR THE NECESSARY TABLES @]@@@@FILASG . @C@@@@ GX )@@G@@ SX,H2 X11,RET1 . @G@@@@ LA,U A0,AGY )@@G@@SGIA . $P TRY TO ASSIGN,A FIRST (INDEX FI)@C@@@@ ER GZ )@@G@@ CSF$ . $W CSF$ @E@@@@ JP A0,IFUSE .HA )@@G@@ $T FACILITY REJECTED @E@@@@ . $A NHB )@@G@@O,IFUSE YES @G@@@@ TZ WRITSW . $T HAS THERHC )@@G@@E BEEN A SEQUENTIAL WRIT@E@@@@ J IASER1 . $A YEHD )@@G@@S,IASER1 NO @G@@@@ L,U A0,ASGIT . $P TRY TO AHE )@@G@@SG,T (INDEX FILE) @C@@@@ ER CSF$ . $W CSHF )@@G@@F$ @E@@@@ JN A0,IASER2 . $T FACILITY REJECTED HG )@@G@@@E@@@@ . . $A YES,IASER2 NO @E@@@@HH )@@G@@IFUSE . FACILITY NOT REJECTED ON AN ASG,A FOR INDEX FILE @]@@@@ . HI )@@G@@ @G@@@@ LA,U A0,ASGTA . $P TRY TO ASG,A TEMP FIHJ )@@G@@LE @C@@@@ ER CSF$ . $W CSF$ @E@@@@HK )@@G@@ JP A0,TFUSE . $T FACILITY REJECTED @E@@@@ HL )@@G@@ . $A NO,TFUSE YES @G@@@@ TZHM )@@G@@ WRITSW . $T ANY SEQUENTIAL WRITE OCCURED @E@@@@ HN )@@G@@ J TASER1 . $A YES,TASER1 NO @G@@@@ L,HO )@@G@@U A0,ASGTT . $P TRY TO ASG,T (TEMP FILE) @C@@@@ HP )@@G@@ ER CSF$ . $W CSF$ @E@@@@ JN A0,THQ )@@G@@ASER2 . $T FACILITY REJECTED @E@@@@ HR )@@G@@ . $A YES,TASER2 NO @]@@@@TFUSE . @G@@@@ L,U HS )@@G@@ A0,1 . $P SET IDFASW SWITCH (FILES ASSIGN)@A@@@@ S HT )@@G@@ A0,IDFASW .@G@@@@ LA A0,LAST$D . $P PRHU )@@G@@EPARE TO ISSUE MCORE$ @A@@@@ LA A1,A0 HV )@@G@@@^@@@@ AA,U A1,1@I@@@@ SA A1,IWADDR HW )@@G@@ . $P INITIALIZE FIRST WRITE ADDRESS @G@@@@ SA HX )@@G@@ A1,IBUF1A . $P ADDRESS OF FIRST BUF TO IBUF1A @A@@@@ LAHY )@@G@@ A2,A1 @A@@@@ AA,U A2,IBSIZE @G@@@@HZ )@@G@@ SA A2,IBUF2A . $P ADDRESS OF 2ND INX BUF TO IBUF2AIA )@@G@@@C@@@@ LA,U A2,IBNUM . @I@@@@ MSIB )@@G@@I,U A2,IBSIZE . $P SIZE OF INDEX BUFFERS FOR EDITING IC )@@G@@@G@@@@ AA A1,A2 . $P ACCOUNT FOR EDIT INDEX BUID )@@G@@FFERS @G@@@@ SA A1,IOBF1A . $P ADDR OF FIRST OVF INIE )@@G@@X BUF IOBF1A@C@@@@ AA,U A1,IOVBUFF . @G@@@@IF )@@G@@ SA A1,TBUF1A . $P ADDR OF TEMP FILE 1ST BUF TBUF1AIG )@@G@@@A@@@@ LA A2,A1 .@A@@@@ AA,U A2,TIH )@@G@@BSIZE .@G@@@@ SA A2,TBUF2A . $P ADDR OF TEMP FII )@@G@@ILE 2ND BUF TBUF2A@C@@@@ LA,U A0,TBNUM . IJ )@@G@@@I@@@@ MSI,U A0,TBSIZE . $P SIZE OF DATA BUFFERS FOIK )@@G@@R EDITING @C@@@@ AA A1,A0 . $ IL )@@G@@@I@@@@ SA A1,TWADDR . $P INITIALIZE FIRST TEMP BIM )@@G@@LK ADDR @G@@@@ SA A1,TOBF1A . $P ADDR OF IN )@@G@@1ST OVF TBUF TO TOBF1A @C@@@@ AA,U A1,TBSIZE . $ IO )@@G@@ @G@@@@ SA A1,TOBF2A . $P ADDR OF 2ND OVF TBUFIP )@@G@@ TO TOBF2A @A@@@@ AA,U A1,TBSIZE .@A@@@@ LAIQ )@@G@@ A0,A1 .@E@@@@ SA A0,LAST$D . $P UPIR )@@G@@DATE LAST$D @G@@@@ ER MCORE$ . $P ISSUE MCIS )@@G@@ORE$ TO GET BUFFERS @]@@@@ . @]@@@@ . @A@@@@ . MCOIT )@@G@@RE FOR CORE RAND INDEX TABLE @]@@@@ . @]@@@@ . @C@@@@IU )@@G@@ LA A0,LAST$D . @C@@@@ LA IV )@@G@@ A1,A0 . @C@@@@ AA,U A1,1 IW )@@G@@ . @E@@@@ SA,H2 A1,RNDADD . $P UPDATE RNDAIX )@@G@@DD @C@@@@ AA,U A0,IDBNUM . @E@@@@ IY )@@G@@ SA A0,LAST$D . UPDATE LAST$D @E@@@@ ERIZ )@@G@@ MCORE$ . ISSUE THE MCORE @]@@@@ . @]@@@@JA )@@G@@ . @C@@@@ . MCORE FOR INDEX CORE REFERENCE TABLE @]@@@@JB )@@G@@ . @]@@@@ . @C@@@@ LA A0,LAST$D JC )@@G@@ . @C@@@@ LA A1,A0 . @C@@@@JD )@@G@@ AA,U A1,1 . @E@@@@ SA,H2 JE )@@G@@ A1,IBRTAD . $P UPDATE IBRTAD @C@@@@ AA,U A0,IJF )@@G@@BNUM . @E@@@@ SA A0,LAST$D . UPJG )@@G@@DATE LAST$D @E@@@@ ER MCORE$ . ISSUE THJH )@@G@@E MCORE @]@@@@ . @]@@@@ . @C@@@@ . MCORE FOR DATA JI )@@G@@BUFFER CORE REFERENCE TABLE @]@@@@ . @]@@@@ . @C@@@@JJ )@@G@@ LA A0,LAST$D . @C@@@@ LA JK )@@G@@ A1,A0 . @C@@@@ AA,U A1,1 JL )@@G@@ . @E@@@@ SA,H2 A1,TBRTAD . $P UPDATE RNDAJM )@@G@@DD @C@@@@ AA,U A0,TBNUM . @E@@@@ JN )@@G@@ SA A0,LAST$D . UPDATE LAST$D @E@@@@ ERJO )@@G@@ MCORE$ . ISSUE THE MCORE @]@@@@ . @]@@@@JP )@@G@@ . @A@@@@ . MCORE FOR INDEX UPDATE TABLE @]@@@@ . JQ )@@G@@@]@@@@ . @C@@@@ LA A0,LAST$D . JR )@@G@@@C@@@@ LA A1,A0 . @C@@@@ AAJS )@@G@@,U A1,1 . @E@@@@ SA,H2 A1,IUPDAD JT )@@G@@ . $P UPDATE IUPDAD @C@@@@ AA,U A0,IBNUM JU )@@G@@ . @E@@@@ SA A0,LAST$D . UPDATE LAST$D JV )@@G@@ @E@@@@ ER MCORE$ . ISSUE THE MCORE JW )@@G@@@]@@@@ . @]@@@@ . @C@@@@ . MCORE FOR OVERFLOW INDEX COJX )@@G@@RE REFERENCE TABLE@]@@@@ . @]@@@@ . @C@@@@ LAJY )@@G@@ A0,LAST$D . @C@@@@ LA A1,A0 JZ )@@G@@ . @C@@@@ AA,U A1,1 . KA )@@G@@@E@@@@ SA,H2 A1,IOVFRAD . $P UPDATE IOVFRAD @C@@@@KB )@@G@@ AA,U A0,IOVFNUM . @E@@@@ SA KC )@@G@@ A0,LAST$D . UPDATE LAST$D @E@@@@ ER MCORKD )@@G@@E$ . ISSUE THE MCORE @]@@@@ . @]@@@@ . KE )@@G@@@C@@@@ J *RET1 . $E EXIT @]@@@@ . KF )@@G@@@A@@@@IASER1 LX,U X10,ASGIA .@C@@@@ LMJ X11,KG )@@G@@ASGERR . $E EXIT @]@@@@IASER2 . @A@@@@ LX,U X10,KH )@@G@@ASGIT .@C@@@@ LMJ X11,ASGERR . $E EXIT @]@@@@KI )@@G@@TASER1 . @A@@@@ LX,U X10,ASGTA .@C@@@@ LMKJ )@@G@@J X11,ASGERR . $E EXIT @]@@@@TASER2 . @A@@@@ LXKK )@@G@@,U X10,ASGTT .@C@@@@ LMJ X11,ASGERR . $E EXKL )@@G@@IT @]@@@@ . @]@@@@ . @G@@@@ . SUBROUTINE TO BE CALLKM )@@G@@ED BY THE EDIT PROCESSORS TO CHECK SWITCHES @C@@@@ . AND FLUSH SEQUEKN )@@G@@NTIAL WRITE INDEX BUFFER @]@@@@ . @]@@@@FRSTED* . @^@@@@KO )@@G@@ + 0 @G@@@@ TNZ IDFASW . $T TEKP )@@G@@MP FILE HAS BEEN ASSIGNED @^@@@@ ER ERR$@G@@@@ KQ )@@G@@ TZ CRETSW . $T FILE HAS BEEN CREATED @C@@@@KR )@@G@@ J *FRSTED . $E EXIT @C@@@@RMRFLI . THIS IS TKS )@@G@@HE FIRST RANDOM READ @G@@@@ LMJ X11,IBWRT1 .KT )@@G@@ $W IBWRT1 FLUSH INDEX BUFFER OUT @G@@@@ TP IIOPKT+3 KU )@@G@@ . $P MAKE SURE I/O IS DONE @A@@@@ ER WAITKV )@@G@@$ @E@@@@ TZ,S1 IIOPKT+3 . $P MAKE SURE I/O KW )@@G@@WAS OK@A@@@@ J IIOERR @^@@@@ LA,U KX )@@G@@ A0,1@G@@@@ SA A0,CRETSW . $P SET CRETSW (TEMP FILKY )@@G@@E CREATED) @G@@@@ SA A0,WRITSW . $P SET NON SEQUENKZ )@@G@@TIAL WRITE MODE @E@@@@ . UPDATE SOME CONSTANTS IN PREPARATION FOR EDITLA )@@G@@ING @]@@@@ . @A@@@@ LA A1,TBNUMW LB )@@G@@@G@@@@ SA A1,TBSQWN . $P SAVE # OF TEMP BLKS WRITTELC )@@G@@N; @G@@@@ . FOR EDITING PURPOSE,LD )@@G@@ ANY BLOCKS @G@@@@ . TO BE WRITTEN LE )@@G@@HEREAFTER ARE OVF @C@@@@ LA A1,IBNUMW . LF )@@G@@@I@@@@ SA A1,IBNUMWO . $P IBNUMWO WILL CONTAIN CULG )@@G@@RRENT # OF @G@@@@ . $ INDEX LH )@@G@@BLOCK INCLUDING OVERFLOW@A@@@@ J *FRSTED @]@@@@LI )@@G@@ . @]@@@@/ @]@@@@ . @C@@@@ . RANDOM READ TEMLJ )@@G@@P FILE ACCESS METHOD @]@@@@ . @]@@@@TF$RMR* . @C@@@@LK )@@G@@ SX,H2 X11,RETN1 . $H TF$RMR @I@@@@ SLJ LL )@@G@@ FRSTED . $P FLUSH SQW INDEX BUF ON FRST ED @]@@@@LM )@@G@@RMRGT1 . @G@@@@ LA A3,0,X10 . $P RECORD NUMBER LN )@@G@@WANTED TO A3 @C@@@@ LMJ X11,LOCINX . $W LOCINX LO )@@G@@@G@@@@ . WILL RETURN INDEX IN LCINXLP )@@G@@ @G@@@@ . AND ADDR OF INDEX INLQ )@@G@@ LCINXA @G@@@@ . INX BLK ADDRESLR )@@G@@S IN INXPKT+1 @E@@@@ TZ A0 . $T SUCCELS )@@G@@SSFUL @E@@@@ J LOCEOF . $A NO,LOCEOF YES LT )@@G@@ @A@@@@ LA A0,LCINX .@E@@@@ SA LU )@@G@@ A0,TEMPKT+1 . $P INDEX TO TEMPKT+1 @G@@@@ LMJ X11,LV )@@G@@LOCREC . $W LOCREC LOCATE RECORD IN BUFFER @G@@@@ LW )@@G@@ . RECORD ADDRESS RETURNED (RMRRAD)@A@@@@ . DELIVER RLX )@@G@@ECORD TO CALLING PACKET @G@@@@ LX,H2 X8,TEMPKT . $P ADLY )@@G@@DR OF RECORD + HEADER TO X8 @E@@@@ LA,H2 A5,0,X8 .LZ )@@G@@ $P RECORD LENGTH TO A5 @^@@@@ ANA,U A5,1@G@@@@ SAMA )@@G@@,H2 A5,2,X10 . $P RECORD LENGTH TO CALLING PACKET @^@@@@ MB )@@G@@ AX,U X8,1@G@@@@ TZ RMR1SW . $T DO WEMC )@@G@@ DELIVER RECORD @E@@@@ J RMRGT2 . $AMD )@@G@@ NO,RMRGT2 YES @G@@@@ LX,H2 X9,1,X10 . $P ADDR OF ME )@@G@@CALLING BUF TO X9 @A@@@@ LR R1,A5 @I@@@@MF )@@G@@ SLJ RTRANS . $P TRANSFER RECORD TO CALLING BUFFEMG )@@G@@R @G@@@@RMRGT3 SZ,T1 2,X10 . $P SET 0 RETURN CMH )@@G@@ODE IN CALLING PKT@E@@@@ SZ RMR1SW . $P RESETMI )@@G@@ RMR1SW @C@@@@ J *RETN1 . $E EXIT @]@@@@MJ )@@G@@ . @]@@@@LOCEOF . @A@@@@ LA,U A0,1 .MK )@@G@@@E@@@@ SA,T1 A0,2,X10 . $P SET ERROR RETURN @E@@@@ML )@@G@@ SZ RMR1SW . $P RESET RMR1SW @C@@@@ MM )@@G@@ J *RETN1 . $E @]@@@@ . @A@@@@RMRGT2MN )@@G@@ . DO NOT DELIVER RECORD @G@@@@ SX,H2 X8,1,X10 MO )@@G@@ . $P RETURN RECORD ADDRESS @C@@@@ J RMRGT3 MP )@@G@@ .$J RMRGT3@]@@@@ . @]@@@@ . @C@@@@TF$RMR1* . RMQ )@@G@@ANDOM READ WITHOUT DELIVERING RECORD@C@@@@ LA,U A0,1 MR )@@G@@ . @E@@@@ SA A0,RMR1SW . $P SET RMS )@@G@@MR1SW @E@@@@ J TF$RMR . $J TF$RMR MT )@@G@@ @]@@@@/ @G@@@@ . SUBROUTINE TO LOCATE THE INDEX FOR A REMU )@@G@@CORD WHOSE NUMBER IS CONTAINED@E@@@@ . IN A3 RETURN CODE WILL BE IN REGMV )@@G@@ISTER A0 (0=SUCCESSFUL).@G@@@@ . IF SUCCESSFUL, THE INDEX WILL BE PLACEDMW )@@G@@ IN LOCATION LCINX AND ITS @A@@@@ . ADDRESS IN LOCATION LCINXA. MX )@@G@@@E@@@@ . ADDRESS OF INDEX BLOCK TO H2 OF INXPKT+1, INX BLK NUM TO @C@@@@MY )@@G@@ . H2 OF INXPKT. REL INDEX IN BLOCK TO INXREL. @]@@@@ . @G@@@@MZ )@@G@@ . IUPDPT1 WILL CONTAIN THE RELATIVE LOCATION OF BLOCK WITHIN NA )@@G@@@A@@@@ . TABLE INDEX BLOCK UPDATE TABLE @]@@@@LOCINX* . @C@@@@ NB )@@G@@ SX,H2 X11,RET1 . $H LOCINX @G@@@@ SZ,S6 SW2 NC )@@G@@ . $P RESET ZERO REC SWITCH @G@@@@LOCGT3 SA ND )@@G@@ A3,LOCRCN . $P SAVE RECORD NUMBER WANTED @G@@@@ LANE )@@G@@ A4,RECNMC . $P CURRENT # OF RECORDS TO A4 @G@@@@ NF )@@G@@ TLE A4,A3 . $T REC # WANTED <= CURRENT NUM @G@@@@NG )@@G@@ J RMRER1 . $A NO,RMRER1 RETURN NOT AVAILABLE NH )@@G@@@E@@@@ TNZ A3 . $T REC # WANTED = 0 @E@@@@NI )@@G@@ J LCZER1 . $A YES,LCZER1 NO @E@@@@ . LOCNJ )@@G@@ATE WHICH INDEX BLOCK HAS THE RECORD INDEX DESIRED @A@@@@ LXNK )@@G@@ X8,RNDADD @C@@@@ LXI,U X8,1 . NL )@@G@@ @E@@@@ LR R1,RNDIDX . $P R1 WILL CONTROL LOOPNM )@@G@@@G@@@@ SZ A5 . $P A5 WILL HOLD ACCUMULATED INN )@@G@@NX SUM@G@@@@ SZ A1 . $P BLOCK NUMBER WILL BENO )@@G@@ IN A1 @G@@@@LOCLP1 AA,H2 A5,0,*X8 . $P ACCUMULATE # ONP )@@G@@F INDICES @E@@@@ TLE A5,A3 . $T REC # WANQ )@@G@@NTED FOUND @^@@@@ J $+2 @A@@@@ J LOCINR )@@G@@FD @G@@@@ AA,U A1,1 . $P INCREMENT BLOCNS )@@G@@K NUMBER @I@@@@ JGD R1,LOCLP1 . $T TRIED ALNT )@@G@@L RAND CORE INX TAB ENTRIES @E@@@@ ER ERR$ NU )@@G@@ . $A NO LOCLP1 YES @A@@@@LOCIFD . FOUND INDEX BLOCK # NV )@@G@@@^@@@@ ANX,U X8,1@C@@@@ LA A0,0,X8 NW )@@G@@ . @G@@@@ SA A0,REMINDX . $P INITIALIZE NX )@@G@@REMINDX @G@@@@ SX,H2 X8,RNDSAV . $P SAVE ADDNY )@@G@@RESS OF RND TABLE @A@@@@ ANA,H2 A5,0,X8 @^@@@@NZ )@@G@@ AA,U A5,1@G@@@@ SA A5,INXLOW . $P LOOA )@@G@@WER INDEX # TO INXLOW (1ST= 1)@A@@@@ LA,H2 A4,0,X8 OB )@@G@@@G@@@@ SA A4,INXINT . $P # OF INDICES IN BLOCK TO IOC )@@G@@NXINT @G@@@@ SA,H2 A1,INXPKT . $P INX BLK WANTED TO INOD )@@G@@XPKT (H2) @G@@@@ LMJ X11,INXBUF . $W INXBUF GET INDOE )@@G@@EX BLOCK @G@@@@ TZ,H1 INXPKT . SECOND WOF )@@G@@ORD OF IXPKT WILL HAVE @E@@@@ ER ERR$ . ADOG )@@G@@DRESS OF BLOCK @C@@@@ . FIND OUT IF INDEX IS IN THIS BLOCK OH )@@G@@@A@@@@ LX X9,INXPKT+1 @A@@@@ LA A2,LOI )@@G@@OCRCN .@E@@@@ ANA A2,INXLOW . $P REL INDEX TO AOJ )@@G@@2 @A@@@@ SA A2,INXREL .@G@@@@LOCLOOP1 LA,H2 OK )@@G@@ A0,1,X9 . $P # OF INDICES IN BLK TO A0 @G@@@@ TNOL )@@G@@Z A0 . $T ANY INDICES IN BLOCK OBTAINED@E@@@@ OM )@@G@@ J LOCGT22 . $A NO,LOCGT22 YES @G@@@@ ANON )@@G@@A,U A0,1 . $P DECREMENT # OF INDICES @G@@@@ OO )@@G@@ TLE A0,A2 . $T INDEX IS IN THIS BLOCK @E@@@@OP )@@G@@ J LOCGT2 . $A NO,LOCGT2 YES @E@@@@ . FOUOQ )@@G@@ND INDEX IN BLOCK, CALCULATE DISPLACEMENT & READ INDEX@]@@@@LOCIF1 . OR )@@G@@@A@@@@ MSI,U A2,2 .@C@@@@ AA,U A2,2OS )@@G@@ . $ @G@@@@ AX X9,A2 . $P X9OT )@@G@@ POINTS TO INDEX WANTED @E@@@@ LA A0,0,X9 .OU )@@G@@ $P INDEX TO A0 @E@@@@ SA A0,LCINX . $P INOV )@@G@@DEX TO LCINX @G@@@@ SZ,H1 INXPKT . $P SUCCESSFOW )@@G@@UL RETURN CODE TO INXPKT@G@@@@ SX X9,LCINXA . $P SAOX )@@G@@VE ADDR OF INDEX IN LCINXA @A@@@@ SZ A0 .OY )@@G@@@C@@@@ J *RET1 . $E EXIT @E@@@@ J OZ )@@G@@ LOCGT2 . $J LOCGT2 @^@@@@LOCGT22 PA )@@G@@ . @C@@@@ AA,U A2,1 . @]@@@@LOCGT2PB )@@G@@ . @]@@@@ . @]@@@@ . @C@@@@ . INDEX NOT FOUND IN BLPC )@@G@@OCK, CHECK FOR OVERFLOW @A@@@@ . X9 POINTS TO INDEX BLOCK @]@@@@PD )@@G@@ . @]@@@@ . @G@@@@ TNZ,H2 0,X9 PE )@@G@@ $T IS OVERFLOW BLOCK DEFINED @I@@@@ J RMRER1 PF )@@G@@ . $A NO,RMRER1 . $A NO, @]@@@@ . PG )@@G@@@C@@@@ . UPDATE # OF INDICES LEFT TO SEARCH @]@@@@ . PH )@@G@@@E@@@@ ANA A2,A0 . $P NEW REL INX TO A2@C@@@@PI )@@G@@ ANA,U A2,1 . @G@@@@ SA PJ )@@G@@ A2,INXREL . $P SAVE OVF REL INDEX @C@@@@ LAPK )@@G@@ A0,REMINDX . @C@@@@ ANA,H2 A0,1,X9 PL )@@G@@ . @I@@@@ SA A0,REMINDX . REMAININPM )@@G@@G # OF INDICES TO REMINDX @G@@@@ LA,H2 A1,0,X9 PN )@@G@@ . $P OVERFLOW BLOCK # TO A1 @G@@@@ SA,H2 A1,IPO )@@G@@NXPKT . $P OVF BLOCK # TO INXPKT,,H2 @G@@@@ LMJ PP )@@G@@ X11,INXBUF . $W INXBUF GET INDEX BLOCK @C@@@@ TZPQ )@@G@@,H1 INXPKT . @C@@@@ ER ERR$ PR )@@G@@ . @G@@@@ LX X9,INXPKT+1 . $P INDEXPS )@@G@@ BLOCK ADDRESS TO X9 @G@@@@ LA A2,INXREL . $PPT )@@G@@ OVERFLOW REL INDEX TO A2 @C@@@@ JN A2,RMRER1 PU )@@G@@ . @E@@@@ J LOCLOOP1 . $J LOCLOOP1 PV )@@G@@ @]@@@@RMRER1 . @G@@@@ LA,U A0,1 . $P REPW )@@G@@TURN NONZERO STATUS @C@@@@ J *RET1 .PX )@@G@@ $E EXIT @C@@@@LCZER1 . WANTING TO LOCATE RECORD NUMBER ZERO @C@@@@PY )@@G@@ LA,U A0,1 . @I@@@@ SA,S6 PZ )@@G@@ A0,SW2 . $P SET SW TO INDICATE ZERO RECORD @E@@@@QA )@@G@@ AA,U A3,1 . $P INCREMENT RCD# @E@@@@ QB )@@G@@ J LOCGT3 . $J LOCGT3 @]@@@@ . QC )@@G@@@C@@@@ . SUBROUTINE TO MANAGE INDEX EDIT BUFFERS @G@@@@ . UPON ENTRQD )@@G@@Y, H2 OF INXPKT CONTAINS RELATIVE INDEX BLOCK NUMBER @G@@@@ . UPOQE )@@G@@N RETURN, H1 OF INXPKT CONTAINS ERROR STATUS (0=SUCCESSFUL) @E@@@@QF )@@G@@ . INXPKT+1 CONTAINS ADDRESS OF BLOCK IN BUFFER@]@@@@ . QG )@@G@@ @]@@@@ . @]@@@@INXBUF* . @C@@@@ SX,H2 X11,QH )@@G@@RET2 . $H INXBUF @G@@@@ SZ IFNDOOVF . REQI )@@G@@SET FOUND ON OVERFLOW PAGE @G@@@@ LA,H2 A1,INXPKT .QJ )@@G@@ $P REL INDEX BLK NUM TO A1 @G@@@@ TNZ IOBFENT QK )@@G@@ . $P ANY OVERFLOW ENTRIES @E@@@@ J IBFGQL )@@G@@T11 . $P NO,IBFGT11 YES @G@@@@ LR R1,IOBFENTQM )@@G@@ . $P # OF OVF BLOCKS TO R1 @I@@@@ LX X8,IQN )@@G@@OVFRAD . $P ADDR OF OVF CORE REF TABLE TO X8 @]@@@@IBFLP3QO )@@G@@ . @A@@@@ JGD R1,$+2 @E@@@@ J QP )@@G@@ IBFGT11 . YES,IBFGT11 NO @E@@@@ TNE,H1 A1,0QQ )@@G@@,X8 . INX BLOCK NUM EQUAL @E@@@@ J IBFOFND QR )@@G@@ . $J IBFOFND @E@@@@ AX,U X8,1 QS )@@G@@ . $P INCREMENT POINTER@E@@@@ J IBFLP3 . $JQT )@@G@@ IBFLP3 @]@@@@ . @]@@@@ . @C@@@@IBFOFND . BLQU )@@G@@OCK WAS FOUND IN OVERFLOW AREA @]@@@@ . @]@@@@ . QV )@@G@@@E@@@@ LA,H2 A0,0,X8 . BLOCK NUMBER TO A0 @G@@@@QW )@@G@@ SA,H2 A0,INXPKT+1 . $P BLOCK NUMBER TO INXPKT+1,,H2 QX )@@G@@@C@@@@ . L$SNAP 'INXFND',,8,INXPKT @]@@@@ . QY )@@G@@@]@@@@ . @E@@@@ . SWITCH IFNDOOVF IS TO BE SET TO INDICATE THATQZ )@@G@@ INDEX BLOCK@A@@@@ . WAS FOUND IN OVERFLOW AREA. @]@@@@ . RA )@@G@@@]@@@@ . @C@@@@ LA,U A0,1 . RB )@@G@@@E@@@@ SA A0,IFNDOOVF . $P SET IFNDOOVF @C@@@@RC )@@G@@ SZ,H1 INXPKT . @C@@@@ J RD )@@G@@ *RET2 . $E EXIT @]@@@@IBFGT11 . @G@@@@ TNZ RE )@@G@@ IBFENT . $T ANY ENTRIES IN INDEX EDIT BUFS @E@@@@ J RF )@@G@@ IBFEMP . $A NO,IBFEMP YES @E@@@@ LR RG )@@G@@ R1,IBFENT . $P # OF ENTRIES TO R1 @G@@@@ LX X8,IRH )@@G@@BRTAD . $P ADDRESS OF INX BUF REF TAB TO X8@]@@@@IBFLP1 @G@@@@RI )@@G@@ JGD R1,$+2 . $T DONE WITH ALL ENTRIES RJ )@@G@@@E@@@@ J IBNFND . $A YES,IBNFND NO @G@@@@RK )@@G@@ TNE,H1 A1,0,X8 . $T INDEX BLOCK IN BUFFER RL )@@G@@@E@@@@ J IBFFND . $A YES,IBFFND NO @C@@@@RM )@@G@@ AX,U X8,1 . $ @C@@@@ J RN )@@G@@ IBFLP1 . $J IBFLP1 @]@@@@ . @C@@@@IBFFND . INDEX BLORO )@@G@@CK WANTED IS FOUND IN BUFFER @G@@@@ LA,H2 A0,0,X8 .RP )@@G@@ $P ADDRESS OF BUFFER TO A0 @G@@@@ SA,H2 A0,INXPKT+RQ )@@G@@1 . $P ADDRESS OF BUFFER TO CALLING PKT@G@@@@ ANX X8,IRR )@@G@@BRTAD . POINTER WITHIN UPD TABLE TO X8 @C@@@@ SX,H2 RS )@@G@@ X8,IUPDPT1 . @G@@@@ SZ,H1 INXPKT .RT )@@G@@ $P SET SUCCESSFUL RETURN CODE @C@@@@ J *RET2 RU )@@G@@ . $E EXIT @E@@@@IBNFND . INDEX BLOCK WANTED WAS NOT FOUND IN BUFRV )@@G@@FER @A@@@@ LX X9,IBRTAD @G@@@@ AXRW )@@G@@ X9,IBFPT1 . $P X9 POINTS TO BUF ENTRY TO WRITE OUT@A@@@@ RX )@@G@@ LA A3,IBFENT @G@@@@ TE,U A3,IBNUM .RY )@@G@@ $T # OF ENTRIES IN BUFFER = # BLKS @E@@@@ J IBFGT1 RZ )@@G@@ . $A NO,IBFGT1 YES @E@@@@ . WE HAVE TO WRITE ONE BLOCK OUT BESA )@@G@@FORE READING ANOTHER IN @G@@@@ . IBFPT1 POINTS TO BLOCK ENTRY TO BE WRITSB )@@G@@TEN OUT (REL POINTER) @A@@@@ . CHECK IF BLOCK HAS BEEN MODIFIED SC )@@G@@@G@@@@ LA A0,IUPDAD . ADDR OF INDEX BLOCK INDICASD )@@G@@TOR @G@@@@ AA A0,IBFPT1 . POINT TO CORRESPONDISE )@@G@@NG BLOCK @C@@@@ TNZ 0,A0 . @C@@@@SF )@@G@@ J IBFGT1 . @G@@@@ SZ SG )@@G@@ 0,A0 . RESET UPDATE INDICATOR @E@@@@ LASH )@@G@@,H1 A1,0,X9 . $P IBLOCK NUMBER TO A1 @E@@@@ LA,H2 SI )@@G@@ A2,0,X9 . $P IBLOCK ADDRESS TO A2 @G@@@@ LA,U A3,0SJ )@@G@@10 . $P WRITE FUNCTION CODE TO A3 @E@@@@ LMJ SK )@@G@@ X11,IBIOW . $W PERFORM I/O AND WAIT@]@@@@IBFGT1 . @G@@@@ SL )@@G@@ LA,H2 A1,INXPKT . $P NEW BLOCK # WANTED TO A1 @E@@@@SM )@@G@@ LA,H2 A2,0,X9 . $P ADDR OF IBLOCK TO A2@G@@@@ SN )@@G@@ LA,U A3,020 . $P READ FUNCTION CODE TO A3 @G@@@@SO )@@G@@ LMJ X11,IBIOW . $W IBIOW PERFORM I/O AND WAIT SP )@@G@@@E@@@@ SA,H1 A1,0,X9 . $P UPDATE BUFFER ENTRY @E@@@@SQ )@@G@@ LA A5,IBFPT1 . $P INX BUF PTR TO A5 @G@@@@ SR )@@G@@ SA A5,IUPDPT1 . SAVE TO INDICATE UPDATE @E@@@@SS )@@G@@ AA,U A5,1 . $P INCREMENT BY 1 @E@@@@ ST )@@G@@ TE,U A5,IBNUM . $T END OF BUF CONDITION@E@@@@ J SU )@@G@@ IBFGT2 . $A NO,IBFGT2 YES @E@@@@ SZ SV )@@G@@ A5 . $P ZERO REL INX BUF PTR@G@@@@IBFGT2 SA A5,ISW )@@G@@BFPT1 . $P STORE NEW REL PTR IN IBFPT1 @G@@@@ LA SX )@@G@@ A0,IBFENT .$P NUM OF INX BLOCKS TO A0 @E@@@@ TNSY )@@G@@E,U A0,IBNUM . $T ARE THEY EQ TO IBNUM@E@@@@ J SZ )@@G@@ IBFGT3 . $A YES,IBFGT3 NO @A@@@@ AA,U A0,1TA )@@G@@ .@E@@@@ SA A0,IBFENT . $P INCREMENT IBFETB )@@G@@NT @]@@@@IBFGT3 . @G@@@@ SA A2,INXPKT+1 . $P ADTC )@@G@@DRESS OF IBLOCK TO CALLING PKT@E@@@@ SZ,H1 INXPKT .TD )@@G@@ $P ZERO RETURN STATUS @C@@@@ J *RET2 . $E EXTE )@@G@@IT @E@@@@IBFEMP . INDEX BLOCK EMPTY, INITIALIZE BUFFER TABLE TF )@@G@@@I@@@@ LX X8,IBRTAD . $P ADD OF INX BUF CORE REF TATG )@@G@@BLE TO X8 @G@@@@ LX X9,IBUF . $P ADDRESS TH )@@G@@OF 1ST INX BUF TO X9 @E@@@@ LR,U R1,IBNUM . $P R1TI )@@G@@ WILL CONTROL LOOP@^@@@@ LXI,U X8,1@G@@@@IBFLP2 JGD TJ )@@G@@ R1,$+2 . $T ARE WE DONE WITH ALL ENTRIES @E@@@@ J TK )@@G@@ IBFEMP1 . $A YES,IBNFND NO @G@@@@ SX,H2 TL )@@G@@ X9,0,*X8 . $P ADDR OF CORRESPONDING BUF TO ENT@A@@@@ AXTM )@@G@@,U X9,IBSIZE @C@@@@ J IBFLP2 . $J IBTN )@@G@@FLP2 @]@@@@IBFEMP1 . @I@@@@ LXM X8,IOVFRAD . $PTO )@@G@@ ADDR OF OVF CORE REF ENTRY TAB TO X8 @A@@@@ LX X9,ITP )@@G@@OBF1A @I@@@@ LR,U R1,IOVFNUM . $P # OF ENTRIETQ )@@G@@S IN TAB WILL CONTROL LOOP @]@@@@IBFLP22 . @E@@@@ JGD TR )@@G@@ R1,$+2 . $P ARE WE DONE @E@@@@ J IBNFTS )@@G@@ND . $J IBNFND @E@@@@ SX,H2 X9,0,*X8 TT )@@G@@ . $P ADDR TO OVF TABLE@G@@@@ AX,U X9,IBSIZE TU )@@G@@ . $P POINT TO NEXT BUFFER @E@@@@ J IBFLP22 TV )@@G@@ . $J IBFLP22 @]@@@@ . @E@@@@ . SUBROUTINE TO ITW )@@G@@SSUE AN I/O FOR INDEX BLOCKS, THEN TO WAIT@C@@@@ . UPON ENTRY, A1 HAS RETX )@@G@@L BLOCK NUMBER @A@@@@ . A2 HAS IBLOCK ADDRESS@C@@@@TY )@@G@@ . A3 HAS I/O FUNCTION CODE @]@@@@ . @E@@@@TZ )@@G@@IBIOW* SX,H2 X11,RET3 . $H IBIOW I/O WITH WAIT @G@@@@ UA )@@G@@ TP IIOPKT+3 . $P MAKE SURE I/O PACKET IS FREE @A@@@@UB )@@G@@ ER WAIT$ @G@@@@ TZ,S1 IIOPKT+3 UC )@@G@@ . $P MAKE SURE LAST I/O WAS OK @A@@@@ J IIOEUD )@@G@@RR @A@@@@ LA A4,A1 .@A@@@@ MSUE )@@G@@I,U A4,IBSECT @G@@@@ SA A4,IIOSECT . $P SEUF )@@G@@CTOR NUMBER TO I/O PACKET @G@@@@ SA A2,IIOBUF .UG )@@G@@ $P BUFFER ADDRESS TO I/O PACKET @G@@@@ SA A3,IIOFUNCUH )@@G@@ . $P FUNCTION CODE TO I/O PACKET @A@@@@ L,U A0,IUI )@@G@@IOPKT .@E@@@@ ER IO$ . $W IO$ ISSUE THE UJ )@@G@@I/O @G@@@@ TP IIOPKT+3 . $P MAKE SURE I/O PACKETUK )@@G@@ IS FREE @A@@@@ ER WAIT$ @G@@@@ TZUL )@@G@@,S1 IIOPKT+3 . $P MAKE SURE LAST I/O WAS OK @A@@@@ UM )@@G@@ J IIOERR @C@@@@ J *RET3 .UN )@@G@@ $E EXIT @]@@@@ . @E@@@@ . SUBROUTINE TO LOCATE RECORD WHOSEUO )@@G@@ INDEX IS IN TEMPKT+1 @G@@@@ . UPON RETURN, THE ADDRESS OF THE RECORD UP )@@G@@IS FOUND IN H2 OF TEMPKT @]@@@@ . @]@@@@ . @]@@@@UQ )@@G@@LOCREC* @C@@@@ SX,H2 X11,RET2 . $H LOCREC @A@@@@UR )@@G@@ LA A1,TEMPKT+1 @^@@@@ LSSL A1,6@^@@@@US )@@G@@ SSL A1,6@A@@@@ DSL A1,36 @E@@@@UT )@@G@@ DI,U A1,TBSECT . $P BLOCK NUMBER TO A1 @G@@@@ UU )@@G@@ SA A2,LOCSWB . $P SECTOR WITHIN BLOCK TO A2,LOCTBL@G@@@@UV )@@G@@ SA A1,LOCBLK . $P BLOCK NUMBER TO LOCBLK UW )@@G@@@G@@@@ LA A3,TBNUMW . $P # OF TEMP BLOCKS WRITTEN TUX )@@G@@O A3 @G@@@@ ANA,U A3,1 . $P REL # OF LAST TEMP BUY )@@G@@LK TO A3 @G@@@@ TLE A3,A1 . $T BLOCK WANTED TBNUMW-1 @^@@@@ AA,U A3,1 . @G@@@@ TE XH )@@G@@ A3,A1 . $T IS IT 1 OVER TBNUMW-1 @E@@@@ ERXI )@@G@@ ERR$ . $A YES,EXIT NO @C@@@@ LA XJ )@@G@@ A0,TDBLSW . @G@@@@ LA A2,TOBF1A,A0 XK )@@G@@ . $P ADDR OF TEMP BLOCK TO A2 @E@@@@ J TBFGT4 XL )@@G@@ . $J TBFGT4 @]@@@@ . @E@@@@ . SUBROUTINE TO IXM )@@G@@SSUE AN I/O FOR TEMP BLOCKS THEN WAIT @A@@@@ . UPON ENTRY, A1 HAS BLXN )@@G@@OCK NUMBER @C@@@@ . A2 HAS TEMP BLOCK ADDRESS (BUFFER@C@@@@XO )@@G@@ . A3 HAS I/O FUNCTION CODE @]@@@@ . @G@@@@XP )@@G@@TBIOW* . $H TBIOW TEMP FILE I/O WITH WAIT XQ )@@G@@@C@@@@ SX,H2 X11,RET3 . @G@@@@ TPXR )@@G@@ TIOPKT+3 . $P MAKE SURE TEMP I/O PKT IS FREE @A@@@@ XS )@@G@@ ER WAIT$ .@G@@@@ TZ,S1 TIOPKT+3 .XT )@@G@@ $P MAKE SURE LAST I/O WAS OK @A@@@@ J TIOERR XU )@@G@@ @A@@@@ LA A4,A1 @G@@@@ MSI,U XV )@@G@@ A4,TBSECT . $P SECTOR NUMBER TO I/O PKT @A@@@@ SAXW )@@G@@ A4,TIOSECT .@G@@@@ SA A2,TIOBUF . $P BUXX )@@G@@FFER ADDRESS TO TEMP I/O PKT @G@@@@ SA A3,TIOFUNC .XY )@@G@@ $P FUNCTION CODE TO TEMP I/O PKT @A@@@@ LA,U A0,TIOPKT XZ )@@G@@ .@E@@@@ ER IO$ . $W IO$ ISSUE THE I/O YA )@@G@@@G@@@@ TP TIOPKT+3 . $P MAKE SURE I/O PKT IS FREE YB )@@G@@ @A@@@@ ER WAIT$ @G@@@@ TZ,S1 YC )@@G@@ TIOPKT+3 . $P MAKE SURE LAST I/O IS OK @A@@@@ J YD )@@G@@ TIOERR @C@@@@ J *RET3 . $E EXYE )@@G@@IT @]@@@@ . @]@@@@$(2) @]@@@@ . @C@@@@IIOPKTYF )@@G@@ I$OD 'I$FILE ',W$ IBSIZE,0 0@C@@@@TIOPKT I$OD 'T$FYG )@@G@@ILE ',W$ TBSIZE,0 0@A@@@@IIOFUNC EQUF IIOPKT+3,,S2 @A@@@@YH )@@G@@TIOFUNC EQUF TIOPKT+3,,S2 @A@@@@IIOWRDS EQUF IIOPKT+4,,YI )@@G@@H1 @A@@@@TIOWRDS EQUF TIOPKT+4,,H1 @A@@@@IIOBUF EQUF YJ )@@G@@ IIOPKT+4,,H2 @A@@@@TIOBUF EQUF TIOPKT+4,,H2 @A@@@@IIOSECYK )@@G@@T EQUF IIOPKT+5 @A@@@@TIOSECT EQUF TIOPKT+5 YL )@@G@@@]@@@@ . @A@@@@ASGIA '@ASG,A I$FILE .' @C@@@@ASGIT YM )@@G@@ '@ASG,T I$FILE,//POS/100 .' @A@@@@ASGTA '@ASG,A T$FIYN )@@G@@LE .' @C@@@@ASGTT '@ASG,T T$FILE,//POS/400 .' @]@@@@YO )@@G@@ . @G@@@@SW1* + 0 . SWITCH, SEE EQUF YP )@@G@@DESCRIPTION @G@@@@SW2* + 0 . SWITCH, SEEYQ )@@G@@ EQUF DESCRIPTION @E@@@@WRITSW EQUF SW1,,S1 . SEQ WYR )@@G@@RITE MODE =0 @G@@@@IDFASW EQUF SW1,,S2 . INDEX & DATYS )@@G@@A FILES ASSIGNED @G@@@@CRETSW EQUF SW1,,S3 . TEMP YT )@@G@@FILE CREATED, NO MORE SEQ @G@@@@FIBLSW EQUF SW1,,S4 .YU )@@G@@ FIRST INDEX BLOCK TO WRITE @G@@@@FTBLSW EQUF SW1,,S5 YV )@@G@@ . FIRST TEMP FILE BLOCK TO WRITE @G@@@@FLSHSW EQUF SW1,YW )@@G@@,S6 . SWITCH TO INDICATE EDIT BUF FLUSH @E@@@@REOFSW EQUF YX )@@G@@ SW2,,S1 . READ END OF FILE SWITCH@G@@@@ROVFSW EQUF SW2,YY )@@G@@,S2 . SEQUENTIAL READ OVERFLOW SWITCH @G@@@@TROFSW EQUF YZ )@@G@@ SW2,,S3 . TEMP FILE READ END OF FILE SW @G@@@@TEOFSW EQZA )@@G@@UF SW2,,S5 . TO INDICATE TEMP FILE EOF @G@@@@LCZESWZB )@@G@@ EQUF SW2,,S6 . FOR RCD#0 WANTED, BY LOCINX @G@@@@ZC )@@G@@IDBLSW* + 0 . INDEX WRITE DBLE BUF SW ZD )@@G@@@G@@@@IBNUMW* + 0 . INDEX WRITE BLOCK NUMBER, SEQZE )@@G@@ WRITE@G@@@@IBNUMWO* + 0 . CURRENT # OF IBLKS IZF )@@G@@NCL OVF @G@@@@IBRELW* + 2 . REL LOCATION IN IZG )@@G@@NDEX WRITE BLOCK @G@@@@IWADDR* + 0 . ADDRESS OF ZH )@@G@@CUR INDEX WRITE BLOCK @G@@@@IBWRSW* + 0 . ANY WZI )@@G@@RITE IN CUR IDX BLOCK SW @G@@@@ISECT* + 0 . ZJ )@@G@@SECTOR NUMBER OF WRITTEN INDEX BLK @G@@@@TDBLSW* + 0 ZK )@@G@@ . TEMP FILE WRITE DBLE BUF SWITCH @G@@@@TBNUMW* + 0 ZL )@@G@@ . TEMP FILE BLOCK NUMBER, SEQ WRITE @G@@@@TBRELW* + ZM )@@G@@ 0 . REL LOCATION IN TEMP WRITE BLOCK @G@@@@TWADDR* + ZN )@@G@@ 0 . ADDRESS OF CURRENT TEMP WRITE BLOCK@G@@@@TBWRSWZO )@@G@@* + 0 . ANY WRITE IN CUR TEMP BLOCK SW @G@@@@ZP )@@G@@TSECT* + 0 . SECTOR NUMBER OF WRITTEN TEMP BLOCKZQ )@@G@@@G@@@@RECNMC* + 0 . CURRENT NUMBER OF RECORDS IN ZR )@@G@@FILE @G@@@@RECNMW* + 0 . # OF RECORDS FOR SEQ WRZS )@@G@@ITE @E@@@@RECLEN* + 0 . RECORD LENGTH ZT )@@G@@ @E@@@@RECLN1* + 0 . REC LENGTH + EXTRAW ZU )@@G@@@E@@@@RECADD* + 0 . RECORD ADDRESS @G@@@@ZV )@@G@@INDEX* + 0 . RECORD INDEX FORMED BY TEMP A/M ZW )@@G@@@G@@@@RNDIDX* + 0 . POINTER TO RAND CORE INDEXZX )@@G@@ TABLE@^@@@@ZEROS* + 0 @G@@@@RNDADD* + 0 ZY )@@G@@. ADDR OF RAND CORE INDEX TABLE @]@@@@$(6) @E@@@@IBUF* ZZ )@@G@@ . ADDR OF INDEX BUFFER @E@@@@IBUF1A* + AA )@@G@@ 0 . ADDR OF WRITE INDEX BUFFER 1@E@@@@IBUF2A* + AB )@@G@@ 0 . ADDR OF INDEX BUFFER 2 @G@@@@IOBF1A* + 0 AC )@@G@@ . ADDR OF OVERFLOW INDEX BUFFER 1 @G@@@@IOBF2A* + AD )@@G@@ 0 . ADDR OF OVERFLOW INDEX BUFFER 2 @G@@@@TBUF* AE )@@G@@ . ADDR OF TEMP FILE EDIT BUFFERS @G@@@@TBUF1AAF )@@G@@* + 0 . ADDR OF TEMP FILE BUFFER 1 (SEQ READ) @G@@@@AG )@@G@@TBUF2A* + 0 . ADDR OF TEMP FILE BUFFER 2 (SEQ READ) AH )@@G@@@G@@@@TOBF1A* + 0 . ADDR OF WRITE OVF TEMP BUFFER 1 (SAI )@@G@@EQ) @G@@@@TOBF2A* + 0 . ADDR OF WRITE OVF TEMP BUFFEAJ )@@G@@R 2 (SEQ) @^@@@@RETURN* + 0 @^@@@@RET1* + 0 AK )@@G@@@^@@@@RET2* + 0 @^@@@@RET3* + 0 @]@@@@$(4) AL )@@G@@ @E@@@@IBNUMR* + 0 . # OF INDEX BLOCKS READ AM )@@G@@@G@@@@IBRELR* + 2 . REL LOCATION IN INDEX READ BLOCK AN )@@G@@ @G@@@@IRADDR* + 0 . ADDRESS OF CUR INDEX BLOCK RAO )@@G@@EAD @G@@@@SQRORB* + 0 . # OF ORIGINAL BLOCK BEAP )@@G@@FORE OVERFLOW @G@@@@SQRRIN* + 0 . # OF REMAINING IAQ )@@G@@NDICES IN CURRENT BLOCK @E@@@@RINDEX* + 0 . INDEX OF RAR )@@G@@ECORD TO BE READ @G@@@@IBRSTA* + 0 . NEXT BLOCK NUMBEAS )@@G@@R FOR WHICH A READ START@G@@@@IBONMR* + 0 . # OF INDEXAT )@@G@@ OVF BLOCKS GENERATED @G@@@@IBONRR* + 0 . # OFAU )@@G@@ INDEX OVF BLOCKS READ (SEQ READ) @E@@@@TBNUMR* + 0 AV )@@G@@. # OF TEMP FILE BLOCKS READ @G@@@@TBONRR* + 0 . BLK AW )@@G@@# OF TEMP OVERFLOW BLOCK READ @G@@@@TBRELR* + 0 AX )@@G@@. REL LOCATION WITHIN TEMP FILE BLOCK @E@@@@TRADDR* + 0 AY )@@G@@ . ADDRESS OF TEMP FILE BLOCK @G@@@@TORELR* + 0 AZ )@@G@@. RELATIVE LOCATION WITHIN TEMP BLOCK @G@@@@TBRSTA* + 0 BA )@@G@@ . REL BLOCK NUMBER FOR WHICH READ STARTED @E@@@@RECNMR* + BB )@@G@@ 0 . # OF RECORDS READ @G@@@@CURREC* + 0 BC )@@G@@ . CURRENT RECORD NUMBER @E@@@@SECTAD* + BD )@@G@@ 0 . ADDRESS OF SECTOR @]@@@@$(10) @G@@@@TBSQWNBE )@@G@@* + 0 . # OF TEMP BLKS WRITTEN BY SEQ WRITE@G@@@@BF )@@G@@INXLOW* + 0 . # OF 1ST INDEX IN CONCERNED BLOCK BG )@@G@@@G@@@@INXINT* + 0 . # OF INDICES IN INDEX BLK+ OVBH )@@G@@F @G@@@@LOCRCN* + 0 . RECORD NUMBER AS SUPPLIBI )@@G@@ED LOCINX @G@@@@LCINX* + 0 . INDEX LOCATED BY BJ )@@G@@LOCINX ROUTINE @G@@@@LCINXA* + 0 . ADDRESS OF BK )@@G@@INDEX LOCATED BY LCINX @I@@@@IFNDOOVF* + 0 . SWBL )@@G@@ = 1 IF INDEX IS FOUND IN OVERFLOW @I@@@@ BM )@@G@@ . AREA. IT IS RESET UPON ENTRY TO INXBUF @G@@@@RNDSAVBN )@@G@@* + 0 . TOSAVE ADDR OF RND TABLE ENTRY @G@@@@BO )@@G@@INXPKT* RES 2 . PACKET TO CALL INDEX BUFFER ROUTINEBP )@@G@@@E@@@@INXREL* + 0 . REL INDEX WITHIN BLOCK @A@@@@BQ )@@G@@ .@G@@@@TEMPKT* RES 2 BR )@@G@@ . PACKET TO CALL TEMP FILE BUF ROUTNE@^@@@@RETN1* + 0 BS )@@G@@@G@@@@IBFENT* + 0 . # OF ENTRIES IN INDEX EDIT BUBT )@@G@@FFERS @G@@@@IBRTAD* + 0 . INDEX BUFFER CORE REBU )@@G@@F TABLE @G@@@@IOVFRAD* + 0 . ADDR OF OVF INBV )@@G@@DEX REF TABLE @G@@@@IUPDPT1* + 0 . POINTER BW )@@G@@TO UPDATE INDEX TABLE @G@@@@IUPDAD* + 0 . ADBX )@@G@@DR OF INDEX BLOCK INDIC UPDATE@G@@@@IBFPT1* + 0 .BY )@@G@@ POINTER TO INDEX EDIT BUF TABLE @G@@@@TBFENT* + 0 BZ )@@G@@ . # OF ENTRIES IN TEMP EDIT BUFFERS @G@@@@TBRTAD* + 0 CA )@@G@@ . TEMP BUFFER CORE REF TABLE @G@@@@TBFPT1* + CB )@@G@@ 0 . POINTER TO TEMP EDIT BUF TABLE @G@@@@LOCSWB* + CC )@@G@@ 0 . SECTOR WITHIN TEMP BLK FOR LOCREC @G@@@@LOCBLKCD )@@G@@* + 0 . TEMP BLOCK NUMBER FOR LOCREC @I@@@@CE )@@G@@RMR1SW* + 0 . TO INDICATE RMR WITHOUT REC DELICF )@@G@@VERY @^@@@@ END ___ . SECTOR NUMBER OF WRITTENCG )@@G@@ INDEX BLK @G@@@@TDBLSW* + 0 . TEMP FILE WRITE DCH )@@G@@BLE BUF SWITCH @G@@@@TBNUMW* + 0 *[@@@@*SDFF*@[@@@@$(1) CI )@@G@@@#@@@@ AXR$ @[@@@@ . @D@@@@TF$C* . TEMPORARY FILE ACCESS CJ )@@G@@METHOD CHANGE COMMAND @^@@@@EXTRAW EQU 0 @C@@@@ SXCK )@@G@@,H2 X11,RETURN . $H TF$C @G@@@@ SLJ FRSTED CL )@@G@@ . $P FLUSH SQW INDEX BUF ON 1ST EDIT @[@@@@ . @F@@@@ . PREPARE TCM )@@G@@O BUILD PACKET TO CALL RANDOM READ FOR THIS RECORD @C@@@@ SXCN )@@G@@,H2 X10,SAVX10 . $P SAVE X10@G@[@@ LA,H1 A0,0,X10 CO )@@G@@ . $P REC # TO BE CHANGED TO A0 @G@@@[ LA A0,0CP )@@G@@,X10 . $P REC # TO BE CHANGED TO A0 @F@@@@ LX,U CQ )@@G@@ X10,RNDPKT . $P ADDR OF RNDPKT TO X10 @E@[@@ SA,H1 CR )@@G@@ A0,0,X10 . $P REC # TO RNDPKT @E@@@[ SA A0,0CS )@@G@@,X10 . $P REC # TO RNDPKT @G@@@@ LMJ X11,TF$RMRCT )@@G@@1 . $W TF$RMR1 ISSUE RANDOM READ @D@@@@ TZ,T1 RNDPCU )@@G@@KT+2 . $T SUCCESSFUL @E@@@@ J DLTER1 .CV )@@G@@ $A NO,DLTER1 YES @G@[@@ LA,H2 A3,0,X10 . $P ORCW )@@G@@IGINAL RECORD LENGTH TO A3 @G@@@[ LA,H2 A3,2,X10 .CX )@@G@@ $P ORIGINAL RECORD LENGTH TO A3 @G@@@@ AA,U A3,EXTRAW CY )@@G@@ . $P RCD LENGTH + EXTRAW TO A3 @A@@@@ LA A0,SCZ )@@G@@AVX10 .@E@[@@ LA,H2 A4,0,A0 . $P NEW LENGTH TO DA )@@G@@A4 @E@@@[ LA,H2 A4,2,A0 . $P NEW LENGTH TO A4 DB )@@G@@@G@@@@ TG A3,A4 . $T OLD RCD SIZE < NEW LENGTHDC )@@G@@ @E@@@@ J CHNGT1 . $A NO,CHNGT1 YES DD )@@G@@@F@@@@ LA A1,A4 . $P NEW RECORD LENGTH TO A1 DE )@@G@@@E@@@@ AA,U A1,1 . $P ADD 1 FOR REC HDR @F@@@@DF )@@G@@ SA A1,RECLEN . $P TOTAL LENGTH TO RECLEN @F@@@@DG )@@G@@ LA,H2 A2,1,A0 . $P ADDR OF NEW RECORD TO A2 @F@@@@DH )@@G@@ SA A2,RECADD . $P RECORD ADDRESS TO RECADD @C@@@@DI )@@G@@CHNLP1 . CHECK IF THERE IS SPACE IN TEMP FILE @G@@@@ TNZ DJ )@@G@@ TBWRSW . $ ANYTHING WRITTEN IN TEMP BLOCK @G@@@@ LMDK )@@G@@J X11,TINIT . $ INITIALIZE TEMP BLOCK IF NOTHING@G@@@@ DL )@@G@@ LMJ X11,TSPACE . $T ANY SPACE LEFT IN TEMP FILE @E@@@@DM )@@G@@ JZ A2,CHNGT2 . $A YES,CHNGT2 NO @E@@@@ DN )@@G@@ LMJ X11,TBWRT1 . $P WRITE RECORD OUT @C@@@@ J DO )@@G@@ CHNLP1 . $J CHNLP1 @A@@@@CHNGT2 . FOUND SPACE IN TEMP BDP )@@G@@LOCK @G@@@@ LX X9,TWADDR . $P ADDRESS OF TEMP BLOCDQ )@@G@@K TO X9 @G@@@@ AX X9,TBRELW . $P X9 POINTS TO NDR )@@G@@EW LOC IN TEMP BLK@E@@@@ LA A3,RECLEN . $P RECORD LDS )@@G@@ENGTH TO A3 @G@@@@ SA,H2 A3,0,X9 . $P RCD LGTH TO H2DT )@@G@@ OF TEMP ENTRY @F@@@@ AA,U A3,EXTRAW . $P RCD LGTHDU )@@G@@ + EXTRAW TO A3 @G@@@@ SA A3,RECLN1 . $P RCD LGTHDV )@@G@@ + EXTRAW TO RECLN1 @G@@@@ SA,H1 A3,0,X9 . $P RCDW )@@G@@D LGTH + EXTRAW TO H1 OF TBUF @E@@@@ LA A3,RECLEN .DX )@@G@@ $P RECORD LENGTH TO A3 @G@@@@ AX,U X9,1 . $P REDY )@@G@@CORD DESTINATION ADDR TO X9 @A@@@@ ANA,U A3,1 .DZ )@@G@@@E@@@@ LR R1,A3 . $P RECORD LENGTH TO R1 @G@@@@EA )@@G@@ LX X8,RECADD . $P RECORD ORIGINATING ADDR TO X8 EB )@@G@@@G@@@@ SLJ RTRANS . $W RTRANS TRANSFER RCD TO TEMEC )@@G@@P BLK @G@@@@ LMJ X11,FRMINX . $W FRMINX FORM INDEX FOED )@@G@@R RECORD @A@@@@ LA A5,TBRELW .@A@@@@ AAEE )@@G@@ A5,RECLN1 .@E@@@@ SA A5,TBRELW . $P UPEF )@@G@@DATE TBRELW @A@@@@ LA,U A0,1 .@D@@@@ EG )@@G@@ SA A0,TBWRSW . $P SET TBWRSW @D@@@@ . PREPARE TO CHANEH )@@G@@GE INDEX FOUND BY THE NEW INDEX @D@@@@ SLJ INDXUPD EI )@@G@@ . $W INDXUPD @E@@@@ LA A0,LCINXA . $P INEJ )@@G@@DEX ADDRESS TO A0 @F@@@@ LA A1,INDEX . $P NEWLY FOEK )@@G@@RMED INDEX TO A1 @G@@@@ SA A1,0,A0 . $P NEWLY FOEL )@@G@@RMED INDEX TO INDEX BLK @A@@@@ LX X10,SAVX10 .@F@@@@EM )@@G@@ LX,H2 X9,1,X10 . $P ADDR OF NEW RECORD TO X9 @D@@@@EN )@@G@@ LA A2,0,X9 . $P DBP TO A2 @E@@@@ SAEO )@@G@@ A2,1,A0 . $P DBP TO INDEX BLK @C@@@@ J EP )@@G@@ DLTEX0 . $J DLTEX0 @[@@@@ . @F@@@@CHNGT1 . OLD RECORD HAS EQ )@@G@@SUFFICINT SPACE, REPLACE RECORD AND DBP @F@@@@ LA A1,AER )@@G@@4 . $P NEW REC LENGTH TO A1 @E@@@@ AA,U A1,1ES )@@G@@ . $P ADD 1 FOR REC HEADER@A@@@@ SA A1,RECLEN ET )@@G@@ @F@@@@ LX,H2 X9,TEMPKT . $P RECORD HDR ADDR TO XEU )@@G@@9 @G@@@@ SA,H2 A1,0,X9 . $P NEW RECORD LENGTH TOEV )@@G@@ REMP BLK @G@@@@ AX,U X9,1 . $P RECORD DESTINAEW )@@G@@TION ADDRESS TO X9@A@@@@ ANA,U A1,1 .@E@@@@ EX )@@G@@ LR R1,A1 . $P RECORD LENGTH TO R1 @A@@@@ LXEY )@@G@@ X10,SAVX10 .@F@@@@ LX,H2 X8,1,X10 . $P NEEZ )@@G@@W RECORD ADDRESS TO X8 @D@@@@ LA A5,0,X8 . $P DBFA )@@G@@P TO A5 @F@@@@ SLJ RTRANS . $W RTRANS TRANSFEFB )@@G@@R RECORD @D@@@@ SLJ INDXUPD . $W INDXUPD FC )@@G@@@E@@@@ LA A0,LCINXA . $P INDEX ADDRESS TO A0 @F@@@@FD )@@G@@ SA A5,1,A0 . $P CHANGE DATA BASE POINTER @]@@@@FE )@@G@@DLTEX0 . @G@@@@ SZ,T1 2,X10 . $P SET ZERO RETURFF )@@G@@N CODE (SUCCESSFUL@C@@@@ J *RETURN . $E EXIT FG )@@G@@@]@@@@DLTER1 . @A@@@@ LA,U A0,1 .@E@@@@ FH )@@G@@ SA,T1 A0,2,X10 . $P SET NONZERO STATUS @C@@@@ J FI )@@G@@ *RETURN . $E EXIT @[@@@@ . @[@@@@ . @B@@@@INDXUPFJ )@@G@@D* + 0 . @[@@@@ . @E@@@@ . SUBROUTINE TO MFK )@@G@@ARK THAT AN INDEX BLOCK HAS BEEN MODIFIED @C@]@@ . POINTER TO ENTRY IN IFL )@@G@@UPDTAB IS IN IUPDPT1 @E@@@] . POINTER TO ENTRY IN INDEX UPDATE TABLE FM )@@G@@IS IN IUPDPT1 @[@@@@ . @B@@@@ DS A0,UPDSAVE FN )@@G@@ . @H@@@@ TZ IFNDOOVF . $T WAS LAST BLOCK FOFO )@@G@@UND ON OVERFLOW @E@@@@ J UPDRET . $A YES,UFP )@@G@@PDRET NO @E@@@@ LA A0,IUPDPT1 . REL ENTRY LOC FQ )@@G@@TO A0 @B@@@@ TG,U A0,IBNUM . @B@@@@ ERFR )@@G@@ ERR$ . @G@]@@ AA,U A0,IUPDTAB FS )@@G@@ . ABSOLUTE ENTRY ADDR TO A0 @G@@@] AA A0,IUPDAD FT )@@G@@ . ABSOLUTE ENTRY ADDR TO A0 @B@@@@ LA,U A1,7FU )@@G@@ . @F@@@@ SA A1,0,A0 . MARK ENTFV )@@G@@RY AS UPDATED @[@@@@ . @[@@@@ . @]@@@@UPDRET . @[@@@@ . FW )@@G@@@[@@@@ . @B@@@@ DL A0,UPDSAVE . @B@@@@ FX )@@G@@ J *INDXUPD . @[@@@@ . @[@@@@/ @[@@@@ . FY )@@G@@@[@@@@ . @[@@@@$(2) @G@@@@UPDSAVE RES 2 . TOFZ )@@G@@ SAVE REGISTERS BY INDXUPD @[@@@@ . @G@@@@RETURN + 0 GA )@@G@@ . RETURN ADDRESS FOR CHANGE COMMAND @^@@@@SAVX10 + GB )@@G@@ 0 @F@#@@CHBUFF* RES 326 . BUFFER TO HOLD RECORD DELIVEGC )@@G@@RED @G@[@@RNDPKT* + 0 . RCD# IN H1, LENGTH IN HGD )@@G@@2 @C@@@[RNDPKT* + 0 . RCD# @G@#@@GE )@@G@@ + CHBUFF . BUFFER ADDRESS FOR RECORD DELIVERY GF )@@G@@@G@@@# + 0 . BUFFER ADDRESS FOR RECORD DELGG )@@G@@IVERY @E@[@@ + 0 . STATUS IN T1 GH )@@G@@@F@@@[ + 0 . STATUS IN T1, LENGTH IN H2 GI )@@G@@@#@@@@ END ___ TEMP FILE @E@@@@*[@@@@*SDFF*@[@@@# . GJ )@@G@@@#@@@# AXR$ @[@@@#$(1) @D@@@#TF$MVE* . TEMP FILE ACCESSGK )@@G@@ METHOD MOVE COMMAND @[@@@# . @C@@@# SX,H2 X11,RETURNGL )@@G@@ . $H TF$MVE @C@@@# SX X10,X10SAV . $P SAVE X10GM )@@G@@@G@@@# SLJ FRSTED . $P FLUSH SQW INDEX BUF ON 1STGN )@@G@@ EDIT @G@@@# LMJ X11,CHRNGE . $W CHRNGE CHECK IF RECOGO )@@G@@RDS IN RANGE@G@@@# TZ A2 . $T RCD# TO MOVE AGP )@@G@@FTER OUT OF RNGE @E@@@# J MVEER1 . $A NO,MVEERGQ )@@G@@1 YES @B@@@# LA A0,3,X10 . $ @E@@@# GR )@@G@@ SA A0,MVSAV2 . $P RCD#3 TO (MVSAV2) @A@@@# LGS )@@G@@A A1,4,X10 .@A@@@# ANA A1,A0 .@G@@@#GT )@@G@@ AA,U A1,1 . $P NUMBER OF RECS TO BE MOVED TO A1GU )@@G@@@G@^@# SA,H2 A1,MVSAV2 . $P # OF RECS TO MOVE TO H2(MVGV )@@G@@SAV2) @G@@@^ SA A1,NUMMVE . $P # OF RECS TO MOVE TOGW )@@G@@ (NUMMVE) @A@@@# LA A2,0,X10 .@E@@@# SGX )@@G@@A A2,MVSAV1 . $P RCD#1 TO MVSAV1 @[@@@# . @C@@@# . SETGY )@@G@@ UP LOOP FOR MOVING RECORDS ONE BY ONE @]@@@#MVELP1 @G@^@# GZ )@@G@@ TNZ,H2 MVSAV2 . $T DONE WITH ALL RECORDS TO MOVE @G@@@^HA )@@G@@ TNZ NUMMVE . $T DONE WITH ALL RECORDS TO MOVE HB )@@G@@@E@@@# J MVEDN1 . $A YES,MVEDN1 NO @G@ @#HC )@@G@@ LX,U X10,RNDPKT . $P ADDR OF RANDOM READ PKT TO X10 HD )@@G@@@G@@@ LX,U X10,RMVPKT . $P ADDR OF RANDOM READ PKT TOHE )@@G@@ X10 @F@@@# LA A0,MVSAV2 . $P RECORD # TO MOVE TO HF )@@G@@A0 @G@ @# SA A0,0,X10 . $P RECORD # TO MOVE TO HG )@@G@@RNDPKT @G@@@ SA A0,0,X10 . $P RECORD # TO MOHH )@@G@@VE TO RMVPKT @F@@@# LMJ X11,TF$RMR . $W TF$RMR IHI )@@G@@SSUE RANDOM READ @G@ @# . RECORD DHJ )@@G@@ELIVERED TO CHBUFF @F@@@ . REHK )@@G@@CORD DELIVERED TO RDA @E@ @# TZ,T1 RNDPKT+2 . $T SUHL )@@G@@CCESSFUL @D@@@ TZ,T1 RMVPKT+2 . $T SUCCESSFHM )@@G@@UL @E@@@# J MVEER1 . $A NO,MVEER1 YES HN )@@G@@@C@ @^ L$SNAP 'RNDPKT',0,4,RNDPKT @B@B@ L$HO )@@G@@SNAP 'RMVPKT',0,4,RMVPKT @B@@@B . L$SNAP 'RMVPKT',0,4,RMVHP )@@G@@PKT @[@@@# . @E@@@# . PREPARE TO DELETE RECORD JUST READ TO FREE INHQ )@@G@@DEX SPACE @[@@@# . @F@@@# LX,U X10,DLTPKT . $P ADHR )@@G@@DR OF DLTPKT TO X10 @A@ @# LA A1,RNDPKT .@A@@@ HS )@@G@@ LA A1,RMVPKT .@G@@@# SA A1,3,X10 HT )@@G@@ . $P RECORD NUMBER TO DELETE TO PKT @A@@@# SA A1,4HU )@@G@@,X10 .@E@@@# LMJ X11,TF$DLT . $W TF$DLT DELETE HV )@@G@@RECORD@B@@@# TZ,T1 DLTPKT+2 . @B@@@# J HW )@@G@@ MVEER1 . @[@@@# . @C@@@# . FIGURE OUT EFFECT OF HX )@@G@@DELETE ON RECORD NUMBERS@[@@@# . @E@ @# LA A2,RNDPKT HY )@@G@@ . $P RECORD DELETED TO A2@E@@@ LA A2,RMVPKT .HZ )@@G@@ $P RECORD DELETED TO A2@E@@@# TG A2,MVSAV1 . $T RCIA )@@G@@D# DELETED < RCD#1@E@@@# J MVEGT2 . $A NO,MVEGTIB )@@G@@2 YES,MVEGT1@ @@@# J MVEGT1 @A@@@#MVEGT1 LA IC )@@G@@ A3,MVSAV1 .@A@@@# ANA,U A3,1 .@G@@@# ID )@@G@@ SA A3,MVSAV1 . $P DECREMENT RCD#1, WHERE TO INSERT@F@@@#IE )@@G@@MVEGT2 . PREPARE TO INSERT RECORD IN FILE AFTER RCD# IN MVSAV1 @[@@@#IF )@@G@@ . @ @@@# . SET UP THE INSERT PACKET @F@@@# LX,U X10,IG )@@G@@IAFPKT . $P ADDR OF IAFPKT TO X10 @A@@@# LA A4,MIH )@@G@@VSAV1 .@G@@@# SA A4,0,X10 . $P RCD# TO INSERTII )@@G@@ AFTER H1(IAFPKT) @G@ @# LA,H2 A5,RNDPKT+2 . $P LENGTH OIJ )@@G@@F RECORD TO A5 @F@@@ LA,H2 A5,RMVPKT+2 . $P LEIK )@@G@@NGTH OF RECORD TO A5 @G@@@# SA,H2 A5,2,X10 . $P LEIL )@@G@@NGTH OF RECORD TO H2(IAFPKT) @E@@@# LMJ X11,TF$IA .IM )@@G@@ $W TF$IA INSERT RECORD @A@@@# TZ,T1 2,X10 .@A@@@#IN )@@G@@ J MVEER1 .@B@B@^ L$SNAP 'DLTMVE',0IO )@@G@@,12,DLTPKT @B@@@B . L$SNAP 'DLTMVE',0,12,DLTPKT @G@@@# IP )@@G@@ LA A5,MVSAV1 . $P RCD# TO INSERT AFTER TO A5 @G@@@#IQ )@@G@@ TLE A5,MVSAV2 . $T RCD# TO INSERT <= INSERT RCD# IR )@@G@@@E@@@# J MVEGT4 . $A NO,MVEGT2 YES,MVEGT3@ @@@#IS )@@G@@ J MVEGT3 @C@@@#MVEGT4 . INCREMENT RECORD TO INSERT IT )@@G@@AFTER @G@@@# AA,U A5,1 . $P INCREMEN RCD# IU )@@G@@TO INSERT AFTER @G@@@# SA A5,MVSAV1 . $P NEW RCD#IV )@@G@@ TO INSERT AFTER MVSAV1@A@@@# LA A1,MVSAV2 .@A@@@#IW )@@G@@ AA,U A1,1 .@G@@@# SA A1,MVSAV2 IX )@@G@@ . $P INCREMENT NEXT RECORD # TO MOVE @ @@@# J MVEGIY )@@G@@T5 @]@@@#MVEGT3 . @A@@@# LA A1,MVSAV1 .@A@@@#IZ )@@G@@ AA,U A1,1 .@G@@@# SA A1,MVSAV1 JA )@@G@@ . $P INCREMENT RCD= TO INSERT AFTER @]@@@#MVEGT5 . @A@^@# JB )@@G@@ LA,H2 A0,MVSAV2 .@A@@@^ LA A0,NUMMVE .JC )@@G@@@A@@@# ANA,U A0,1 .@G@^@# SA,H2 A0,MJD )@@G@@VSAV2 . $P DECREMENT # OF RECORDS TO MOVE @G@@@^ SA JE )@@G@@ A0,NUMMVE . $P DECREMENT # OF RECORDS TO MOVE @ @@@# J JF )@@G@@ MVELP1 @A@@@#MVEDN1 . NO MORE RECORDS TO MOVE @D@@@# JG )@@G@@ LX X10,X10SAV . $P RESTORE X10 @F@@@# SZ,T1 JH )@@G@@ 2,X10 . $P STORE SUCCESSFUL RETURN @A@@@# LA JI )@@G@@ A0,0,X10 .@G@@@# SA A0,1,X10 . $P RETURN FJJ )@@G@@INAL RCD# TO CALLER SAME@B@@@A SZ RDA . JK )@@G@@@C@A@ _ SZ RDA . @B@@@ SZJL )@@G@@ RDALN . @C@@@# J *RETURN .JM )@@G@@ $E EXIT @]@@@#MVEER1 . @D@@@# LX X10,X10SAV .JN )@@G@@ $P RESTORE X10 @^@@@# LA,U A0,1@F@@@# SA,T1 JO )@@G@@ A0,2,X10 . $P SET ERROR RETURN CODE @B@@@ SZ JP )@@G@@ RDA . @B@@@ SZ RDALN . JQ )@@G@@@C@@@# J *RETURN . $E EXIT @[@@@# . @G@@@#JR )@@G@@ . SUBROUTINE TO CHECK IF RCD# TO MOVE AFTER IS OUT OF RANGE OF JS )@@G@@@^@@@# . RECORDS TO BE MOVED. @F@@@# . UPON RETURN, A2 CONTAINS ERROR COJT )@@G@@DE (0 = RCD# OUT OF RANGE) @[@@@# . @C@@@#CHRNGE SX,H2 X11,JU )@@G@@RET1 . $H CHRNGE @D@@@# LA A0,0,X10 . $P RCJV )@@G@@D#1 TO A0 @D@@@# LA A1,3,X10 . $P RCD#3 TO A1 JW )@@G@@@D@@@# LA A2,4,X10 . $P RCD#4 TO A2 @E@@@# JX )@@G@@ TLE A2,A1 . $T RCD#3 <= RCD#4 @E@@@# J JY )@@G@@ CHREX1 . $A NO,CHREX1 YES @E@@@# TG JZ )@@G@@ A0,A1 . $T RCD#3 > RCD#1 @E@@@# J CHRGKA )@@G@@T1 . $A NO,CHRGT1 YES,CHREX0@ @@@# J CHREX0 KB )@@G@@@]@@@#CHRGT1 . @E@@@# TLE A2,A0 . $T RCD#1 <=KC )@@G@@ RCD=4 @E@@@# J CHREX0 . $A NO,CHREX0 YES KD )@@G@@ @G@@@#CHREX1 LA,U A2,1 . $P RETURN NONZERO ERRORKE )@@G@@ CODE @C@@@# J *RET1 . $E EXIT @F@@@#KF )@@G@@CHREX0 SZ A2 . $P RETURN ZERO ERROR STATUS @C@@@#KG )@@G@@ J *RET1 . $E EXIT @[@@@#$(2) @C@@@ RMVPKTKH )@@G@@* + 0 . RCD# @G@@@ + RDA KI )@@G@@ . BUFFER ADDRESS FOR DELIVERY @G@@@ + KJ )@@G@@ 0 . STATUS IN T1, LENGTH IN H2 @E@@@#DLTPKT* + KK )@@G@@ 0 . # OF RECORDS DELETED @B@@@# + KL )@@G@@ 0 . RCD#2 @E@@@# + 0 . T1 HAS STAKM )@@G@@TUS (0=SUCCESSFUL)@C@@@# + 0 . RCD#3 KN )@@G@@@C@@@# + 0 . RCD#4 @D@@@#IAFPKT* + KO )@@G@@ 0 . RCD# TO INSERT AFTER @C@ @# + CHBUKP )@@G@@FF RECORD ADDRESS @C@@@ + RDA RECORD ADDKQ )@@G@@RESS @G@@@# + 0 . T1 HAS STATUS (0=SUCCESSFUL)KR )@@G@@, H2 LENGTH @E@@@#MVSAV1 + 0 . HAS RECORD # TO MOVE KS )@@G@@AFTER @G@@@#MVSAV2 + 0 . HAS RCD3 FROM PACKET FOR LOKT )@@G@@OP CONTROL @E@@@^NUMMVE + 0 . # OF RECORDS TKU )@@G@@O MOVE@C@@@#X10SAV + 0 . TO SAVE X10 @^@@@#RET1 KV )@@G@@ + 0 @^@@@#RETURN + 0 @[@@@# . @#@@@# KW )@@G@@ END ___ TG A2,MVSAV1 . $T RCD# DELETED < RCD#1@E@@@#KX )@@G@@ J MVEGT2 . $A NO,MVEGT*[@@@@*SDFF*@C@@@@ . TEMKY )@@G@@PORARY FILE ACCESS METHOD COPY COMMAND @[@@@@ . @#@@@@ AXKZ )@@G@@R$ @[@@@@$(1) @C@@@@TF$CPY* . $H TF$CPY LA )@@G@@@A@@@@ SX,H2 X11,RETURN .@C@@@@ SX X10,LB )@@G@@X10SAV . $P SAVE X10@G@@@@ SLJ FRSTED . $P FLLC )@@G@@USH SQW INDEX BUF ON 1ST EDIT @E@[@@ LA,H1 A0,1,X10 .LD )@@G@@ $P RCD#3 TO A0 @D@@@[ LA A0,3,X10 . $P RCLE )@@G@@D#3 TO A0 @E@[@@ LA,H2 A1,1,X10 . $P RCD#4 TO A1 LF )@@G@@ @D@@@[ LA A1,4,X10 . $P RCD#4 TO A1 @C@[@@LG )@@G@@ LA,H1 A2,0,X10 . $P RCD#1 TO A2 @C@@@[ LA LH )@@G@@ A2,0,X10 . $P RCD#1 TO A2 @G@@@@ SA,H2 A2,CPSAV1 . $P RLI )@@G@@CD#1 TO CPSAV1, RCD# TO INSERT AFTER@E@@@@ TLE A1,A0 LJ )@@G@@ . $T RCD#3 <= RCD#4 @E@@@@ J CPYER1 .LK )@@G@@ $A NO,CPYER1 YES @D@@@@ TLE A0,A2 . $T RCD#1 X@@@AG@@@@)[G[Q*@)@C@@@@@@@@O]@@@L/[K@[=CTS@@[R]@@@I/KB@@@8^)@[AG@K@@KAA )@@G@@T8K@@E+80@@JE@0@@KAH@@@@)[Q[Q%@C@)]@@@@@@@G9K@@[H[S@@[C[S@@]/K@@[RO]@@@LAB )@@G@@/[K@[=C5S@@@/K@@[X:OC@@@/@@@[XAI@@@@)[)[Q*@)@-@@@@@@@@W80@@D @@@@JCD@@@@AC )@@G@@@@[@@@/KB@@@C@@@[&/KB@@@;@@@@M&#C@@[C@@@@LAJ@@@@)[%[Q%@CK[@^[@K@@@CW[@@@AD )@@G@@P@K@['/G0@[78#0@[\9.[)@[8#0@[\&8K@@DR^K@@@9!E@@@/@0@[7AK@@@@)[4[Y*@@]@@@AE )@@G@@C@@@@S/!0@@IC];@@@&'0@@[@@D@@D/KB@@@ @E@@]C8@@__/KB@@@A^U@@][WE@@]AL@@@@AF )@@G@@)[_[Q%@)C]@)@)@@@@&'0@@[@@@@@ /K@@[.C];@@[&'0@@]/K@@@]C#@@]B/!0@[M/!0@[$AG )@@G@@/!0@[#AM@@@@)]D[Y*)@@]@@T8@@@HC[J@]SE@0@@KH9@@@A;!@@@A @@@@K @@@@GC8K@@#AH )@@G@@C[K@@S/!0@@IC];@@@AN@@@@)]O[Y*)]@@@@@@@@@#@@@@@]@@@@@]@@@@@[@@@@@[@@@@@@AI )@@G@@@@@@@@/K@@]7C@K@@G8#K@]IG@@@@KAO@@@@)]Z[Y*@@@@@@@@@@@D@@@@@B@@@@@A@@@@@CAJ )@@G@@@@@@@B@@@@@ @@@@@A@@@@@ @@@@@^@@@@@^@@@@@#AP@@@@)]%[Y*@@@)@@/!0@@IC];@@@AK )@@G@@&'0@@[@@@@@G@@@@@F@@@@@E@@@@@D@@@@@G@@@@@C@@@@@F@@@@@EAQ@@@@)]5[Q*)C]@)CAL )@@G@@@C@@@@C@@@@S/!0@@IC];@@@&'0@@]/K@@@]C#@@#D/!0@[M/!0@[$/!0@[#C@@@@SAR@@@@AM )@@G@@)]_[Q%@]@C@]@@@@@@/K@@]7T@K@@NG8K@@[G90@@[/!0@[#C@@@@S/!0@@IC];@@[C[0@@HAN )@@G@@/!0@[#AS@@@@)#D[Q*]@C]@)C]@@@@/K@@@]C#@@#N/!0@[M/!0@[$/!0@[#C@@@@S/!0@@IAO )@@G@@C];@@@&'0@@[@@@@@ AT@@@@)#N[Q*]@C]@)C]@@@@/K@@@]C#@@#"/!0@[M/!0@[$/!0@[#AP )@@G@@C@@@@S/!0@@IC];@@@&'0@@[@@@@@[AU@@@@)#X[Q%@)@C@)@@@@@@C];@@[C[0@@H/!0@[#AQ )@@G@@C@@@@S/!0@@IC];@@@&'0@@]R@K@@G/!0@[M/!0@[$AV@@@@)#$[Y%@C@@@@;H@@@MC[@@@[AR )@@G@@;G@@@=C[0@@HG@@@@NT90@[=W8@@@O @@@@G/!0@[#C@@@@S/!0@@IAW@@@@)#2[Y*@]@@@@AS )@@G@@C@F)@@;$)@@M;:)@@MC#)@@HW@@@#" @@@@GC@K@@NC#0@@HG@K@@LW@@@@K;DK@@MAX@@@@AT )@@G@@)#.[Q*@)]@)C]@@@@@C#@@ >/!0@[M/!0@[$/!0@[#C@@@@S/!0@@IC];@@@&'0@@[@@@@@#AU )@@G@@/KF@@@AY@@@@)^B[Q%@]@C@C]@@@@@/@K@^O/!0@[#C@@@@TC[0@@H/!0@[#C@@@@S/!0@@IAV )@@G@@C];@@[&'0@@^/K@@@]AZ@@@@)^L[Q*@)@)]@@@@@@@/!0@[#C@@@@S/!0@@IC];@@@&'0@@]AW )@@G@@/K@@^^G@K@@NT8K@@ET8K@@E!8K@@EBA@@@@)^V[Q*C@)]@]@@@@@@/!0@@IC];@@@&'0@@[AX )@@G@@/K@@^^G@K@@N/!0@[#C@@@@S/!0@@IC];@@[C[0@@HBB@@@@)^>[Q*)C@C@C@@@@@@C[0@@HAY )@@G@@/!0@[#C@@@@T;J@@@G/!0@@IC];@@@&'0@@]/K@@^^/!0@[#C@@@@SBC@@@@)^\[Q*)]@C@CAZ )@@G@@@@@@@@C@K@@S/!0@@IC];@@@&'0@@[/K@@^^G@K@@NW@@@ > @@@@G/!0@[#C@@@@SBD@@@@BA )@@G@@)^9[Y*)@)@@@H9@@@A;!@@@A @@@@K @@@@GC8K@@#C[K@@S/!0@@IC];@@@&'0@@[/K@@^^BB )@@G@@;CK@@YBE@@@@) ^[Q*)@)]@@@@@@@@@@@@@[@@@@@@@@@@@@/K@@^^C@K@@G8#K@ [G@@@@KBC )@@G@@T8@@@HC[J@ FE@0@@KBF@@@@) I[Y*@@@@@@@@@@@B@@@@@ @@@@@A@@@@@ @@@@@^@@@@@^BD )@@G@@@@@@@#@@@@@#@@@@@]@@@@@]@@@@@[BG@@@@) T[Y*@@@@@@@@@@@F@@@@@E@@@@@D@@@@@GBE )@@G@@@@@@@C@@@@@F@@@@@E@@@@@D@@@@@B@@@@@A@@@@@CBH@@@@) =[Q*@)]@)C]@@@@@C#@@ \BF )@@G@@/!0@[M/!0@[$/!0@[#C@@@@S/!0@@IC];@@@&'0@@[@@@@@#@@@@@GBI@@@@) ,[Q%@@)]@]BG )@@G@@@@@@@@/!0@@IC];@@@&'0@@[/K@@ :C@K@@S/!0@@IC];@@@&'0@@[@@@@@ /K@@@]BJ@@@@BH )@@G@@) 8[Q*)@)C@@@@@@@@T90@@E!8K@[=T90@@E!8K@J*/@K@A^/!0@[#C@@@@TC[0@@H/!0@[#BI )@@G@@C@@@@SBK@@@@)A][Q*]@]@C@@@@@@@C[0@@H/!0@[#C@@@@S/!0@@IC];@@@&'0@@]/K@@ :BJ )@@G@@G@K@@NT90@@E!8K@@EBL@@@@)AG[Q*)]@)]@]@@@@@/!0@@IC];@@@&'0@@[/K@@ &&'0@@[BK )@@G@@/K@@ ./!0@[#C@@@@S/!0@@IC];@@[BM@@@@)AQ[Y*@@)@)@/!0@@IC];@@@&'0@@[/K@@ :BL )@@G@@C@K@@GP;@@@[%8K@@]T8@@@]W8@@@E;G@@@/C@@@@SBN@@@@)A-[Q*]@]@]@@@@@@@/K@@ :BM )@@G@@;CK@@YC@K@@S/!0@@IC];@@@&'0@@[/K@@ :+8@@@J;C@@@YC@@@@SBO@@@@)A:[Q*C@)@)]BN )@@G@@@@@@@@/!0@[#C@@@@S/!0@@IC];@@[C[0@@H/!0@[#C@@@@S/!0@@IC];@@@&'0@@^BP@@@@BO )@@G@@)A5[Q*]@C@]@@@@@@@/!0@@IC];@@#G[0@@HT90@@E/!0@[#C@@@@S/!0@@IC];@@]G[0@@HBP )@@G@@T90@[=BQ@@@@)A_[Q*)@)@)@@@@@@@C@@@[]C@K@[#/!0@@IC];@@@&'0@@[/K@@ :O#K@@NBQ )@@G@@T90@@B/!0@[#C@@@@SBR@@@@)BD[Y*@@@@@@)@@@@H;*@@@^C@@@@T)@@@@H;*@@@#C@@@@UBR )@@G@@)@@@@H;*@@@]C@@@@V)@@@@H;*@@@[BS@@@@)BO[Y*@@)@)@/!0@@IC];@@]&'0@@#/K@@ :BS )@@G@@O#K@@G;CK@@M;?@@@M @@@@G)@@@@H;*@@@ C@@@@SBT@@@@)BZ[Q*)@)@)@@@@@@@C];@@[BT )@@G@@G[0@@H/!0@[#C@@@@UG[0@@H/!0@[#C@@@@TC[0@@H/!0@[#C@@@@SBU@@@@)B([Q%@C@C@)BU )@@G@@]@@@@@/K@@ :O#K@@N/!0@[#C@@@@S/!0@@IC];@@@G[0@@H/!0@[#C@@@@S/!0@@IBV@@@@BV )@@G@@)B3[Q*C@)C]@)C@@@@@@@@@#/K@@@]C#@@B//!0@[M/!0@[$/!0@[#C@@@@S/!0@@IC];@@@BW )@@G@@&'0@@[BW@@@@)B.[Q*C@]@@@@@@@@@C];@@@;!0@@GC]@@@S/!0@@IC];@@#C[0@@S;F@@@SBX )@@G@@/!0@@IC];@@#&'0@@^BX@@@@)CB[Q%@@)@@@@@@@@@C@K@@P-]@@@T-[0@@S;FK@@M;J@@@ABY )@@G@@/!0@@IC];@@];!0@@AC]@@@S/!0@@IBY@@@@)CL@,%@)C]@@@@@@@@@@@@@@@@@@@@@@@@@@BZ )@@G@@@@@@@@@@@@@@@@@@@#/K@@@]C#@@CP/!0@[M/!0@[$BZ@@@@@@^@@F@@J@@[@@L@@:@].@@@CA )@@G@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CQC3 CB )@@G@@ CL0008 @@E@@@@@@@]^CL0014 @@E@@@@@@@[;CL0015 @@E@@@CC )@@G@@@@@@#ECL0077 @@E@@@@@@@AACL0103 @@E@@@@@@@ &CL0231 @@E@@@CD )@@G@@@@@@ 5CL0281 @@E@@@@@@@ALCL0295 @@E@@@@@@@ 5CL0298 @@E@@@CE )@@G@@@@@@B^CL0311 @@E@@@@@@@ 0CL0333 @@E@@@@@@@ALCL0721 @@E@@@CF )@@G@@@@@@]2CL0724 @@E@@@@@@@]2CL1042 @@E@@@@@@@B.CL1136 @@E@@@CG )@@G@@@@@@A:CL1141 @@E@@@@@@@A>CL1229 @@E@@@@@@@AACL1500 @@E@@@CH )@@G@@@@@@]2CL1505 @@E@@@@@@@]CCL1522 @@E@@@@@@@^CCL1530 @@E@@@CI )@@G@@@@@@#OCL1604 @@E@@@@@@@ALCL1623 @@E@@@@@@@#XCL1630 @@E@@@CJ )@@G@@@@@@#OCL1640 @@E@@@@@@@#_CL1657 @@E@@@@@@@#OCL1713 @@E@@@CK )@@G@@@@@@AYCL1715 @@E@@@@@@@AYCL1717 @@E@@@@@@@AYCL1737 @@E@@@CL )@@G@@@@@@ANCL1815 @@E@@@@@@@ &CL1819 @@E@@@@@@@ &CL1824 @@E@@@CM )@@G@@@@@@^;CL1907 @@E@@@@@@@[;CL2022 @@E@@@@@@@^QCL210 @@E@@@CN )@@G@@@@@@^+CL413 @@E@@@@@@@^*CL415 @@E@@@@@@@^5CL417 @@E@@@CO )@@G@@@@@@B3CL761 @@E@@@@@@@];CL893 @@E@@@@@@@AYCL895 @@E@@@CP )@@G@@@@@@AYCL897 @@E@@@@@@@AY@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CQ )@@G@@*[@@@@*SDFF*@[@@@[ . @A@@@[ . ** CONF-1 ** @[@@@[CR )@@G@@ . @E@@@[ . THIS ELEMENT CONTAINS THE FOLLOWING ROUTINES: CS )@@G@@@C@@@[ . BLDC1, BLDC3, CTINIT, BLDC8 @[@@@[ . @[@@@[CT )@@G@@ . @A@@@[ . ** BLDC1 ** @[@@@[ . @D@@@[ . CU )@@G@@ THIS ROUTINE PRODUCES ALL OF TABLES FOR @B@@@[ . EACCV )@@G@@H INPUT OBJECT RECORD @[@@@[ . @D@@@[ . IT BUILDS C1/C9 ITSECW )@@G@@LF, AND CALLS ROUTINES @C@@@[ . TO BUILD C5/C11, C6/C12, C7CX )@@G@@/C13, @B@@@[ . C8, C14, AND C15 @[@@@[ . @E@@@[CY )@@G@@ . ON THE INITIAL CALL, BUFFER SPACE FOR THE TABLES @C@@@[ . CZ )@@G@@ AND SCHEMA TABLES IS MCORED @[@@@[ . @A@@@[ . THDA )@@G@@E ROUTINE CALL IS @A@@@[ . LX,U X10,NAMEBUF@A@@@[DB )@@G@@ . LMJ X11,BLDC1 @G@@@[ . WHEREDC )@@G@@ NAMEBUF CONTAINS THE OBJ RECORD NAME @[@@@[ . @E@@@[ . IFDD )@@G@@ AN INVALID NAME IS GIVEN, THIS ROUTINE WILL @B@@@[ . PRODE )@@G@@DUCE WARNING MESSAGES @[@@@[ . @#@@@[ AXR$. @#@@@[$(2) DF )@@G@@ LIT. @A@@@[PF FORM 12,6,18 . @G@@@[ . NUMOAP* DG )@@G@@EQU 30 . MAX NUM OWN/AUTO PTR PER C1/C9 ENTRY @F@@@[ . NUMDH )@@G@@REC EQU 100 . MAX NUM REC ENTRIES IN C1/C9 @B@@@[ . C1SDI )@@G@@IZE EQU NUMREC*(NUMOAP+39) . @A@@@[ . C5SIZE EQU (NUMREC/3)*2DJ )@@G@@33 . @A@@@[ . C7SIZE EQU (NUMREC/3)*200 . @A@@@[ . C8SIZE EQU DK )@@G@@NUMREC*6+28 . @[@@@[ . @]@@@[$(1). @[@@@[ . @B@@@[BLDC1*DL )@@G@@. . $H BLDC1 @D@@@[ S,H2 X11,RETURN DM )@@G@@. $P SAVE RETURN ADDR @E@@@[ S,H2 X10,RNMPTR . $P STORE NDN )@@G@@AME PTR IN CALL @E@@@[ L A1,0,X10 . $P SAVE FIRST WODO )@@G@@RD OF NAME @A@@@[ S A1,SA1 . @E@@@[ TNZDP )@@G@@ BUFFLG . $T IS THIS INITIAL CALL ? @C@@@[ SLJ CTIDQ )@@G@@NIT . $A NO YES,CTINIT@E@@@[ SZ X7 . $P SDR )@@G@@ET FOR FIRST SCHEMA @A@@@[ SZ SFIND . @A@@@[DS )@@G@@ SZ NFFLG . @A@@@[ SZ C8FLG DT )@@G@@. @A@@@[ SZ CURREC . @F@@@[C1STRT LMJ X11DU )@@G@@,FRBNME . $W FRBNME - GET RDT FROM SCHEMA @A@@@[RNMPTR* + 0 DV )@@G@@ . @A@@@[RTABAD* + 0 . @A@@@[ DW )@@G@@ + SFIND . @A@@@[ + $,('BLDC1') . DX )@@G@@@E@@@[ TNZ *RNMPTR . $T WAS RECORD NAME VALID ? @C@@@[DY )@@G@@ J C1ERR . $A YES NO,C1ERR @F@@@[ TNZ C8FDZ )@@G@@LG . $T IS THIS SECOND PASS FOR NAME @F@@@[ SLJ BLDEA )@@G@@C8 . $W BLDC8 - ENTER OBJ REC IN C8 @E@@@[ LMJ X11EB )@@G@@,BLDC5 . $W BLDC5 - BUILD C5/C11 @D@@@[ L X8,RTABADEC )@@G@@ . $P SET PTR TO RDT @E@@@[ L,T3 A0,1,X8 . $P SED )@@G@@AVE OBJECT RECORD CODE @A@@@[ LSSL A0,24 . @A@@@[EE )@@G@@ SSL A0,24 . @A@@@[ S A0,C1ORCD EF )@@G@@. @G@@@[ L A0,RTABAD . $P SAVE OWNER, AUTO, MANUAL EG )@@G@@LIST PTRS @A@@@[ AU,T1 A0,4,X8 . @A@@@[ S EH )@@G@@ A1,C1LPTR . @A@@@[ L,S1 A1,3,X8 . @A@@@[EI )@@G@@ S,S1 A1,C1LPTR . @A@@@[ AU,T2 A0,4,X8 EJ )@@G@@. @A@@@[ S A1,C1LPTR+1 . @A@@@[ L,S2 A1,EK )@@G@@3,X8 . @A@@@[ S,S1 A1,C1LPTR+1 . @A@@@[ EL )@@G@@ AU,T3 A0,4,X8 . @A@@@[ S A1,C1LPTR+2 . EM )@@G@@@A@@@[ L,S3 A1,3,X8 . @A@@@[ S,S1 A1,C1LPTREN )@@G@@+2 . @E@@@[ SZ,S2 C1ORCD . $P SET CHAIN-EMPTY FLAEO )@@G@@G @A@@@[ L,U A0,0 . @F@@@[ SLJ C1LEP )@@G@@IST . $W C1LIST- PROCESS OWNER LIST @A@@@[ L,U A0,EQ )@@G@@1 . @E@@@[ SLJ C1LIST . $W C1LIST- PROCEER )@@G@@SS AUTO LIST@A@@@[ L,U A0,2 . @F@@@[ SLJES )@@G@@ C1LIST . $W C1LIST- PROCESS MANUAL LIST @E@@@[ TZ,ET )@@G@@S2 C1ORCD . $T WERE ALL LISTS EMPTY ? @C@@@[ J C1EEU )@@G@@XIT . $A YES NO,C1EXIT@A@@@[ L A3,C1ORCD . EV )@@G@@@A@@@[ LSSL A3,24 . @A@@@[ S A3,C1SWRDEW )@@G@@ . @A@@@[ L,U A1,4 . @G@@@[ SLJEX )@@G@@ C1STOR . $W C1STOR - STORE OBJ REC W/ NO PTR INFO@A@@@[C1EXITEY )@@G@@ L A0,X7 . @D@@@[ TNE A0,NS$FLG . $T AEZ )@@G@@NOTHER SCHEMA ? @C@@@[ J C1EXT2 . $A YES NO,C1EXT2FA )@@G@@@E@@@[ L,U X7,1 . $P SET FOR SECOND SCHEMA @A@@@[FB )@@G@@ S X7,SFIND . @C@@@[ J C1STRT FC )@@G@@. $J C1STRT @E@@@[C1EXT2 TZ NS$FLG . $T IS THERE ONLYFD )@@G@@ ONE SCHEMA @G@@@[ LMJ X11,ARTDEF . $W ARTDEF - BUILD ART FE )@@G@@RULES FOR RECD @E@@@[ J *RETURN . $E RETURN TO MAIFF )@@G@@N CONTROL @[@@@[ . @#@@@[ . C1LIST - @E@@@[ . SCANS THFG )@@G@@E SET-RELATION LISTS OF THE OBJ REC @B@@@[ . A0 INDICAFH )@@G@@TES WHICH LIST - @C@@@[ . 0-OWNER, 1-AUTO, 2-MANUAL FI )@@G@@@[@@@[ . @C@@@[C1LIST + 0 . $H C1LIST @D@@@[FJ )@@G@@ TNZ,S1 C1LPTR,A0 . $T IS LIST EMPTY ? @C@@@[ J FK )@@G@@ *C1LIST . $A NO YES,C1LEND@A@@@[ L,U A3,1 FL )@@G@@. @A@@@[ S,S2 A3,C1ORCD . @D@@@[ L,S1 A6,FM )@@G@@C1LPTR,A0 . $P SET LIST LOOP CNT @A@@@[ AN,U A6,1 FN )@@G@@. @D@@@[ L,H2 X6,C1LPTR,A0 . $P SET INDEX TO LIST @F@@@[FO )@@G@@C1LLP L,T3 A4,0,X6 . $P GET NEXT SET CODE FROM LIST @A@@@[FP )@@G@@ LSSL A4,24 . @A@@@[ SSL A4,24 FQ )@@G@@. @G@@@[ SLJ C1SET . $W C1SET - SCAN SET FOR INVOFR )@@G@@LVED RECS @F@@@[ A,S1 X6,0,X6 . $P SET INDEX TO NEXT LFS )@@G@@IST ENTRY @E@@@[ JGD A6,C1LLP . $T MORE LIST ENTRIES ?FT )@@G@@ @C@@@[ . $A NO YES,C1LLP @D@@@[C1LENDFU )@@G@@ J *C1LIST . $E RETURN TO BLDC1 @[@@@[ . @]@@@[ . CFV )@@G@@1SET -@F@@@[ . GETS AND SCANS THE SET TABLE TO GET REC AND PTR INFW )@@G@@FO @B@@@[ . A4 CONTAINS THE SET CODE @[@@@[ . @B@@@[FX )@@G@@C1SET + 0 . $H C1SET @C@@@[ S A4,C1SCDEFY )@@G@@ . $P SAVE SET CODE@A@@@[ SZ,S1 C1ORCD . @F@@@[FZ )@@G@@ LMJ X11,FSBCDE . $W FSBCDE - GET SDT FROM SCHEMA @A@@@[GA )@@G@@ + C1SCDE . @A@@@[STABAD* + 0 GB )@@G@@. @A@@@[ + SFIND . @A@@@[ + $,(GC )@@G@@'BLDC1') . @E@@@[ LMJ X11,BLDC7 . $W BLDC7 - BUILDGD )@@G@@ C7/C13 @A@@@[ L X9,STABAD . @E@@@[ L GE )@@G@@ A0,2,X9 . $P GET OWNER RECORD WORD @A@@@[ S A0,GF )@@G@@C1SWRD . @A@@@[ L,U A1,0 . @E@@@[ GG )@@G@@ SLJ C1STOR . $W C1STOR - STORE RECORD PTR@E@@@[ L,SGH )@@G@@3 X8,2,X9 . $P GET MEMBER RECORD COUNT @A@@@[ AN,U X8,GI )@@G@@1 . @E@@@[ A,U X9,8 . $P INITIALIZE MEGJ )@@G@@MBER PTR @E@@@[C1SLP L A0,0,X9 . $P GET MEMBER RECORD WGK )@@G@@ORD @A@@@[ S A0,C1SWRD . @A@@@[ L,U A1,GL )@@G@@1 . @E@@@[ SLJ C1STOR . $W C1STOR - STORGM )@@G@@E RECORD PTR@E@@@[ A,T3 X9,1,X9 . $P RESET PTR TO NEXT MGN )@@G@@EMBER @E@@@[ JGD X8,C1SLP . $T ARE THERE MORE MEMBERS ? GO )@@G@@@C@@@[ . $A NO YES,C1SLP @G@@@[ TNZGP )@@G@@,S1 C1ORCD . $T WAS OBJECT RECORD ENCOUNTERED ? @C@@@[ GQ )@@G@@ J C1ERRI . $J C1ERRI @D@@@[ J *C1SET GR )@@G@@ . $E RETURN TO C1LIST @[@@@[ . @#@@@[ . C1STOR - @D@@@[GS )@@G@@ . BUILDS AND STORES POINTER ENTRY IN C1/C9 @C@@@[ . A GT )@@G@@RECORD ENTRY IS CREATED IF NEEDED @D@@@[ . A CHECK IS MADE FOR GU )@@G@@DUPLICATE PTR ENTRIES @E@@@[ . A1 INDICATES OWNER (0) OR MEMBERGV )@@G@@ (1) OF SET @A@@@[ . X8 AND X9 MUST BE SAVED @[@@@[ . GW )@@G@@@C@@@[C1STOR + 0 . $H C1STOR @A@@@[ L GX )@@G@@ R5,X8 . @A@@@[ L R6,X9 . @A@@@[GY )@@G@@ L R7,A1 . @D@@@[ L A0,C1SWRD GZ )@@G@@. $P GET RECORD CODE @A@@@[ SSL A0,24 . @A@@@[HA )@@G@@ S A0,C1R2WD . @F@@@[ LMJ X11,FRBCDE HB )@@G@@. $W FRBCDE - GET RDT FROM SCHEMA @A@@@[ + C1R2WD HC )@@G@@. @A@@@[R2TBAD* + 0 . @A@@@[ + SFIHD )@@G@@ND . @A@@@[ + $,('BLDC1') . @A@@@^ HE )@@G@@ L A0,R2TBAD . @F@@@^ L,S1 A0,1,A0 . $P GHF )@@G@@ET LOCATION MODE OF RECORD @D@@@^ SZ R11 . $P RHG )@@G@@ESET DIRECT FLAG @F@@@^ TNE,U A0,1 . $T IS RECORD NOTHH )@@G@@ DIRECT RECORD @D@@@^ L,U R11,1 . $P SET DIRECT FLHI )@@G@@AG @A@@@[ L X8,R5 . @A@@@[ L X9,HJ )@@G@@R6 . @A@@@[ L A1,R7 . @D@@@[ HK )@@G@@ L A2,C1SWRD . $P GET RECORD CODE @E@@@[ L,H1 R1,HL )@@G@@*CN,X7 . $P GET NUM OF C TAB ENTRIES @A@@@[ L R2,(07777HM )@@G@@00000000) . @F@@@[ L,U A0,NUMOAP . $P SET INDEX FOR SEARCHN )@@G@@HING C TBL @A@@@[ A,U A0,39 . @A@@@[ LSSHO )@@G@@L A0,18 . @A@@@[ LXM,H2 A0,*CN,X7 . @G@@@[HP )@@G@@ MSE A2,0,*A0 . $P SEARCH C TAB FOR EXISTING REC ENTRY HQ )@@G@@@E@@@[ . $T WAS AN ENTRY FOUND ? @E@@@[HR )@@G@@ J C1NEW . $A NO,C1NEW YES,C1TYPE @A@@@[ HS )@@G@@ AN,U A0,NUMOAP . @A@@@[ AN,U A0,39 . HT )@@G@@@A@@@[ J C1TYPE . @F@@@[C1NEW L,H1 A12,*CN,XHU )@@G@@7 . $P GET NUMBER OF ENTRIES IN TBL @E@@@[ TG,U A12,NUMREHV )@@G@@C . $T IS IT LESS THAN MAX NUM @A@]@[ ER ERR$ HW )@@G@@. $E @C@@@] J C1OFL . $A YES NO,C1OFL @E@@@[ HX )@@G@@ SSL A2,24 . $P INITIALIZE NEW ENTRY @A@^@[ LSSHY )@@G@@L A2,24 . @A@@@^ LSSL A2,3 . @C@@@^HZ )@@G@@ A A2,R11 . DIRECT FLAG @A@@@^ LSSL A2,IA )@@G@@21 . @C@@@[ S A2,0,A0 . RECORD CODE IB )@@G@@@A@@@[ L A3,(0400000000000) . @A@@@[ A,U A0,1 IC )@@G@@ . @E@@@[ S A3,NUMOAP,A0 . MANUAL BLOCK HDR WORD ID )@@G@@ @A@@@[ A,U A0,1 . @A@@@[ SZ NUMIE )@@G@@OAP,A0 . MASK@A@@@[ AN,U A0,2 . @A@@@[ IF )@@G@@ L,U A3,1 . @F@@@[ A,H1 A3,*CN,X7 . INCRIG )@@G@@EMENT NUM OF C TAB ENTRIES @A@@@[ S,H1 A3,*CN,X7 . IH )@@G@@@G@@@[C1TYPE L,T1 A2,C1SWRD . $P DETERMINE IF RECORD IS OBJ, OWNII )@@G@@, @F@@@[ TNE,T3 A2,C1ORCD . $ MEM, OR CO-MEM W-R-T OBJ IJ )@@G@@REC @F@@@[ J C1OBJ . JUMP IF THIS IS OBJECT RECORIK )@@G@@D @D@@@[ JZ A1,C1OWN . JUMP IF OWNER OF SET @E@^@[IL )@@G@@ L,S1 A2,C1ORCD . RECORD IS MEMBER OF SET @A@^@[ IM )@@G@@ TE,U A2,1 . @G@^@[ J $+3 . JUMPIN )@@G@@ IF OBJ REC IS NOT OWNER OF SET @D@@@[ L,U A4,4 IO )@@G@@. TYPE IS MEMBER (4) @A@@@[ J C1ENT . @E@^@[IP )@@G@@ L,U A4,010 . TYPE IS CO-MEMBER (8) @A@^@[ IQ )@@G@@ J C1ENT . @D@@@[C1OWN L,U A4,2 . TYPEIR )@@G@@ IS OWNER (2) @A@@@[ J C1ENT . @D@@@[C1OBJ IS )@@G@@ L,U A4,1 . TYPE IS OBJECT (1) @G@@@[ L,U A2,IT )@@G@@1 . OBJECT FOUND IN THIS SET, MARK FOUND FLG@F@@@[ TZ IU )@@G@@ A1 . =1 IF OBJ IS OWNER OF SET, @F@@@[ LSSIV )@@G@@L A2,1 . =2 IF OBJ IS MEMBER OF SET @A@@@[ S,SIW )@@G@@1 A2,C1ORCD . @F@@@[C1ENT OR,S3 A4,0,A0 . $P STORE RIX )@@G@@TYPE IN C TAB ENTRY @A@@@[ S,S3 A5,0,A0 . @G@@@[IY )@@G@@ TNE,U A1,4 . $T WAS C1STOR ENTERED FROM C1SET ? IZ )@@G@@@D@@@[ J *C1STOR . $E RETURN TO BLDC1 @E@@@[ JA )@@G@@ TNE,U A1,0 . $T IS RECORD OWNER OF SET ? @C@@@[ J JB )@@G@@ C1STO . $A NO YES,C1STO @A@@@[ L,U A2,2 JC )@@G@@. @G@@@[ TG,S3 A2,C1SWRD . $T IS RECORD AUTO MEMBER OF JD )@@G@@SET ? @C@@@[ J C1STA . $A NO YES,C1STA @A@@@[JE )@@G@@ A,U A0,1 . @G@@@[ TZ,S2 NUMOAP,A0 JF )@@G@@. $T HAS MANUAL TABLE BEEN CREATED ? @C@@@[ J C1MAN JG )@@G@@ . $A NO YES,C1MAN @A@@@[ A,U A0,NUMOAP . @A@@@[JH )@@G@@ S,H2 A0,SA0 . @A@@@[ L X5,R2TBAD JI )@@G@@. @E@@@[ L,T1 A2,6,X5 . $P SAVE DISPLACEMENT OF MFCWJJ )@@G@@@A@@@[ S,S6 A2,0,A0 . @F@@@[ L,S3 A2,6,X5 JK )@@G@@ . $P SAVE NUMBER OF PTRS RESERVED @A@@@[ S,S5 A2,0,A0 JL )@@G@@ . @E@@@[ L,S3 A1,3,X5 . $P SAVE MANUAL MEMBER JM )@@G@@COUNT @A@@@[ S,S2 A1,0,A0 . @A@@@[ AN,U A1,JN )@@G@@1 . @A@@@[ LXM X4,SA0 . @A@@@[ JO )@@G@@ LXI,U X4,1 . @A@@@[ A,T3 X5,4,X5 . JP )@@G@@@G@@@[C1MLP1 L A4,0,X5 . $P BUILD C TAB ENTRY MAN MEM LIST JQ )@@G@@ @A@@@[ SZ A3 . @D@@@[ LSSL A4,JR )@@G@@6 . FORMAT MANUAL WORD @A@@@[ LDSL A3,6 JS )@@G@@. @A@@@[ LSSL A4,6 . @A@@@[ LDSL A3,JT )@@G@@6 . @A@@@[ LSSC A4,18 . @A@@@[ JU )@@G@@ DSL A3,1 . @A@@@[ SSL A4,2 . JV )@@G@@@A@@@[ DSL A3,3 . @A@@@[ SSL A3,2 JW )@@G@@ . @A@@@[ SSC A4,12 . @A@@@[ DSLJX )@@G@@ A3,12 . @A@@@[ S A4,2,*X4 . @A@@@[JY )@@G@@ A,S1 X5,0,X5 . @A@@@[ JGD A1,C1MLP1 JZ )@@G@@. @A@@@[ AN,U A0,NUMOAP . @G@@@[C1MAN L A4,KA )@@G@@(0400000000000) . $P SET UP PTRS FOR MAN LIST SEARCH @A@@@[ A,UKB )@@G@@ A0,NUMOAP . @A@@@[ S,H2 A0,SA0 . @A@@@[KC )@@G@@ LXI,U A0,1 . @D@@@[ L,S2 A1,0,A0 KD )@@G@@. $P GET MAN LIST CNT @A@@@[ AN,U A1,1 . @G@@@[KE )@@G@@C1MLP2 L,T2 A2,2,*A0 . $P SEARCH MAN LIST FOR OBJECT RECORD KF )@@G@@@A@@@[ LSSL A2,24 . @A@@@[ SSL A2,24 KG )@@G@@ . @A@@@[ TNE A2,C1SCDE . @A@@@[ J KH )@@G@@ C1MAN1 . @G@@@[ SSL A4,1 . $P SHIFT MKI )@@G@@ASK BIT TO CORRESPOND TO SET @A@@@[ JGD A1,C1MLP2 . KJ )@@G@@@E@@@[ J C1ERRI . IF SET NOT FOUND, ERROR OFF @A@@@[KK )@@G@@C1MAN1 L,H2 A0,SA0 . @G@@@[ OR A4,1,A0 KL )@@G@@. $P OR MASK BIT INTO C TAB ENTRY MASK WRD@A@@@[ S A5,1,A0 KM )@@G@@ . @D@@@[ J *C1STOR . $E RETURN TO C1SET KN )@@G@@@A@@@[C1STO L X5,R2TBAD . @E@@@[ L,S1 A3,3,X5 KO )@@G@@ . $P GET OWNER COUNT IN RDT @A@@@[ AN,U A3,1 KP )@@G@@. @A@@@[ A,T1 X5,4,X5 . @C@@@[ J C1OKQ )@@G@@ALP . $J C1OALP @A@@@[C1STA L X5,R2TBAD . KR )@@G@@@F@@@[ L,S2 A3,3,X5 . $P GET AUTO MEMBER COUNT IN RDT KS )@@G@@@A@@@[ A,T2 X5,4,X5 . @A@@@[ AN,U A3,1 KT )@@G@@ . @E@@@[C1OALP L,T3 A2,0,X5 . $P SEARCH RDT FOR SET KU )@@G@@ENTRY @A@@@[ LSSL A2,24 . @A@@@[ SSL A2,KV )@@G@@24 . @A@@@[ TNE A2,C1SCDE . @A@@@[ KW )@@G@@ J C1STOA . @A@@@[ A,S1 X5,0,X5 . KX )@@G@@@A@@@[ JGD A3,C1OALP . @E@@@[ J C1ERRI KY )@@G@@ . IF SET NOT FOUND, ERROR OFF @G@@@[C1STOA L A3,0,X5 KZ )@@G@@. $P SET UP POINTER DESCRIPTION ENTRY @A@@@[ SZ A2 LA )@@G@@ . @A@@@[ LSSL A3,6 . @A@@@[ LDSLB )@@G@@L A2,18 . @A@@@[ LSSC A3,18 . @A@@@[LC )@@G@@ DSL A2,1 . @A@@@[ SSL A3,2 LD )@@G@@. @A@@@[ DSL A2,3 . @A@@@[ SSL A2,LE )@@G@@2 . @A@@@[ LSSC A3,1 . @A@@@[ LF )@@G@@ TNZ A1 . @A@@@[ A,U A3,1 . LG )@@G@@@A@@@[ LSSC A3,11 . @A@@@[ DSL A2,6 LH )@@G@@ . @A@@@[ SSC A3,18 . @A@@@[ DSLLI )@@G@@ A2,12 . @F@@@[ L,S4 R1,0,A0 . $P SEARCH LJ )@@G@@PRESENT POINTER LIST @A@@@[ LXM X10,A0 . @A@@@[LK )@@G@@ LXI,U X10,1 . @G@@@[ SE A3,1,*X10 LL )@@G@@. $T DOES NEW DESC MATCH AN OLD DESC ? @C@@@[ J C1SOA1 LM )@@G@@ . $A YES NO,C1SOA1@D@@@[ J *C1STOR . $E RETURN LN )@@G@@TO C1SET @A@@@[C1SOA1 L,S4 A1,0,A0 . @E@@@[ S LO )@@G@@ A3,1,X10 . $P STORE NEW PTR DESC @A@@@[ A,U A1,LP )@@G@@1 . @D@@@^ TG,U A1,NUMOAP . $T NUMOAP EXCEEDLQ )@@G@@ED @C@@@^ J OAPOFL . $A NO YES,OAPOFL@D@@@[ LR )@@G@@ S,S4 A1,0,A0 . $P INCREMENT O/A CNT @D@@@[ J *C1LS )@@G@@STOR . $E RETURN TO C1SET @[@@@[ . @#@@@[ . C1ERRI - LT )@@G@@@A@@@[ . INTERNAL ERROR EXIT @[@@@[ . @C@@@[C1ERRI. LU )@@G@@ . $H C1ERRI @G@@@[ P$RINT (PF 1,6,C1ERIMLV )@@G@@) . $P PRINT ERROR MESSAGE AND TERMINATE @A@@@[ ER ERR$ LW )@@G@@ . $E @[@@@[ . @]@@@[ . C1ERR -@B@@@[ . HANDLES INVALILX )@@G@@D NAME ERRORS @[@@@[ . @B@@@[C1ERR. . $H CLY )@@G@@1ERR @E@@@[ L A1,SA1 . $P RESTORE RECORD NAME LZ )@@G@@@A@@@[ S A1,*RNMPTR . @A@@@[ L,U A0,' ' MA )@@G@@ . @A@@@[ S,S2 A0,EDPKT . @E@@@[ TZ MB )@@G@@ NS$FLG . $T ARE THERE TWO SCHEMAS ? @C@@@[ J C1EMC )@@G@@R1 . $A NO YES,C1ER1 @D@@@[ E$DIT EDPKT . $P FMD )@@G@@ORMAT MESSAGE @A@@@[ E$COPY 14,C1EM01 . @A@@@[ ME )@@G@@ L A0,RNMPTR . @A@@@[ LMJ X11,EMSG$ . MF )@@G@@@A@@@[ E$COPY 22,C3EM02 . @A@@@[ E$DITX MG )@@G@@ . @C@@@[ J C3EREX . $J C3EREX @G@@@[MH )@@G@@C1ER1 TZ NFFLG . $T WAS NAME NOT FOUND IN BOTH SCHEMAS ? MI )@@G@@@C@@@[ J C1ER2 . $A NO YES,C1ER2 @D@@@[ E$DMJ )@@G@@IT EDPKT . $P FORMAT MESSAGE @A@@@[ E$COPY 16,C1EM1MK )@@G@@1 . @A@@@[ L A0,RNMPTR . @A@@@[ LMJML )@@G@@ X11,EMSG$ . @A@@@[ E$COPY 16,C3EM12 . @A@@@[MM )@@G@@ L A0,C3EM13,X7 . @A@@@[ LMJ X11,EFD1$ MN )@@G@@. @A@@@[ E$COPY 7,C3EM14 . @A@@@[ E$DITX MO )@@G@@ . @E@@@[ P$RINT (PF 1,14,PRINT) . $P PRINT WARNIMP )@@G@@NG MESSAGE @A@@@[ L,U A0,1 . @A@@@[ S MQ )@@G@@ A0,NFFLG . @C@@@[ J C1EXIT . $J C1EXIT MR )@@G@@ @D@@@[C1ER2 E$DIT EDPKT . $P FORMAT MESSAGE @A@@@[MS )@@G@@ E$COPY 14,C1EM01 . @A@@@[ L A0,RNMPTR MT )@@G@@. @A@@@[ LMJ X11,EMSG$ . @A@@@[ E$COPY 29MU )@@G@@,C3EM22 . @A@@@[ E$DITX . @C@@@[ MV )@@G@@ J C3EREX . $J C3EREX @[@@@] . @B@@@]C1OFL. MW )@@G@@ . $H C1OFL @E@@@] P$RINT (PF 1,4,C1OM) . $P PMX )@@G@@RINT OVERFLOW MESSAGE @A@@@] ER ERR$ . $E @[@@@^MY )@@G@@ . @C@@@^OAPOFL. . $H OAPOFL @D@@@^ MZ )@@G@@ L A5,0,A0 . $P SAVE RECORD CODE @A@ @^ LSSL A5,NA )@@G@@24 . @A@@@ SSL A5,24 . @G@@@^ NB )@@G@@ E$DIT EDPKT . $P FORMAT & PRINT NUMOAP OFL MSG @A@@@^NC )@@G@@ E$COPY 14,OAPM1 . @A@@@^ E$DECV A5 ND )@@G@@. @A@@@^ E$COPY 18,OAPM2 . @A@@@^ L,U A0,NE )@@G@@NUMOAP . @A@@@^ LMJ X11,EDECV$ . @A@@@^ NF )@@G@@ E$CHAR '!' . @A@@@^ E$DITX . NG )@@G@@@A@@@^ P$RINT (PF 1,14,PRINT) . @A@@@^ ER ERR$ NH )@@G@@ . $E @]@@@[ . @]@@@[$(2). @A@@@[SA0 + 0 NI )@@G@@ . @A@@@[SA1 + 0 . @A@@@[C1ORCDNJ )@@G@@ + 0 . @A@@@[C1SWRD + 0 . NK )@@G@@@A@@@[C1SCDE + 0 . @A@@@[C1R2WD + 0 NL )@@G@@ . @A@@@[C1LPTR RES 3 . @A@@@[CN + NM )@@G@@ C1 . @A@@@[ + C9 . @A@@@[NN )@@G@@C1EM01 'ERROR: RECORD ' . @A@@@[C1EM11 'WARNING: RECORD ' NO )@@G@@. @E@@@[C1ERIM 'CONFIG INTERNAL SCHEMA TABLE ERROR ' . NP )@@G@@@A@@@]C1OM 'C1/C9 TABLE OVERFLOW!' . @A@@@^OAPM1 'ERROR: RECORD NQ )@@G@@' . @A@@@^OAPM2 ' EXCEEDS NUMOAP = ' . @]@@@[ . NR )@@G@@@A@@@[ . ** BLDC3 ** @]@@@[ . @C@@@[ . NS )@@G@@ THIS ROUTINE BUILDS THE AREA TABLES @E@@@[ . C3 AND C1NT )@@G@@0 FROM THE INPUT AREA NAMES @]@@@[ . @A@@@[ . THNU )@@G@@E ROUTINE CALL IS @E@@@[ . LX X10,(NAME-LIST-INC,ARENV )@@G@@A-NAME-LIST) @A@@@[ . LMJ X11,BLDC3 @G@@@[ . NW )@@G@@ WHERE AREA-NAME-LIST IS ADDR OF NAME-LIST @G@@@[NX )@@G@@ . AND NAME-LIST-INC IS # OF WORDS/NAME NY )@@G@@@C@@@[ . IN LIST @]@@@[ . NZ )@@G@@@E@@@[ . A NAME WITH THE FIRST WORD ALL BLANKS WILL @C@@@[OA )@@G@@ . SIGNAL THE END OF THE LIST @]@@@[ . @E@@@[OB )@@G@@ . IF AN INVALID NAME IS GIVEN, THE ROUTINE WILL @C@@@[ . OC )@@G@@ PRODUCE WARNING MESSAGES @]@@@[ . @E@@@[ . OD )@@G@@ EACH ENTRY WILL BE PLACED IN THE TABLE SO THAT @E@@@[ . OE )@@G@@ THE TABLE IS SORTED BY ASCENDING AREA CODE @]@@@[ . @^@@@[OF )@@G@@$(2) LIT. @]@@@[$(1). @]@@@[ . @C@@@[BLDC3*OG )@@G@@. . $H BLDC3 @E@@@[ S,H2 X11,RETUROH )@@G@@N . $P SAVE RETURN ADDR @E@@@[ S X10,SX10 OI )@@G@@. $P SAVE NAME LIST PTR @E@@@[ SZ X7 . $P SOJ )@@G@@ET FOR FIRST SCHEMA @E@@@[C3INIT TZ,H1 *CX,X7 . $T IS THISOK )@@G@@ FIRST AREA ? @C@@@[ J C3RSET . $A YES NO,C3RSETOL )@@G@@@A@@@[ S X7,SFIND . @G@@@[ LMJ X11,FDSDTOM )@@G@@ . $W INITIALIZE SCHEMA ACCESS METHOD @A@@@[ + SFION )@@G@@ND . @A@@@[ + $,('BLDC3') . @G@@@[ OO )@@G@@ L A0,*LADDR,X7 . $P SAVE STARTING ADDR OF C3/C10 @A@@@[OP )@@G@@ A,U A0,1 . @A@@@[ S,H2 A0,*CX,X7 OQ )@@G@@. @A@@@[C3INT2 L A0,X7 . @E@@@[ TNE A0,OR )@@G@@NS$FLG . $T ANOTHER SCHEMA ? @C@@@[ J C3OLD OS )@@G@@ . $A YES NO,C3OLD @E@@@[ L,U X7,1 . $P SET FOROT )@@G@@ SECOND SCHEMA @C@@@[ J C3INIT . $J C3INIT OU )@@G@@@G@@@[C3RSET L,H2 A0,*CX,X7 . $P GET FIRST WORD ADDR OF LAST TBLOV )@@G@@ ENTRY@A@@@[ A,H1 A0,*CX,X7 . @A@@@[ AN,U A0,OW )@@G@@9 . @A@@@[ L,U A1,9 . @G@@@[ OX )@@G@@ S,T3 A1,0,A0 . $P RESET LAST LINK FROM 0 TO 9 @C@@@[OY )@@G@@ J C3INT2 . $J C3INT2 @E@@@[C3OLD SZ X7 OZ )@@G@@ . $P SET FOR FIRST SCHEMA @A@@@[ SZ SFIND PA )@@G@@ . @E@@@[ SZ NFFLG . $P SET NOT-FOUND FLAG PB )@@G@@TO 0 @A@@@[C3TEST L X10,SX10 . @E@@@[ L A0,PC )@@G@@0,X10 . $P GET FIRST WORD OF NAME @E@@@[ TNE A0,BLNKS PD )@@G@@ . $T IS IT BLANKS ? @C@@@[ J C3EXIT PE )@@G@@. $A NO YES,C3EXIT@E@@@[ S,H2 X10,ANMPTR . $P STORE NAME PTPF )@@G@@R IN CALL @G@@@[ DL A0,0,X10 . $P SAVE NAME IN CASE OPG )@@G@@F ERROR @A@@@[ DS A0,ANAME . @G@@@[C3TST2PH )@@G@@ LMJ X11,FABNME . $W GET AREA DESC TABLE FROM SCHEMA @A@@@[PI )@@G@@ANMPTR + 0 . @A@@@[ + ADTBUF PJ )@@G@@. @A@@@[ + SFIND . @A@@@[ + $,(PK )@@G@@'BLDC3') . @E@@@[ TNZ *ANMPTR . $T WAS AREA NAMEPL )@@G@@ VALID ? @C@@@[ J C3ERR . $A YES NO,C3ERR @G@@@[PM )@@G@@ L A0,ADTBUF . $P GET AND FORMAT AREA-CODE LINE PN )@@G@@@A@@@[ LSSC A0,12 . @A@@@[ LSSL A0,12 PO )@@G@@ . @A@@@[ A,U A0,9 . @A@@@[ S PP )@@G@@ A0,C3BUF . @C@@@[ DL A0,ADTBUF+4 . $P GET AREPQ )@@G@@A NAME@A@@@[ DS A0,C3BUF+1 . @A@@@[ SZ A0 PR )@@G@@ . @G@@@[ L A1,ADTBUF+6 . $P GET AND FORMAPS )@@G@@T PG-LENGTH LINE @A@@@[ LDSL A0,18 . @A@@@[PT )@@G@@ LSSL A0,6 . @G@@@[ A,S6 A0,ADTBUF+3 PU )@@G@@. $P INSERT FILE TYPE INTO P-L LINE @A@@@[ DSL A0,18 PV )@@G@@ . @A@@@[ S A1,C3BUF+3 . @E@@@[ DL PW )@@G@@ A0,ADTBUF+7 . $P GET PAGE ALLOCATION LINES@A@@@[ DS A0,PX )@@G@@C3BUF+4 . @A@@@[ SZ A0 . @G@@@[ PY )@@G@@ L A1,ADTBUF+9 . $P GET AND FORMAT LOAD-FACTOR LINE @A@@@[PZ )@@G@@ LDSL A0,12 . @A@@@[ LSSL A1,6 QA )@@G@@. @A@@@[ DSL A0,18 . @A@@@[ S A1,QB )@@G@@C3BUF+6 . @E@@@[ L A0,AREAP . $P GET UNLOAD FLQC )@@G@@AG @E@@@[ S,S1 A0,C3BUF+8 . $P PUT IT IN TABLE ENTQD )@@G@@RY @G@@@[ L A0,*LADDR,X7 . $P GET ADDR OF NEXT AVAIL COQE )@@G@@RE WORD @A@@@[ AU,U A0,1 . @A@@@[ LXIQF )@@G@@,U A1,1 . @A@@@[ A,U A0,9 . @A@@@[QG )@@G@@ S A0,*LADDR,X7 . @E@@@[ ER MCORE$ QH )@@G@@. $W MCORE BUFFER SPACE @C@@@[ L,T1 A2,C3BUF . $P GQI )@@G@@ET AREA CODE@G@@@[ L,H2 X9,*CX,X7 . $P SET UP PTRS FOR C TQJ )@@G@@ABLE SEARCH @A@@@[ LXI,U X9,9 . @A@@@[ QK )@@G@@ SZ A4 . @A@@@[ L,H1 A5,*CX,X7 . QL )@@G@@@G@@@[ DI,U A4,9 . $P CONVERT WORD CNT TO ENTRY CNT QM )@@G@@ @A@@@[ L R1,A4 . @G@@@[ SG,T1 A2,QN )@@G@@0,*X9 . $P SEARCH C TABLE FOR PLACEMENT OF ENTRY@G@@@[ J QO )@@G@@ C3AEND . $P IF PLACE IS AT END, GO TO C3AEND @G@@@[ QP )@@G@@ L A3,R1 . $P GET NUMBER OF WORDS FOR TRANSFER @A@@@[QQ )@@G@@ A,U A3,1 . @A@@@[ MSI,U A3,9 QR )@@G@@. @A@@@[ L R1,A3 . @E@@@[ LXI,U A0,QS )@@G@@-1 . $P SET INDICES FOR TRANSFER @A@@@[ ANU,U A0,9 QT )@@G@@ . @G@@@[ BT A0,0,*A1 . $P SHIFT C TABLE FOR SQU )@@G@@PACE FOR NEW ENTRY@G@@@[ A,U A1,1 . $P SET INDEX TO QV )@@G@@INSERT NEW ENTRY @A@@@[ LXI,U A1,1 . @A@@@[QW )@@G@@C3AEND L A0,(1,C3BUF) . @A@@@[ L,U R1,9 QX )@@G@@. @G@@@[ BT A1,0,*A0 . $P INSERT NEW ENTRY INTO C TQY )@@G@@ABLE @E@@@[ L,U A0,9 . $P INCREMENT TABLE SIZQZ )@@G@@E @A@@@[ A,H1 A0,*CX,X7 . @A@@@[ S,H1 A0,RA )@@G@@*CX,X7 . @A@@@[C3STST L A0,X7 . @E@@@[ RB )@@G@@ TE A0,NS$FLG . $T ANOTHER SCHEMA ? @C@@@[ J RC )@@G@@ C3NEW . $A NO YES,C3NEW @G@@@[ L,H2 A0,SX10 RD )@@G@@. $P SET NAME LIST PTR TO NEXT NAME @A@@@[ A,H1 A0,SX10 RE )@@G@@ . @A@@@[ S,H2 A0,SX10 . @C@@@[ J RF )@@G@@ C3OLD . $J C3OLD @E@@@[C3NEW L,U X7,1 RG )@@G@@. $P SET FOR SECOND SCHEMA @A@@@[ S X7,SFIND . RH )@@G@@@C@@@[ J C3TST2 . $J C3TST2 @E@@@[C3EXIT SZ RI )@@G@@ X7 . $P SET FOR PROPER SCHEMA @G@@@[ TNZ,H1 *CRJ )@@G@@X,X7 . $T ARE THERE ANY ENTRIES IN C TABLE ? @C@@@[ J RK )@@G@@ C3EXT2 . $A YES NO,C3EXT2@E@@@[ L A0,*LADDR,X7 RL )@@G@@. $P SET LAST LINK TO ZERO @A@@@[ AN,U A0,8 . RM )@@G@@@A@@@[ SZ,T3 0,A0 . @A@@@[C3EXT2 L A0,X7 RN )@@G@@ . @E@@@[ TNE A0,NS$FLG . $T ANOTHER SCHEMA ? RO )@@G@@ @A@@@[ J *RETURN . $E @A@@@[ L,U X7,RP )@@G@@1 . @C@@@[ J C3EXIT+1 . $J C3EXIT RQ )@@G@@@]@@@[ . @E@@@[C3ERR TZ NS$FLG . $T ARE THERE TWORR )@@G@@ SCHEMAS ? @C@@@[ J C3ER1 . $A NO YES,C3ER1 @E@@@[RS )@@G@@ E$DIT EDPKT . $P FORMAT MESSAGE @A@@@[ RT )@@G@@ E$COPY 12,C3EM01 . @A@@@[ DL A0,ANAME . RU )@@G@@@A@@@[ LMJ X11,EFD2$ . @A@@@[ E$COPY 22,C3EM0RV )@@G@@2 . @A@@@[ E$DITX . @C@@@[ J RW )@@G@@ C3EREX . $J C3EREX @G@@@[C3ER1 TZ NFFLG RX )@@G@@. $T WAS NAME NOT FOUND IN BOTH SCHEMAS ? @C@@@[ J C3ER2 RY )@@G@@ . $A NO YES,C3ER2 @E@@@[ E$DIT EDPKT . $P FORMAT RZ )@@G@@MESSAGE @A@@@[ E$COPY 14,C3EM11 . @A@@@[ SA )@@G@@ DL A0,ANAME . @A@@@[ LMJ X11,EFD2$ . SB )@@G@@@A@@@[ E$COPY 16,C3EM12 . @A@@@[ L A0,C3EM13SC )@@G@@,X7 . @A@@@[ LMJ X11,EFD1$ . @A@@@[ E$CSD )@@G@@OPY 7,C3EM14 . @A@@@[ E$DITX . @E@@@[SE )@@G@@ P$RINT (PF 1,14,PRINT) . $P PRINT WARNING MESSAGE @A@@@[ SF )@@G@@ L X10,SX10 . @E@@@[ DL A0,ANAME . $P RSG )@@G@@ESTORE AREA NAME @A@@@[ DS A0,0,X10 . @A@@@[SH )@@G@@ L,U A0,1 . @A@@@[ S A0,NFFLG SI )@@G@@. @C@@@[ J C3STST . $J C3STST @E@@@[C3ER2 SJ )@@G@@ E$DIT EDPKT . $P FORMAT MESSAGE @A@@@[ E$CSK )@@G@@OPY 12,C3EM01 . @A@@@[ DL A0,ANAME . @A@@@[SL )@@G@@ LMJ X11,EFD2$ . @A@@@[ E$COPY 29,C3EM22 SM )@@G@@. @A@@@[ E$DITX . @E@@@[C3EREX P$RINT (PSN )@@G@@F 1,14,PRINT) . $P PRINT ERROR MESSAGE @G@@@[ P$RINT (PF 1,8,SO )@@G@@TERMSG) . $P PRINT TERMINATION MESSAGE @A@@@[ ER EXISP )@@G@@T$ . $E @]@@@[ . @]@@@[$(2). @A@@@[RETURN + SQ )@@G@@ 0 . @A@@@[SX10 + 0 . @A@@@[SR )@@G@@SFIND + 0 . @A@@@[NFFLG + 0 SS )@@G@@. @A@@@[LADDR + LAST$I . @A@@@[ + LASST )@@G@@T$D . @A@@@[CX + C3 . @A@@@[ SU )@@G@@ + C10 . @A@@@[ANAME RES 2 . SV )@@G@@@A@@@[BLNKS ' ' . @A@@@[ADTBUF RES 10 SW )@@G@@ . @A@@@[C3BUF RES 7 . @A@@@[ + SX )@@G@@ 0 . @A@@@[ + 0 . @A@@@[SY )@@G@@C3EM01 'ERROR: AREA ' . @A@@@[C3EM02 ' NOT DEFINED IN SCHESZ )@@G@@MA' . @A@@@[C3EM11 'WARNING: AREA ' . @A@@@[C3EM12 ' NOT DEFTA )@@G@@INED IN ' . @A@@@[C3EM13 'FIRST' . @A@@@[ TB )@@G@@ 'SECOND' . @A@@@[C3EM14 ' SCHEMA' . TC )@@G@@@C@@@[C3EM22 ' NOT DEFINED IN EITHER SCHEMA' . @G@@@[TERMSG 'RETD )@@G@@ORGANIZATION TERMINATED DUE TO NAME ERROR. ' . @]@@@[ . TE )@@G@@ @A@@@[ . ** CTINIT ** @]@@@[ . @E@@@[TF )@@G@@ . THIS ROUTINE REQUESTS BUFFER SPACE FOR ALL @E@@@[ . TG )@@G@@ OF THE OBJECT RECORD TABLE BUILDING FUNCTIONS@]@@@[ . TH )@@G@@@G@@@[ . IT FIRST REQUESTS SPACE FOR C1, C5, AND C7 IN THE I-BANKTI )@@G@@, @C@@@[ . FOR C9, C11, C12 IN THE D-BANK @G@@@[ . TJ )@@G@@ THEN READS IN THE SCHEMA REF TABLES INTO THE D-BANK @G@@@[TK )@@G@@ . THEN ALLOCATES BUFFER SPACE FOR RECORD TBLS AND SET TBL TL )@@G@@@]@@@[ . @^@@@[$(2) LIT. @]@@@[$(1). @C@@@[TM )@@G@@CTINIT + 0 . $H CTINIT @E@@@[ SZ X7 TN )@@G@@ . $P SET FOR FIRST SCHEMA @E@@@[CTLP1 L A0,*LADDRTO )@@G@@,X7 . $P GET NEXT AVAIL CORE ADDR @A@@@[ A,U A0,1 TP )@@G@@. @E@@@[ S A0,*CN,X7 . $P GET C1/C9 BLOCK TQ )@@G@@@A@@@[ A,U A0,C1SIZE . @E@@@[ S A0,*CN5,XTR )@@G@@7 . $P GET C5/C11 BLOCK @A@@@[ A,U A0,C5SIZE TS )@@G@@. @E@@@] S A0,*CN6,X7 . $P GET C6/C12 BLOCK TT )@@G@@@A@@@] A,U A0,C6SIZE . @E@@@[ S A0,*CN7,XTU )@@G@@7 . $P GET C7/C13 BLOCK @A@@@[ A,U A0,C7SIZE TV )@@G@@. @C@]@[ S A0,C8 . $P GET C8 BLOCK @C@@@] TW )@@G@@ S A0,*CN8,X7 . $P GET C8 BLOCK @G@@@] TZ X7 TX )@@G@@ . $T IS THIS 1ST SCHEMA, I-BANK MCORE @C@@@] J CTITY )@@G@@NT1 . $A YES NO,CTINT1@A@@@[ A,U A0,C8SIZE . TZ )@@G@@@E@@@] L,U A1,FRSTD$ . $P GET FIRST D-BANK ADDR @G@@@]UA )@@G@@ TLE A1,A0 . $T IS THERE ENOUGH I-BANK FOR MCORE UB )@@G@@@C@@@] J BNKERR . $A YES NO,BNKERR@A@]@[ AN,UC )@@G@@U A0,1 . @A@@@]CTINT1 AN,U A0,1 . @E@@@[UD )@@G@@ S A0,*LADDR,X7 . $P NOTE LAST ADDR @E@@@[ UE )@@G@@ ER MCORE$ . $P MCORE BUFFER SPACE @A@@@[ L UF )@@G@@ A0,X7 . @E@@@[ TNE A0,NS$FLG . $T ANOTHERUG )@@G@@ SCHEMA ? @C@@@[ J CTINT2 . $A YES NO,CTINT2UH )@@G@@@E@@@[ L,U X7,1 . $P SET FOR SECOND SCHEMA @C@@@[UI )@@G@@ J CTLP1 . $J CTLP1 @A@@@[CTINT2 SZ SFIUJ )@@G@@ND . @G@@@[ LMJ X11,FDSDT . $W FDSDT - GET FUK )@@G@@IRST SCHEMA REF TBL @A@@@[ + SFIND . @A@@@[UL )@@G@@ + $,('CTINIT') . @E@@@[ TNZ NS$FLG UM )@@G@@. $T IS THERE SECOND SCHEMA ? @C@@@[ J CTINT3 . $A YUN )@@G@@ES NO,CTINT3@A@@@[ L,U A0,1 . @A@@@[ S UO )@@G@@ A0,SFIND . @G@@@[ LMJ X11,FDSDT . $W FDSDT -UP )@@G@@ GET SECOND SCHEMA REF TBL @A@@@[ + SFIND . UQ )@@G@@@A@@@[ + $,('CTINIT') . @G@@@[CTINT3 SZ A1 UR )@@G@@ . $P SET TO SCAN FIRST SCHEMA MAXTBL SIZES@A@@@[ SZ A2 US )@@G@@ . @A@@@[ SZ X7 . @C@@@[CTLP2 UT )@@G@@ L A0,MAXRDT,X7 . $P GET MAXRDT @A@@@[ TLE A1,A0 UU )@@G@@ . @A@@@[ L A1,A0 . @C@@@[ L UV )@@G@@ A0,MAXSDT,X7 . $P GET MAXSDT @A@@@[ TLE A2,A0 UW )@@G@@. @A@@@[ L A2,A0 . @A@@@[ L A0,UX )@@G@@X7 . @E@@@[ TNE A0,NS$FLG . $T IS THERE SECOUY )@@G@@ND SCHEMA ? @C@@@[ J CTINT4 . $A YES NO,CTINT4@E@@@[UZ )@@G@@ L,U X7,1 . $P SET TO SECOND SCHEMA @C@@@[ VA )@@G@@ J CTLP2 . $J CTLP2 @E@@@[CTINT4 L A0,LAST$DVB )@@G@@ . $P GET NEXT AVAIL CORE ADDR @A@@@[ A,U A0,1 VC )@@G@@. @E@@@[ S A0,RTABAD . $P GET OBJ REC TABLE BLOCK VD )@@G@@@A@@@[ A A0,A1 . @E@@@[ S A0,R2TBADVE )@@G@@ . $P GET AUX REC TABLE BLOCK @A@@@[ A A0,A1 VF )@@G@@. @E@@@[ S A0,STABAD . $P GET SET TABLE BLOCK VG )@@G@@@A@@@[ A A0,A2 . @E@@@[ S A0,LAST$DVH )@@G@@ . $P NOTE LAST ADDR @E@@@[ ER MCORE$ VI )@@G@@. $P MCORE BUFFER SPACE @G@@@[ LMJ X11,BLDC6 . $W BVJ )@@G@@LDC6 - BUILD CALC REC TABLE @E@@@[ L,U A0,28 VK )@@G@@. $P INITIALIZE LOC C8 @A@@@[ S,H1 A0,C8 . VL )@@G@@@G@@@[ L,U A0,1 . $P SET FLAG SINCE BUFFERS GOTTEN VM )@@G@@ @A@@@[ S A0,BUFFLG . @E@@@[ J *CTVN )@@G@@INIT . $E RETURN TO BLDC1 @]@@@] . @C@@@]BNKERRVO )@@G@@. . $H BNKERR @G@@@] AN A0,A1 VP )@@G@@ . $P PRINT NOT ENOUGH I-BANK ERROR MSG @A@@@] L A5,VQ )@@G@@A0 . @A@@@] E$DIT EDPKT . @A@@@] VR )@@G@@ E$COPY 7,BEM1 . @A@@@] E$OCTV A5 . VS )@@G@@@A@@@] E$COPY 26,BEM2 . @A@@@] E$DITX VT )@@G@@ . @A@@@] P$RINT (PF 1,14,PRINT) . @A@@@] ER VU )@@G@@ ERR$ . $E @]@@@[ . @]@@@[$(2). @A@@@[BUFFLGVV )@@G@@ + 0 . @A@@@]BEM1 'ERROR: ' . VW )@@G@@@C@@@]BEM2 ' WORDS MORE I-BANK NEEDED.' . @]@@@[ . VX )@@G@@@A@@@[ . ** BLDC8 ** @]@@@[ . @E@@@[ . VY )@@G@@ THIS ROUTINE STORES THE OBJECT RECORD NAME AND @G@@@[ . VZ )@@G@@ CODE IN C8, AND ASSIGNS THE RECORD AN INTERNAL @A@@@[ . WA )@@G@@ SEQUENCE NUMBER @]@@@[ . @^@@@[$(2) LIT. WB )@@G@@ @]@@@[$(1). @C@@@[BLDC8 + 0 . $H BLDC8 WC )@@G@@ @A@@@[ L,U A0,1 . @A@@@[ S A0,WD )@@G@@C8FLG . @G@@@[ L,H1 A0,C8 . $P SET INDEX FORWE )@@G@@ NEXT C8 ENTRY @A@@@[ A,H2 A0,C8 . @E@@@[WF )@@G@@ L X8,RTABAD . $P SET PTR TO RDT @E@@@[ WG )@@G@@ L,T3 A1,1,X8 . $P GET RECORD CODE @A@@@[ S,TWH )@@G@@1 A1,0,A0 . @E@@@[ DL A1,7,X8 . $P GET RECWI )@@G@@ORD NAME @A@@@[ DS A1,1,A0 . @A@@@[ WJ )@@G@@ DL A1,9,X8 . @A@@@[ DS A1,3,A0 . WK )@@G@@@A@@@[ L A1,11,X8 . @A@@@[ S A1,5,A0 WL )@@G@@ . @E@@@[ L,H1 A2,C8 . $P INCREMENT C8 SIZE WM )@@G@@ @A@@@[ A,U A2,6 . @A@@@[ S,H1 A2,WN )@@G@@C8 . @A@@@[ AN,U A2,28 . @A@@@[ WO )@@G@@ SZ A1 . @C@@@[ DI,U A1,6 . $P GWP )@@G@@ET SEQ-NUM @A@@@[ S,T2 A1,0,A0 . @E@@@[ S WQ )@@G@@ A1,C8SEQN . $P SAVE IT FOR BLDSYM @E@@@[ SZ,T3 0,AWR )@@G@@0 . $P SET LINK THIS ENTRY @E@@@[ TLE,U A1,2 WS )@@G@@ . $T IS THIS FIRST OBJ REC ? @E@@@[ J *BLDC8 WT )@@G@@. $E RETURN TO BLDC1 @E@@@[ AN,U A0,6 . $P SWU )@@G@@ET LINK IN PRIOR ENTRY @A@@@[ L,U A1,6 . @A@@@[WV )@@G@@ S,T3 A1,0,A0 . @E@@@[ J *BLDC8 WW )@@G@@. $E RETURN TO BLDC1 @]@@@[ . @]@@@[$(2). @A@@@[WX )@@G@@C8FLG + 0 . @A@@@[C8SEQN* + 0 WY )@@G@@. @A@#@]CN8 + C8 . @A@@@#CN8* + C8 WZ )@@G@@ . @A@@@] + C8D . @A@@@]C8D* XA )@@G@@ + 0 . @^@@@[ END . ___ XB )@@G@@. $P MCORE BUFFER SPACE @A@@@[ L A0,X7 . XC )@@G@@*[@@@@*SDFF*@]@@@@. @C@@@@. **** UNLOAD XD )@@G@@**** @]@@@@. @]@@@@. INPUTS:@E@@@@. X9 XE )@@G@@ - LOCATION OF CURRENT SLOT WORD @C@@@@. X10 - LOCXF )@@G@@ATION OF CURRENT RECORD @A@@@@. X11 - RETURN ADDRESS @C@@@@XG )@@G@@. A0 - ADDRESS OF CURRENT PAGE @A@@@@. A1 XH )@@G@@ - AREA CODE @A@@@@. A2 - PAGE NUMBER @E@@@@. XI )@@G@@ A3 - NUMBER OF SLOTS SCANNED THIS PAGE @]@@@@. XJ )@@G@@@]@@@@ AXR$ @]@@@@$(1). @]@@@@UNL*. @E@@@@ S XK )@@G@@ X8,UNSAVX8 . $ SAVE MINOR SET @C@@@@ S XL )@@G@@ X9,UNSAVX9 . @C@@@@ S X10,UNSAVX10 XM )@@G@@ . @C@@@@ S X11,UNSAVX11 . @C@@@@XN )@@G@@ DS A0,UNSAVA0 . @C@@@@ DS XO )@@G@@ A2,UNSAVA2 . @C@@@@ DS A4,UNSAVA4 XP )@@G@@ . @G@@@@ L,H1 A4,6,A0 . $ NUMBER OF CXQ )@@G@@ALC CHAINS AT END @G@@@@ A A3,A4 . $ NUMBEXR )@@G@@R OF SLOT THIS RECORD @E@@@@ SLJ APS$DBP . $ XS )@@G@@ CONSTRUCT A DBP @G@@@@UNL0 S A0,UNKPKT+3 . $ STOREXT )@@G@@ DBP IN KEY FILE PKT @G@@@@ S A0,UNDPKT . $ XU )@@G@@ STORE DBP IN DFILE PKT @I@@@@ S X10,UNDPKT+1 XV )@@G@@ . $ STORE LOC OF RECORD IN DFILE PKT @]@@@@UNL03. @G@@@@XW )@@G@@ TNE A1,UNDFPKT+3 . $ SKIP IF NOT THE SAME AREA XX )@@G@@@G@@@@ J UNL05 . $ SAME AREA AS BEFORE XY )@@G@@ @G@@@@ S A1,UNDFPKT+3 . $ STORE AREA CODE IXZ )@@G@@N PKT @E@@@@ L X10,C3 . ADDRESS OF C3 YA )@@G@@TABLE @E@@@@UNL04 L A4,,X10 . WORD WITH AREA CODE YB )@@G@@@G@@@@ SSL A4,24 . RIGHT JUSTIFY AREA CODE YC )@@G@@ @G@@@@ TNE A4,A1 . SKIP IF NOT THE SAMEYD )@@G@@ AREA CODE @G@@@@ J UNL045 . FOUND THE ENTRYE )@@G@@Y IN C3 @E@@@@ TNZ,T3 0,X10 . SKIP IF YF )@@G@@MORE ENTRIES@E@@@@ ER ERR$ . NOT FOUND YG )@@G@@ @G@@@@ A,T3 X10,,X10 . ADDRESS OF NEXT ENTRYH )@@G@@Y @C@@@@ J UNL04 . CONTINUE@]@@@@YI )@@G@@UNL045. @E@@@@ L,S1 A4,8,X10 . PATCH ONLY FLAYJ )@@G@@G @C@@@@ S A4,UNOFF . STORE IT@E@@@@ YK )@@G@@ L,U X10,UNDFPKT . $ PACKET ADDRESS @E@@@@ LMYL )@@G@@J X11,DF$AMW . $ WRITE AREA ENTRY @]@@@@UNL05. @E@@@@YM )@@G@@ L X9,UNSAVX9 . RESTORE X9 @E@@@@ YN )@@G@@ L A0,UNSAVA0 . RESTORE A0 @E@@@@ TZYO )@@G@@ UNOFF . SKIP IF UNLOADING @G@@@@ J YP )@@G@@ UNL07 . NOT UNLOADING FROM THIS AREA @G@@@@ TZYQ )@@G@@ SCDIRECT . SKIP IF NOT A DIRECT RECD @E@@@@ YR )@@G@@ J UNDIRECT . RECORD IS DIRECT @]@@@@UNL06. YS )@@G@@@G@@@@ L,U X10,UNDPKT . $ ADDRESS OF DFILE PKT YT )@@G@@ @G@@@@ LMJ X11,DF$AMW . $ STORE ENTRY IN DFYU )@@G@@ILE @E@@@@ L A1,R15 . LINE NUMBER YV )@@G@@ @A@@@@ AN,U A1,1 . LESS 1 @C@@@@ SZ YW )@@G@@ A0 . ZERO @E@@@@ DI,U A0,INDBLK YX )@@G@@ . BLK NUMBER @G@@@@ S A0,UNKPKT+4 . STYY )@@G@@ORE IN KFILE PACKET @G@@@@ L,U X10,UNKPKT YZ )@@G@@ . $ ADDRESS OF PACKET FOR KFILE @G@@@@ LMJ X11,KF$AMCZA )@@G@@ . $ STORE IT IN KEY FILE @E@@@@ L X11,ZB )@@G@@UNCOUNT . $ RECORDS UNLOADED @E@@@@ A,U X11,1 ZC )@@G@@ . $ INCREMENT IT @E@@@@ S X11,UNCOUNT ZD )@@G@@ . $ STORE IT BACK @]@@@@UNL07. @E@@@@ L X8,UZE )@@G@@NSAVX8 . $ RESTORE REGISTERS@C@@@@ L X9,UNSAVX9ZF )@@G@@ . @C@@@@ L X10,UNSAVX10 . ZG )@@G@@@C@@@@ L X11,UNSAVX11 . @C@@@@ DLZH )@@G@@ A0,UNSAVA0 . @C@@@@ DL A2,UNSAVA2ZI )@@G@@ . @C@@@@ DL A4,UNSAVA4 . ZJ )@@G@@@E@@@@ J 0,X11 . $ RETURN @]@@@@ZK )@@G@@. @C@@@@. FLUSH BUFFERS OF KEY FILE AND DATA FILE @]@@@@ZL )@@G@@. @]@@@@UNLF*. @E@@@@ S X11,UNSAVX11 ZM )@@G@@ . $ SAVE X11 @I@@@@ L,U X10,UNKPKT . $ ZN )@@G@@ ADDRESS OF PACKET FOR KFILE AM @G@@@@ LMJ X11,ZO )@@G@@KF$AMF . $ FLUSH KFILE BUFFERS @G@@@@ LMJ ZP )@@G@@ X11,DF$AMF . $ FLUSH DATA FILE BUFFER @C@@@@ E$ZQ )@@G@@DIT UNEPKT . @C@@@@ E$DECV UNCOUNT ZR )@@G@@ . @C@@@@ E$COPY 17,UNMSG1 . ZS )@@G@@@^@@@@ E$DITX . @C@@@@ L A0,UNMSG ZT )@@G@@ . ACW @E@@@@ ER PRINT$ . PRINT UNLOAD CZU )@@G@@OUNTS @E@@@@ L X11,UNSAVX11 . $ RESTORE ZV )@@G@@@C@@@@ J 0,X11 . $ RETURN@]@@@@. ZW )@@G@@@G@@@@. ENTRY POINT FOR FOREIGN PAGE. A DBP IS IN A0 AND THE RECORD ZX )@@G@@ @C@@@@. LOCATION IS IN A1. AREA CODE IS IN A2. @]@@@@. ZY )@@G@@ @]@@@@UNL1*. @E@@@@ S X8,UNSAVX8 . $ ZZ )@@G@@ SAVE MINOR SET @C@@@@ S X9,UNSAVX9 . AA )@@G@@@C@@@@ S X10,UNSAVX10 . @C@@@@ S AB )@@G@@ X11,UNSAVX11 . @C@@@@ DS A0,UNSAVA0AC )@@G@@ . @C@@@@ DS A2,UNSAVA2 . AD )@@G@@@C@@@@ DS A4,UNSAVA4 . @G@@@@ S AE )@@G@@ A0,UNKPKT+3 . $ STORE KEY IN KFILE PKT @G@@@@ AF )@@G@@ S A1,UNDPKT+1 . $ STORE RECORD LOC IN DFILE PKT@G@@@@AG )@@G@@ S A0,UNDPKT . $ STORE KEY IN DFILE PKT AH )@@G@@@E@@@@ L A1,A2 . $ AREA CODE @E@@@@AI )@@G@@ J UNL03 . $ CONTINUE @]@@@@. AJ )@@G@@ @^@@@@. ENTRY FOR SCAN VIA SET@]@@@@. @]@@@@UNLS*. AK )@@G@@@E@@@@ S X8,UNSAVX8 . $ SAVE MINOR SET @C@@@@AL )@@G@@ S X9,UNSAVX9 . @C@@@@ S AM )@@G@@ X10,UNSAVX10 . @C@@@@ S X11,UNSAVX11 AN )@@G@@ . @C@@@@ DS A0,UNSAVA0 . @C@@@@AO )@@G@@ DS A2,UNSAVA2 . @C@@@@ DS AP )@@G@@ A4,UNSAVA4 . @E@@@@ L A0,STDBP,X8 AQ )@@G@@ . $ GET DBP @E@@@@ J UNL0 . $ AR )@@G@@CONTINUE @]@@@@UNDIRECT. @C@@@@ L,S1 A4,,X9 AS )@@G@@ . DESC @C@@@@ AND,U A4,020 . AT )@@G@@@E@@@@ TZ A5 . SKIP IF NOT FOREIGN @G@@@@AU )@@G@@ J UNDIRFOR . FOREIGN DIRECT RECORD AV )@@G@@@E@@@@ L,H2 A4,1,A0 . PAGE NUMBER @G@@@@AW )@@G@@ S,H1 A4,UNDIRPKT+3 . STORE IN DFILE PACKET AX )@@G@@@]@@@@UNDIR1. @E@@@@ L A4,,X9 . SLOT WORAY )@@G@@D @E@@@@ LSSL A4,6 . SHIFT OFF DESCAZ )@@G@@ @E@@@@ SSL A4,24 . RECORD NUMBER BA )@@G@@@E@@@@ S,H2 A4,UNDIRPKT+3 . STORE IN PACKET @E@@@@BB )@@G@@ L,U X10,UNDIRPKT . PKT ADDRESS @G@@@@ BC )@@G@@ LMJ X11,DF$AMW . WRITE DIRECT CONTROL IN D$FILE'S@C@@@@BD )@@G@@ J UNL06 . CONTINUE@]@@@@UNDIRFOR. @E@@@@BE )@@G@@ SLJ DBP$APS . DECOMPOSE DBP @G@@@@ BF )@@G@@ S,H1 A2,UNDIRPKT+3 . STORE IN DFILE PACKET @C@@@@BG )@@G@@ J UNDIR1 . CONTINUE@]@@@@$(0). @#@[@@BH )@@G@@IBSIZE EQU 28 @]@[@@IFILL EQU 90@C@[@@FREE EQU ((((IBSIZE*(100-IFILLBI )@@G@@)+99)/100)+1)/2)*2@ @[@@INDBLK EQU (IBSIZE-2-FREE)/2 @^@@@@UNDIRPKT + BJ )@@G@@ 0 @^@@@@ + $+1 @A@@@@ + 4,0,BK )@@G@@2 @^@@@@ + 0 @G@@@@UNDFPKT + 0 BL )@@G@@ . PACKET FOR DFILE AREA ENTRY @^@@@@ + BM )@@G@@ $+1 @A@@@@ + 1,0,2 @^@@@@ + BN )@@G@@ 0 @G@@@@KF$WKS EQU 40 . SIZE OF WORKSPACE FOBO )@@G@@R KF$AM @E@@@@UNKPKT + 0 . PACKET FOR KFBP )@@G@@ILE @^@@@@ + 0 @^@@@@ + 0 @C@@@@BQ )@@G@@ + 0 . OLD DBP @^@@@@ + BR )@@G@@ 0 @^@@@@ + 0 @A@@@@ RES KF$WKS BS )@@G@@ @E@@@@UNDPKT + 0 . OLD DBP FOR DFILE BT )@@G@@@E@@@@ + 0 . ADDRESS OF RECORD @I@@@@BU )@@G@@UNOFF + 0 . PATCH ONLY IF 1 ELSE UNLOAD IFBV )@@G@@ 0 @E@@@@UNCOUNT + 0 . RECORDS UNLOADBW )@@G@@ED @A@@@@UNEPKT E$PKT 5,UNMSG+1 @A@@@@UNMSG + BX )@@G@@ 0105,$+1 @^@@@@ RES 5 @A@@@@UNMSG1 ' RECORDBY )@@G@@S UNLOADED' @^@@@@UNSAVX8 + 0 @^@@@@UNSAVX9 + BZ )@@G@@ 0 @^@@@@UNSAVX10 + 0 @^@@@@UNSAVX11 + 0 @^@@@@CA )@@G@@UNSAVA0 RES 2 @^@@@@UNSAVA2 RES 2 @^@@@@UNSAVA4 RECB )@@G@@S 2 @^@@@@ END ___VX9 . @C@@@@CC )@@G@@ L X10,UNSAVX10 . *[@@@@*SDFF*@[@@@@ . CD )@@G@@@A@@@@ . ** CF$AM ** @[@@@@ . @C@@@@ . THCE )@@G@@IS ROUTINE PROVIDES THE I/O NEEDED @A@@@@ . FOR THE C-FILE CF )@@G@@ @[@@@@ . @A@@@@ . THE ROUTINE CALL IS @A@@@@ . CG )@@G@@ LX,U X10,PARAM @A@@@@ . LMJ X11,CF$AM CH )@@G@@@E@@@@ . WHERE PARAM IS A LOCATION CONTAINING THE@A@@@@CI )@@G@@ . FOLLOWING -@C@@@@ . S1 - C-FILCJ )@@G@@E SEGMENT NO @B@@@@ . S2 - FUNCTION CODE @A@@@@CK )@@G@@ . 010 - WRITE@F@@@@ . 011 -CL )@@G@@ FOR C1/C9 - WRITE AFTER PACKING @A@@@@ . 020 -CM )@@G@@ READ @[@@@@ . @E@@@@ . THE CORE LOCATIONS CN ARE THE FILE LOCCN )@@G@@ATION @C@@@@ . POINTERS FOR THE REORG SYSTEM @D@@@@CO )@@G@@ . H1 CONTAINS WORD LENGTH OF SEGMENT @C@@@@ . CP )@@G@@ H2 CONTAINS CORE ADDR OF SEGMENT@[@@@@ . @C@@@@ . THE WRITCQ )@@G@@E TAKES INFO FROM LOC PTRS CN @C@@@@ . THE HEADER C0 IS ALWACR )@@G@@YS WRITTEN @[@@@@ . @E@@@@ . THE READ CHECKS IF SEGMENT IS ALCS )@@G@@READY IN CORE - @D@@@@ . IF NOT IT MCORE'S SPACE AND READSCT )@@G@@ - @C@@@@ . THE LOC PTRS CN ARE UPDATED @[@@@@ . CU )@@G@@@A@@@@ . ** CF$AM ** @[@@@@ . @A@@@@PF FORCV )@@G@@M 12,6,18 . @E@@@@ . (NOCW )@@G@@T INCLUDING C0) @#@@@@ AXR$. @#@@@@$(8) LIT. @]@@@@CX )@@G@@$(7). @[@@@@ . @B@@@@CF$AM*. . $H CF$AM CY )@@G@@@A@@@@ S,H2 X11,RETURN . @D@@@@ L,S1 A2,0,X10 CZ )@@G@@ . $P GET WHICH SEGMENT @C@@@@ L,S2 A3,0,X10 . $P GDA )@@G@@ET FUNCTION @E@@@@ TLE,U A2,1 . $T IS SEGMENT # WITHINDB )@@G@@ RANGE@A@@@@ J SEGERR . @A@[@@ TG,U A2,DC )@@G@@19 . @A@@@[ TG,U A2,21 . @C@@@@ DD )@@G@@ J SEGERR . $A YES NO,SEGERR@F@@@@ L,U X8,PGMSW DE )@@G@@ . $P CHOOSE WHICH BANK FOR READ @A@@@@ TNE,U A2,14 DF )@@G@@ . @A@@@@ L,U X8,1 . @E@@@@ TZ DG )@@G@@ STATUS . $T IS HEADER IN CORE ? @C@@@@ J GO DH )@@G@@ . $A NO YES,GO @A@@@@ L A0,(4,ASGA) . DI )@@G@@@C@@@@ ER CSF$ . $W @ASG,AX @D@@@@ JP DJ )@@G@@ A0,RESET . $T ASG REJECTED ? @C@@@@ . DK )@@G@@ . $A YES NO,RESET @E@@@@ TNE,U A3,020 . $T IS A WRDL )@@G@@ITE REQUESTED ? @C@@@@ J *RETURN . $E RETURN DM )@@G@@@A@@@@ L A0,(5,ASGU) . @C@@@@ ER CSF$ DN )@@G@@ . $W @ASG,UP @A@@@@ JN A0,UERR . @]@@@@DO )@@G@@RESET. @A@@@@ L,U A0,1 . @E@@@@ S DP )@@G@@ A0,STATUS . $P SET HEADER-IN-CORE FLAG @E@@@@GO TE,U A3,DQ )@@G@@020 . $T IS FUNCTION WRITE ? @C@@@@ J WRT DR )@@G@@ . $A NO,RD YES,WRT@E@@@@RD L A1,ELTNME,A2 . $P GET PRODS )@@G@@PER ELEMENT NAME @A@@@@ S A1,PFPPKT+2 . @D@@@@ DT )@@G@@ L A4,A2 . $P SAVE SEGMENT # @E@@@@ L,U A0,DU )@@G@@6 . $P SET FOR ABSOLUTE ELEMENT @A@@@@ S,H1 A0,PFPPKTDV )@@G@@+5 . @A@@@@ L,U A0,PFPPKT . @F@@@@ ER DW )@@G@@ PFS$ . $P GET ELEMENT TABLE FROM PFP @D@@@@ TNEDX )@@G@@,U A2,1 . $T WAS ELEMENT FOUND @C@@@@ J RDB DY )@@G@@ . $A YES NO,RDB @E@@@@ TZ A2 . $T WAS THEDZ )@@G@@RE PFP ERROR @C@@@@ J PFPERR . $A NO YES,PFPERREA )@@G@@@D@@@@ L A2,A4 . $P RESTORE SEGMENT # @E@@@@ EB )@@G@@ TZ,T1 PFPPKT+5 . $T HAS ELEMENT BEEN DELETED @C@@@@ J EC )@@G@@ RDB . $A NO YES,RDB @F@@@@ L A1,PFPPKT+10 ED )@@G@@. $P GET SECTOR DISP OF ELEMENT @A@@@@ S A1,DISP EE )@@G@@. @C@@@@ L A1,PFPPKT+8 . $P GET PTR WORD @A@@@@ EF )@@G@@ S A1,PTRS . @A@@@@ L A0,*LADDR,X8 . EG )@@G@@@A@@@@ AU,U A0,1 . @G@@@@ S,H2 A1,PTRS EH )@@G@@ . $P DETERMINE FIRST AND LAST ADDR OF BUFF@A@@@@ A,H1 A0,EI )@@G@@PTRS . @A@@@@ S A0,*LADDR,X8 . @D@@@@ EJ )@@G@@ ER MCORE$ . $W GET CORE FOR BUFF @D@@@@RDA L A0,EK )@@G@@PTRS . $P SET UP I/O PACKET @A@@@@ L A1,DISP EL )@@G@@. @A@@@@ DS A0,PKET+4 . @A@@@@ L,U A0,EM )@@G@@020 . @A@@@@ S,S2 A0,PKET+3 . @E@@@@ EN )@@G@@ L,H1 A0,PTRS . $T IS WORD COUNT ZERO @C@@@@ JZ EO )@@G@@ A0,RDB . $A NO YES,RDB @D@@@@ I$OW PKET EP )@@G@@. $W DO READ - IOW$ @E@@@@ SLJ CHECK . $W CHECK FEQ )@@G@@OR I/O ERROR @A@@@@ J $+2 . @A@@@@RDB ER )@@G@@ SZ PTRS . @A@@@@ L A1,PTRS . ES )@@G@@@E@@@@ EX STORE,A2 . $P NOTE CORE LOCATION IN CN @C@@@@ET )@@G@@ J *RETURN . $E RETURN @[@@@@ . @C@@@@WRT EU )@@G@@ TNE,U A2,1 . $T IS SEGMENT C1@C@@@@ J PACK EV )@@G@@ . $A NO YES,PACK @C@@@@ TNE,U A2,9 . $T IS SEGMEW )@@G@@ENT C9@C@@@@ J PACK1 . $A NO YES,PACK1 @D@@@@WRTEX EX )@@G@@ TE,U A3,010 . $T IS THIS WRITE FNC @C@@@@ J FNCEY )@@G@@ERR . $A YES NO,FNCERR@A@@@@ EX LOAD,A2 . EZ )@@G@@@E@@@@ S A1,PTRS . $P GET LOC INFO FROM CN @D@@@@FA )@@G@@ L A4,A2 . $P SAVE SEGMENT # @A@@@@ L,UFB )@@G@@ A0,PFPPKT . @F@@@@ ER PFWL$ . $P GET NEXFC )@@G@@T WRITE LOC OF FILE @E@@@@ JNZ A2,PFPERR . $T WAS THEFD )@@G@@RE PFP ERROR @C@@@@ . $A NO YES,PFPERRFE )@@G@@@D@@@@ L A2,A4 . $P RESTORE SEGMENT # @D@@@@WRTA FF )@@G@@ L A0,PTRS . $P SET UP I/O PACKET @D@@@@ S A1,FG )@@G@@DISP . $P SAVE FILE DISP @A@@@@ DS A0,PKET+4 FH )@@G@@. @A@@@@ L,U A0,010 . @A@@@@ S,S2 A0,FI )@@G@@PKET+3 . @E@@@@ L,H1 A0,PTRS . $T IS WORD COUNTFJ )@@G@@ ZERO @C@@@@ JZ A0,WRTB . $A NO YES,WRTB @D@@@@FK )@@G@@ I$OW PKET . $W DO WRITE - IOW$ @E@@@@ SLJFL )@@G@@ CHECK . $W CHECK FOR I/O ERROR @D@@@@WRTB L A0,FM )@@G@@PTRS . $P SAVE PRT IN FILE @A@@@@ S A0,PFPPKT+8 FN )@@G@@. @F@@@@ DSL A0,54 . $P GET SECTOR LENGTH OF ELEMFO )@@G@@ENT @A@@@@ DI,U A0,28 . @A@@@@ TZ A1 FP )@@G@@ . @A@@@@ A,U A0,1 . @E@@@@ FQ )@@G@@ S A0,PFPPKT+9 . $P SAVE IT IN PFP PKT @F@@@@ L,UFR )@@G@@ A1,6 . $P SET TYPE OF ELT TO ABSOLUTE @A@@@@ S,HFS )@@G@@1 A1,PFPPKT+5 . @D@@@@ L A1,ELTNME,A2 . $P SET ELEFT )@@G@@MENT NAME @A@@@@ S A1,PFPPKT+2 . @G@@@@ SZ FU )@@G@@ PFPPKT+11 . $P ZERO WRD SO TIME/DATE WILL BE SET @E@@@@ FV )@@G@@ L A1,DISP . $P GET DISP WITHIN FILE @A@@@@ S FW )@@G@@ A1,PFPPKT+10 . @F@@@@ A A1,A0 . $P UPDATE FX )@@G@@LAST WRITE LOC OF FILE @A@@@@ LN,U A0,PFPPKT . @F@@@@FY )@@G@@ ER PFI$ . $P ADD ELEMENT TO FILE DIRECTORY @E@@@@FZ )@@G@@ JNZ A2,PFPERR . $T WAS THERE PFP ERROR @C@@@@ GA )@@G@@ . $A NO YES,PFPERR@A@@@@ J *RETURN GB )@@G@@ . $E @[@@@@ . @C@@@@ . PACK - CALL PACKC1 TO PACK SEGMENT C1GC )@@G@@/C9 @[@@@@ . @D@@@@PACK TE,U A3,011 . $T IS PACK REQUEGD )@@G@@STED @C@@@@ J WRTEX . $A YES NO,WRTEX @D@@@@ GE )@@G@@ S A2,SAVE . $P SAVE SEGMENT # @E@@@@ L,U A1,GF )@@G@@6 . $P SET TO DELETE ABS ELEMENT@A@@@@ S,H1 A1,PFPPKTGG )@@G@@+5 . @E@@@@ SZ A1 . $P INITIALIZE LOOP COUGH )@@G@@NTER @E@@@@PACK0 A,U A1,1 . $P ADD 1 TO ELEMENT PTR GI )@@G@@@E@@@@ L A0,ELTNME,A1 . $P GET NEXT ELEMENT NAME @A@@@@GJ )@@G@@ S A0,PFPPKT+2 . @A@@@@ L,U A0,PFPPKT GK )@@G@@. @D@@@@ ER PFD$ . $P DELETE ELEMENT @E@@@@GL )@@G@@ TG,U A2,2 . $T WAS THERE A PFP ERROR @C@@@@ GM )@@G@@ J PFPERR . $A NO YES,PFPERR@E@[@@ TLE,U A1,18 GN )@@G@@ . $T MORE C-TABLES TO DELETE @E@@@[ TLE,U A1,20 GO )@@G@@. $T MORE C-TABLES TO DELETE @C@@@@ J PACK0 . $A NGP )@@G@@O YES,PACK0 @D@@@@ L A2,SAVE . $P RESTORE SEGMENT # GQ )@@G@@@B@@@@ J PACK2 . $J PACK2 @D@@@@PACK1 TE,U A3,GR )@@G@@011 . $T IS PACK REQUESTED @C@@@@ J WRTEX GS )@@G@@. $A YES NO,WRTEX @C@@@@PACK2 SZ X8 . $P SET FOR C1 GT )@@G@@@C@@@@ TNE,U A2,9 . $T IS SEGMENT C1@C@@@@ L,UGU )@@G@@ X8,1 . $P RESET FOR C9 @D@@@@ DS A2,SAVE GV )@@G@@. $P SAVE REGISTERS @C@@@@ SLJ PACKC1 . $W PACK C1GW )@@G@@ @D@@@@ DL A2,SAVE . $P RESTORE REGISTERS @E@@@@GX )@@G@@ L,U A3,010 . $P RESET FNC TO WRITE @B@@@@ GY )@@G@@ J WRTEX . $J WRTEX @[@@@@ . @ @@@@ . CHECK FOR I/GZ )@@G@@O ERROR @[@@@@ . @B@@@@CHECK + 0 . $H CHECK HA )@@G@@@A@@@@ L,U X10,PKET . @D@@@@ TZ,S1 PKET+3 HB )@@G@@ . $T IS STATUS ZERO ? @C@@@@ LMJ X11,IOERR . $A YHC )@@G@@ES NO,IOERR @A@@@@ L,H2 A0,PKET+3 . @G@@@@ TE,HD )@@G@@H1 A0,PTRS . $T WERE CORRECT # WORDS TRANSFERRED ? @C@@@@ HE )@@G@@ LMJ X11,IOERR . $A YES NO,IOERR @A@@@@ J *CHECK HF )@@G@@ . $E @[@@@@ . @A@@@@ . INSTR TO GET LOC INFO FROM CN @[@@@@HG )@@G@@ . @A@@@@LOAD SZ A1 . @A@@@@ L A1,HH )@@G@@C1 . @A@@@@ L A1,C2 . @A@@@@ HI )@@G@@ L A1,C3 . @A@@@@ L A1,C4 . HJ )@@G@@@A@@@@ L A1,C5 . @A@@@@ L A1,C6 HK )@@G@@ . @A@@@@ L A1,C7 . @A@@@@ L HL )@@G@@ A1,C8 . @A@@@@ L A1,C9 . @A@@@@HM )@@G@@ L A1,C10 . @A@@@@ L A1,C11 HN )@@G@@. @A@@@@ L A1,C12 . @A@@@@ L A1,HO )@@G@@C13 . @A@@@@ L A1,C14 . @A@@@@ HP )@@G@@ L A1,C15 . @A@@@@ L A1,C16 . HQ )@@G@@@A@@@@ L A1,C17 . @A@@@@ L A1,C18 HR )@@G@@ . @A@@@[ L A1,Z1 . @A@@@[ L HS )@@G@@ A1,Z2 . @[@@@@ . @A@@@@ . INSTR TO PUT LOC INFO INHT )@@G@@TO CN @[@@@@ . @A@@@@STORE NOP . @A@@@@ HU )@@G@@ S A1,C1 . @A@@@@ S A1,C2 . HV )@@G@@@A@@@@ S A1,C3 . @A@@@@ S A1,C4 HW )@@G@@ . @A@@@@ S A1,C5 . @A@@@@ S HX )@@G@@ A1,C6 . @A@@@@ S A1,C7 . @A@@@@HY )@@G@@ S A1,C8 . @A@@@@ S A1,C9 HZ )@@G@@. @A@@@@ S A1,C10 . @A@@@@ S A1,IA )@@G@@C11 . @A@@@@ S A1,C12 . @A@@@@ IB )@@G@@ S A1,C13 . @A@@@@ S A1,C14 . IC )@@G@@@A@@@@ S A1,C15 . @A@@@@ S A1,C16 ID )@@G@@ . @A@@@@ S A1,C17 . @A@@@@ S IE )@@G@@ A1,C18 . @A@@@[ S A1,Z1 . @A@@@[IF )@@G@@ S A1,Z2 . @[@@@@ . @^@@@@ . ASSIGN ERRORIG )@@G@@S @[@@@@ . @A@@@@UERR L,U X10,ASGU . @A@@@@ IH )@@G@@ LMJ X11,ASGERR . @A@@@@SEGERR P$RINT (PF 1,9,SEM) . II )@@G@@@A@@@@ ER ERR$ . $E @A@@@@PFPERR P$RINT (PF 1,8,IJ )@@G@@PEM) . @B@@@@ L$SNAP 'PFPPKT',2,12,PFPPKT . @A@@@@ IK )@@G@@ ER ERR$ . $E @A@@@@FNCERR P$RINT (PF 1,9,FEM) . IL )@@G@@@A@@@@ ER ERR$ . $E @[@@@@ . @]@@@@$(8). IM )@@G@@@A@@@@SAVE RES 2 . @A@@@@STATUS + 0 IN )@@G@@ . @A@@@@PTRS + 0 . @A@@@@DISP + IO )@@G@@ 0 . @A@@@@ELTNME 'XXXXXX' . @#@@@@IP )@@G@@ 'C1' . @#@@@@ 'C2' . @#@@@@ 'C3' . @#@@@@IQ )@@G@@ 'C4' . @#@@@@ 'C5' . @#@@@@ 'C6' . @#@@@@IR )@@G@@ 'C7' . @#@@@@ 'C8' . @#@@@@ 'C9' . @#@@@@IS )@@G@@ 'C10' . @#@@@@ 'C11' . @#@@@@ 'C12' . @#@@@@IT )@@G@@ 'C13' . @#@@@@ 'C14' . @#@@@@ 'C15' . @#@@@@IU )@@G@@ 'C16' . @#@@@@ 'C17' . @#@@@@ 'C18' . @#@@@[IV )@@G@@ 'Z1' . @#@@@[ 'Z2' . @A@@@@PFPPKT 'C$FILE ' IW )@@G@@ . @A@@@@ ' ' . @A@@@@ + IX )@@G@@ 0 . @A@@@@ + 0 . @A@@@@IY )@@G@@ ' ' . @A@@@@ DO 4 , + 0 IZ )@@G@@ . @A@@@@PKET 'C$FILE ' . @A@@@@ DO 4 , JA )@@G@@ + 0 . @A@@@@ASGA '@ASG,AX C$FILE. . ' . @B@@@@ASGU JB )@@G@@ '@ASG,UP C$FILE.,///300 . ' . @G@@@@SEM '*** ERROR - INVALID JC )@@G@@SEGMENT NUMBER PASSED TO CF$AM ***' . @E@@@@PEM '*** ERROR - C$JD )@@G@@FILE IS NOT A PROGRAM FILE ***' . @G@@@@FEM '*** ERROR - INVALID JE )@@G@@FUNCTION CODE PASSED TO CF$AM ***' . @A@@@@RETURN + 0 JF )@@G@@ . @A@@@@LADDR + LAST$I . @A@@@@ + JG )@@G@@ LAST$D . @#@@@@ END . ___ @D@@@@ ER JH )@@G@@ PFD$ . $P D*[@@@@*SDFF*@^@@@@ AXR$. @^@@@@JI )@@G@@$(6) LIT. @]@@@@$(5). @C@@@@CHKPT* + 0 JJ )@@G@@ . @C@@@@ DS A0,SAV1 . JK )@@G@@ @A@@@@ L,S2 A1,3,X10 . @A@@@@ TE,U A1,JL )@@G@@011 . @A@@@@ J RDBLK . @A@@@@ JM )@@G@@ L A0,PCNT . @A@@@@ A A0,A8 . JN )@@G@@@A@@@@ S A0,PCNT . @A@@@@ L A0,WCNT JO )@@G@@ . @A@@@@ A,H1 A0,7,X10 . @A@@@@ S JP )@@G@@ A0,WCNT . @A@@@@ J OUT . @A@@@@JQ )@@G@@RDBLK L A0,PHRCNT . @A@@@@ A,H1 A0,7,X10 JR )@@G@@. @A@@@@ S A0,PHRCNT . @]@@@@OUT. @C@@@@JS )@@G@@ DL A0,SAV1 . @C@@@@ J JT )@@G@@ *CHKPT . @A@@@@CHKPT2* + 0 . JU )@@G@@@A@@@@ E$DIT EDPKT . @A@@@@ E$DECV JV )@@G@@ PHRCNT .@C@@@@ E$COPY 11,RMSG . @A@@@@JW )@@G@@ E$DECV WCNT .@C@@@@ E$COPY JX )@@G@@14,WMSG . @A@@@@ E$DECV PCNT .@C@@@@ JY )@@G@@ E$COPY 14,TMSG . @A@@@@ E$DITX JZ )@@G@@ . @C@@@@ P$RINT (PF 1,12,PRINT) .@A@@@@KA )@@G@@ J *CHKPT2 . @]@@@@ . @C@@@@ . ZEKB )@@G@@RO DBP WARNING MESSAGE ROUTINE @]@@@@ . @C@@@@ZPWARN* + KC )@@G@@ 0 . $H ZPWARN @E@@@@ DS A0,SAV1 KD )@@G@@. $P SAVE REGISTERS @A@@@@ DS A2,SAV2 . KE )@@G@@@G@@@] L,U A2,ZWRNCNT . $P GET MAX # WARNINGS BEFORE SUPPRKF )@@G@@ESS @A@@@] A,U A2,1 . @A@@@@ L A1,KG )@@G@@R13 . @G@@@@ L,S1 A0,0,A1 . $P GET ZERO PTR KH )@@G@@CNT FROM C1 ENTRY @C@]@@ TG,U A0,11 . $T IS CNT KI )@@G@@> 10 @D@@@] TG A0,A2 . $T IS CNT > ZWRNCNT @C@@@@KJ )@@G@@ J ZPOUT . $A NO YES,ZPOUT @C@@@@ A,U A0,KK )@@G@@1 . $P INCREMENT CNT@A@@@@ S,S1 A0,0,A1 . KL )@@G@@@E@]@@ TG,U A0,11 . $T IS THIS 11TH ZERO PTR @G@@@]KM )@@G@@ TG A0,A2 . $T IS THIS (ZWRNCNT+1)ST ZERO PTR KN )@@G@@@C@@@@ J ZPMAX . $A NO YES,ZPMAX @E@@@@ E$DKO )@@G@@IT EDPKT . $P PRINT WARNING LINE @A@]@@ E$COPY 25KP )@@G@@,ZPM1 . @A@@@] E$COPY 32,ZPM1 . @C@@@@ KQ )@@G@@ L,T1 A0,1,X8 . AREA CODE @A@@@@ LSSL A0,24 KR )@@G@@ . @A@@@@ SSL A0,24 . @A@@@@ LMJKS )@@G@@ X11,EDECV$ . @A@@@@ E$COPY 4,ZPM2 . @C@@@@KT )@@G@@ L,H2 A0,1,X8 . PAGE NUM @A@@@@ LMJ X11KU )@@G@@,EDECV$ . @A@@@@ E$COPY 5,ZPM3 . @C@@@@ KV )@@G@@ L A1,R3 . ABS SLOT ADDR @A@@@@ LSSL A1,18 KW )@@G@@ . @A@@@@ SSL A1,18 . @A@@@@ A,UKX )@@G@@ A1,1 . @C@@@@ AN A1,X8 . REL SLOT AKY )@@G@@DDR @C@@@@ L,H1 A0,2,X8 . PAGE SIZE @C@@@@ KZ )@@G@@ AN A0,A1 . SLOT NUM @A@@@@ LMJ X11,EDECVLA )@@G@@$ . @A@@@@ E$COPY 8,ZPM4 . @C@@@@ L LB )@@G@@ A0,R15 . REC CODE @A@@@@ LMJ X11,EDECV$ LC )@@G@@. @A@@@@ E$COPY 8,ZPM5 . @C@@@@ L A0,LD )@@G@@R14 . SET CODE @A@@@@ LSSL A0,24 . LE )@@G@@@A@@@@ SSL A0,24 . @A@@@@ LMJ X11,EDECVLF )@@G@@$ . @A@@@@ E$CHAR '.' . @A@@@@ E$DLG )@@G@@ITX . @A@@@@ P$RINT (PF 1,12,PRINT) . @C@@@@LH )@@G@@ J ZPOUT . $J ZPOUT @E@@@@ZPMAX E$DIT EDPLI )@@G@@KT . $P PRINT SUPPRESS MESSAGE @A@]@@ E$COPY 40,ZPM6 LJ )@@G@@ . @A@@@] E$COPY 44,ZPM6 . @A@@@@ L LK )@@G@@ A0,R15 . @A@@@@ LMJ X11,EDECV$ . @A@@@@LL )@@G@@ E$COPY 9,ZPM7 . @A@@@@ L A0,R14 LM )@@G@@. @A@@@@ LSSL A0,24 . @A@@@@ SSL A0,LN )@@G@@24 . @A@@@@ LMJ X11,EDECV$ . @A@@@@ LO )@@G@@ E$CHAR '.' . @A@@@@ E$DITX . LP )@@G@@@A@@@@ P$RINT (PF 1,12,PRINT) . @E@@@@ZPOUT DL A0,SAV1 LQ )@@G@@ . $P RESTORE REGISTERS @A@@@@ DL A2,SAV2 LR )@@G@@. @A@@@@ J *ZPWARN . $E @]@@@[ . @C@@@[LS )@@G@@ . UNKNOWN AREA WARNING MESSAGE ROUTINE @]@@@[ . @C@@@[LT )@@G@@BDWARN* + 0 . $H BDWARN @E@@@[ DS A0,LU )@@G@@SAV3 . $P SAVE REGISTERS TO BE USED@A@@@[ DS A2,SAV4 LV )@@G@@ . @E@@@[ E$DIT EDPKT . $P FORMAT WARNING MESSLW )@@G@@AGE @A@]@[ E$COPY 22,BDM1 . @A@@@] E$COPY 29LX )@@G@@,BDM1 . @A@@@[ L A0,SAV3 . @A@@@[ LY )@@G@@ LMJ X11,EDECV$ . @A@@@[ E$COPY 8,BDM2 . LZ )@@G@@@C@@@[ L,T1 A0,1,X8 . AREA CODE @A@@@[ LSSMA )@@G@@L A0,24 . @A@@@[ SSL A0,24 . @A@@@[MB )@@G@@ LMJ X11,EDECV$ . @A@@@[ E$COPY 4,ZPM2 MC )@@G@@. @C@@@[ L,H2 A0,1,X8 . PAGE NUM @A@@@[ MD )@@G@@ LMJ X11,EDECV$ . @A@@@[ E$COPY 5,ZPM3 . ME )@@G@@@C@@@[ L A1,R3 . ABS SLOT ADDR @A@@@[ LSSMF )@@G@@L A1,18 . @A@@@[ SSL A1,18 . @A@@@[MG )@@G@@ A,U A1,1 . @C@@@[ AN A1,X8 MH )@@G@@. REL SLOT ADDR @C@@@[ L,H1 A0,2,X8 . PAGE SIZE MI )@@G@@@C@@@[ AN A0,A1 . SLOT NUM @A@@@[ LMJMJ )@@G@@ X11,EDECV$ . @A@@@[ E$COPY 8,ZPM4 . @C@@@[MK )@@G@@ L A0,R15 . REC CODE @A@@@[ LMJ X11ML )@@G@@,EDECV$ . @A@@@[ E$COPY 8,ZPM5 . @C@@@[ MM )@@G@@ L A0,R14 . SET CODE @A@@@[ LSSL A0,24 MN )@@G@@ . @A@@@[ SSL A0,24 . @A@@@[ LMJMO )@@G@@ X11,EDECV$ . @A@@@[ E$CHAR '.' . @A@@@[MP )@@G@@ E$DITX . @E@@@[ P$RINT (PF 1,12,PRINTMQ )@@G@@) . $P PRINT MESSAGE @E@@@[ DL A0,SAV3 . $P RMR )@@G@@ESTORE REGISTERS @A@@@[ DL A2,SAV4 . @A@@@[MS )@@G@@ J *BDWARN . $E @]@@@@$(6). @C@@@@PF FOMT )@@G@@RM 12,6,18 . @A@@@@PCNT* + 0 MU )@@G@@ . @A@@@@PHRCNT* + 0 . @A@@@@WCNT + 0 MV )@@G@@ . @A@@@@TMSG ' PTRS PATCHED.' . @A@@@@RMSG MW )@@G@@ ' PGS READ, ' . @A@@@@WMSG ' PGS WRITTEN, ' . MX )@@G@@@C@@@@SAV1 RES 2 . @A@@@@SAV2 RESMY )@@G@@ 2 . @B@]@@ZPM1 'WARNING: ZERO DBP - AREA ' . MZ )@@G@@@C@@@]ZPM1 'WARNING: ZERO PTR STORED - AREA ' . @A@@@@ZPM2 ',PNA )@@G@@G ' . @A@@@@ZPM3 ',SLT ' . @A@@@@NB )@@G@@ZPM4 ',RECCDE ' . @A@@@@ZPM5 ',SETCDE ' NC )@@G@@. @E@]@@ZPM6 'ZERO DBP WARNINGS SUPPRESSED FOR RECCDE ' . ND )@@G@@@E@@@]ZPM6 'ZERO POINTER WARNINGS SUPPRESSED FOR RECCDE ' . @A@@@@NE )@@G@@ZPM7 ', SETCDE ' . @A@@@[SAV3 RES 2 NF )@@G@@. @A@@@[SAV4 RES 2 . @A@]@[BDM1 'WARNING:NG )@@G@@ UNKNOWN AREA ' . @C@@@]BDM1 'WARNING: PTR TO UNKNOWN AREA ' . NH )@@G@@@A@@@[BDM2 ' - AREA ' . @^@@@@ END . NI )@@G@@___ . $T IS THIS*[@@@@*SDFF*@]@@@# . @A@@@# . NJ )@@G@@ ** BLDC5 ** @]@@@# . @E@@@# . THIS ROUTINE BNK )@@G@@UILDS THE C5/C11 TABLE FOR @A@@@# . A GIVEN OBJECT NL )@@G@@RECORD@]@@@# . @A@@@# . IT IS CALLED BY BLDC1 - @C@@@#NM )@@G@@ . BLDC1 PROVIDES THE BUFFER SPACE @C@@@# . RTANN )@@G@@BAD CONTAINS THE ADDR OF THE @C@@@# . OBJECT RECORD TANO )@@G@@BLE @C@@@# . X7 INDICATES WHICH SCHEMA @]@@@#NP )@@G@@ . @^@@@# . THE CALL IS - @A@@@# . LMJ NQ )@@G@@ X11,BLDC5 @]@@@# . @^@@@# AXR$. @A@@@#PF NR )@@G@@ FORM 12,6,18 . @^@@@#$(4) LIT. @]@@@#$(3). NS )@@G@@ @C@@@#BLDC5*. . $H BLDC5 @E@@@# NT )@@G@@ S,H2 X11,RETURN . $P SAVE RETURN ADDR @G@@@# LXMNU )@@G@@ X8,RTABAD . $P SET INDEX INTO RECORD TABLE @E@@@# NV )@@G@@ L,H2 X9,*CN5,X7 . $P SET INDEX TO C TBL ENTRY @A@@@# A,HNW )@@G@@1 X9,*CN5,X7 . @E@@@# S X9,SX9 . $P SAVE STNX )@@G@@ART OF ENTRY @E@@@# L,T3 A1,0,X9 . $P GET START OF NY )@@G@@LAST ENTRY @A@@@# L A0,X9 . @A@@@# AN NZ )@@G@@ A0,A1 . @E@@@# S,T3 A1,0,A0 . $P SET LINOA )@@G@@K IN LAST ENTRY @A@@@# LXI,U X9,1 . @E@@@# OB )@@G@@ L,T3 A0,1,X8 . $P GET RECORD CODE @A@@@# LSSOC )@@G@@L A0,24 . @A@ @# S A0,0,*X9 . @A@@@ OD )@@G@@ S A0,0,X9 . @E@@@# L,S1 A0,1,X8 OE )@@G@@. $P GET LOCATION MODE @E@@@# S A0,LOCMDE,X7 . $P SOF )@@G@@AVE MODE FOR ART @A@ @# LSSL A0,30 . @A@ @^OG )@@G@@ S A0,0,X9 . @A@@@ S,S4 A0,0,*X9 OH )@@G@@. @E@^@# A,T3 A0,3,X8 . $P GET FIRST DATA WORD DISP OI )@@G@@@E@ @^ L,T3 A0,3,X8 . $P GET FIRST DATA WORD DISP @E@@@ OJ )@@G@@ L A0,3,X8 . $P GET FIRST DATA WORD DISP @A@@@ OK )@@G@@ LSSL A0,24 . @A@@@ SSL A0,24 . OL )@@G@@@A@^@# S A0,0,*X9 . @A@ @^ S,T3 A0,0,*X9 OM )@@G@@ . @A@@@ S A0,0,X9 . @A@@@# S ON )@@G@@ A0,C5FDW . @G@@@ A,H2 A0,6,X8 . $P ADD RECOO )@@G@@D DATA LNGTH TO GET RECD LNGTH@A@@@ S,T1 A0,0,*X9 . OP )@@G@@@E@@@# DL A0,7,X8 . $P TRANSFER RECORD NAME @A@@@#OQ )@@G@@ DS A0,0,X9 . @A@@@# DL A0,9,X8 OR )@@G@@. @A@@@# DS A0,2,X9 . @A@@@# L A0,OS )@@G@@11,X8 . @A@@@# S A0,4,X9 . @A@@@# OT )@@G@@ A,U X9,5 . @E@@@# L,S1 A1,1,X8 . $P GOU )@@G@@ET LOCATION MODE @E@@@# AND,U A1,2 . $T IS RECOOV )@@G@@RD CALC ? @C@@@# JZ A2,C5NCLC . $A YES NO,C5NCLCOW )@@G@@@G@@@# DL A0,13,X8 . $P TRANSFER CALC PROCEDURE NAME OX )@@G@@ @A@@@# DS A0,0,X9 . @A@@@# A,U X9,OY )@@G@@2 . @A@@@# L X10,X8 . @G@@@# OZ )@@G@@ A,T1 X10,5,X8 . $P SET PTR TO ITEM LIST OF RDT @E@@@#PA )@@G@@ L,T2 A8,5,X8 . $P GET # ITEMS IN RECORD @G@@@# PB )@@G@@ L X4,X8 . $P SET PTR TO CALC ITEM CODES @A@@@#PC )@@G@@ A,U X4,15 . @E@@@# L,S2 A2,0,X4 PD )@@G@@. $P GET CALC ITEM COUNT @A@@@# AN,U A2,1 . PE )@@G@@@E@@@# SZ A10 . $P SET CALC ITEM # TO ZERO @E@@@#PF )@@G@@C5CLP A,U A10,1 . $P INCREMENT CALC ITEM # @A@@@# PG )@@G@@ SZ A0 . @E@@@# L A1,A10 . $P GPH )@@G@@ET CALC ITEM CODE @A@@@# DI,U A0,3 . @A@@@#PI )@@G@@ A A0,X4 . @A@@@# EX C5CLIT,A1 PJ )@@G@@. @E@@@# SZ C5FLAG . $P INITIALIZE WORK AREAS PK )@@G@@@A@@@# SZ X5 . @G@@@# LMJ X11,C5GTIPL )@@G@@T . $W C5GTIT - BREAK ITEM INTO ELEM'RY ITEM@E@@@# JGD A2,PM )@@G@@C5CLP . $T MORE CALC ITEMS ? @C@@@# PN )@@G@@ . $A NO YES,C5CLP @G@@@# L A0,X9 . $P CALCULAPO )@@G@@TE # ELEM ITEMS PUT IN TABLE @A@@@# LSSL A0,18 . PP )@@G@@@A@@@# SSL A0,18 . @A@@@# AN A0,SX9 PQ )@@G@@ . @A@@@# AN,U A0,9 . @B@@@A L PR )@@G@@ A1,SX9 . @E@A@# S,S3 A0,*SX9 . $P SPS )@@G@@TORE IT AS CALC ITEM CNT@E@@@A S,S3 A0,0,A1 . $P STORE IPT )@@G@@T AS CALC ITEM CNT@C@@@# J C5AREA . $J C5AREA PU )@@G@@@G@@@#C5NCLC DL A0,C5BLNK . $P PUT BLANKS IN CALC PROC NAME PV )@@G@@ @A@@@# DS A0,0,X9 . @A@@@# A,U X9,PW )@@G@@2 . @C@@@A L A0,SX9 . PX )@@G@@@E@A@# SZ,S3 *SX9 . $P PUT ZERO IN CALC ITEM CNT@E@@@APY )@@G@@ SZ,S3 0,A0 . $P PUT ZERO IN CALC ITEM CNT@A@@@#C5AREAPZ )@@G@@ L,T2 A0,1,X8 . @A@@@# SZ A5 . QA )@@G@@@E@@@# L X10,X9 . $P SAVE AREA CNT WORD ADDR @E@@@#QB )@@G@@ A,U X9,1 . $T ARE THERE ANY WITHINS @C@@@# QC )@@G@@ JZ A0,C5AEND . $A YES NO,C5AEND@G@@@# A X8,A0 QD )@@G@@ . $P SET PTR TO 1ST WITHIN OF RDT @G@@@# L A1,QE )@@G@@X9 . $P GET DISPLACEMENT TO FIRST WITHIN @A@@@# LXIQF )@@G@@,U A1,0 . @A@@@# L A0,SX9 . @A@@@#QG )@@G@@ AN A1,A0 . @A@@@# S,T2 A1,1,A0 QH )@@G@@. @A@@@# LXI,U X8,1 . @E@@@#C5ALP A,U A5,QI )@@G@@1 . $P INCREMENT AREA COUNT @E@@@# L,U A0,3 QJ )@@G@@ . $P SET LINK TO NEXT WITHIN @E@@@# TNZ,S1 0,X8 QK )@@G@@. $T IS THERE ANOTHER WITHIN ?@E@@@# SZ A0 . $P RQL )@@G@@ESET LINK TO ZERO @A@@@# LSSL A0,6 . @A@@@#QM )@@G@@ S,T1 A0,0,X9 . @C@@@# L,T3 A0,0,X8 QN )@@G@@. $P GET AREA CODE@A@@@# S,T3 A0,0,X9 . @A@@@# QO )@@G@@ L,S1 A4,0,X8 . @G@@@# L,S3 A2,0,X8 . $P GQP )@@G@@ET LOWER/UPPER BOUND CODES @A@@@# L,S4 A3,0,*X8 QQ )@@G@@. @G@@@# TNE,U A2,2 . $T IS LOWER BOUND A DATANAMEQR )@@G@@ ? @C@@@# J C5AL2 . $A NO YES,C5AL2 @G@@@#QS )@@G@@ TNE,U A3,2 . $T IS UPPER BOUND A DATANAME ? QT )@@G@@@C@@@# J C5AL2 . $A NO YES,C5AL2 @E@@@# TE,QU )@@G@@U A2,1 . $T IS PAGE RANGE GIVEN ? @C@@@# J C5AQV )@@G@@L3 . $A YES NO,C5AL3 @E@@@# L,U A0,0101 . $P SQW )@@G@@ET L/U BOUND CODES @A@@@# S,T2 A0,0,*X9 . @E@@@#QX )@@G@@ L A0,0,*X8 . $P GET LOWER BOUND @A@@@# QY )@@G@@ S A0,0,*X9 . @E@@@# L A0,0,*X8 . $P GQZ )@@G@@ET UPPER BOUND @A@@@# S A0,0,*X9 . @C@@@#RA )@@G@@ J C5AL4 . $J C5AL4 @G@@@#C5AL2 A,U X8,RB )@@G@@2 . $P INCREMENT RDT INDEX PAST DATANAMES @E@@@#C5AL3 SZ,RC )@@G@@T2 0,*X9 . $P ZERO L/U BOUND CODES @E@@@# SZ 0,*RD )@@G@@X9 . $P ZERO L AND U BOUNDS @A@@@# SZ 0,*X9 RE )@@G@@ . @E@@@#C5AL4 JNZ A4,C5ALP . $T MORE WITHINS ? RF )@@G@@ @C@@@# . $A NO YES,C5ALP @E@@@#C5AENDRG )@@G@@ S A5,0,X10 . $P STORE AREA COUNT @E@@@# L RH )@@G@@ A0,X9 . $P GET NEW TABLE LENGTH @A@@@# LSSL A0,RI )@@G@@18 . @A@@@# SSL A0,18 . @A@@@# RJ )@@G@@ ANU A0,SX9 . @G@@@# S,T3 A1,0,X9 . $P SRK )@@G@@ET PRIOR LINK AT END OF TABLE @G@@@# TG,H2 A0,*CN6,X7 RL )@@G@@. $T HAS C5/C11 BUFFER OVERFLOWED @C@@@# J C5OFL RM )@@G@@ . $A NO YES,C5OFL @A@@@# AN,H2 A0,*CN5,X7 . @E@@@#RN )@@G@@ S,H1 A0,*CN5,X7 . $P SAVE LENGTH IN C5/C11 @G@@@# RO )@@G@@ LMJ X11,BLDSMR . $W BLDSMR - BUILD SYMBOL TABLE FOR RECD @E@@@#RP )@@G@@ J *RETURN . $E RETURN TO BLDC1 @]@@@# . RQ )@@G@@ @C@@@#C5OFL. . $H C5OFL @E@@@# RR )@@G@@ P$RINT (PF 1,4,C5OM) . $P PRINT OVERFLOW MESSAGE @A@@@# ER RS )@@G@@ ERR$ . $E @]@@@# . @^@@@# . C5GTIT - RT )@@G@@@E@@@# . ROUTINE TO BREAK AN ITEM INTO ITS ELEMENTARY ITEMS@E@@@#RU )@@G@@ . IT CALLS ITSELF AND USES A STACK TO SAVE DATA @A@@@# . RV )@@G@@ ON SUCCESSIVE CALLS @]@@@# . @C@@@#C5GTIT. RW )@@G@@ . $H C5GTIT @E@@@# S X11,C5STK+1,X5 . $P SRX )@@G@@AVE RETURN ADDR ON STACK@E@@@# L A3,A6 . $P GET ITERY )@@G@@M NUMBER @A@@@# AN,U A3,1 . @A@@@# RZ )@@G@@ MSI,U A3,2 . @E@@@# A A3,X10 . $P SSA )@@G@@ET PTR TO ITEM IN RDT @E@@@# TLE A8,A6 . $T IS ITEMSB )@@G@@ NUMBER VALID ? @E@@@# L,U A3,C5ZERO . $P RESET PTR TO SC )@@G@@ZERO ENTRY @E@@@#C5TST L A0,C5STK,X5 . $P GET LAST LEVEL FROMSD )@@G@@ STACK@E@@@# JZ A0,C5TOP . $T IS LEVEL ZERO ? SE )@@G@@@C@@@# . $A NO YES,C5TOP @G@@@#C5TSTA TG,SF )@@G@@S2 A0,0,A3 . $T IS ITEM OF LOWER LEVEL THAN LAST ONE?@C@@@# SG )@@G@@ J C5SAVE . $A YES NO,C5SAVE@G@@@# L,S2 A0,0,A3 SH )@@G@@ . $P SAVE LEVEL AS LAST ON STACK @A@@@# S A0,SI )@@G@@C5STK+2,X5 . @E@@@# L,H2 A0,0,A3 . $P FORMAT ITEM ESJ )@@G@@NTRY @A@@@# L A1,1,A3 . @A@@@# LSSSK )@@G@@L A1,15 . @A@@@# SSL A1,3 . @A@@@#SL )@@G@@ DSL A0,12 . @A@@@# A A1,C5FDW SM )@@G@@. @G@@@# S A1,0,X9 . $P PLACE ENTRY IN C TBL - MASN )@@G@@Y BE @E@@@# . $ OVERWRITTEN LATER SO )@@G@@ @E@@@# L,U A7,1 . $P SET ITEM-TO-BE-SAVED FLAGSP )@@G@@@E@@@# A,U A6,1 . $P SET TO NEXT ITEM @C@@@#SQ )@@G@@ A,U X5,2 . $P PUSH STACK @G@@@# LMJ X11SR )@@G@@,C5GTIT . $W C5GTIT - PROCESS NEXT ITEM @C@@@# J SS )@@G@@ C5TST . $J C5TST @G@@@#C5SAVE JZ A7,$+3 ST )@@G@@. $T ARE THERE NOT ITEMS TO BE SAVED ? @A@@@# L,U A7,0 SU )@@G@@ . @G@@@# A,U X9,1 . $P INCREMENT C TBL PTRSV )@@G@@ TO SAVE ITEM @G@@@# L X11,C5STK+1,X5 . $P GET RETURN ADSW )@@G@@DR FROM STACK @C@@@# AN,U X5,2 . $P POP STASX )@@G@@CK @C@@@# J 0,X11 . $E RETURN @G@@@#C5TOP SY )@@G@@ TZ C5FLAG . $T IS THIS FIRST OR LAST PASS ? @E@@@#SZ )@@G@@ J C5SAVE . $A FIRST LAST,C5SAVE @C@@@# TA )@@G@@ L,U A1,1 . $P SET FLAG @A@@@# S A1,C5FLAGTB )@@G@@ . @C@@@# J C5TSTA . $J C5TSTA @]@@@#TC )@@G@@ . @A@@@#C5CLIT L,T1 A6,0,A0 . @A@@@# L,TTD )@@G@@2 A6,0,A0 . @A@@@# L,T3 A6,0,A0 . @]@@@#TE )@@G@@ . @]@@@#$(4). @A@@@#RETURN + 0 . TF )@@G@@@A@@@#CN5* + C5 . @A@@@# + C11 TG )@@G@@ . @A@@@#C5OM 'C5/C11 TABLE OVERFLOW!' . @A@@@#SX9 + TH )@@G@@ 0 . @A@@@#C5FDW + 0 . @A@@@#TI )@@G@@C5FLAG + 0 . @A@@@#C5BLNK ' ' TJ )@@G@@. @A@@@#C5ZERO + 0 . @A@@@# + 0 TK )@@G@@ . @A@@@#C5STK + 0 . @A@@@# TL )@@G@@ RES 49 . @]@@@# . @]@@@# . @A@@@#TM )@@G@@ . ** BLDC6 ** @]@@@# . @E@@@# . THTN )@@G@@IS ROUTINE BUILDS THE CALC RECORD TABLES @E@@@# . (C6TO )@@G@@ AND C12) FOR BOTH SCHEMAS BY SCANNING @E@@@# . ALL RECORTP )@@G@@DS OF EACH SCHEMA AND NOTING @A@@@# . THOSE THAT ARE TQ )@@G@@CALC @]@@@# . @E@@@# . IT IS CALLED BY CTINIT, AND USESTR )@@G@@ BUFFER SPACE @A@@@# . GOTTEN BY CTINIT @]@@@# . TS )@@G@@ @^@@@# . THE CALL IS @A@@@# . LMJ X11,BTT )@@G@@LDC6 @]@@@# . @^@@@#$(4) LIT. @]@@@#$(3). TU )@@G@@@C@@@#BLDC6*. . $H BLDC6 @E@@@# S,HTV )@@G@@2 X11,RETURN . $P SAVE RETURN ADDR @E@@@# L,H2 X6,TW )@@G@@C6 . $P SET C6 TABLE POINTER @A@@@# LXI,U X6,1 TX )@@G@@ . @E@@@# SZ A6 . $P SET SEQUENCE COUNTETY )@@G@@R @A@@@# SZ A7 . @E@@@# SZ SFITZ )@@G@@ND . $P SET FOR FIRST SCHEMA @E@@@# L A0,RTABADUA )@@G@@ . $P GET REC TBL BUFFER ADDR @A@@@# S A0,C6TBAD UB )@@G@@. @E@@@#C6LOOP A,U A6,1 . $P INCREMENT SEQUENCE NUMBERUC )@@G@@@A@@@# S A6,C6SNUM . @G@@@# LMJ X11,FSRBCUD )@@G@@D . $W FSRBCD - GET NEXT RDT FROM SCHEMA @A@@@# + C6SUE )@@G@@NUM . @A@@@#C6TBAD + 0 . @A@@@# UF )@@G@@ + SFIND . @A@@@# + $,('BLDC6') . UG )@@G@@@E@@@# TNZ C6SNUM . $T END OF RECORDS ? @C@@@#UH )@@G@@ J C6END . $A NO YES,C6END @A@@@# L X9,UI )@@G@@C6TBAD . @E@@@# L,S1 A0,1,X9 . $P GET LOCATION UJ )@@G@@MODE @G@@@# TNE,U A0,2 . $T IS RECORD CALC WITHUK )@@G@@ DUPLICATES ? @C@@@# J C6NOTE . $A NO YES,NOTE UL )@@G@@@G@@@# TE,U A0,3 . $T IS RECORD CALC WITHOUT DUPLICATUM )@@G@@ES ? @C@@@# J C6LOOP . $A YES NO,C6LOOP@E@@@#C6NOTEUN )@@G@@ L,T3 A0,1,X9 . $P GET RECORD CODE @A@@@# S,TUO )@@G@@1 A0,0,X6 . @E@@@# L,T3 A0,3,X9 . $P GET FIRUP )@@G@@ST DATA DISP @A@@@# S,T3 A0,0,*X6 . @E@@@# UQ )@@G@@ TG,U A7,C6SIZE . $T HAS TABLE OVERFLOWED @C@@@# J UR )@@G@@ C6OFL . $A NO YES,C6OFL @E@@@# A,U A7,1 US )@@G@@. $P INCREMENT TABLE SIZE @C@@@# J C6LOOP . $J CUT )@@G@@6LOOP @E@@@#C6END L A0,SFIND . $P SAVE TABLE SIZE IN UU )@@G@@C6/C12@A@@@# S,H1 A7,*CN6,A0 . @E@@@# TNE A0,UV )@@G@@NS$FLG . $T ANOTHER SCHEMA ? @A@@@# J *RETURN UW )@@G@@ . $E @E@@@# L,H2 X6,C12 . $P SET C12 TABLE POINTUX )@@G@@ER @A@@@# LXI,U X6,1 . @E@@@# SZ A6 UY )@@G@@ . $P RESET SEQUENCE COUNTER @A@@@# SZ A7 UZ )@@G@@ . @E@@@# L,U A0,1 . $P SET FOR SECOND SCHEVA )@@G@@MA @A@@@# S A0,SFIND . @C@@@# J C6LVB )@@G@@OOP . $J C6LOOP @]@@@# . @C@@@#C6OFL. VC )@@G@@ . $H C6OFL @E@@@# P$RINT (PF 1,4,C6OM) . $P PVD )@@G@@RINT OVERFLOW MESSAGE @A@@@# ER ERR$ . $E @]@@@#VE )@@G@@ . @]@@@#$(4). @A@@@#C6SNUM + 0 . VF )@@G@@@A@@@#SFIND + 0 . @A@@@#CN6* + C6 VG )@@G@@ . @A@@@# + C12 . @A@@@#C6OM 'C6VH )@@G@@/C12 TABLE OVERFLOW!' . @]@@@# . @A@@@# . ** BVI )@@G@@LDC7 ** @]@@@# . @E@@@# . THIS ROUTINE BUILDS THE C7VJ )@@G@@/C13 TABLE FOR @A@@@# . A GIVEN SET @]@@@#VK )@@G@@ . @A@@@# . IT IS CALLED BY BLDC1 - @C@@@# . VL )@@G@@ BLDC1 PROVIDES THE BUFFER SPACE @C@@@# . STABAD CONTAINSVM )@@G@@ THE ADDR OF THE @A@@@# . SET TABLE @C@@@# . VN )@@G@@ X7 INDICATES WHICH SCHEMA @]@@@# . @^@@@# . VO )@@G@@ THE CALL IS - @A@@@# . LMJ X11,BLDC7 @]@@@# . VP )@@G@@ @^@@@#$(4) LIT. @]@@@#$(3). @C@@@#BLDC7*. VQ )@@G@@ . $H BLDC7 @E@@@# S,H2 X11,RETURN VR )@@G@@. $P SAVE RETURN ADDR @E@@@# L X8,STABAD . $P SVS )@@G@@ET PTR TO SDT @G@@@# TNZ,H1 *CN7,X7 . $T IS THISVT )@@G@@ FIRST TABLE ENTRY ? @C@@@# J C7NSET . $A NVU )@@G@@O YES,C7NSET@C@@@# L,T3 A0,1,X8 . $P GET SET CODE @E@@@#VV )@@G@@ L,H2 X9,*CN7,X7 . $P SET PTR TO C TBL @G@@@#C7SLP VW )@@G@@ TNE,T1 A0,0,X9 . $T IS C TBL ENTRY FOR THIS SET ? @C@@@#VX )@@G@@ J C7EXT2 . $A NO YES,C7EXT2@E@@@# TNZ,T3 0,VY )@@G@@X9 . $T MORE C TBL ENTRIES ? @C@@@# J C7NSET VZ )@@G@@ . $A YES NO,C7NSET@G@@@# A,T3 X9,0,X9 . $P SET PTRWA )@@G@@ TO NEXT C TBL ENTRY @C@@@# J C7SLP . $J CWB )@@G@@7SLP @E@@@#C7NSET L,H2 X9,*CN7,X7 . $P SET INDEX TO NEW ENWC )@@G@@TRY @A@@@# A,H1 X9,*CN7,X7 . @E@@@# S X9,WD )@@G@@SX9 . $P SAVE START OF ENTRY @E@@@# L,T3 A1,0,X9 WE )@@G@@ . $P GET START OF LAST ENTRY @A@@@# L A0,X9 WF )@@G@@. @A@@@# AN A0,A1 . @E@@@# S,T3 A1,WG )@@G@@0,A0 . $P SET LINK IN LAST ENTRY @A@@@# LXI,U X9,1 WH )@@G@@ . @E@@@# L A0,1,X8 . $P GET SET CODE WORD WI )@@G@@ @A@@@# LSSC A0,12 . @A@@@# LSSL A0,WJ )@@G@@12 . @A@@@# S A0,0,*X9 . @C@@@# WK )@@G@@ DL A0,3,X8 . $P GET SET NAME @A@@@# DS A0,0,X9 WL )@@G@@ . @A@@@# DL A0,5,X8 . @A@@@# DS WM )@@G@@ A0,2,X9 . @A@@@# L A0,7,X8 . @A@@@#WN )@@G@@ S A0,4,X9 . @A@@@# A,U X9,5 WO )@@G@@. @E@@@# L,H1 A0,2,X8 . $P GET OWNER REC WORD WP )@@G@@@A@@@# SZ A1 . @A@@@# DSL A0,6 WQ )@@G@@ . @A@@@# SSC A0,18 . @A@@@# LDSWR )@@G@@L A0,6 . @A@@@# LSSC A0,12 . @A@@@#WS )@@G@@ S A0,0,*X9 . @E@@@# L,S3 A3,2,X8 WT )@@G@@. $P GET MEMBER COUNT @A@@@# AN,U A3,1 . WU )@@G@@@G@@@# A,U X8,8 . $P RESET SDT INDEX TO 1ST MEMBER WV )@@G@@ @E@@@#C7MLP L,S3 A0,0,X8 . $P GET MEMBER TYPE WW )@@G@@@A@@@# S,T1 A0,0,X9 . @E@@@# L,T1 A0,0,X8 WX )@@G@@ . $P GET MEMBER REC CODE @A@@@# S,T3 A0,0,*X9 WY )@@G@@. @G@@@# A,T3 X8,1,X8 . $P SET SDT PTR TO NEXT MEMBEWZ )@@G@@R @E@@@# JGD A3,C7MLP . $T MORE MEMBERS ? XA )@@G@@ @C@@@# . $A NO YES,C7MLP @E@@@# XB )@@G@@ L A0,X9 . $P GET NEW ENTRY LENGTH @A@@@# LSSXC )@@G@@L A0,18 . @A@@@# SSL A0,18 . @A@@@#XD )@@G@@ ANU A0,SX9 . @G@@@# S,T3 A1,0,X9 XE )@@G@@. $P SET PRIOR LINK AT END OF ENTRY @E@@@# TG,H2 A0,*CN8,XXF )@@G@@7 . $T HAS TABLE OVERFLOWED @C@@@# J C7OFL XG )@@G@@. $A NO YES,C7OFL @A@@@# AN,H2 A0,*CN7,X7 . @E@@@# XH )@@G@@ S,H1 A0,*CN7,X7 . $P SAVE LENGTH IN C7/C13 @G@@@# LMJXI )@@G@@ X11,BLDSMS . $W BLDSMS - BUILD SYMBOL TABLE FOR SET @E@@@#C7EXT2XJ )@@G@@ J *RETURN . $E RETURN TO BLDC1 @]@@@# . XK )@@G@@@C@@@#C7OFL. . $H C7OFL @E@@@# P$RXL )@@G@@INT (PF 1,4,C7OM) . $P PRINT OVERFLOW MESSAGE @A@@@# ER ERRXM )@@G@@$ . $E @]@@@# . @]@@@#$(4). @A@@@#CN7* + XN )@@G@@ C7 . @A@@@# + C13 . @A@@@#XO )@@G@@C7OM 'C7/C13 TABLE OVERFLOW!' . @]@@@# . @A@@@# . XP )@@G@@ ** PACKC1 ** @]@@@# . @E@@@# . THIS ROUTINE PXQ )@@G@@ACKS THE INTERNAL EXPANDED @E@@@# . C1/C9 TABLE BEFXR )@@G@@ORE THE INITIAL C1/C9 WRITE @]@@@# . @C@@@# . THE ROUTXS )@@G@@INE IS CALLED BY CF$AM @]@@@# . @E@@@# . X8 INDICXT )@@G@@ATES WHICH TABLE - C1(0) OR C9(1) @]@@@# . @^@@@#$(4) XU )@@G@@ LIT. @]@@@#$(3). @C@@@#PACKC1*. XV )@@G@@. $H PACKC1 @A@@@# + 0 . @E@@@# XW )@@G@@ L,H1 A4,*CN1,X8 . $P GET NUMBER OF ENTRIES @C@@@# JGDXX )@@G@@ A4,$+2 . $T IS IT NONZERO@C@@@# J *PACKC1 XY )@@G@@. $E RETURN @E@@@# L,H2 A2,*CN1,X8 . $P SET UP INDICEXZ )@@G@@S FOR PACK @A@@@# S A2,SA2 . @A@@@# LXIYA )@@G@@,U A2,1 . @A@@@# L X9,A2 . @A@@@#YB )@@G@@PCKLP L X10,SA2 . @A@@@# ANU A2,X10 YC )@@G@@. @G@@@# S,T3 A3,0,X10 . $P LINK LAST ENTRY TO THIS EYD )@@G@@NTRY @A@@@# S,H2 A2,SA2 . @A@@@# L,SYE )@@G@@4 A0,0,X9 . @A@@@# ANU,U A0,NUMOAP . @A@@@#YF )@@G@@ SN A1,SA1 . @A@@@# A,U A0,1 YG )@@G@@. @A@@@# L R1,A0 . @G@@@# BT A2,YH )@@G@@0,*X9 . $P BLOCK TRANSFER OWN/AUTO PTR WORDS @A@@@# A,HYI )@@G@@2 X9,SA1 . @A@@@# L,S2 A0,0,X9 . @A@@@#YJ )@@G@@ ANU,U A0,36 . @A@@@# SN A1,SA1 YK )@@G@@. @A@@@# A,U A0,2 . @A@@@# L R1,YL )@@G@@A0 . @G@@@# BT A2,0,*X9 . $P BLOCK TRANSFEYM )@@G@@R MAN PTR WORDS @A@@@# A,H2 X9,SA1 . @G@@@#YN )@@G@@ JGD A4,PCKLP . $T MORE ENTRIES TO BE PACKED ? YO )@@G@@@C@@@# L X10,SA2 . $A NO YES,PCKLP @E@@@# SZ,YP )@@G@@T3 0,X10 . $P SET LAST LINK TO ZERO @A@@@# AN,H2 A2,YQ )@@G@@*CN1,X8 . @A@@@# S,H1 A2,*CN1,X8 . @A@@@# YR )@@G@@ J *PACKC1 . $E @]@@@#$(4). @^@@@#SA1 + 0 YS )@@G@@ . @^@@@#SA2 + 0 . @C@@@#CN1 + C1 YT )@@G@@ . @C@@@# + C9 . YU )@@G@@@A@@@# END . ___ 0,X9 . $T MORE C YV )@@G@@*[@@@@*SDFF*@[@@@@. @B@@@@. ******** SORT ******** YW )@@G@@@[@@@@. @D@@@@. PURPOSE: SORT THE KEY FILE FOR REORGANIZATION. YX )@@G@@@[@@@@. @]@@@@ AXR$. @]@@@@$(1). @]@@@@SORTKEY* @E@@@@YY )@@G@@ S X11,SORTRET . STORE RETURN ADDRESS@F@@@@ YZ )@@G@@ L,U A0,USE . ADDRESS OF USE STATEMENT @C@@@@ ZA )@@G@@ ER CSF$ . USE @F@@@@ L,U A0,AZB )@@G@@SG . ADDRESS OF ASG STATEMENT @C@@@@ ER CSF$ZC )@@G@@ . ASG @E@@@@ TP A0 . SKZD )@@G@@IP IF NO REJECT @D@@@@ LMJ X11,ASGERR . ASSIGN EZE )@@G@@RROR @F@@@@ L,U A0,ASG1 . ADDRESS OF ASG STATEZF )@@G@@MENT @C@@@@ ER CSF$ . ASG @E@@@@ ZG )@@G@@ TP A0 . SKIP IF NO REJECT @D@@@@ LMZH )@@G@@J X11,ASGERR . ASSIGN ERROR @F@@@@ L,U A0,AZI )@@G@@SG2 . ADDRESS OF ASG STATEMENT @C@@@@ ER CSF$ZJ )@@G@@ . ASG @E@@@@ TP A0 . SKZK )@@G@@IP IF NO REJECT @D@@@@ LMJ X11,ASGERR . ASSIGN EZL )@@G@@RROR @F@@@@ L,U A0,ASG3 . ADDRESS OF ASG STATEZM )@@G@@MENT @C@@@@ ER CSF$ . ASG @E@@@@ ZN )@@G@@ TP A0 . SKIP IF NO REJECT @D@@@@ LMZO )@@G@@J X11,ASGERR . ASSIGN ERROR @G@@@@ L,U A0,FZP )@@G@@ACPKT . PACKET FOR FACILITIES REQUEST @C@@@@ ER ZQ )@@G@@ FACIL$ . GET INFO@G@@@@ L,H2 A0,FACPKT+8 ZR )@@G@@ . HIGHEST GRANULE ON ASG ST @H@@@@ MSI,U A0,1024 ZS )@@G@@ . NUMBER OF WORDS RESERVED FOR SORT @E@@@@ A ZT )@@G@@ A0,LAST$D . LAST DBANK ADDRESS @E@@@@ A,U A0,1ZU )@@G@@ . NEXT DBANK ADDRESS @E@@@@ S A0,BUF1 ZV )@@G@@ . STORE AS BUFFER 1 @F@@@@ S,H2 A0,KF$PKT1+4 ZW )@@G@@ . STORE BUFFER ADDR IN PKT @E@@@@ A,U A0,SECT*28 ZX )@@G@@ . ADDRESS OF BUF 2 @F@@@@ S A0,BUF2 . STZY )@@G@@ORE AS BUFFER 2 ADDR @E@@@@ A,U A0,SECT*28 . LAZZ )@@G@@ST DBANK ADDRESS @E@@@@ A,U A0,1 . ADD 1 FOAA )@@G@@R SAFETY @E@@@@ S A0,LAST$D . HIGHEST DBANK AB )@@G@@ADDR @C@@@@ ER MCORE$ . GET CORE@E@@@@ AC )@@G@@ L,U A3,PARM . PARM LIST FOR SORT @E@@@@ J AD )@@G@@ ROPN$ . START THE SORT @[@@@@I. @E@@@@ AE )@@G@@ L,U A0,KF$PKT . ADDRESS OF PACKET @D@@@@ ERAF )@@G@@ IOW$ . READ HEADER @F@@@@ L A2,KAG )@@G@@FIWDS . NUMBER OF WORDS IN INDEX @F@@@@ SSL A2,1AH )@@G@@ . NUMBER OF BLOCKS OF DATA @F@@@@ AN,U A2,1AI )@@G@@ . LESS 1 FOR DUMMY BLOCK @E@@@@ MSI A2,KAJ )@@G@@CSORT . NUMBER OF WDS DATA @E@@@@ TNZ A2 AK )@@G@@ . SKIP IF WORDS @C@@@@ J OEND1 AL )@@G@@ . RETURN @F@@@@ TNG,U A2,SECT*28 . SKIP IF BUFFERAM )@@G@@ SIZE OK @G@@@@ S,H1 A2,KF$PKT1+4 . STORE NUMBER OAN )@@G@@F WDS IN PKT @F@@@@ AN,H1 A2,KF$PKT1+4 . WORDS REAO )@@G@@MAINING TO READ @E@@@@ L,U A0,KF$PKT1 . ADDRESS AP )@@G@@OF PACKET @E@@@@ ER IO$ . READ FIRST BLOAQ )@@G@@CK @[@@@@. @C@@@@. SWITCH TO NEXT BUFFER IF WORDS ARE PRESENT. AR )@@G@@@[@@@@. @]@@@@SORT1. @F@@@@ TP KF$PKT1+3 AS )@@G@@ . $ SKIP IF I/O COMPLETE @D@@@@ ER WAIT$ AT )@@G@@ . ELSE WAIT @G@@@@ TZ,S1 KF$PKT1+3 . SKIP IF AU )@@G@@ZERO ERROR STATUS @D@@@@ LMJ X11,IOERR . I/AV )@@G@@O ERROR @F@@@@ TNZ,H2 KF$PKT1+3 . SKIP IF WDS TRAW )@@G@@ANSFERRED @G@@@@ J RSORT$ . DONE PASSING DAX )@@G@@ATA TO SORT @G@@@@ L,H2 A1,KF$PKT1+3 . NUMBER OAY )@@G@@F WORDS TRANSFERRED @C@@@@ AN,U A1,2 . LEAZ )@@G@@SS 2 @D@@@@ LXI A1,(-2) . INCREMENT @E@@@@BA )@@G@@ L,H2 X8,KF$PKT1+4 . BUFFER ADDRESS @F@@@@ BB )@@G@@ TNZ A2 . SKIP IF WDS LEFT TO READ @E@@@@ BC )@@G@@ J SORT3 . NO I/O REQUIRED @F@@@@ TNBD )@@G@@G,U A2,SECT*28 . SKIP IF BUFFER SIZE OK @G@@@@ S,BE )@@G@@H1 A2,KF$PKT1+4 . STORE NUMBER OF WDS IN PKT @F@@@@ BF )@@G@@ AN,H1 A2,KF$PKT1+4 . WORDS REMAINING TO READ @D@@@@ BG )@@G@@ L A0,KF$PKT1+5 . DRUM ADDRESS @E@@@@ A,U BH )@@G@@ A0,SECT . NEXT DRUM ADDRESS @D@@@@ S A0,KBI )@@G@@F$PKT1+5 . DRUM ADDRESS @E@@@@ L A0,BUF1 BJ )@@G@@ . ADDRESS OF BUFFER 1 @G@@@@ TNE,H2 A0,KF$PKT1+4 . SKBK )@@G@@IP IF NOT THE CURRENT BUFFER @E@@@@ L A0,BUF2 BL )@@G@@ . ADDRESS OF BUFFER 2 @F@@@@ S,H2 A0,KF$PKT1+4 . STBM )@@G@@ORE NEW BUFFER ADDRESS @E@@@@ L,U A0,KF$PKT1 . PABN )@@G@@CKET ADDRESS @E@@@@ ER IO$ . READ NEXBO )@@G@@T BLOCK @F@@@@ L A0,X8 . LOCATION OF FIBP )@@G@@RST RECORD @]@@@@SORT2. @G@@@@ LMJ X11,RREL$ BQ )@@G@@ . PASS RECORD TO SORT ROUTINE @E@@@@ A,U A0,2 BR )@@G@@ . NEXT RECORD LOCATION@C@@@@ JMGI A1,SORT2 BS )@@G@@ . CONTINUE@E@@@@ J SORT1 . SWITCH BUFFERSBT )@@G@@ @]@@@@SORT3. @G@@@@ SZ,H2 KF$PKT1+3 . ZEBU )@@G@@RO NUMBER OF WDS TRANSFERRED @E@@@@ L A0,X8 BV )@@G@@ . BUFFER ADDRESS @C@@@@ J SORT2 . COBW )@@G@@NTINUE@[@@@@O. @D@@@@ LMJ X11,RRET$ . GET A REBX )@@G@@CORD @G@@@@ + OEND . ADDRESS OF END OF REBY )@@G@@CORDS @C@@@@ DL A0,,A0 . GET KEY @G@@@@BZ )@@G@@ TNE A0,KEYLAST . SKIP IF NOT SAME KEY AS BEFORE CA )@@G@@@D@@@@ J KEYDUP . DUPLICATE @F@@@@ CB )@@G@@ S A0,KEYLAST . STORE THIS KEY AS LAST @F@@@@ CC )@@G@@ DS A0,KFAMPK+3 . STORE IN KF$AM PACKET @E@@@@ CD )@@G@@ L,U X10,KFAMPK . PACKET ADDRESS @E@@@@ LMCE )@@G@@J X11,KF$AMC . CREATE KEYFILE ENTRY@C@@@@ J CF )@@G@@ O. . CONTINUE@]@@@@OEND. @E@@@@ L,U CG )@@G@@ X10,KFAMPK . PACKET ADDRESS @E@@@@ LMJ X11,CH )@@G@@KF$AMF . FLUSH KEY FILE @]@@@@OEND1. @E@@@@ L CI )@@G@@ X11,SORTRET . RETURN ADDRESS @C@@@@ J CJ )@@G@@ 0,X11 . RETURN @]@@@@KEYDUP. @G@@@@ TNE CK )@@G@@ A0,KEYMAX . SKIP IF NOT MAX VAL FOR A KEY @C@@@@ J CL )@@G@@ OEND . DONE @F@@@@ E$DIT EPKT CM )@@G@@ . INIT FOR EDIT PACKAGE @A@@@@ E$OCTF 13,KEYLASTCN )@@G@@ @#@@@@ E$DITX @F@@@@ L A0,EMSG CO )@@G@@ . ACW FOR ERROR MESSAGE @C@@@@ ER PRINT$ CP )@@G@@ . PRINT IT@E@@@@ L A0,EMSG1 . ACW FOR SECONDCQ )@@G@@ LINE @C@@@@ ER PRINT$ . PRINT IT@D@@@@ CR )@@G@@ ER ERR$ . ERROR OFF @]@@@@$(0). @G@@@@CS )@@G@@PARM R$FILE 'RSZW',2 'KEYW',1,35,36,'U','A' 'FPOC',I 'LPOC',O ; CT )@@G@@@A@@@@ 'COPY',RSTD$ @^@@@@FACPKT 'R$CORE 'CU )@@G@@@^@@@@ RES 7 @A@@@@USE '@USE K$FILE,*K$FILE . ' CV )@@G@@@ @@@@ASG '@ASG,A K$FILE . ' @A@@@@ASG1 '@ASG,T R$CORE,///15CW )@@G@@ . ' @A@@@@ASG2 '@ASG,T XA,F4/400 . ' @A@@@@ASG3 '@ASG,T CX )@@G@@XB,F4/200 . ' @B@@@@KF$PKT I$OD 'K$FILE ',R$ 6,KHDR @]@@@@CY )@@G@@KHDR. @^@@@@KFNAME 'K$FILE' @^@@@@KFDATE ' ' CZ )@@G@@@^@@@@KFTIME ' ' @#@@@@KFIWDS + 0 @#@@@@KFLKEY + DA )@@G@@ 0 @#@@@@KFHKEY + 0 @A@@@@EMSG + 0107,EMSG+1 DB )@@G@@@E@@@@ 'RECORD UNLOADED TWICE. ' @A@@@@DC )@@G@@EMSG1 + 0105,EMSG1+1 @B@@@@ 'REORG INVALID. TERDD )@@G@@MINATING.' @ @@@@EPKT E$PKT 3,EMSG+5 @A@@@@KEYMAX + DE )@@G@@ 0777777777777 @^@@@@KEYLAST + 0 @]@@@@KHDREND. @G@@@@DF )@@G@@SECT EQU 128 . NUMBER OF SECTORS IN BUF DG )@@G@@@E@@@@BUF1 + 0 . BUFFER1 ADDRESS @E@@@@DH )@@G@@BUF2 + 0 . BUFFER 2 ADDRESS @E@@@@KF$PKTDI )@@G@@1 I$OD 'K$FILE ',R$ SECT*28,BUF1 640 @F@@@@KFAMPK REDJ )@@G@@S 50 . PACKET FOR KF$AM CREATE @E@@@@SORTRET + DK )@@G@@ 0 . RETURN ADDRESS @[@@@@ END ___ @E@@@@DL )@@G@@ L,U A0,KF$PKT1 . ADDRESS OF PACKET @E@@@@ DM )@@G@@ ER IO$ *[@@@@*SDFF*@]@@@# . @A@@@# . DN )@@G@@ ** PATCH ** @]@@@# . @E@@@# . THIS ROUTINE WDO )@@G@@ILL PATCH DB PTRS THAT SHOULD @E@@@# . POINT TO RECORDDP )@@G@@S MOVED DURING REORGANIZATION @C@@@# . SO THAT THE POINTERS DQ )@@G@@ARE CORRECT @]@@@# . @^@@@# . THE CALL IS @A@@@# . DR )@@G@@ LMJ X11,PATCH @]@@@# . @G@@@# . C2 IS USDS )@@G@@ED TO GET THE DB RANGES WHICH NEED TO BE EXAMINED @]@@@# . DT )@@G@@@G@@@# . AFRCDT IS A TABLE BUILT INTERNALLY TO PATCH WHICH CONTAIDU )@@G@@NS @G@@@# . THE RECORD CODES AND C1 TABLE ENTRY ADDR FOR DV )@@G@@ALL @A@@@# . AFFECTED RECORDS @]@@@# . DW )@@G@@@E@@@# . THE CODE WAS WRITTEN WITH REENTRANCY IN MIND, @C@@@#DX )@@G@@ . THUS MANY REGISTERS ARE USED @E@@@# . FORDY )@@G@@ THE MOST PART, REGISTER ASSIGNMENTS @A@@@# . ARE DZ )@@G@@AS FOLLOWS: @C@@@# . X5 - ADDR OF KFAM PACKET @C@@@#EA )@@G@@ . X6 - ADDR OF DBAM PACKET @E@@@# . EB )@@G@@ X7 - PTR TO NEXT PG RANGE ENTRY @E@@@# . X8 EC )@@G@@- ADDR OF FIRST WORD OF CURRENT PG @A@@@# . X9 - ED )@@G@@ @C@@@# . X10 - PARAM ADDR FOR CALLS @C@@@# . EE )@@G@@ X11 - CALLING REG @C@@@# . A0 EF )@@G@@- WORKING REG / SLOT PTR@C@@@# . A1 - WORKING REG EG )@@G@@ @C@@@# . A2 - START ADDR OF RECORD @C@@@# . EH )@@G@@ A3 - ADDR OF DB PTR @C@@@# . A4 EI )@@G@@- SLOT LOOP COUNTER @C@@@# . A5 - PAGE LOOP COUNTEEJ )@@G@@R @G@@@# . A6 - NUMBER OF PAGES IN CURRENT DB BLOCEK )@@G@@K @C@@@# . A7 - CURRENT RANGE BLOCK @E@@@#EL )@@G@@ . A8 - PAGE-BLOCK-CHANGED FLAG @E@@@# . EM )@@G@@ A9 - PG RANGE REMAINING COUNT @G@@@# . EN )@@G@@ R4 - ADDR OF START OF CURRENT C2 TABLE ENTRY @C@@@# . EO )@@G@@ R5 - LINK TO NEXT C2 ENTRY @C@@@# . R3,REP )@@G@@6,R7 - SAVE REGISTERS @]@@@# . @A@@@# . ** PEQ )@@G@@ATCH ** @]@@@# . @A@@@#PF FORM 12,6,18 . ER )@@G@@@A@@@#AW FORM 6,6,6,18 . @G@ @# . ACTNUM EQU 3 ES )@@G@@ . NO PROCESS ACTIVITIES CREATED @C@@@ . ACTNUM EQU - ET )@@G@@ NO PROCESS ACTIVITIES CREATED@G@ @# . PGPBLK EQU 10 . NEU )@@G@@O OF PAGES IN BLOCK I/O FROM DB @E@@@ . PGPBLK EQU - NO OF PAGES EV )@@G@@IN BLOCK I/O FROM DB @G@ @# . KF$WKS EQU 50 . WEW )@@G@@ORK SPACE ALLOWED IN KFAM PACKET @E@@@ . KF$WKS EQU - WORK SPACE AEX )@@G@@LLOWED IN KFAM PACKET @]@@@# . @^@@@# AXR$. EY )@@G@@ @^@@@#$(6) LIT. @]@@@#$(5). @]@@@# . EZ )@@G@@@C@@@#PATCH*. . $H PATCH @C@@@# S,HFA )@@G@@2 X11,RETURN . $P SAVE RETURN @G@@@# SLJ MERGE FB )@@G@@. $W MERGE - MERGE C2 AND C4 INTO NEW C2 @C@@@# L A15,C4 FC )@@G@@ . $P SAVE C4 @E@@@# L A0,C16 . $P MOVE C1FD )@@G@@6 TO C4 @A@@@# S A0,C4 . @G@@@# FE )@@G@@ SLJ MERGE . $W MERGE - NEW C2 AND C16 INTO NEW C2 @C@@@#FF )@@G@@ S A15,C4 . $P RESTORE C4 @G@@@# SLJ BLDFG )@@G@@ART . $W BLDART - BUILD AFFTD RECD & AREA TBLS@G@@@ SZ FH )@@G@@ WRNFLG . $P RESET WARNINGS-PRINTED FLAG @E@@@# FI )@@G@@ L,U A0,ACTNUM . $P GET NUMBER OF ACTIVITIES @E@@@# TG,FJ )@@G@@U A0,21 . $T IS IT LESS THAN 21 @C@@@# J MAXFK )@@G@@ACT . $A YES NO,MAXACT@A@@@# L A0,LAST$D . FL )@@G@@@A@@@# AU,U A0,1 . @E@@@# L,U A2,KF$WKSFM )@@G@@ . $P GET KF$AM PACKET SPACE @A@@@# A,U A2,6 FN )@@G@@. @A@@@# MSI,U A2,ACTNUM . @E@@@# L,U A3,FO )@@G@@ACTNUM . $P GET DB$AM PACKET SPACE @A@@@# MSI,U A3,3 FP )@@G@@ . @A@@@# AN,U A3,1 . @A@@@# MSIFQ )@@G@@,U A3,9 . @A@@@# A A2,A3 . @A@@@#FR )@@G@@ A A0,A2 . @A@@@# S A0,LAST$D FS )@@G@@. @E@@@# ER MCORE$ . $P MCORE ALL PACKET SPACE FT )@@G@@@A@@@# L R1,A2 . @A@@@# L A3,A1 FU )@@G@@ . @A@@@# LXI,U A3,1 . @A@@@# L FV )@@G@@ A0,ZEROPT . @E@@@# BT A3,0,*A0 . $P ZERO OUFW )@@G@@T ALL PACKET SPACE@G@@@# L,U A3,ACTNUM . $P GET # OF DB$AFX )@@G@@M PKETS NEEDED @A@@@# MSI,U A3,3 . @A@@@#FY )@@G@@ AN,U A3,1 . @E@@@#DBPLP1 JGD A3,$+2 FZ )@@G@@. $P LOOP TO SET DBPKET ADDRS @A@@@# J DBPLP2 . GA )@@G@@@A@@@# S A1,DBPADR+1,A3 . @A@@@# A,U A1,9 GB )@@G@@ . @A@@@# J DBPLP1 . @E@@@#DBPLP2 L,UGC )@@G@@ A0,KF$WKS . $P GET KFPKET SIZE @A@@@# A,U A0,GD )@@G@@6 . @E@@@# L,U A3,ACTNUM . $P GET # KF$AM PGE )@@G@@KETS NEEDED @E@@@#KFPLP1 JGD A3,$+2 . $P LOOP TO SET KFPKET GF )@@G@@ADDRS @A@@@# J KFPLP2 . @A@@@# S A1,GG )@@G@@KFPADR,A3 . @A@@@# A A1,A0 . @A@@@# GH )@@G@@ J KFPLP1 . @]@@@#KFPLP2. @C@@@# . THIS SECTION GI )@@G@@OF CODE SCANS THE C3 TABLE @C@@@# . TO GET THE LARGEST AFFECTEGJ )@@G@@D PAGE SIZE @C@@@# . AND THEN MCORE'S A BUFFER FOR THE DBAM@G@@@#GK )@@G@@ L,U A1,0 . $P CALCULATE NO ENTRIES IN C3 GL )@@G@@@A@@@# L,H1 A2,C3 . @A@@@# DI,U A1,9 GM )@@G@@ . @A@@@# JZ A1,ERROR . @E@@@# AN,GN )@@G@@U A1,1 . $P SET C3 SEARCH COUNT @C@@@# L,H2 X9,GO )@@G@@C3 . $P SET C3 INDEX @A@@@# LXI,U X9,9 . GP )@@G@@@E@@@# L,U A2,0 . $P INITIALIZE MAX PG SIZE @E@@@#GQ )@@G@@PGSZLP L,T1 A0,3,*X9 . $P GET NEXT PG SIZE @A@@@# GR )@@G@@ LSSL A0,24 . @A@@@# SSL A0,24 . GS )@@G@@@G@@@# TLE A2,A0 . $T IS MAX GREATER THAN THIS PG SIZGT )@@G@@E ? @E@@@# L A2,A0 . $P RESET MAX TO THIS SIZE GU )@@G@@@E@@@# JGD A1,PGSZLP . $T MORE C3 ENTRIES ? @C@@@#GV )@@G@@ . $A NO YES,PGSZLP@E@@@# L,U A3,GW )@@G@@ACTNUM . $P GET # OF BLOCKS NEEDED @A@@@# MSI,U A3,3 GX )@@G@@ . @A@@@# AN,U A3,1 . @E@@@# MSIGY )@@G@@,U A2,PGPBLK . $P CALCULATE PAGE BLOCK SIZE@C@@@# A,U A2,GZ )@@G@@100 . $P PAD IT @E@@@# L A0,LAST$D . $P GHA )@@G@@ET LAST-D-BANK ADDR @C@@@# A,U A0,1 . $P INCREMEHB )@@G@@NT IT @E@@@#BUFLP L X6,DBPADR,A3 . $P GET NEXT DBAM PACKET ADDRHC )@@G@@@G@@@# S,H2 A0,7,X6 . $P PUT BUF AD IN DBAM PKET AS BLOCHD )@@G@@K ADDR@G@@@# S,H1 A2,8,X6 . $P PUT BLOCK SIZE INTO DBAM HE )@@G@@PACKET @G@@@# SZ,S1 3,X6 . $P INITIALIZE PKET STAHF )@@G@@TUS TO 0 @E@@@# A A0,A2 . $P ADD BLOCK SIZHG )@@G@@E @E@@@# JGD A3,BUFLP . $P REPEAT FOR OTHER BUHH )@@G@@FFERS @A@@@# AN,U A0,1 . @E@@@# S A0,HI )@@G@@LAST$D . $P SAVE NEW LAST-D @G@@@# ER MCORE$ HJ )@@G@@ . $W MCORE - GET CORE FOR BUFFER @A@@@# L,U A0,HK )@@G@@'PCH' . @G@@@# ER NAME$ . $P NAME MAIN ACTHL )@@G@@IVITY FOR ACT$ @C@@@# L R10,A0 . $P SAVE NAHM )@@G@@ME @C@@@# L A0,(AW 0,1,1,ACTONE) . @E@@@# HN )@@G@@ ER FORK$ . $P FORK PRIMARY ACTIVITY @G@@@# ER HO )@@G@@ DACT$ . $P WAIT FOR COMPLETION OF PRI ACT @E@@@# HP )@@G@@ SLJ CHKPT2 . $W CHKPT2 - PRINT STATISTICS@E@@@ TNZHQ )@@G@@ WRNFLG . $T WERE ANY WARNINGS PRINTED@E@@@ J *REHR )@@G@@TURN . $E RETURN TO MAIN CONTROL @G@@@ P$RINT (PF 1,8,HS )@@G@@WMSG1) . $P PRINT POSSIBLE ERROR BLOCK @A@@@ P$RINT (PHT )@@G@@F 1,8,WMSG2) . @A@@@ P$RINT (PF 1,8,WMSG3) . @A@@@ HU )@@G@@ P$RINT (PF 1,8,WMSG4) . @A@@@ P$RINT (PF 1,8,WMSG2) . HV )@@G@@@A@@@ P$RINT (PF 1,8,WMSG1) . @E@ @# J *RETURN HW )@@G@@ . $E RETRUN TO MAIN CONTROL @E@@@ J *RETURN HX )@@G@@. $E RETURN TO MAIN CONTROL @]@@@# . @E@@@# . THIS SECHY )@@G@@TION OF CODE IS PRIMARY ACTIVITY @E@@@# . IT INITIAHZ )@@G@@LIZES THE GETRNG FUNCTION AND @E@@@# . ALL I/O BUFFER IA )@@G@@PTRS, FORKS ACTNUM SECONDARY @E@@@# . ACTIVITIES, AND WAITSIB )@@G@@ FOR THEIR COMPLETION @]@@@# . @E@@@#ACTONE ER TSQRG$ IC )@@G@@ . $P REGISTER TS QUEUEING @G@@@# L,H2 A0,C2 ID )@@G@@. $P INITIALIZE INDICES FOR GETRNG @A@@@# LXI,U A0,1 IE )@@G@@ . @A@@@# AN,U A0,1 . @E@@@# S IF )@@G@@ A0,SV1 . CURRENT C2 ENTRY ADDR @A@@@# L,U A0,IG )@@G@@1 . @E@@@# S A0,SV2 . SET LINK NON-ZERIH )@@G@@O @E@@@# TS RNGTSC . $P LOCK OUT GETRNG II )@@G@@ @A@@@# L,U A3,ACTNUM . @A@@@# AN,U A3,IJ )@@G@@1 . @G@@@#STRTLP L X3,(-1) . $P INITIALIZE BUIK )@@G@@FFER PTRS FOR SEC ACT @A@@@# L A0,A3 . @A@@@#IL )@@G@@ MSI,U A0,3 . @C@@@# L X1,A0 IM )@@G@@. READ BUFFER @A@@@# A,U A0,2 . @C@@@# IN )@@G@@ L X2,A0 . WRITE BUFFER @C@@@# L X5,KFPADRIO )@@G@@,A3 . KF$AM PACKET @A@@@# L A0,A3 . @C@@@#IP )@@G@@ A,U A0,2 . ACTIVITY-ID @A@@@# LSSL A0,IQ )@@G@@6 . @E@@@# A,U A0,1 . USE MAJOR REGISTIR )@@G@@ER SET @A@@@# LSSL A0,18 . @C@@@# A,UIS )@@G@@ A0,ACTTWO . ACTIVITY ADDR @E@@@# ER FORK$ IT )@@G@@. $P FORK SECONDARY ACTIVITY @E@@@# JGD A3,STRTLP . $T MIU )@@G@@ORE SEC ACT TO BE FORKED@C@@@# . $A NO YES,IV )@@G@@STRTLP@C@@@# C$TS RNGTSC . $P UNLOCK GETRNG@A@@@# IW )@@G@@ L,U A2,ACTNUM . @A@@@# AN,U A2,1 . IX )@@G@@@E@@@# L A1,(0400000000000) . $P SET UP ACTIVITY MASK@A@@@#IY )@@G@@ SZ A0 . @A@@@# SSA A1,0,A2 IZ )@@G@@. @A@@@# LDSL A0,3,A2 . @G@@@# ER AWAJA )@@G@@IT$ . $P WAIT FOR COMPLETION OF ALL SEC ACT @E@@@# ER JB )@@G@@ TSQCL$ . $P CLEAR TS QUEUEING @E@@@# L A0,JC )@@G@@R10 . $P GET MAIN ACTIVITY NAME @E@@@# ER ACT$ JD )@@G@@ . $P ACTIVATE MAIN ACTIVITY @C@@@# ER EXIT$ JE )@@G@@. $E EXIT @]@@@# . @E@@@# . THIS SECTION OF CODEJF )@@G@@ IS SECONDARY ACTIVITY @E@@@# . IT GETS THE NEXT RANGJG )@@G@@E BLOCK TO BE SCANNED @E@@@# . FROM GETRNG, CALLS DBAM TO JH )@@G@@READ THE BLOCK, @E@@@# . INITIALIZES THE PATCH PROCESS FORJI )@@G@@ EACH PAGE @E@@@# . OF THE BLOCK, AND ON COMPLETION CALLS DJJ )@@G@@BAM @E@@@# . TO WRITE THE BLOCK IF ANY PATCHES WERE MADE JK )@@G@@@E@@@# . IT EXITS WHEN THERE ARE NO MORE RANGES TO BE @^@@@#JL )@@G@@ . SCANNED @]@@@# . @]@@@#ACTTWO. @E@@@# JM )@@G@@ L X6,DBPADR,X1 . $P GET DBAM READ PACKET @E@@@# TS JN )@@G@@ RNGTSC . $P LOCK OUT GETRNG @G@@@# SLJ GETJO )@@G@@RNG . $W GETRNG - SET PKET FOR NEXT PAGE BLOCK@C@@@# C$TJP )@@G@@S RNGTSC . $P UNLOCK GETRNG@E@@@# TN X1 JQ )@@G@@. $T WAS THERE A BLOCK @C@@@# J RNGE4 . $A NJR )@@G@@O YES,RNGE4 @E@@@# TN X3 . $T IS THIS FIRST BLOCKJS )@@G@@ @C@@@# J RNGEB . $A YES NO,RNGEB @A@@@# JT )@@G@@ ER EXIT$ . $E @A@@@#RNGE4 L,U A1,021 . JU )@@G@@@G@@@# S,S2 A1,3,X6 . $P SET FNC TO READ IN DBAM PACKET JV )@@G@@ @A@@@# L X10,X6 . @E@@@# TS CHKJW )@@G@@TSC . $T LOCK OUT CHKPT @E@@@# SLJ CHKPT JX )@@G@@ . $W CHKPT - GATHER STATISTICS@C@@@# C$TS CHKTSC JY )@@G@@. $P UNLOCK CHKPT @G@@@# LMJ X11,DB$AM . $W DB$AM - READ JZ )@@G@@BLOCK FROM DATA BASE @E@@@# . NOTE THAT MINOR REGISTER SET HAS NOT KA )@@G@@BEEN SAVED @E@@@# TN X3 . $T IS THIS THE FKB )@@G@@IRST READ @C@@@# J RNGEB . $A YES NO,RNGEB @E@@@#KC )@@G@@ TP 3,X6 . $T HAS READ FINISHED @C@@@# KD )@@G@@ ER WAIT$ . $P WAIT FOR IT @E@@@# TZ,S1 3,X6 KE )@@G@@ . $T WAS READ SUCCESSFUL ? @C@@@# LMJ X11,IOERR KF )@@G@@. $A YES NO,IOERR @E@@@# L X3,X1 . $P SET BUFFER FOKG )@@G@@R PROCESSING@E@@@# L X1,X2 . $P GET BUFFER FOR NEXTKH )@@G@@ READ @A@@@# AN,U X1,1 . @C@@@# J ACTKI )@@G@@TWO . $J ACTTWO @E@@@#RNGEB L X6,DBPADR,X3 . $P GKJ )@@G@@ET PROCESS DBAM PACKET @E@@@# SZ A8 . $P RESET BKK )@@G@@LOCK-CHANGED FLAG @E@@@# L,H1 A6,7,X6 . $P GET PAGE COUNKL )@@G@@T @G@@@# L A5,A6 . $P SET PAGE LOOP COUNTKM )@@G@@ER TO NO OF PAGES @A@@@# AN,U A5,1 . @E@@@# KN )@@G@@ L,H2 X8,7,X6 . $P GET START OF FIRST PAGE @G@@@# L KO )@@G@@ X10,X5 . $P SET X10 TO ADDR OF KFAM PACKET @C@@@#RNGE1 KP )@@G@@ J PAGE . $J PAGE @E@@@#RNGE2 A,H2 X8,6,X6 KQ )@@G@@ . $P GET START OF NEXT PAGE @E@@@# JGD A5,RNGE1 KR )@@G@@. $T MORE PAGES IN BLOCK ? @C@@@# . $A NKS )@@G@@O YES,RNGE1 @E@@@# L X6,DBPADR,X2 . $P GET WRITE DBAM PKETKT )@@G@@ ADDR @E@@@# TP 3,X6 . $T HAS LAST WRITE FINISHED KU )@@G@@@C@@@# ER WAIT$ . $P WAIT FOR IT @A@@@# L KV )@@G@@ X10,X6 . @E@@@# TZ,S1 3,X6 . $T WAS LASKW )@@G@@T WRITE SUCCESSFUL@C@@@# LMJ X11,IOERR . $A YES NO,IOERR KX )@@G@@@E@@@# L X4,X2 . $P SAVE WRITE BUFFER # @G@@@#KY )@@G@@ L X2,X3 . $P SET WRITE BUFFER TO PROCESS BUFFER KZ )@@G@@@G@@@# L X6,DBPADR,X2 . $P GET NEW WRITE DBAM PKET ADDR LA )@@G@@ @G@@@# JZ A8,RNGEC . $T IS BLOCK-CHANGED FLAG SETLB )@@G@@ ? @C@@@# . $A YES NO,RNGEC @A@@@#LC )@@G@@ L,U A1,011 . @G@@@# S,S2 A1,3,X6 LD )@@G@@. $P SET FNC TO WRITE IN DBAM PACKET @A@@@# L X10,X6 LE )@@G@@ . @E@@@# TS CHKTSC . $P LOCK OUT CHKPT LF )@@G@@ @E@@@# SLJ CHKPT . $W CHKPT - GATHER STATISTICSLG )@@G@@@C@@@# C$TS CHKTSC . $P UNLOCK CHKPT @G@@@# LMJLH )@@G@@ X11,DB$AM . $W DB$AM - WRITE BLOCK BACK TO DATA BASE@E@@@#RNGEC LI )@@G@@ TP X1 . $T IS THIS LAST WRITE @C@@@# J LJ )@@G@@ RNGED . $J RNGED @E@@@# L X6,DBPADR,X1 LK )@@G@@. $P GET READ DBAM PKET ADDR @E@@@# TP 3,X6 . $T HLL )@@G@@AS LAST READ FINISHED @C@@@# ER WAIT$ . $P WAIT FOLM )@@G@@R IT @A@@@# L X10,X6 . @E@@@# TZ,S1 3,XLN )@@G@@6 . $T WAS READ SUCCESSFUL ? @C@@@# LMJ X11,IOERRLO )@@G@@ . $A YES NO,IOERR @G@@@# L X3,X1 . $P SET PROLP )@@G@@CESS BUFFER TO READ BUFFER @G@@@# L X1,X4 . $P SLQ )@@G@@ET READ BUFFER TO VACANT BUFFER @C@@@# J ACTTWO LR )@@G@@. $J ACTTWO @E@@@#RNGED L X6,DBPADR,X2 . $P GET LAST WRITLS )@@G@@E PACKET @E@@@# TP 3,X6 . $T HAS WRITE FINISHED LT )@@G@@ @C@@@# ER WAIT$ . $P WAIT FOR IT @A@@@# LU )@@G@@ L X10,X6 . @E@@@# TZ,S1 3,X6 . $T WLV )@@G@@AS WRITE SUCCESSFUL @C@@@# LMJ X11,IOERR . $A YES NO,LW )@@G@@IOERR @C@@@# ER EXIT$ . $E EXIT ACTIVITY@]@@@# . LX )@@G@@ @G@@@# . THIS SECTION OF CODE IS USED BY ALL SECONDARY ACTILY )@@G@@VITIES @G@@@# . TO GET THE NEXT BLOCK-SIZE PAGE RANGE FLZ )@@G@@ROM C2 AND SET @C@@@# . UP DBAM PACKET FOR PAGE BLOCK MA )@@G@@@]@@@# . @A@@@#GETRNG + 0 . @G@@@# MB )@@G@@ L A9,SV3 . $P GET # RANGES LEFT IN THIS AREA @G@@@#MC )@@G@@ L A7,SV4 . $P GET REMAINDER OF LAST RANGE MD )@@G@@@E@@@# L X7,SV5 . $P GET PTR TO C2 CURRENT LOC@A@@@#ME )@@G@@ L A0,A7 . @G@@@# LSSL A0,18 MF )@@G@@. $T ARE THERE MORE PAGES IN RANGE @C@@@# JNZ A0,RNGEA MG )@@G@@ . $A NO YES,RNGEA @C@@@#RANGE JZ A9,AREA1 . $T IS IT ZMH )@@G@@ERO @C@@@# . $A NO YES,AREA1 @G@@@# MI )@@G@@ L A7,0,*X7 . $P GET NEXT RANGE FROM C2 ENTRY @G@@@#MJ )@@G@@ AN,U A9,1 . $P DECREMENT NO RANGES LEFT IN C2 ENTRY MK )@@G@@@G@@@#RNGEA L A0,A7 . $P GET NUMBER OF PAGES IN RANGE ML )@@G@@ @A@@@# LSSL A0,18 . @A@@@# SSL A0,MM )@@G@@18 . @G@@@# TG,U A0,PGPBLK . $T WILL RANGE FIMN )@@G@@T INTO BLOCK ? @E@@@# L,U A0,PGPBLK . $P LIMIT SMO )@@G@@IZE TO BLOCK SIZE @G@@@# S,H1 A0,7,X6 . $P PUT PAGE CNT MP )@@G@@INTO DBAM PACKET @E@@@# L A2,A7 . $P GET STAMQ )@@G@@RT PAGE OF RANGE @A@@@# SSL A2,18 . @E@@@# MR )@@G@@ S,H2 A2,8,X6 . $P PUT IT IN DBAM PACKET @G@@@# AN MS )@@G@@ A7,A0 . $P REDUCE NO PAGES IN RANGE BY PAGE CNT @A@@@# MT )@@G@@ LSSL A0,18 . @G@@@# A A7,A0 . $P IMU )@@G@@NCREASE START PG OF RANGE BY PG CNT @G@@@# DL A0,ANAME MV )@@G@@. $P PUT AREA NAME INTO DBAM PACKET @A@@@# DS A0,0,X6 MW )@@G@@ . @E@@@# S A9,SV3 . $P SAVE RANGE COUNT MX )@@G@@ @E@@@# S A7,SV4 . $P SAVE REMAINING RANGE MY )@@G@@@C@@@# S X7,SV5 . $P SAVE C2 PTR @C@@@# J MZ )@@G@@ *GETRNG . $E RETURN @C@@@#AREA1 L A0,SV2 NA )@@G@@. $P GET C2 LINK @E@@@# JNZ A0,AREA . $T MORE AREAS INNB )@@G@@ C2 @C@@@# . $A NO YES,AREA @E@@@#NC )@@G@@ S A9,SV3 . $P SAVE REGISTERS @A@@@# ND )@@G@@ S A7,SV4 . @A@@@# S X7,SV5 . NE )@@G@@@E@@@# L X1,(-1) . $P SET READS-DONE FLAG @C@@@#NF )@@G@@ J *GETRNG . $E RETURN @E@@@#AREA L X7,NG )@@G@@SV1 . $P GET LAST C2 ENTRY @C@@@# A X7,SV2 NH )@@G@@ . $P ADD LINK @G@@@# S X7,SV1 . $P SAVE ASNI )@@G@@ START ADDR OF C2 ENTRY @G@@@# L,T2 A9,0,X7 . $P GNJ )@@G@@ET NUMBER OF RANGES THIS AREA @E@@@# L,T3 A0,0,X7 NK )@@G@@. $P GET LINK TO NEXT ENTRY @C@@@# S A0,SV2 . $P SNL )@@G@@AVE IT @C@@@# DL A0,1,X7 . $P GET AREA NAME@C@@@#NM )@@G@@ DS A0,ANAME . $P SAVE IT @G@@@# A,U X7,NN )@@G@@3 . $P SET C2 PTR TO FIRST RANGE OF ENTRY @C@@@# J NO )@@G@@ RANGE . $J RANGE @]@@@# . @E@@@# . THIS SENP )@@G@@CTION OF CODE SCANS THE PAGES OF A BLOCK @A@@@# . BY SCANNNQ )@@G@@ING THE SLOTS, @C@@@# . AND FOR EACH ONE IN USE ON THE PAGE, NR )@@G@@@G@@@# . IT INITIALIZES THE PATCH PROCESS FOR EACH RECORD ON THE NS )@@G@@PAGE @]@@@# . @C@@@#PAGE. . $H PAGE NT )@@G@@ @E@@@# L A0,X8 . $P GET START OF PAGE NU )@@G@@@C@@@# A,H1 A0,2,X8 . $P ADD PAGE SIZE@G@@@# AN,NV )@@G@@U A0,1 . $P DECREMENT FOR ADDR OF LAST WORD OF PG@G@@@# NW )@@G@@ AN,H1 A0,6,X8 . $P SUBTRACT NO CALC CHAINS AT END TO ; @E@@@#NX )@@G@@ . . $ GET ADDR OF FIRST SLOT @A@@@# NY )@@G@@ LXI,U A0,-1 . @E@@@# L,H1 A4,3,X8 . $P GNZ )@@G@@ET NO OF SLOTS ALLOCATED@G@B@# AN,U A4,1 . $P DECREMEOA )@@G@@NT TO SET SLOT LOOP COUNTER @B@@@B J PAGE2 . $J POB )@@G@@AGE2 @C@@@#PAGE1 L A2,0,*A0 . $P GET SLOT @E@@@# OC )@@G@@ AND A2,(0500000000000) . $P ISOLATE SLOT DESC @G@@@# TZ OD )@@G@@ A3 . $T IS SLOT IN USE FOR RECD ON THIS PG ? @C@@@# OE )@@G@@ J PAGE2 . $A YES NO,PAGE2 @G@@@# LSSL A2,18 OF )@@G@@ . $P GET RECORD DISP FROM TOP OF PAGE @A@@@# SSL A2,OG )@@G@@18 . @G@@@# A A2,X8 . $P ADD START ADDOH )@@G@@R OF PAGE TO GET START ;@C@@@# . . $ ADDR OF OI )@@G@@RECORD@C@@@# J RECORD . $J RECORD @E@@@#PAGE2 OJ )@@G@@ JGD A4,PAGE1 . $T MORE SLOTS TO CHECK ? @C@@@# . OK )@@G@@ . $A NO YES,PAGE1 @C@@@# J RNGE2 OL )@@G@@. $J RNGE2 @]@@@# . @E@@@# . THIS SECTION OF CODE TAKEOM )@@G@@S A RECORD FROM THE PAGE, @C@@@# . CHECKS IF IT IS OF AN AFFEON )@@G@@CTED TYPE, @E@@@# . AND IF SO SCANS ALL POSSIBLY AFFECTED POINTEOO )@@G@@RS @G@@@# . ANY CHANGED POINTERS WILL BE PATCHED TO THE NOP )@@G@@EW VALUE, @G@@@# . AND THE BLOCK-CHANGED FLAG WILL BE SET OQ )@@G@@IF ANY CHANGES @]@@@# . @G@@@#RECORD L,T1 A1,0,A2 OR )@@G@@. $P GET RECORD CODE FROM RECORD HEADER @G@@@# L X9,(1,AFROS )@@G@@CDT) . $P SET INDEX TO AFFECTED RECORD TABLE @G@@@# L R1,OT )@@G@@ARTCNT . $P GET NO OF AFFECTED RECORD TYPES @G@@@# SE,OU )@@G@@T1 A1,0,*X9 . $P SEARCH AF RCD TBL FOR REC CODE @E@@@# . OV )@@G@@ . $T WAS IT FOUND ? @C@@@# J OW )@@G@@ PAGE2 . $A YES NO,PAGE2 @E@@@# AN,U X9,1 OX )@@G@@. $P POINT TO AF RCD TBL ENTRY@G@@@# L,H2 X9,0,X9 . $P GOY )@@G@@ET START ADDR OF C1 ENTRY @C@@@# LXI,U X9,1 OZ )@@G@@. $P SET C1 INDEX @G@@@# A,U X9,1 . $P SET C1 INDEX PA )@@G@@TO FIRST PTR WORD @E@@@# L R15,A1 . $P SAVE REPB )@@G@@CD CODE @E@@@# L R3,A0 . $P SAVE CONTENTSPC )@@G@@ OF A0 @G@@@#REC2 TP 0,X9 . $T IS THIS MANUAL PTR PD )@@G@@WORD OF C1 ? @C@@@# J MANCHK . $A NO YES,MANCHKPE )@@G@@@G@@@# AU,S6 A2,0,X9 . $P ADD POINTER DISP TO START OF REPF )@@G@@CORD @G@@@# LXI,U A3,1 . $P SET INDEX TO 'NEXT' LINK PG )@@G@@OF POINTER @C@@@# L,T2 R14,0,X9 . $P SAVE SET CODE@A@@@#PH )@@G@@ L R13,X9 . @G@@@# L,S2 A1,0,*X9 PI )@@G@@. $P GET NUMBER OF LINKS IN POINTER @G@@@# LMJ X4,PTRCHKPJ )@@G@@ . $W PTRCHK - CHECK ALL LINKS OF POINTER ;@E@@@# . PK )@@G@@ . $ AND PATCH IF NECESSARY @C@@@# J REC2 PL )@@G@@ . $J REC2 @G@@@#MANCHK TNZ,S2 0,X9 . $T ARE THEPM )@@G@@RE ANY MANUAL PTRS AFFECTED ? @C@@@# J REC3 . $A YPN )@@G@@ES NO,REC3 @G@@@# AU,S6 A2,0,*X9 . $P GET ADDR OF MFCW FOPO )@@G@@R RECORD @E@@@# LXI,U A3,1 . $P SET MANUAL PTPP )@@G@@R INDEX @C@@@# L A10,0,*A3 . $P GET NFCW @G@@@#PQ )@@G@@ AND A10,0,X9 . $P AND MFCW AND AFFECTED MASK TO GET ; PR )@@G@@@E@@@# . . $ OCCURRING AFFECTED MASK @G@@@#PS )@@G@@ TN A11 . $T ARE THERE ANY OCCURRING AFFCTD PTRS ?PT )@@G@@@C@@@# JZ A11,REC3 . $A YES NO,REC3 @E@@@# L,UPU )@@G@@ A2,1 . $P SET C1 MANUAL PTR INDEX @G@@@#MAN2 JP A10PV )@@G@@,MAN3 . $T DOES THIS PTR OCCUR IN THIS RECORD ? @C@@@# . PW )@@G@@ . $A YES NO,MAN3 @G@@@# L X11,X9 PX )@@G@@. $P GET START OF C1 MAN PTR LIST @E@@@# A X11,A2 PY )@@G@@ . $P ADD DISP TO CURRENT SET @G@@@# JN A11,MAN4 PZ )@@G@@. $T CAN POINTER HAVE BEEN AFFECTED ? @C@@@# . QA )@@G@@ . $A NO YES,MAN4 @G@@@# A,S2 A3,0,X11 . $P INCR MAQB )@@G@@NUAL PTR INDEX PAST PTR IN REC@G@@@#MAN3 LSSL A10,1 . $P SQC )@@G@@HIFT MFCW MASK TO NEXT SET @G@@@# LSSL A11,1 QD )@@G@@. $P SHIFT OCCURRING AFFCTD MASK 2 NXT SET@G@@@# A,U A2,1 QE )@@G@@ . $P INCREMENT C1 MANUAL PTR INDEX @G@@@# JNZ A11QF )@@G@@,MAN2 . $T ARE THERE MORE AFFECTED PTRS ? @C@@@# . QG )@@G@@ . $A NO YES,MAN2 @E@@@#REC3 L A0,R3 QH )@@G@@. $P RESTORE CONTENTS OF A0 @C@@@# J PAGE2 . $J PQI )@@G@@AGE2 @C@@@#MAN4 L,T2 R14,0,X11 . $P SAVE SET CODE@A@@@#QJ )@@G@@ L R13,X11 . @G@@@# L,S2 A1,0,X11 QK )@@G@@. $P GET NUMBER OF LINKS IN POINTER @G@@@# LMJ X4,PTRCHKQL )@@G@@ . $W PTRCHK - CHECK ALL LINKS OF POINTER ;@E@@@# . QM )@@G@@ . AND PATCH IF NECESSARY @C@@@# J MAN3 QN )@@G@@ . $J MAN3 @]@@@# . @E@@@# . THIS SECTION OF CODQO )@@G@@E CHECKS ALL LINKS IN A POINTER @C@@@# . TO SEE IF THEY ARE CQP )@@G@@HANGED DB PTRS @A@@@# . ANY FOUND WILL BE UPDATED @C@@@# . QQ )@@G@@ AND THE BLOCK-CHANGED FLAG WILL BE SET@C@@@# . QR )@@G@@ . $H PTRCHK @E@@@#PTRCHK AN,U A1,1 . $P SET LINQS )@@G@@K LOOP COUNTER @E@@@#PCHK1 L A0,0,*A3 . $P GET DB POINTEQT )@@G@@R @E@@@# S A0,3,X10 . $P PUT IT IN KFAM PACKQU )@@G@@ET @E@@@# L R2,A1 . $P SAVE VALUE OF A1 QV )@@G@@@E@@@# L A1,ASHFT . $P GET AREA SHIFT COUNT @C@@@#QW )@@G@@ SSL A0,0,A1 . $P GET AREA CODE@G@@@A JZ A0,QX )@@G@@PCHK10 . $T IS POINTER TO ARTIFICIAL DBP (CODE=0)@C@@@A QY )@@G@@ . $A NO YES,PCHK10@E@^@# L A1,(1,ARETBL) QZ )@@G@@. $SET PTRS FOR A-TBL SEARCH @E@@@^ L A1,(1,ARETBL) . $P SRA )@@G@@ET PTRS FOR A-TBL SEARCH@A@@@# L R1,ARECNT . @G@@@#RB )@@G@@ SE A0,0,*A1 . $T IS THIS CODE FOR AFFECTED AREA RC )@@G@@@C@@@# J BADARE . $A YES NO,BADARE@E@A@# L RD )@@G@@ A1,R2 . $P RESTORE VALUE OF A1 @E@@@APCHK10 L A1,RE )@@G@@R2 . $P RESTORE VALUE OF A1 @G@@@# LMJ X11,KF$AMRF )@@G@@R . $W KF$AMR - SEE IF DB PTR IS IN K-FILE @E@@@# TZ 5,XRG )@@G@@10 . $T WAS FIND SUCCESSFUL ? @C@@@# J PCHK2 RH )@@G@@ . $A YES NO,PCHK2 @G@@@# L,H1 A0,4,X10 . $P GET NEWRI )@@G@@ VALUE,H1 OF DBP FROM KFAM PKT@E@@@# JZ A0,ZPTR . $T IRJ )@@G@@S NEW DBP ZERO @C@@@# . $A NO YES,RK )@@G@@ZPTR @G@^@# TNE,U A0,1 . $T IS RECORD A RECORDU RECORRL )@@G@@D @C@^@# J PCHK2 . $A NO YES,PCHK2 @G@@@#RM )@@G@@ L A0,4,X10 . $P GET NEW VALUE OF DBP FROM KFAM PACKETRN )@@G@@@E@@@#PCHK11 AN,U A3,1 . $P RESET INDEX TO THIS SLOT @E@@@#RO )@@G@@ S A0,0,*A3 . $P STORE NEW DBP IN RECORD @E@@@# RP )@@G@@ A,U A8,1 . $P SET BLOCK-CHANGED FLAG @G@@@#PCHK2 JGDRQ )@@G@@ A1,PCHK1 . $T MORE LINKS IN THIS POINTER ? @C@@@# . RR )@@G@@ . $A NO YES,PCHK1 @C@@@# J 0,X4 RS )@@G@@ . $E RETURN @]@@@# . @C@@@# . ZERO VALUE DBPRT )@@G@@ WARNING ROUTINE @]@@@# . @C@@@#ZPTR. RU )@@G@@ . $H ZPTR @E@@@# TS ZPTSC . $P LOCK OURV )@@G@@T WARNING ROUTINE @E@@@# SLJ ZPWARN . $W ZPWARN - PRINRW )@@G@@T WARNING @E@@@ L,U A0,1 . $P SET WARNINGS-PRINTERX )@@G@@D FLAG@A@@@ S A0,WRNFLG . @E@@@# C$TS ZPTRY )@@G@@SC . $P UNLOCK WARNING ROUTINE @E@@@# SZ A0 RZ )@@G@@ . $P SET NEW DBP VALUE TO ZERO@C@@@# J PCHK11 SA )@@G@@. $J PCHK11 @]@@@# . @C@@@# . UNKNOWN AREA WARNINGSB )@@G@@ ROUTINE @]@@@# . @C@@@#BADARE. SC )@@G@@. $H BADARE @E@@@# L A1,R2 . $P RESTORE VALUESD )@@G@@ A1 @E@@@# TS BDTSC . $P LOCK OUT WARNING ROSE )@@G@@UTINE @E@@@# SLJ BDWARN . $W BDWARN - PRINT WARNING SF )@@G@@@E@@@ L,U A0,1 . $P SET WARNINGS-PRINTED FLAG@A@@@ SG )@@G@@ S A0,WRNFLG . @E@@@# C$TS BDTSC SH )@@G@@. $P UNLOCK WARNING ROUTINE @E@@@# SZ A0 . $P SSI )@@G@@ET NEW DBP VALUE TO ZERO@C@@@# J PCHK11 . $J PCHK11 SJ )@@G@@ @]@@@# . @C@@@# . THIS SECTION OF CODE IS INTERNAL ERROSK )@@G@@R EXIT@]@@@# . @C@@@#ERROR. . $H ERROR SL )@@G@@ @G@@@# P$RINT (PF 1,5,ERMSG) . $P PRINT ERROR MESSAGE AND SM )@@G@@TERMINATE @A@@@# ER ERR$ . $E @]@@@# . SN )@@G@@@C@@@#MAXACT. . $H MAXACT @G@@@# P$RSO )@@G@@INT (PF 1,12,MAXMSG) . $P PRINT ERROR MESSAGE AND TERMINATE@A@@@# SP )@@G@@ ER ERR$ . $E @]@@@# . @]@@@# . @]@@@#SQ )@@G@@$(6). @C@@@#KCNT + 0 . @C@@@#SR )@@G@@K2CNT + 0 . @]@@@# . @A@@@#SS )@@G@@RETURN + 0 . @A@@@ WRNFLG + 0 ST )@@G@@. @A@@@#DBPADR + PDBPKT . @A@@@# RES 59 SU )@@G@@ . @A@@@#KFPADR RES 20 . @A@@@#ANAME SV )@@G@@ RES 2 . @]@@@#PDBPKT*. @A@@@# DO 9 ,SW )@@G@@ + 0 . @A@@@#SV1 + 0 . @A@@@#SV2 SX )@@G@@ + 0 . @A@@@#SV3 + 0 . SY )@@G@@@A@@@#SV4 + 0 . @A@@@#SV5 + 0 SZ )@@G@@ . @A@@@#ZEROPT + 0,ZERO . @A@@@#ZERO + TA )@@G@@ 0 . @A@@@#RNGTSC T$CELL . @A@@@#TB )@@G@@CHKTSC T$CELL . @A@@@#ZPTSC T$CELL TC )@@G@@. @A@@@#BDTSC T$CELL . @C@@@#ERMSG 'PATCH FOTD )@@G@@UND NO C3 ENTRIES' . @E@@@#MAXMSG 'ERROR: PATCH ATTEMPTED USITE )@@G@@NG MORE THAN 20 ' . @C@@@# 'ACTIVITIES (ACTNUM>20) - ERR$!' TF )@@G@@. @G@@@ WMSG1 '************************************************' TG )@@G@@ . @G@@@ WMSG2 '***** *TH )@@G@@****' . @G@@@ WMSG3 '***** PATCH MAY BE IN ERROR TI )@@G@@ *****' . @G@@@ WMSG4 '***** SEE WARNINGS PRINTED TJ )@@G@@ABOVE *****' . @^@@@# END . ___ TK )@@G@@@]@@@# . @E@@@# . THIS SECTION OF CODE CHECKS ALL LINKS IN A TL )@@G@@POINTER @C@@@# . TO SEE IF THEY ARE C*[@@@@*SDFF*@[@@@@$(1) TM )@@G@@@#@@@@ AXR$ @]@@@[ . @]@@@[ . @]@@@[ . TN )@@G@@ @C@@@[ . *** RELOAD PROCESS ERROR CODES *** @]@@@[ . TO )@@G@@ @]@@@[ . @A@@@[ . ERROR CODE: EXPLANATION: @]@@@[TP )@@G@@ . @C@@@[ . 1 EMPTY C3 OR C5 TABLE. @]@@@[TQ )@@G@@ . @G@@@[ . 2 CANNOT FIND CALC PROCEDURE NAME INTR )@@G@@ CLSEG$. @]@@@[ . @E@@@[ . 3 CANNOT FINTS )@@G@@D RECORD CODE IN Z2 TABLE. @]@@@[ . @I@@@[ . 4 TT )@@G@@ INTERNAL ERROR DESTINATION AREA CODE 0 ENCOUNTERED @G@@@[TU )@@G@@ . IN DESARE AFTER THE DECOMPOSITION OF THE RECORD'S TV )@@G@@@E@@@[ . DBP RETURNED ZERO AREA CODE. @]@@@[TW )@@G@@ . @G@@@[ . 5 DESTINATION AREA CODE = 0 ENCOUNTETX )@@G@@RED IN DESARE. @]@@@[ . @G@@@[ . 6 C3 TABLE STY )@@G@@EARCH FOR DESTINATION AREA CODE FAILED. @]@@@[ . @G@@@[ . 7 TZ )@@G@@ INTERNAL ERROR ERROR RETURN FROM BUFFER ROUTINE @G@@@[UA )@@G@@ . ON A CODE 1 CALL (GET PAGE SPECIFIED WITH PAGE UB )@@G@@@E@@@[ . RANGE CHECK). ERROR CODE IN BUFPKT,,H1@]@@@[UC )@@G@@ . @I@@@[ . 8 INTERNAL ERROR PAGE # REQUESTEUD )@@G@@D FROM BUFFER ROUTINE @G@@@[ . ON A CODE 1 CAUE )@@G@@LL WAS NOT MADE CURRENT IN CURPGE. @]@@@[ . @G@@@[ . 9 UF )@@G@@ PAGE REQUESTED FROM BUFFER ROUTINE ON A CODE 1 CALL @G@@@[ . UG )@@G@@ IS EXPECTED TO BE A DATA PAGE BUT IS NOT. CURADD @G@@@[UH )@@G@@ . POINTS TO PAGE RETURNED. PROBABLE CAUSE OF ERROR UI )@@G@@@G@@@[ . IS HAVING WRONG C$FILE, SCHEMA(S) OR AREA. UJ )@@G@@ @]@@@[ . @I@@@[ . 10 INTERNAL ERROR ERRUK )@@G@@OR RETURN FROM BUFFER ROUTINE ON @G@@@[ . A UL )@@G@@CODE 6 CALL(GET FIRST DATA PAGE IN RANGE). @E@@@[ . UM )@@G@@ ERROR CODE IS IN BUFPKT,,H1 @]@@@[ . @G@@@[ . 11 UN )@@G@@ COMPOSED DBP AS RETURNED BY APS$DBP IS ZERO. @]@@@[UO )@@G@@ . @G@@@[ . 12 ERROR RETURN FROM KEY FILE ACCESS UP )@@G@@METHOD KF$AM. @]@@@[ . @I@@@[ . 13 INTERNAL EUQ )@@G@@RROR ERROR RETURN FROM THE BUFFER ROUTINE @G@@@[ . UR )@@G@@ ON A CODE 1 CALL (GET DATA PAGE SPECIFIED WITH @G@@@[ . US )@@G@@ PAGE RANGE CHECK). ERROR CODE IN BUFPKT,,H1 @]@@@[UT )@@G@@ . @G@@@[ . 14 ERROR RETURN FROM THE BUFFER ROUTIUU )@@G@@NE ON A CODE 7 @G@@@[ . CALL ( GET NEXT DATA PAGE UV )@@G@@IN RANGE). ERROR CODE @G@@@[ . IS IN BUFPKT,,H1 . PUW )@@G@@ROBABLY OUT OF SPACE IN THAT @A@@@[ . RANGE. UX )@@G@@@]@@@[ . @G@@@[ . 15 CALC ITEM COUNT = 0 FOR A CAUY )@@G@@LC RECORD. PROBABLE @C@@@[ . CAUSE IS A BAD C$FILUZ )@@G@@E. @]@@@[ . @G@@@[ . 16 DESTINATION AREA CODE VA )@@G@@= 0 ENCOUNTERED JUST BEFORE @C@@@[ . CALLING THE CAVB )@@G@@LC ROUTINE. @]@@@[ . @G@@@[ . 17 C3 TABLE SEARCH VC )@@G@@FOR AREA TO CALC TO FAILED. @]@@@[ . @G@@@[ . 18 VD )@@G@@ C3 TABLE SEARCH FOR AREA NAME RETURNED BY THE CALC @G@@@[ . VE )@@G@@ ROUTINE(X10 POINTS TO AREA NAME) FAILED. @]@@@[VF )@@G@@ . @G@@@[ . 19 CANNOT FIND AREA ENTRY FOR AREA COVG )@@G@@DE TO CALC TO IN @G@@@[ . THE Z2 ENTRY FOR THE RECORVH )@@G@@D TYPE THAT IS BEING @A@@@[ . RELOADED. @]@@@[VI )@@G@@ . @G@@@[ . 20 PAGE NUMBER RETURNED BY CALC ROUVJ )@@G@@TINE < LOWER RANGE@G@@@[ . FOR RECORD IN THE AREA SPEVK )@@G@@CIFIED. PROBABLE CAUSE @C@@@[ . IS A BAD CALC ROUTINVL )@@G@@E. @]@@@[ . @G@@@[ . 21 PAGE NUMBER RETURNED BVM )@@G@@Y CALC ROUTINE > UPPER RANGE @G@@@[ . FOR RECORD IN VN )@@G@@THE AREA SPECIFIED. PROBABLE CAUSE @C@@@[ . IS A BADVO )@@G@@ CALC ROUTINE. @]@@@[ . @I@@@[ . 22 INTERNAL EVP )@@G@@RROR ERROR RETURN FROM BUFFER ROUTINE ON @G@@@[ . VQ )@@G@@ A CODE 1 CALL (GET DATA PAGE SPECIFIED WITH A PAGE@E@@@[ . VR )@@G@@ RANGE CHECK) ERROR CODE IN BUFPKT,,H1.@]@@@[ . VS )@@G@@@G@@@[ . 23 POINTER COMPOSED FOR CALC CHAIN HEADER = 0 UPOVT )@@G@@N @C@@@[ . RETURN FROM APS$DBP. @]@@@[ . VU )@@G@@ @I@@@[ . 24 INTERNAL ERROR POINTER COMPOSED FOR VV )@@G@@RELOADED RECORD @E@@@[ . IS ZERO UPON RETURN VW )@@G@@FROM APS$DBP. @]@@@[ . @I@@@[ . 25 ERROR RETUVX )@@G@@RN FROM KEY FILE ACCESS METHOD INSERTI @E@@@[ . VY )@@G@@ NEW POINTER IN THE KEY FILE. @]@@@[ . @I@@@[VZ )@@G@@ . 26 INTERNAL ERROR POINTER TO RECORD HEADER POINTS PWA )@@G@@AST @C@@@[ . THE SLOT FOR THAT RECORD. @]@@@[WB )@@G@@ . @G@@@[ . 27 ERROR RETURN TRYING TO FIND RELATIWC )@@G@@VE LOCATION OF A @G@@@[ . CALC POINTER WITHIN A RECOWD )@@G@@RD WHILE TRAVERSING A @G@@@[ . CALC CHAIN. PROBABLEWE )@@G@@ CAUSE IS ENCOUNTERING A REC @G@@@[ . TYPE WHICH IS WF )@@G@@UNKNOWN TO THE REORGANIZATION. @]@@@[ . @G@@@[ . 28 WG )@@G@@ ERROR RETURN TRYING TO GET AN OVERFLOW PAGE. PAGE @G@@@[ . WH )@@G@@ RETURNED IS A DATA PAGE. PROBABLE CAUSE IS WRONG @G@@@[WI )@@G@@ . C$FILE, SCHEMA(S) OR AREA IMPROPERLY INITIALIZED. WJ )@@G@@@]@@@[ . @I@@@[ . 29 INTERNAL ERROR ERROR RETWK )@@G@@URN FROM BUFFER ROUTINE ON @G@@@[ . A CODE 5WL )@@G@@ CALL ( GET PAGE DIRECTLY WITHOUT PAGE @A@@@[ . RAWM )@@G@@NGE CHECK) @]@@@[ . @G@@@[ . 30 PAGE OBTAINED ISWN )@@G@@ EXPECTED TO BE AN OVERFLOW PAGE BUT@E@@@[ . IS NOT. WO )@@G@@BAD CALC CHAIN PROBABLY. @]@@@[ . @G@@@[ . 31 WP )@@G@@ NEW DATA BASE POINTER COMPOSED = 0 UPON RETURN FROM @A@@@[ . WQ )@@G@@ APS$DBP @]@@@[ . @G@@@[ . 32 ERROWR )@@G@@R RETURN FROM KEY FILE ACCESS METHOD. TRYING TO @E@@@[ . WS )@@G@@ INSERT NEW POINTER IN KEY FILE @]@@@[ . @G@@@[ . 33 WT )@@G@@ ERROR RETURN TRYING TO FIND RELATIVE LOCATION OF A @G@@@[WU )@@G@@ . CALC POINTER WITHIN A RECORD WHILE TRAVERSING A WV )@@G@@@G@@@[ . CALC CHAIN. PROBABLE CAUSE IS ENCOUNTERING AWW )@@G@@ REC @G@@@[ . TYPE WHICH IS UNKNOWN TO THE REORGANIZWX )@@G@@ATION. @]@@@[ . @I@@@[ . 34 INTERNAL ERROR WY )@@G@@ ERROR RETURN FROM BUFFER ROUTINE ON @G@@@[ . WZ )@@G@@ A CODE 1 CALL ( GET DATA PAGE SPECIFIED WITH A @G@@@[ . XA )@@G@@ PAGE RANGE CHECK). ERROR CODE IN BUFPKT,,H1. @]@@@[ . XB )@@G@@ @G@@@[ . 35 ERROR RETURN FROM THE BUFFER ROUTINE ON XC )@@G@@A CODE 5 @G@@@[ . CALL. ERROR CODE IN BUFPKT,,H1. XD )@@G@@PROBABLY A BAD @A@@@[ . CALC CHAIN. @]@@@[ . XE )@@G@@ @G@@@[ . 36 ERROR RETURN FROM THE BUFFER ROUTINE ON XF )@@G@@A CODE 5 @G@@@[ . CALL TO MAKE THE FOREIGN PAGE CUXG )@@G@@RRENT. ERROR CODE @A@@@[ . IN BUFPKT,,H1.@]@@@[ . XH )@@G@@ @A@@@[ . 37 BAD CALC CHAIN. @]@@@[ . @G@@@[XI )@@G@@ . 38 ERROR RETURN FROM THE BUFFER ROUTINE ON A CODE 2 OR XJ )@@G@@@G@@@[ . CODE 3 CALL ( GET 1ST OR NEXT OVERFLOW PAGE XK )@@G@@AFTER @G@@@[ . THE CURRENT PAGE). ERROR CODE IN BUFPKXL )@@G@@T,,H1 @]@@@[ . @G@@@[ . 39 INTERNAL ERROR XM )@@G@@ ERROR RETURN FROM BUFFER ROUTINE @G@@@[ . ON A CODXN )@@G@@E 8 CALL (FLUSH DATA BUFFERS).ERROR CODE @A@@@[ . INXO )@@G@@ BUFPKT,,H1.@]@@@[ . @G@@@[ . 40 ERROR RETURN FROXP )@@G@@M KEY FILE ACCESS METHOD ON A CALL @E@@@[ . TO FLUSHXQ )@@G@@ THE KEY FILE BUFFERS. @]@@@[ . @G@@@[ . 41 XR )@@G@@ C3 TABLE SEARCH FOR AREA CODE FAILED. IN PROCESS @G@@@[ . XS )@@G@@ OF BUILDING C4 TABLE ( EXTERNAL NAME C16 ). @]@@@[ . XT )@@G@@ @G@@@[ . 42 LOWER PAGE RANGE OF Z2 AREA ENTRY = 0. IXU )@@G@@N THE @G@@@[ . PROCESS OF BUILDING C4 TABLE (EXXV )@@G@@TERNAL NAME C16). @]@@@[ . @G@@@[ . 43 INTERNAL EXW )@@G@@RROR ERROR RETURN FROM MRGSML ( NO @E@@@[ . SMXX )@@G@@ALLEST ENTRY IN MERGE TABLE. @]@@@[ . @G@@@[ . 44 XY )@@G@@ NO PAGE RANGE FOR RECORD SPECIFIED FOR THE INDICATED@A@@@[ . XZ )@@G@@ AREA. @]@@@[ . @C@@@[ . 45 YA )@@G@@ PAGE # RETURNED BY CALC = 0.@]@@@[ . @G@@@[ . 46 YB )@@G@@ RECORD # SPECIFIED BY THE DIRECT CONTROL RECORD = 0.@]@@@[ . YC )@@G@@@G@@@[ . 47 INTERNAL ERROR TRYING TO GET A RECORD NUMBYD )@@G@@ER. @]@@@[ . @E@@@[ . 48 RECORD NUMBER IS NEGATYE )@@G@@IVE OR ZERO. @]@@@[ . @A@@@[ . 49 NOT USED YF )@@G@@ @]@@@[ . @E@@@[ . 50 SLOT POINTED TO BY CALYG )@@G@@C CHAIN NOT IN USE@]@@@[ . @G@@@[ . 51 ERROR RETUYH )@@G@@RN FROM CLPFND IN TRYING TO FIND RELATIVE @G@@@[ . LOYI )@@G@@CATION OF CALC POINTER WITHIN RECORD. PROBABLY @G@@@[ . YJ )@@G@@ ENCOUNTERED A RECORD WHICH IS UNKNOWN TO THE @C@@@[ . YK )@@G@@ REORGANIZATION. @]@@@[ . @G@@@[ . 52 YL )@@G@@ NO SLOTS ALLOCATED ON PAGE WHILE TRAVERSING THE @E@@@[ . YM )@@G@@ CALC CHAIN. FOREIGN PAGE ACCESSED. @]@@@[ . YN )@@G@@@G@@@[ . 53 NO SLOTS IN USE ON PAGE. FOREIGN PAGE ACCESSEDYO )@@G@@. @]@@@[ . @C@@@[ . 54 NO FOREIGN POINTER INDYP )@@G@@ICATOR@]@@@[ . @I@@@[ . 55 ERROR RETURN FROM CLPFYQ )@@G@@ND TRYING @G@@@[ . POYR )@@G@@INTER WITHIN CALC RECORD ON FOREIGN PAGE. @G@@@[ . YS )@@G@@ PROBABLY ENCOUNTERED A RECORD WHICH IS UNKNOWN TO @C@@@[ . YT )@@G@@ THE REORGANIZATION. @]@@@[ . @G@@@[ . 56 YU )@@G@@ PAGE TYPE ERROR EXPECTING INTERSPERSED OR GLOBAL @G@@@[ . YV )@@G@@ OVERFLOW (DMSLEV5 NOT SET). IN PROCESS OF BUILDING@G@@@[YW )@@G@@ . OVERFLOW RANGES TO BE USED IN BUILDIG C4 TABLE. YX )@@G@@@]@@@[ . @E@@@[ . 57 ERROR IN INSERTING ENTRY IN YY )@@G@@C4 TABLE. @]@@@[ . @E@@@[ . 58 INTERNAL ERROR YZ )@@G@@ PAGE TYPE ERROR. @]@@@[ . @A@@@[ . 59 INTEZA )@@G@@RNAL ERROR. @]@@@[ . @A@@@[ . 60 PAGE TYPE ERROR ZB )@@G@@@]@@@[ . @E@@@[ . 61 C3 TABLE SEARCH FOR AREA CODZC )@@G@@E FAILED. @]@@@[ . @G@@@[ . 62 # OF WORDS READ ZD )@@G@@BY THE DATA BASE ACCESS METHOD NOT @C@@@[ . MULTIPLEZE )@@G@@ OF PAGE SIZE. @]@@@[ . @G@@@[ . 63 CALC CHAINZF )@@G@@ DOES NOT REMAIN IN AREA WHERE RECORD @G@@@[ . HAZG )@@G@@S CALC'D. CAN ELIMINATE PROBLEM IF ALL RECORD @G@@@[ . ZH )@@G@@ TYPES ON THE CALC CHAIN ARE REORGANIZED. @]@@@[ . ZI )@@G@@@G@@@[ . 64 PAGE # OUT OF RANGE OF AREA. POSSIBLE CAUSE ISZJ )@@G@@ @E@@@[ . HAVING WRONG C$FILE, SCHEMA OR AREA. ZK )@@G@@@]@@@[ . @C@@@[ . 65 NO MORE SPACE IN AREA ZL )@@G@@@]@@@[ . @G@@@[ . 66 INTERNAL ERROR SUM AS DEZM )@@G@@TERMINED IN CHKPGE IS @G@@@[ . GREATER THAN TOTAL #ZN )@@G@@ OFPAGES - GLOBAL OVERFLOW. @]@@@[ . @]@@@[ . @]@@@[ZO )@@G@@ . @]@@@[ . @G@@@[ . 67 PAGE TYPE ERROR ZP )@@G@@ PAGE EXPECTED TO BE OVERFLOW. @]@@@[ . @A@@@[ . 68 ZQ )@@G@@ BAD C3 TABLE @]@@@[ . @G@@@[ . 69 PAGEZR )@@G@@ TYPE ERROR PROBABLE CAUSE IS HAVING WRONG @C@@@[ . ZS )@@G@@ C$FILE, SCHEMA OR AREA. @]@@@[ . @G@@@[ . 70 ZT )@@G@@ PAGE TYPE ERROR PAGE # REQUESTED IN BUFPKT IS @G@@@[ . ZU )@@G@@ SUPPOSED TO CORRESPOND TO A DATA PAGE. PROBABLE @G@@@[ . ZV )@@G@@ CAUSE IS HAVING WRONG C$FILE, SCHEMA OR AREA. @]@@@[ZW )@@G@@ . @]@@@[ . @G@@@[ . 71 SUM AS DEFINED IZX )@@G@@N CHKPGE > TOTAL # OF PAGES @E@@@[ . ALLOCATEZY )@@G@@D - # OF AT END OVERFLOW. @]@@@[ . @A@@@[ . 72 ZZ )@@G@@ PAGE TYPE ERROR @]@@@[ . @G@@@[ . 73 NO AT END AA )@@G@@OVERFLOW. HAVE ALREADY DETERMINED NO @G@@@[ . INAB )@@G@@TERSPERSED AND DMSLEV5 SWITCH NOT SET. @]@@@[ . @G@@@[AC )@@G@@ . 74 INTERNAL ERROR TRYING TO FLUSH BUFFERS OUT. AD )@@G@@@]@@@[ . @I@@@[ . 75 C3 TABLE SEARCH FOR AREA CODAE )@@G@@E FAILED FLUSHIN @]@@@[ . @G@@@[ . 76 AF )@@G@@ ERROR RETURN FROM DATA BASE ACCESS METHOD WRITE. @]@@@[ . AG )@@G@@ @G@@@[ . 77 ERROR RETURN FROM DATA BASE ACCESS METHOAH )@@G@@D READ. @]@@@[ . @E@@@[ . 78 C3 TABLE SEARCH AI )@@G@@FOR AREA CODE FAILED @]@@@[ . @G@@@[ . 79 SUM AJ )@@G@@AD DEFINED BY CHKPGE IS GREATER THAN TOTAL # @E@@@[ . AK )@@G@@ OF PAGES - AT END OVERFLOW. @]@@@[ . @G@@@[ . AL )@@G@@ SUM AS DEFINED BY CHKPGE IS GRATER THAN TOTAL # @A@@@[AM )@@G@@ . RECORD. @]@@@[ . @G@@@[ . 82 AN )@@G@@ ERROR RETURN FROM THE BUFFER ROUTINE. ERROR CODE @C@@@[ . AO )@@G@@ IS IN BUFPKT,,H1. @]@@@[ . @G@@@[ . 83 AP )@@G@@ NO SPACE AVAILABLE ON PAGE WHERE DIRECT RECORD IS @C@@@[AQ )@@G@@ . SUPPOSED TO BE RELOADED. @]@@@[ . @G@@@[AR )@@G@@ . 84 INTERNAL ERROR CURRENT PAGE NOT SAME AS PAGE AS )@@G@@@G@@@[ . SPECIFIED IN THE DIRECT CONTROL RECORD. AT )@@G@@ @]@@@[ . @G@@@[ . 85 DIRECT RECORD NUMBER CAU )@@G@@OLLISION ON A SLOT WHERE SLOT @G@@@[ . IS USED BY ANOAV )@@G@@THER RECORD WHICH IS EITHER ON @G@@@[ . A FOREIGAW )@@G@@N PAGE OR FOREIGN TO THE PAGE IN QUESTION.@]@@@@ . @E@@@@ . THEAX )@@G@@ FOLLOWING ENTRY POINTS MIGHT BE CALLED FROM RELOAD @A@@@@ . VIA AN SLAY )@@G@@J INSTRUCTION. @E@@@@ . FOR AN EXPLANATION OF THE POSSIBLE ERROAZ )@@G@@R, REFER @^@@@@ . TO THE USER'S MANUAL @C@@@@ . WRITTEN BY Z. NBA )@@G@@AZIF ON NOV 11, 1975 @]@@@@ . @]@@@@ . @C@@@@BB )@@G@@PF1 FORM 12,6,18 . @]@@@@ . @^@@@@BC )@@G@@RER001* + 0 @G@@@@ LA A0,RER001 . $PBD )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL BE )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,01 BF )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT BG )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . BH )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER002BI )@@G@@* + 0 @G@@@@ LA A0,RER002 . $P ADDR BJ )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WBK )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,02 BL )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WBM )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @^@@@@BN )@@G@@RER003* + 0 @G@@@@ LA A0,RER003 . $PBO )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL BP )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,03 BQ )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT BR )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . BS )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER004BT )@@G@@* + 0 @G@@@@ LA A0,RER004 . $P ADDR BU )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WBV )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,04 BW )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WBX )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @^@@@@BY )@@G@@RER005* + 0 @G@@@@ LA A0,RER005 . $PBZ )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL CA )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,05 CB )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT CC )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . CD )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER006CE )@@G@@* + 0 @G@@@@ LA A0,RER006 . $P ADDR CF )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WCG )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,06 CH )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WCI )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @^@@@@CJ )@@G@@RER007* + 0 @G@@@@ LA A0,RER007 . $PCK )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL CL )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,07 CM )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT CN )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . CO )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER008CP )@@G@@* + 0 @G@@@@ LA A0,RER008 . $P ADDR CQ )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WCR )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,8 CS )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WCT )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @^@@@@CU )@@G@@RER009* + 0 @G@@@@ LA A0,RER009 . $PCV )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL CW )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,9 CX )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT CY )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . CZ )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER010DA )@@G@@* + 0 @G@@@@ LA A0,RER010 . $P ADDR DB )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WDC )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,10 DD )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WDE )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @^@@@@DF )@@G@@RER011* + 0 @G@@@@ LA A0,RER011 . $PDG )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL DH )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,11 DI )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT DJ )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . DK )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER012DL )@@G@@* + 0 @G@@@@ LA A0,RER012 . $P ADDR DM )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WDN )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,12 DO )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WDP )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @^@@@@DQ )@@G@@RER013* + 0 @G@@@@ LA A0,RER013 . $PDR )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL DS )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,13 DT )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT DU )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . DV )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER014DW )@@G@@* + 0 @G@@@@ LA A0,RER014 . $P ADDR DX )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WDY )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,14 DZ )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WEA )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @^@@@@EB )@@G@@RER015* + 0 @G@@@@ LA A0,RER015 . $PEC )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL ED )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,15 EE )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT EF )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . EG )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER016EH )@@G@@* + 0 @G@@@@ LA A0,RER016 . $P ADDR EI )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WEJ )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,16 EK )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WEL )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @^@@@@EM )@@G@@RER017* + 0 @G@@@@ LA A0,RER017 . $PEN )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL EO )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,17 EP )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT EQ )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . ER )@@G@@@A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@RER018ES )@@G@@* + 0 @G@@@@ LA A0,RER018 . $P ADDR ET )@@G@@OF CALL TO A0 @G@@@@ SLJ ERLOCCAL . $WEU )@@G@@ ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,18 EV )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT . $WEW )@@G@@ ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . @]@@@@EX )@@G@@ . @^@@@@RER019* + 0 @G@@@@ LA A0,REY )@@G@@ER019 . $P ADDR OF CALL TO A0 @G@@@@ SLJ EZ )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAFA )@@G@@,U A0,19 . $P ERROR CODE TO A0 @G@@@@ SLJ FB )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . FC )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . FD )@@G@@ @^@@@@RER020* + 0 @G@@@@ LA A0,RER020 FE )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOFF )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U FG )@@G@@ A0,20 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPFH )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@FI )@@G@@ . @^@@@@RER021* + 0 @G@@@@ LA A0,RFJ )@@G@@ER021 . $P ADDR OF CALL TO A0 @G@@@@ SLJ FK )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAFL )@@G@@,U A0,21 . $P ERROR CODE TO A0 @G@@@@ SLJ FM )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . FN )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . FO )@@G@@ @^@@@@RER022* + 0 @G@@@@ LA A0,RER022 FP )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOFQ )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U FR )@@G@@ A0,22 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPFS )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@FT )@@G@@ . @^@@@@RER023* + 0 @G@@@@ LA A0,RFU )@@G@@ER023 . $P ADDR OF CALL TO A0 @G@@@@ SLJ FV )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAFW )@@G@@,U A0,23 . $P ERROR CODE TO A0 @G@@@@ SLJ FX )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . FY )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . FZ )@@G@@ @^@@@@RER024* + 0 @G@@@@ LA A0,RER024 GA )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOGB )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U GC )@@G@@ A0,24 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPGD )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@GE )@@G@@ . @^@@@@RER025* + 0 @G@@@@ LA A0,RGF )@@G@@ER025 . $P ADDR OF CALL TO A0 @G@@@@ SLJ GG )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAGH )@@G@@,U A0,25 . $P ERROR CODE TO A0 @G@@@@ SLJ GI )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . GJ )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . GK )@@G@@ @^@@@@RER026* + 0 @G@@@@ LA A0,RER026 GL )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOGM )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U GN )@@G@@ A0,26 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPGO )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@GP )@@G@@ . @^@@@@RER027* + 0 @G@@@@ LA A0,RGQ )@@G@@ER027 . $P ADDR OF CALL TO A0 @G@@@@ SLJ GR )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAGS )@@G@@,U A0,27 . $P ERROR CODE TO A0 @G@@@@ SLJ GT )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . GU )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . GV )@@G@@ @^@@@@RER028* + 0 @G@@@@ LA A0,RER028 GW )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOGX )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U GY )@@G@@ A0,28 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPGZ )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@HA )@@G@@ . @^@@@@RER029* + 0 @G@@@@ LA A0,RHB )@@G@@ER029 . $P ADDR OF CALL TO A0 @G@@@@ SLJ HC )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAHD )@@G@@,U A0,29 . $P ERROR CODE TO A0 @G@@@@ SLJ HE )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . HF )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . HG )@@G@@ @^@@@@RER030* + 0 @G@@@@ LA A0,RER030 HH )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOHI )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U HJ )@@G@@ A0,30 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPHK )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@HL )@@G@@ . @^@@@@RER031* + 0 @G@@@@ LA A0,RHM )@@G@@ER031 . $P ADDR OF CALL TO A0 @G@@@@ SLJ HN )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAHO )@@G@@,U A0,31 . $P ERROR CODE TO A0 @G@@@@ SLJ HP )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . HQ )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . HR )@@G@@ @^@@@@RER032* + 0 @G@@@@ LA A0,RER032 HS )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOHT )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U HU )@@G@@ A0,32 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPHV )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@HW )@@G@@ . @^@@@@RER033* + 0 @G@@@@ LA A0,RHX )@@G@@ER033 . $P ADDR OF CALL TO A0 @G@@@@ SLJ HY )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAHZ )@@G@@,U A0,33 . $P ERROR CODE TO A0 @G@@@@ SLJ IA )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . IB )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . IC )@@G@@ @^@@@@RER034* + 0 @G@@@@ LA A0,RER034 ID )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOIE )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U IF )@@G@@ A0,34 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPIG )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@IH )@@G@@ . @^@@@@RER035* + 0 @G@@@@ LA A0,RII )@@G@@ER035 . $P ADDR OF CALL TO A0 @G@@@@ SLJ IJ )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LAIK )@@G@@,U A0,35 . $P ERROR CODE TO A0 @G@@@@ SLJ IL )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . IM )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . IN )@@G@@ @^@@@@RER036* + 0 @G@@@@ LA A0,RER036 IO )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOIP )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U IQ )@@G@@ A0,36 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPIR )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@IS )@@G@@ . @]@@@@ . @^@@@@RER037* + 0 @G@@@@ IT )@@G@@ LA A0,RER037 . $P ADDR OF CALL TO A0 @G@@@@IU )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR IV )@@G@@@E@@@@ LA,U A0,37 . $P ERROR CODE TO A0 @G@@@@IW )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE IX )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRIY )@@G@@PRINT @]@@@@ . @^@@@@RER038* + 0 @G@@@@ LAIZ )@@G@@ A0,RER038 . $P ADDR OF CALL TO A0 @G@@@@ JA )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@JB )@@G@@ LA,U A0,38 . $P ERROR CODE TO A0 @G@@@@ JC )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@JD )@@G@@ . @]@@@@ . @^@@@@RER039* + 0 @G@@@@ JE )@@G@@ LA A0,RER039 . $P ADDR OF CALL TO A0 @G@@@@JF )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR JG )@@G@@@E@@@@ LA,U A0,39 . $P ERROR CODE TO A0 @G@@@@JH )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE JI )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRJJ )@@G@@PRINT @]@@@@ . @^@@@@RER040* + 0 @G@@@@ LAJK )@@G@@ A0,RER040 . $P ADDR OF CALL TO A0 @G@@@@ JL )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@JM )@@G@@ LA,U A0,40 . $P ERROR CODE TO A0 @G@@@@ JN )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@JO )@@G@@ . @]@@@@ . @^@@@@RER041* + 0 @G@@@@ JP )@@G@@ LA A0,RER041 . $P ADDR OF CALL TO A0 @G@@@@JQ )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR JR )@@G@@@E@@@@ LA,U A0,41 . $P ERROR CODE TO A0 @G@@@@JS )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE JT )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRJU )@@G@@PRINT @]@@@@ . @^@@@@RER042* + 0 @G@@@@ LAJV )@@G@@ A0,RER042 . $P ADDR OF CALL TO A0 @G@@@@ JW )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@JX )@@G@@ LA,U A0,42 . $P ERROR CODE TO A0 @G@@@@ JY )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@JZ )@@G@@ . @]@@@@ . @^@@@@RER043* + 0 @G@@@@ KA )@@G@@ LA A0,RER043 . $P ADDR OF CALL TO A0 @G@@@@KB )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR KC )@@G@@@E@@@@ LA,U A0,43 . $P ERROR CODE TO A0 @G@@@@KD )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE KE )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRKF )@@G@@PRINT @]@@@@ . @^@@@@RER044* + 0 @G@@@@ LAKG )@@G@@ A0,RER044 . $P ADDR OF CALL TO A0 @G@@@@ KH )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@KI )@@G@@ LA,U A0,44 . $P ERROR CODE TO A0 @G@@@@ KJ )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@KK )@@G@@ . @]@@@@ . @^@@@@RER045* + 0 @G@@@@ KL )@@G@@ LA A0,RER045 . $P ADDR OF CALL TO A0 @G@@@@KM )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR KN )@@G@@@E@@@@ LA,U A0,45 . $P ERROR CODE TO A0 @G@@@@KO )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE KP )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRKQ )@@G@@PRINT @]@@@@ . @^@@@@RER046* + 0 @G@@@@ LAKR )@@G@@ A0,RER046 . $P ADDR OF CALL TO A0 @G@@@@ KS )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@KT )@@G@@ LA,U A0,46 . $P ERROR CODE TO A0 @G@@@@ KU )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@KV )@@G@@ . @]@@@@ . @^@@@@RER047* + 0 @G@@@@ KW )@@G@@ LA A0,RER047 . $P ADDR OF CALL TO A0 @G@@@@KX )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR KY )@@G@@@E@@@@ LA,U A0,47 . $P ERROR CODE TO A0 @G@@@@KZ )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE LA )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRLB )@@G@@PRINT @]@@@@ . @^@@@@RER048* + 0 @G@@@@ LALC )@@G@@ A0,RER048 . $P ADDR OF CALL TO A0 @G@@@@ LD )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@LE )@@G@@ LA,U A0,48 . $P ERROR CODE TO A0 @G@@@@ LF )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@LG )@@G@@ . @]@@@@ . @^@@@@RER049* + 0 @G@@@@ LH )@@G@@ LA A0,RER049 . $P ADDR OF CALL TO A0 @G@@@@LI )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR LJ )@@G@@@E@@@@ LA,U A0,49 . $P ERROR CODE TO A0 @G@@@@LK )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE LL )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRLM )@@G@@PRINT @]@@@@ . @^@@@@RER050* + 0 @G@@@@ LALN )@@G@@ A0,RER050 . $P ADDR OF CALL TO A0 @G@@@@ LO )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@LP )@@G@@ LA,U A0,50 . $P ERROR CODE TO A0 @G@@@@ LQ )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@LR )@@G@@ . @]@@@@ . @^@@@@RER051* + 0 @G@@@@ LS )@@G@@ LA A0,RER051 . $P ADDR OF CALL TO A0 @G@@@@LT )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR LU )@@G@@@E@@@@ LA,U A0,51 . $P ERROR CODE TO A0 @G@@@@LV )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE LW )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRLX )@@G@@PRINT @]@@@@ . @^@@@@RER052* + 0 @G@@@@ LALY )@@G@@ A0,RER052 . $P ADDR OF CALL TO A0 @G@@@@ LZ )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@MA )@@G@@ LA,U A0,52 . $P ERROR CODE TO A0 @G@@@@ MB )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@MC )@@G@@ . @]@@@@ . @^@@@@RER053* + 0 @G@@@@ MD )@@G@@ LA A0,RER053 . $P ADDR OF CALL TO A0 @G@@@@ME )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR MF )@@G@@@E@@@@ LA,U A0,53 . $P ERROR CODE TO A0 @G@@@@MG )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE MH )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRMI )@@G@@PRINT @]@@@@ . @^@@@@RER054* + 0 @G@@@@ LAMJ )@@G@@ A0,RER054 . $P ADDR OF CALL TO A0 @G@@@@ MK )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ML )@@G@@ LA,U A0,54 . $P ERROR CODE TO A0 @G@@@@ MM )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@MN )@@G@@ . @]@@@@ . @^@@@@RER055* + 0 @G@@@@ MO )@@G@@ LA A0,RER055 . $P ADDR OF CALL TO A0 @G@@@@MP )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR MQ )@@G@@@E@@@@ LA,U A0,55 . $P ERROR CODE TO A0 @G@@@@MR )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE MS )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRMT )@@G@@PRINT @]@@@@ . @^@@@@RER056* + 0 @G@@@@ LAMU )@@G@@ A0,RER056 . $P ADDR OF CALL TO A0 @G@@@@ MV )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@MW )@@G@@ LA,U A0,56 . $P ERROR CODE TO A0 @G@@@@ MX )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@MY )@@G@@ . @]@@@@ . @^@@@@RER057* + 0 @G@@@@ MZ )@@G@@ LA A0,RER057 . $P ADDR OF CALL TO A0 @G@@@@NA )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR NB )@@G@@@E@@@@ LA,U A0,57 . $P ERROR CODE TO A0 @G@@@@NC )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE ND )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRNE )@@G@@PRINT @]@@@@ . @^@@@@RER058* + 0 @G@@@@ LANF )@@G@@ A0,RER058 . $P ADDR OF CALL TO A0 @G@@@@ NG )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@NH )@@G@@ LA,U A0,58 . $P ERROR CODE TO A0 @G@@@@ NI )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@NJ )@@G@@ . @]@@@@ . @^@@@@RER059* + 0 @G@@@@ NK )@@G@@ LA A0,RER059 . $P ADDR OF CALL TO A0 @G@@@@NL )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR NM )@@G@@@E@@@@ LA,U A0,59 . $P ERROR CODE TO A0 @G@@@@NN )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE NO )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRNP )@@G@@PRINT @]@@@@ . @^@@@@RER060* + 0 @G@@@@ LANQ )@@G@@ A0,RER060 . $P ADDR OF CALL TO A0 @G@@@@ NR )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@NS )@@G@@ LA,U A0,60 . $P ERROR CODE TO A0 @G@@@@ NT )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@NU )@@G@@ . @]@@@@ . @^@@@@RER061* + 0 @G@@@@ NV )@@G@@ LA A0,RER061 . $P ADDR OF CALL TO A0 @G@@@@NW )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR NX )@@G@@@E@@@@ LA,U A0,61 . $P ERROR CODE TO A0 @G@@@@NY )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE NZ )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERROA )@@G@@PRINT @]@@@@ . @^@@@@RER062* + 0 @G@@@@ LAOB )@@G@@ A0,RER062 . $P ADDR OF CALL TO A0 @G@@@@ OC )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@OD )@@G@@ LA,U A0,62 . $P ERROR CODE TO A0 @G@@@@ OE )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@OF )@@G@@ . @]@@@@ . @^@@@@RER063* + 0 @G@@@@ OG )@@G@@ LA A0,RER063 . $P ADDR OF CALL TO A0 @G@@@@OH )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR OI )@@G@@@E@@@@ LA,U A0,63 . $P ERROR CODE TO A0 @G@@@@OJ )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE OK )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERROL )@@G@@PRINT @]@@@@ . @^@@@@RER064* + 0 @G@@@@ LAOM )@@G@@ A0,RER064 . $P ADDR OF CALL TO A0 @G@@@@ ON )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@OO )@@G@@ LA,U A0,64 . $P ERROR CODE TO A0 @G@@@@ OP )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@OQ )@@G@@ . @]@@@@ . @^@@@@RER065* + 0 @G@@@@ OR )@@G@@ LA A0,RER065 . $P ADDR OF CALL TO A0 @G@@@@OS )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR OT )@@G@@@E@@@@ LA,U A0,65 . $P ERROR CODE TO A0 @G@@@@OU )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE OV )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERROW )@@G@@PRINT @]@@@@ . @^@@@@RER066* + 0 @G@@@@ LAOX )@@G@@ A0,RER066 . $P ADDR OF CALL TO A0 @G@@@@ OY )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@OZ )@@G@@ LA,U A0,66 . $P ERROR CODE TO A0 @G@@@@ PA )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@PB )@@G@@ . @]@@@@ . @^@@@@RER067* + 0 @G@@@@ PC )@@G@@ LA A0,RER067 . $P ADDR OF CALL TO A0 @G@@@@PD )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR PE )@@G@@@E@@@@ LA,U A0,67 . $P ERROR CODE TO A0 @G@@@@PF )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE PG )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPH )@@G@@PRINT @]@@@@ . @^@@@@RER068* + 0 @G@@@@ LAPI )@@G@@ A0,RER068 . $P ADDR OF CALL TO A0 @G@@@@ PJ )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@PK )@@G@@ LA,U A0,68 . $P ERROR CODE TO A0 @G@@@@ PL )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@PM )@@G@@ . @]@@@@ . @^@@@@RER069* + 0 @G@@@@ PN )@@G@@ LA A0,RER069 . $P ADDR OF CALL TO A0 @G@@@@PO )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR PP )@@G@@@E@@@@ LA,U A0,69 . $P ERROR CODE TO A0 @G@@@@PQ )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE PR )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPS )@@G@@PRINT @]@@@@ . @^@@@@RER070* + 0 @G@@@@ LAPT )@@G@@ A0,RER070 . $P ADDR OF CALL TO A0 @G@@@@ PU )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@PV )@@G@@ LA,U A0,70 . $P ERROR CODE TO A0 @G@@@@ PW )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@PX )@@G@@ . @]@@@@ . @^@@@@RER071* + 0 @G@@@@ PY )@@G@@ LA A0,RER071 . $P ADDR OF CALL TO A0 @G@@@@PZ )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR QA )@@G@@@E@@@@ LA,U A0,71 . $P ERROR CODE TO A0 @G@@@@QB )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE QC )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRQD )@@G@@PRINT @]@@@@ . @^@@@@RER072* + 0 @G@@@@ LAQE )@@G@@ A0,RER072 . $P ADDR OF CALL TO A0 @G@@@@ QF )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@QG )@@G@@ LA,U A0,72 . $P ERROR CODE TO A0 @G@@@@ QH )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@QI )@@G@@ . @]@@@@ . @^@@@@RER073* + 0 @G@@@@ QJ )@@G@@ LA A0,RER073 . $P ADDR OF CALL TO A0 @G@@@@QK )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR QL )@@G@@@E@@@@ LA,U A0,73 . $P ERROR CODE TO A0 @G@@@@QM )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE QN )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRQO )@@G@@PRINT @]@@@@ . @^@@@@RER074* + 0 @G@@@@ LAQP )@@G@@ A0,RER074 . $P ADDR OF CALL TO A0 @G@@@@ QQ )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@QR )@@G@@ LA,U A0,74 . $P ERROR CODE TO A0 @G@@@@ QS )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@QT )@@G@@ . @]@@@@ . @^@@@@RER075* + 0 @G@@@@ QU )@@G@@ LA A0,RER075 . $P ADDR OF CALL TO A0 @G@@@@QV )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR QW )@@G@@@E@@@@ LA,U A0,75 . $P ERROR CODE TO A0 @G@@@@QX )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE QY )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRQZ )@@G@@PRINT @]@@@@ . @^@@@@RER076* + 0 @G@@@@ LARA )@@G@@ A0,RER076 . $P ADDR OF CALL TO A0 @G@@@@ RB )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@RC )@@G@@ LA,U A0,76 . $P ERROR CODE TO A0 @G@@@@ RD )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@RE )@@G@@ . @]@@@@ . @^@@@@RER077* + 0 @G@@@@ RF )@@G@@ LA A0,RER077 . $P ADDR OF CALL TO A0 @G@@@@RG )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR RH )@@G@@@E@@@@ LA,U A0,77 . $P ERROR CODE TO A0 @G@@@@RI )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE RJ )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRRK )@@G@@PRINT @]@@@@ . @^@@@@RER078* + 0 @G@@@@ LARL )@@G@@ A0,RER078 . $P ADDR OF CALL TO A0 @G@@@@ RM )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@RN )@@G@@ LA,U A0,78 . $P ERROR CODE TO A0 @G@@@@ RO )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@RP )@@G@@ . @]@@@@ . @^@@@@RER079* + 0 @G@@@@ RQ )@@G@@ LA A0,RER079 . $P ADDR OF CALL TO A0 @G@@@@RR )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR RS )@@G@@@E@@@@ LA,U A0,79 . $P ERROR CODE TO A0 @G@@@@RT )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE RU )@@G@@@]@@@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRRV )@@G@@PRINT @]@@@@ . @^@@@@RER080* + 0 @G@@@@ LARW )@@G@@ A0,RER080 . $P ADDR OF CALL TO A0 @G@@@@ RX )@@G@@ SLJ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@RY )@@G@@ LA,U A0,80 . $P ERROR CODE TO A0 @G@@@@ RZ )@@G@@ SLJ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@SA )@@G@@ . @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT SB )@@G@@@]@@@@ . @^@@@@RER081* + 0 @G@@@@ LA SC )@@G@@ A0,RER081 . $P ADDR OF CALL TO A0 @G@@@@ SLSD )@@G@@J ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ SE )@@G@@ LA,U A0,81 . $P ERROR CODE TO A0 @G@@@@ SLSF )@@G@@J ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . SG )@@G@@ @]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@SH )@@G@@ . @^@@@@RER082* + 0 @G@@@@ LA A0,RSI )@@G@@ER082 . $P ADDR OF CALL TO A0 @G@@@@ SLJ SJ )@@G@@ ERLOCCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LASK )@@G@@,U A0,82 . $P ERROR CODE TO A0 @G@@@@ SLJ SL )@@G@@ ERRPRINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . SM )@@G@@@]@@@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . SN )@@G@@ @^@@@@RER083* + 0 @G@@@@ LA A0,RER083 SO )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOSP )@@G@@CCAL . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U SQ )@@G@@ A0,83 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPSR )@@G@@RINT . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@SS )@@G@@ . @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . ST )@@G@@@^@@@@RER084* + 0 @G@@@@ LA A0,RER084 SU )@@G@@ . $P ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL SV )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,8SW )@@G@@4 . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT SX )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . SY )@@G@@ @A@@@@ . PROGRAM WILL ERR OUT IN ERRPRINT @]@@@@ . @^@@@@SZ )@@G@@RER085* + 0 @G@@@@ LA A0,RER085 . $PTA )@@G@@ ADDR OF CALL TO A0 @G@@@@ SLJ ERLOCCAL TB )@@G@@ . $W ERLOCCAL GET ABS ADDR @E@@@@ LA,U A0,85 TC )@@G@@ . $P ERROR CODE TO A0 @G@@@@ SLJ ERRPRINT TD )@@G@@ . $W ERRPRINT PRINT ERROR CODE @]@@@@ . @]@@@@ . TE )@@G@@@]@@@@ . @]@@@@ . @]@@@@ . @C@@@@ERLOCCAL + TF )@@G@@ 0 . @C@@@@ AN,U A0,1 TG )@@G@@ . @G@@@@ SA A0,ABSERR . SAVE ABSTH )@@G@@OLUTE ADDRESS OF ERR @G@@@@ AN,U A0,RELOAD . CATI )@@G@@LCULATE RELATIVE ADDRESS @G@@@@ SA A0,RELERR TJ )@@G@@ . SAVE RELATIVE ADDRESS @C@@@@ E$DIT EDPKT TK )@@G@@ . @C@@@@ E$COPY 33,MSGABSERR . TL )@@G@@@A@@@@ E$OCTV ABSERR . @C@@@@ E$COPY 11,MTM )@@G@@SGRELERR . @C@@@@ E$OCTV RELERR . TN )@@G@@ @A@@@@ P$RINT (PF1 1,14,PRINT)@C@@@@ J TO )@@G@@ *ERLOCCAL . @]@@@@ . @]@@@@ . @]@@@@TP )@@G@@ . @C@@@@ERRPRINT + 0 . @C@@@@TQ )@@G@@ SA A0,ERRCODE . @C@@@@ E$DIT TR )@@G@@ EDPKT . @C@@@@ E$COPY 12,MSGERRCODE TS )@@G@@ . @C@@@@ E$DECV ERRCODE . @C@@@@TT )@@G@@ P$RINT (PF1 1,14,PRINT) . @^@@@@ ER TU )@@G@@ ERR$@]@@@@ . @]@@@@ . @]@@@@$(2) @C@@@@ERRCODTV )@@G@@E + 0 . @C@@@@ABSERR + 0 TW )@@G@@ . @C@@@@RELERR + 0 . TX )@@G@@ @C@@@@MSGABSERR 'RELOAD ERROR, ABSOLUTE LOCATION: ' @^@@@@MSGRELTY )@@G@@ERR ' RELATIVE: ' @A@@@@MSGERRCODE 'ERROR CODE: ' @^@@@@ TZ )@@G@@ END ___ROR CODE TO A0 @G@@@@ SLJ ERRPRINT UA )@@G@@ . $W ERRPRINT PR*[@@@@*SDFF*@[@@@[. @C@@@[. *UB )@@G@@***** SCAN ****** @[@@@[. @]@@@[ AXR$. @]@@@[$(1). UC )@@G@@ @]@@@[SCAN*. @]@@@[UNLOAD*. @]@@@ TZ TOPT@]@]@[ SLJ UD )@@G@@DEBUG$@#@ @] . SLJ DEBUG$ @#@@@ SLJ DEBUG$ @E@@@[ L UE )@@G@@ A3,C3 . $ ADDR OF C3 @G@@@[ AN,U UF )@@G@@ A3,9 . $ BEFORE FIRST C3 ENTRY @E@@@[ SZUG )@@G@@ A4 . $ ZERO A4 @]@@@[SCAN0. @G@@@[UH )@@G@@ A,U A3,9 . $ ADDRESS OF NEXT ENTRY IN C3 UI )@@G@@@G@@@[ TLE,T1 A4,3,A3 . $ SKIP IF NEW PG SIZE NOTUJ )@@G@@ > OLD@E@@@[ L,T1 A4,3,A3 . $ GET NEW PG SIZE UK )@@G@@@G@@@[ TZ,T3 0,A3 . $ SKIP IF LAST ENTRY UL )@@G@@ @E@@@[ J SCAN0 . $ CONTINUE UM )@@G@@@G@@@[ S A4,SCMAXPG . $ STORE MAX PAGE SIZE FORUN )@@G@@ AREAS@E@@@[ MSI,U A4,SCSPGS . $ LENGTH OF BUFFER UO )@@G@@@G@@@[ S,H1 A4,SCSPKT+8 . $ STORE IN VIA SET PKT UP )@@G@@ @G@@@[ L,H2 A3,C1 . $ LOAD ADDR & WDCNTUQ )@@G@@ FOR C1 @G@@@[ SZ A2 . $ ZERO INDEX UR )@@G@@REGISTER @E@@@[ S X11,SCSAVX11 . $ SAVE US )@@G@@X11 @]@@@[SCAN1. @G@@@[ L A4,,A3 UT )@@G@@ . $ GET FIRST WORD OF C1 ENTRY @G@@@[ S A4,SCRECORUU )@@G@@DS,A2 . $ STORE IN RECORD TABLE @G@@@[ S,S4 A2,SUV )@@G@@CRECORDS,A2 . $ STORE OFFSET IN ENTRY @E@@@[ L UW )@@G@@ A0,SCSNXT . $ SET TABLE LOCATION@G@@@[ S,T3 A0,SUX )@@G@@CRECORDS,A2 . $ STORE IN RTBL ENTRY @G@@@[ S,H2 UY )@@G@@ A3,STBL,A0 . $ STORE ADDR OF C1 ENTRY IN STBL@G@@@[ L UZ )@@G@@ X9,A0 . $ START OF THIS STBL ENTRY @G@@@[ VA )@@G@@ SZ STBL+1,A0 . $ ZERO SECOND WORD OF STBL @E@@@[VB )@@G@@ A,U A0,2 . $ INCREMENT @E@@@[ VC )@@G@@ S A0,SCSNXT . $ STORE OFFSET @E@@@[ L VD )@@G@@ A1,A3 . C1 TABLE ADDRESS @E@@@[ LXI,U VE )@@G@@ A1,1 . INCREMENT @G@@@[SCAN11 TN 1,*AVF )@@G@@1 . LOOK FOR MANUAL CONTROL WD @E@@@[ J VG )@@G@@ SCAN11 . NOT FOUND @E@@@[ L,T2 A5,,VH )@@G@@A1 . LOAD SET CODE @G@@@[ S,T1 A5,STBL,X9VI )@@G@@ . STORE IN FIRST WD OF STBL @G@@@[ AND A4,SVJ )@@G@@CSMSK . $ MASK ALL BUT SCAN SET BIT @G@@@[ TNZ VK )@@G@@ A5 . $ SKIP IF SETS TO SCAN @E@@@[ J VL )@@G@@ SCAN19 . $ CONTINUE @E@@@[ L,U VM )@@G@@ A4,1 . $ FIRST SET TO SCAN @]@@@[SCAN12. @G@@@[ VN )@@G@@ L A1,A3 . $ ADDRESS OF C1 ENTRY @G@@@[VO )@@G@@ A,U A1,1 . $ ADDRESS OF FIRST SET WORD VP )@@G@@@G@@@[SCAN125 TP 0,A1 . $ SKIP IF NOT MANUAL WORD VQ )@@G@@ @E@@@[ J SCAN13 . $ MANUAL WORD VR )@@G@@@E@@@[ TNE,S1 A4,,A1 . $ SKIP IF NO MATCH @C@@@[VS )@@G@@ J SCAN16 . $ MATCH @E@@@[ A,U VT )@@G@@ A1,1 . $ NEXT WORD IN C1 @E@@@[ J SCANVU )@@G@@125 . $ CONTINUE @]@@@[SCAN13. @G@@@[ S VV )@@G@@ A1,STBL+1,X9 . $ STORE ADDRESS OF MANUAL WORD @]@@@[SCAN15VW )@@G@@. @G@@@[ S A0,SCSNXT . $ NEXT OFFSET INTO SVX )@@G@@TBL @G@@@[ AN A0,X9 . $ WORDS IN THIVY )@@G@@S STBL ENTRY @E@@@[ AN,U A0,2 . $ SETS TVZ )@@G@@O SCAN @G@@@[ S,H1 A0,STBL+1,X9 . $ NUMBER OF SEWA )@@G@@TS IN STBL @C@@@[ J SCAN19 . CONTINUEWB )@@G@@@]@@@[SCAN16. @G@@@[ S A1,STBL,A0 . $ STORE WC )@@G@@SET ADDRESS IN STBL @G@@@[ L,U A5,SCSBNO . $ WD )@@G@@NUMBER OF BUFFERS TO ALLOCATE @C@@@[ AN,U A5,1 WE )@@G@@ . $ LESS 1@E@@@[ L X11,LAST$D . $ LAST DBANK AWF )@@G@@DDRESS@G@@@[ A,U X11,1 . $ FIRST BUFFER ADDREWG )@@G@@SS @G@@@[ L X10,SCSBNX . $ NEXT BUFFER WH )@@G@@CNTL WD @E@@@[ S,T1 X10,STBL,A0 . $ STORE WI )@@G@@IN STBL @E@@@[ L A1,SCMAXPG . $ MAXIMUM PAGEWJ )@@G@@ SIZE @G@@@[ MSI,U A1,SCSPGS . $ SIZE OF EACH SET BWK )@@G@@UFFER @]@@@[SCAN17. @G@@@[ S X11,SCSBUF,X10 WL )@@G@@ . $ STORE BUFFER ADDR IN CNTL WD @E@@@[ SZ SCSBUF+1,XWM )@@G@@10 . $ ZERO WD 2 @G@@@[ A X11,A1 WN )@@G@@ . $ LOCATION OF NEXT BUFFER @E@@@[ A,U X10,2 WO )@@G@@ . $ INCREMENT @E@@@[ JGD A5,SCAN17 WP )@@G@@ . $ CONTINUE @E@@@[ AN,U X11,1 . $ WQ )@@G@@LAST DBANK ADDRESS@E@@@[ S X11,LAST$D . $ STORE WR )@@G@@IT @G@@@[ S X10,SCSBNX . $ NEXT BUFFER WS )@@G@@TO ALLOC @G@@@[ A,U A4,1 . $ NEXT SWT )@@G@@ET TO LOOK FOR @G@@@[ A,U A0,1 . $ WU )@@G@@INCRMENT SET TABLE INDEX @E@@@[ J SCAN12 WV )@@G@@ . $ CONTINUE @]@@@[SCAN19. @E@@@[ A,U A2,1WW )@@G@@ . $ INCREMENT A2 @G@@@[ L,T3 A4,,A3 WX )@@G@@ . $ LOAD LINK TO NEXT ENTRY @G@@@[ A A3,AWY )@@G@@4 . $ ADDRESS OF NEXT ENTRY @G@@@[ TZ WZ )@@G@@ A4 . $ SKIP IF NO MORE ENTRIES @G@@@[ J XA )@@G@@ SCAN1 . $ CONTINUE CREATING RECORD TBL @G@@@[ XB )@@G@@ S A2,SCREPEAT . $ STORE NUMBER OF RECORDS @]@@@[XC )@@G@@. @A@@@[. GET BUFFER SPACE REQUIRED FOR SCAN@]@@@[. XD )@@G@@@G@@@[ L A1,LAST$D . $ LOAD LAST DBANK ADDRESSXE )@@G@@ @E@@@[ A,U A1,1 . $ INCREMENT IT BY 1XF )@@G@@@I@@@[ S A1,C2 . $ STORE ADDRESS OF BUFFERXG )@@G@@ FOR C2 @G@@@[ S A1,SCC2LOC . $ STOREXH )@@G@@ NEXT LOCATION IN C2 BUF@I@@@[ A,U A1,SCC2BUFSZ . $ XI )@@G@@ CALCULATE ADDRESS OF BUFFER FOR C4 @G@@@[ S A1,CXJ )@@G@@4 . $ ADDRESS OF BUFFER FOR C4 @G@@@[ S XK )@@G@@ A1,SCC4LOC . $ STORE NEXT LOCATION IN C4 BUF@G@@@[ A,XL )@@G@@U A1,SCC4BUFSZ . $ ADDRESS OF DATA BASE BUFFER 1@E@@@[ XM )@@G@@ S A1,SCDBUF1 . $ STORE IT @G@@@[ S,XN )@@G@@H2 A1,SCPKT+7 . $ STORE IT AS CURRENT BUFFER @G@@@[ XO )@@G@@ L A0,SCMAXPG . $ GET SIZE OF LARGEST PAGE @G@@@[XP )@@G@@ MSI,U A0,SCDBPGS . $ MULTIPLY BY PGS IN BUFFER XQ )@@G@@@G@@@[ S,H1 A0,SCPKT+8 . $ STORE BUFFER LENGTH XR )@@G@@ @G@@@[ A A1,A0 . $ CALCULATE ADDRESSXS )@@G@@ OF BUFFER 2@E@@@[ S A1,SCDBUF2 . $ STORE IT XT )@@G@@ @G@@@[ A A0,A1 . $ CALCULATE LAST DBXU )@@G@@ANK ADDRESS @G@@@[ L,U A2,SCFPNO . $ NO. OF PGS XV )@@G@@IN FOREIGN PG BUF @E@@@[ LSSL A2,1 . $ MULTIPXW )@@G@@LY BY 2 @E@@@[ AN,U A2,2 . $ LESS 2 XX )@@G@@ @E@@@[ LXI A2,(-2) . $ INCRMENT = -2 XY )@@G@@@E@@@[ L A1,SCMAXPG . $ MAXIMUM PAGE SIZE@]@@@[XZ )@@G@@SCAN25. @I@@@[ S,H2 A0,SCFPTBL+1,A2 . $ STORE FOREIYA )@@G@@GN PAGE BUFFER ADDR @E@@@[ A A0,A1 YB )@@G@@ . $ NEXT BUFFER ADDR @G@@@[ JMGI A2,SCAN25 . $ YC )@@G@@ JP IF MORE BUFFERS @G@@@[ S,H1 A1,SCFDBPKT+8 YD )@@G@@ . $ STORE SIZE OF BUFFER IN PKT @E@@@[ S A0,LAST$D YE )@@G@@ . $ STORE IT @E@@@[ ER MCORE$ YF )@@G@@ . $ GO GET THE CORE @G@@@[ L,H2 A3,C3 . $ YG )@@G@@ LOCATION OF C3 TABLE @G@@@[ S A3,SCAREA YH )@@G@@ . $ STORE AS CURRENT AREA ENTRY @]@@@[. @E@@@[. GET NEXT AYI )@@G@@REA TABLE(C3) ENTRY AND SCAN FOR RECORDS @^@@@[. REGISTER USAGE: YJ )@@G@@ @C@@@[. X9 - LOCATION OF CURRENT SLOT WORD @C@@@[. YK )@@G@@X10 - LOCATION OF CURRENT RECORD @A@@@[. A0 - ADDRESS OF CUYL )@@G@@RRENT PAGE @^@@@[. A1 - AREA CODE @^@@@[. A2 - PAGE NUMBER YM )@@G@@@A@@@[. A3 - CURRENT SLOT NUMBER @]@@@[. @]@@@[SCAN3.YN )@@G@@ @G@@@[ L A2,SCC2LOC . $ LOAD NEXT ADDRESSYO )@@G@@ IN C2 @I@@@[ AN A2,SCC2AREA . $ CALCULATE DYP )@@G@@ISP FROM C2 AREA WD @C@@@[ L,H2 X8,SCC2AREA YQ )@@G@@ . $ @G@@@[ S,T3 A2,,X8 . $ STORE IN NEYR )@@G@@XT FIELD @G@@@[ AN,U A2,3 . $ CALCUYS )@@G@@LATE NUMBER OF WDS @G@@@[ S,T2 A2,,X8 . $ YT )@@G@@ STORE NUMBER OF C2 ENTRIES @G@@@[ L A2,SCC2LOC YU )@@G@@ . $ NEXT LOCATION IN C2 @G@@@[ S A2,SCC2AREYV )@@G@@A . $ STORE LOCATION OF AREA WD @E@@@[ L A1,,YW )@@G@@A3 . $ GET AREA CODE @C@@@[ SSL A1,24 YX )@@G@@ . @E@@@[ S,T3 A1,SCAREACD . $ STOREYY )@@G@@ AREA CODE @G@@@[ S,H1 A1,SCARPG . $ STORE IN BUFYZ )@@G@@FER CNTL WD @G@@@[ S,H1 A1,SCARPG+1 . $ STORE ZA )@@G@@IN BUFFER CNTL WD2 @E@@@[ S,T1 A1,,A2 . $ ZB )@@G@@STORE IN C2 @E@@@[ DL A4,1,A3 . $ LOAD ZC )@@G@@AREA NAME @G@@@[ DS A4,SCPKT . $ STORE IN PAZD )@@G@@CKET FOR DBAM @E@@@[ DS A4,1,A2 . $ STOREZE )@@G@@ IN C2 @G@@@[ A,U A2,3 . $ INCREMENT LZF )@@G@@OCATION @E@@@[ S A2,SCC2LOC . $ STOREZG )@@G@@ IT BACK @E@@@[ TNZ,S1 8,A3 . $ SKIP IF PATCZH )@@G@@H ONLY@E@@@[ J SCAN34 . $ AREA TO BE SCANNEDZI )@@G@@@G@@@[ L,H1 A4,4,A3 . $ NO. ALLOCATED PAGES ZJ )@@G@@ @G@@@[ A A4,(01000000) . $ BEGINNING AT PAGE ZK )@@G@@1 @E@@@[ S A4,,A2 . $ STORE IT IN ZL )@@G@@C2 @G@@@[ A,U A2,1 . $ INCREMENT NEXT LOCZM )@@G@@ATION IN C2 @E@@@[ S A2,SCC2LOC . $ STORE IT ZN )@@G@@ @E@@@[ J SCAN75 . $ CONTINUE ZO )@@G@@@]@@@[SCAN34. @G@@@[ L A2,SCC4LOC . $ LOAD ZP )@@G@@NEXT ADDRESS IN C4 @I@@@[ AN A2,SCC4AREA . $ ZQ )@@G@@ CALCULATE DISP FROM C4 AREA WD @C@@@[ L,H2 X8,SZR )@@G@@CC4AREA . $ @G@@@[ S,T3 A2,,X8 . $ ZS )@@G@@ STORE IN NEXT FIELD @G@@@[ AN,U A2,3 ZT )@@G@@ . $ CALCULATE NUMBER OF WDS @G@@@[ S,T2 A2,,X8 ZU )@@G@@ . $ STORE NUMBER OF C4 ENTRIES @G@@@[ L A2,SZV )@@G@@CC4LOC . $ LOCATION OF NEXT WORD IN C4 @G@@@[ S ZW )@@G@@ A2,SCC4AREA . $ STORE LOCATION OF AREA WD @G@@@[ S,ZX )@@G@@T1 A1,,A2 . $ STORE ENTRY IN C4 FOR AREA @E@@@[ ZY )@@G@@ DS A4,1,A2 . $ STORE IN C2 @G@@@[ A,ZZ )@@G@@U A2,3 . $ INCREMENT LOCATION @E@@@[ AA )@@G@@ S A2,SCC4LOC . $ STORE IT BACK @E@@@[ L,AB )@@G@@U X10,1 . $ START PAGE @E@@@[ S,H2 AC )@@G@@ X10,SCPKT+8 . $ STORE IT IN PKT @E@@@[ AN,U X10,AD )@@G@@1 . $ START PAGE - 1 @G@@@[ S,H2 X10,SCARPGAE )@@G@@ . $ STORE IN BUFFER CNTL WD @G@@@[ A,U X10,AF )@@G@@SCDBPGS . $ LAST PAGE IN BUFFER @G@@@[ S,H2 AG )@@G@@ X10,SCARPG+1 . $ STORE IN BUFFER CNTL WD2 @E@@@[ L,AH )@@G@@U X10,020 . $ READ AND WAIT @E@@@[ S,S2 AI )@@G@@ X10,SCPKT+3 . $ FUNCTION CODE @E@@@[ L,U X10,AJ )@@G@@SCPKT . $ PACKET ADDRESS @G@@@[ LMJ X11,DB$AM AK )@@G@@ . $ READ DATA BASE PAGES @E@@@[ L,H2 A0,SAL )@@G@@CPAGE . $ GET PAGE SIZE @G@@@[ MSI,U A0,SCDBPGSAM )@@G@@ . $ CALCULATE BUFFER SIZE @G@@@[ S A0,SAN )@@G@@CDBBUFSZ . $ STORE AS CURRENT BUFFER SIZE @G@@@[ L,H2 AO )@@G@@ A0,SCPKT+7 . $ GET ADDRESS OF FIRST PAGE @E@@@[ L AP )@@G@@ A1,SCAREACD . $ LOAD AREA CODE @E@@@[ L,U AQ )@@G@@ A2,1 . $ FIRST PAGE @]@@@[SCAN4. @G@@@[ AR )@@G@@ TNZ,H2 SCPKT+3 . $ SKIP IF WORDS TRANSFERRED @G@@@[AS )@@G@@ J SCDBERR . $ NON ZERO RETURN FROM READ AT )@@G@@@E@@@[ L,U A0,021 . $ READ AND RETURN @E@@@[AU )@@G@@ S,S2 A0,SCPKT+3 . $ FUNCTION CODE @E@@@[ AV )@@G@@ L,H2 A0,SCPKT+7 . $ BUFFER ADDRESS @G@@@[ S AW )@@G@@ A0,SCDBUF . $ STORE AS CURRENT BUFFER @G@@@[ AX )@@G@@ L A0,SCDBUF1 . $ ADDRESS OF BUFFER 1 @G@@@[AY )@@G@@ TNE A0,SCDBUF . $ SKIP IF CURRENT BUFFER NOT 1 AZ )@@G@@@G@@@[ L A0,SCDBUF2 . $ ADDRESS OF BUFFER 2 BA )@@G@@ @E@@@[ S,H2 A0,SCPKT+7 . $ STORE IN PACKET BB )@@G@@@E@@@[ L A0,SCPKT+8 . $ START PAGE @E@@@[BC )@@G@@ S A0,SCSTPG . $ STORE IT @G@@@[ BD )@@G@@ A,U A0,SCDBPGS . $ FIRST PAGE OF NEXT BLOCK @E@@@[BE )@@G@@ S,H2 A0,SCPKT+8 . $ STORE IT IN PKT @E@@@[ BF )@@G@@ L,U X10,SCPKT . $ PACKET ADDRESS @G@@@[ L,BG )@@G@@H2 A0,SCDBUF . $ GET ADDRESS OF FIRST PAGE @G@@@[ BH )@@G@@ L X8,A0 . $ ADDRESS OF FIRST PAGE @G@@@[BI )@@G@@ A,H2 X8,SCPKT+3 . $ END OF PAGES IN BUFFER BJ )@@G@@@E@@@[ S X8,SCENDPGADR . $ STORE IT @C@@@[BK )@@G@@ S X8,SCSSVX8 . $ SAVE @C@@@[ S BL )@@G@@ X9,SCSSVX9 . $ SAVE @C@@@[ S X10,SCSSVX10 BM )@@G@@ . $ SAVE @C@@@[ S X11,SCSSVX11 . $ SAVE @C@@@[BN )@@G@@ DS A0,SCSSVA0 . $ SAVE @C@@@[ DS BO )@@G@@ A2,SCSSVA2 . $ SAVE @C@@@[ DS A4,SCSSVA4 BP )@@G@@ . $ SAVE @C@@@[ LMJ X11,DB$AM . $ READ @E@@@[BQ )@@G@@ L X8,SCSSVX8 . $ RESTORE @E@@@[ BR )@@G@@ L X9,SCSSVX9 . $ RESTORE @E@@@[ L BS )@@G@@ X10,SCSSVX10 . $ RESTORE @E@@@[ L BT )@@G@@ X11,SCSSVX11 . $ RESTORE @E@@@[ DL A0,SBU )@@G@@CSSVA0 . $ RESTORE @E@@@[ DL A2,SCSSVA2BV )@@G@@ . $ RESTORE @E@@@[ DL A4,SCSSVA4 BW )@@G@@ . $ RESTORE @E@@@[ L,H2 A2,1,A0 . $ BX )@@G@@ LOAD PAGE NUMBER @E@@@[ L A1,SCAREACD . $ LOAD BY )@@G@@AREA CODE @G@@@[SCAN41 TNZ,H1 3,A0 . $ SKIP IF SLOBZ )@@G@@TS ALLOCATED @G@@@[ J SCENDPG . $ NO SLCA )@@G@@OTS ALLOCATED ON PG @E@@@[ L,H1 X9,2,A0 . $ CB )@@G@@ GET PAGE SIZE @G@@@[ AN,U X9,1 . $ DISP CC )@@G@@TO END OF PAGE @G@@@[ A X9,A0 . $ CD )@@G@@ LOCATION OF END OF PAGE @I@@@[ L,H1 X10,6,A0 CE )@@G@@ . $ LOAD NUMBER OF CALC CHAINS AT END @G@@@[ AN CF )@@G@@ X9,X10 . $ LOCATION OF FIRST SLOT @E@@@[ L,CG )@@G@@U A3,1 . $ CURRENT SLOT @]@@@[SCAN5. @G@@@[CH )@@G@@ TP 0,X9 . $ SKIP IF SLOT IN USE CI )@@G@@@E@@@[ J SCAN65 . $ SLOT NOT IN USE @G@@@[CJ )@@G@@ L,S1 A4,,X9 . $ GET DESC FIELD FROM SLOT CK )@@G@@@E@@@[ AND,U A4,010 . $ ZERO MISC BITS @I@@@[CL )@@G@@ TZ A5 . $ SKIP IF RECORD NOT ON FOREIGNCM )@@G@@ PG @G@@@[ J SCFOREIGN . $ RECORD ON FCN )@@G@@OREIGN PG @G@@@[ L,H2 X10,,X9 . $ DISPLCO )@@G@@ACEMENT TO RECORD @G@@@[ A X10,A0 . $ CP )@@G@@ LOCATION OF RECORD @G@@@[ L,S3 A4,,X10 CQ )@@G@@ . $ LOAD DESC FIELD OF RECORD @G@@@[ AND,U A4,010 CR )@@G@@ . $ ZERO ALL BUT VACANCY BIT @G@@@[ TNZ A5 CS )@@G@@ . $ SKIP IF A RECORD ENTRY @E@@@[ J CT )@@G@@ SCAN65 . $ A VACANCY ENTRY @E@@@[ L,T1 A4,,CU )@@G@@X10 . $ LOAD RCODE @G@@@[ TNE,T1 A4,SCRECLACV )@@G@@ST . $ SKIP IF DIFFERENT THAN LAST @G@@@[ J SCSACW )@@G@@MEREC . $ SAME AS LAST RECORD @G@@@[ L CX )@@G@@ R1,SCREPEAT . $ COUNTER FOR SEARCH @G@@@[ L CY )@@G@@ X11,SCSEARCH . $ INDEX REGISTER FOR SEARCH @G@@@[ CZ )@@G@@ SE,T1 A4,SCRECORDS,*X11 . $ SEARCH RECORD TABLE @G@@@[DA )@@G@@ J SCAN65 . $ NOT IN RECORD TABLE DB )@@G@@@]@@@[. @G@@@[. RECORD WAS FOUND IN TABLE. X11 CONTAINS OFFSEDC )@@G@@T TO RECORD ENTRY. @]@@@[. @G@@@[ AN,U X11,DD )@@G@@1 . $ OFFSET INTO RECORD TABLE @G@@@[ L DE )@@G@@ A4,SCRECORDS,X11 . $ GET RECORD TABLE ENTRY @G@@@[ S DF )@@G@@ A4,SCRECLAST . $ STORE AS LAST ENTRY FOUND @I@@@[SCAN55DG )@@G@@ L A5,SCRECSTAT,X11 . $ GET NUMBER OF RECORDS THIS CODE DH )@@G@@ @E@@@[ A,U A5,1 . $ INCREMENT IT DI )@@G@@@E@@@[ S A5,SCRECSTAT,X11 . $ STORE IT BACK @G@@@[DJ )@@G@@ L,S3 A4,SCRECLAST . $ LOAD RECORD TYPE CODE DK )@@G@@@G@@@[ AND,U A4,1 . $ ZERO ALL BUT OBJECT BITDL )@@G@@ @G@@@[ TZ A5 . $ SKIP IF NOT AN OBDM )@@G@@JECT RECORD @E@@@[ J SCOBJ . $ OBJECT RECODN )@@G@@RD @I@@@[ S A4,SCC2THISPG . $ STORE NON OBJECT DO )@@G@@RECORD THIS PAGE @]@@@[. @E@@@[. CHECK WHETHER THERE ARDP )@@G@@E SETS TO SCAN OFF THIS RECORD @]@@@[. @]@@@[SCAN6. DQ )@@G@@@E@@@[ L,S1 A4,,X9 . $ DESC FROM SLOT @G@@@[DR )@@G@@ AND,U A4,020 . $ ZERO ALL BUT FOREIGN RECORD DS )@@G@@@G@@@[ TZ A5 . $ SKIP IF NOT A FOREIGN RDT )@@G@@EC @G@@@[ J SCAN65 . $ FOREIGN RECORD CONDU )@@G@@TINUE @E@@@[ L A4,SCRECLAST . $ RTBL ENTRY DV )@@G@@ @G@^@[ AND A4,SCSMSK . $ CHECK FOR SETS TO DW )@@G@@SCAN @G@@@^ AND A4,SCSMSK1 . $ CHECK FOR SEDX )@@G@@TS TO SCAN @G@@@[ A,H1 A3,6,A0 . $ NUMBERDY )@@G@@ OF THIS SLOT @G@^@[ TZ A5 . $ DZ )@@G@@SKIP IF NO SETS TO SCAN @G@@@^ TNE A5,SCSMSK EA )@@G@@ . SKIP IF SETS NOT TO BE SCANNED @E@@@[ LMJ X11,SSET EB )@@G@@ . $ SCAN VIA SET @I@@@[ AN,H1 A3,6,A0 EC )@@G@@ . $ NUMBER OF THIS SLOT - CALC CHNS @]@@@[. @E@@@[ED )@@G@@. IF MORE RECORDS ON THIS PAGE PREPARE TO CHECK THEM @]@@@[. EE )@@G@@ @]@@@[SCAN65. @G@@@[ TNE,H1 A3,3,A0 . $ EF )@@G@@ SKIP IF MORE SLOTS @E@@@[ J SCENDPG EG )@@G@@ . $ JP END OF PAGE @E@@@[ A,U A3,1 . $ EH )@@G@@ INCREMENT SLOT @G@@@[ AN,U X9,1 . $ LOCATEI )@@G@@ION OF NEXT SLOT @E@@@[ J SCAN5 . $ EJ )@@G@@ CONTINUE @]@@@[. @E@@@[. NO MORE PAGES IN THIS AREA. EK )@@G@@ PREPARE TO SCAN NEXT AREA. @]@@@[. @]@@@[SCAN7. @G@@@[EL )@@G@@ SZ SCENDAREA . $ CLEAR END OF AREA FLAG EM )@@G@@@G@@@[ L,U X10,SCC2LOC . $ LOCATION OF NEXT C2 WD EN )@@G@@ @G@@@[ LMJ X11,SCBREAK . $ CREATE LAST C2 ENEO )@@G@@TRY @G@@@[ L,U X10,SCC4LOC . $ LOCATION OFEP )@@G@@ NEXT C4 WD @G@@@[ LMJ X11,SCBREAK . $ CREATEQ )@@G@@E LAST C4 ENTRY @G@@@[SCAN75 TNZ,T3 *SCAREA . $ ER )@@G@@ SKIP IF MORE AREAS TO SCAN @G@@@[ J SCAN8 ES )@@G@@ . $ NO MORE AREAS TO SCAN @E@@@[ L A3,SCMINUSET )@@G@@1000 . $ LOAD MINUS 1000 @G@@@[ S A3,SCC2HI EU )@@G@@ . $ STORE AS HIGH VALUE FOR C2 @G@@@[ S A3,SCC4HI EV )@@G@@ . $ STORE AS HIGH VALUE FOR C4 @E@@@[ L,T3 A3,*EW )@@G@@SCAREA . $ LOAD LINK TO NEXT@G@@@[ A A3,SCAREA EX )@@G@@ . $ ADDRESS OF NEXT AREA ENTRY @E@@@[ S A3,SEY )@@G@@CAREA . $ STORE IT @E@@@[ J SCAN3 EZ )@@G@@ . $ CONTINUE SCAN @]@@@[. @A@@@[. NO MORE AREAS. FA )@@G@@PREPARE TO RETURN.@]@@@[. @]@@@[SCAN8. @G@@@[ L FB )@@G@@ A2,SCC2LOC . $ LOAD NEXT ADDRESS IN C2 @I@@@[ FC )@@G@@ AN A2,SCC2AREA . $ CALCULATE DISP FROM C2 AREA WD FD )@@G@@ @G@@@[ AN,U A2,3 . $ SUBTRACT WDS IN HFE )@@G@@EADER @C@@@[ L X8,SCC2AREA . @G@@@[FF )@@G@@ S,T2 A2,,X8 . $ STORE NUMBER OF C2 ENTRIES FG )@@G@@@E@@@[ SZ,T3 ,X8 . $ ZERO NEXT FIELD @G@@@[FH )@@G@@ L A2,SCC4LOC . $ LOAD NEXT ADDRESS IN C4 FI )@@G@@@I@@@[ AN A2,SCC4AREA . $ CALCULATE DISP FROM C4 FJ )@@G@@AREA WD @G@@@[ AN,U A2,3 . $ SUBTRFK )@@G@@ACT WDS IN HEADER @C@@@[ L X8,SCC4AREA . FL )@@G@@ @G@@@[ S,T2 A2,,X8 . $ STORE NUMBER OF CFM )@@G@@4 ENTRIES @E@@@[ SZ,T3 ,X8 . $ ZERO NEXT FFN )@@G@@IELD @G@@@[ L A2,SCC2LOC . $ LOAD NEXT LOCATIOFO )@@G@@N IN C2 @G@@@[ L,H2 A3,C2 . $ LOAD START FP )@@G@@OF C2 TABLE @I@@@[ AN A2,A3 . $ CALCUFQ )@@G@@LATE NUMBER OF WORDS IN C2 @E@@@[ S,H1 A2,C2 FR )@@G@@ . $ STORE IT @G@@@[ L A2,SCC4LOC FS )@@G@@ . $ LOAD NEXT LOCATION IN C4 @G@@@[ L,H2 A3,C4 FT )@@G@@ . $ LOAD START OF C4 TABLE @I@@@[ AN A2,AFU )@@G@@3 . $ CALCULATE NUMBER OF WORDS IN C4 @E@@@[ FV )@@G@@ S,H1 A2,C4 . $ STORE IT @I@@@[ TZFW )@@G@@ SCOBJUNL . $ SKIP IF THIS WAS NOT SCAN UNLOAD FX )@@G@@@E@@@[ LMJ X11,UNLF . $ GO FLUSH BUFFERS @E@@@[FY )@@G@@ J *SCSAVX11 . $ RETURN @]@@@[. FZ )@@G@@ @C@@@[. END OF PAGE. SETUP TO SCAN NEXT PAGE. @]@@@[. GA )@@G@@ @]@@@[SCENDPG. @G@@@[ TNZ SCC2THISPG . $ GB )@@G@@ SKIP IF C2 ENTRY FOR THIS PG @E@@@[ J SCENDPG1 GC )@@G@@ . $ JP TO CHECK C4 @G@@@[ L,U A4,GAP . $ GD )@@G@@ INTERVAL BREAK VALUE @I@@@[ L,U X10,SCC2LOC GE )@@G@@ . $ NEXT LOCATION IN C2 WORD ADDRESS @E@@@[ L GF )@@G@@ A5,A2 . $ PAGE NUMBER @E@@@[ AN A5,SGG )@@G@@CC2HI . $ CURRENT INTERVAL @E@@@[ TLE A4,A5 GH )@@G@@ . $ SKIP IF NO BREAK @C@@@[ LMJ X11,SCBREAK GI )@@G@@ . $ BREAK@G@@@[ S A2,SCC2HI . $ STORE NEW HGJ )@@G@@I VALUE @E@@@[ SZ SCC2THISPG . $ ZERO GK )@@G@@FLAG @]@@@[SCENDPG1. @G@@@[ TNZ SCC4THISPG GL )@@G@@ . $ SKIP IF C4 ENTRY THIS PG @E@@@[ J SCENDPG2 GM )@@G@@ . $ CONTINUE @G@@@[ L,U A4,GAP GN )@@G@@ . $ LOAD BREAK INTERVAL @E@@@[ L A5,A2 GO )@@G@@ . $ PAGE NUMBER @E@@@[ AN A5,SCC4HI GP )@@G@@ . $ CURRENT INTERVAL @G@@@[ L,U X10,SCC4LOC . $ GQ )@@G@@ NEXT LOCATION IN C4 WORD ADDR@E@@@[ TLE A4,A5 GR )@@G@@ . $ SKIP IF NO BREAK @C@@@[ LMJ X11,SCBREAK . $ GS )@@G@@ BREAK@G@@@[ S A2,SCC4HI . $ STORE NEW HI VALUGT )@@G@@E @E@@@[ SZ SCC4THISPG . $ ZERO FLAG GU )@@G@@ @G@@@[SCENDPG2 A A0,SCPAGE . $ ADDRESS OF NEXT PGV )@@G@@AGE @G@@@[ A,U A2,1 . $ INCREMENT PGW )@@G@@AGE NUMBER @G@@@[ TE A0,SCENDPGADR . $ SKIP GX )@@G@@IF NO PGS IN BUFFER @E@@@[ J SCAN41 . $ GY )@@G@@ CONTINUE @G@@@[ TZ SCENDAREA . $ SKIP GZ )@@G@@IF MORE PGS IN AREA @G@@@[ J SCAN7 . $ HA )@@G@@ NO MORE PGS IN AREA @E@@@[ TP SCPKT+3 HB )@@G@@ . $ SKIP IF I/O DONE @E@@@[ ER WAIT$ . $ HC )@@G@@ELSE WAIT @G@@@[ L,H2 A0,SCPKT+8 . $ START HD )@@G@@PAGE OF BUFFER @E@@@[ AN,U A0,1 . $ HE )@@G@@START PAGE - 1 @G@@@[ S,H2 A0,SCARPG . $ STORE HF )@@G@@IN CNTL WD FOR MAIN BUF @E@@@[ A,U A0,SCDBPGS . $ HG )@@G@@LAST PG IN BUFFER @E@@@[ S,H2 A0,SCARPG+1 . $ STORE HH )@@G@@IN CNTL WD2 @E@@@[ J SCAN4 . $ CONTINUE SCHI )@@G@@AN @]@@@[. @C@@@[. A BREAK HAS OCCURRED. START NEW INTERVAHJ )@@G@@L. @]@@@[. @]@@@[SCBREAK. @G@@@[ TP 2,X1HK )@@G@@0 . $ SKIP IF NOT FIRST INT @E@@@[ J HL )@@G@@ SCBREAK1 . $ FIRST INTERVAL @G@@@[ DL A4,1HM )@@G@@,X10 . $ LOAD LOW AND HIGH PAGE @C@@@[ L HN )@@G@@ X8,,X10 . @G@@@[ S,H1 A4,0,X8 HO )@@G@@ . $ STORE IN EITHER C2 OR C4 @E@@@[ AN A5,A4 HP )@@G@@ . $ HIGH - LOW @E@@@[ A,U A5,1 HQ )@@G@@ . $ PAGES IN INTERVAL@I@@@[ S,H2 A5,0,X8 . $ HR )@@G@@ STORE NUMB OF PAGES IN C2 OR C4 @G@@@[ L A5,,HS )@@G@@X10 . $ LOAD ADDRESS OF THIS C ENTRY @E@@@[ A,U HT )@@G@@ A5,1 . $ INCREMENT IT @E@@@[ S A5,,HU )@@G@@X10 . $ STORE IT BACK @G@@@[SCBREAK1 S A2,1,X10 HV )@@G@@ . $ STORE NEW LOW VALUE @E@@@[ J 0,X1HW )@@G@@1 . $ RETURN @]@@@[. @A@@@[. AN OBJECT HX )@@G@@RECORD HAS BEEN FOUND. @]@@@[. @]@@@[SCOBJ. @G@@@[ HY )@@G@@ S A5,SCC4THISPG . $ STORE OBJECT RECORD THIS PG @G@@@[HZ )@@G@@ L,S1 A4,,X9 . $ LOAD DESC FIELD FROM SLOT IA )@@G@@@E@@@[ AND,U A4,020 . $ ZERO MISC BITS @I@@@[IB )@@G@@ TZ A5 . $ SKIP IF THIS RECORD NOT FOREIIC )@@G@@GN @G@@@[ J SCAN65 . $ RECORD FOREID )@@G@@IGN TO PAGE @G@@@[ TNZ SCOBJUNL . $ SKIP IIE )@@G@@F UNLOAD OPTION @E@@@[ J SCAN6 . $ IF )@@G@@CONTINUE @E@@@[ L,S3 A4,SCRECLAST . $ GET RTIG )@@G@@YPE @G@@@[ SSL A4,5 . $ GET UNLOAD VIH )@@G@@IA SET BIT @I@@@[ TZ A4 . $ SKIP III )@@G@@F RECORD NOT UNLOADED VIA SET @G@@@[ J SCAN65 IJ )@@G@@ . $ CONTINUE FOR UNLOAD VIA SET @C@@@[ L,S3 A4,SIK )@@G@@CRECLAST . RTYPE @E@@@[ AND,U A4,010 . 0 IL )@@G@@IF NOT DIRECT @E@@@[ S A5,SCDIRECT . STORE ITIM )@@G@@ FOR UNLOAD @E@@@[ LMJ X11,UNL . $ UNLOAD IT IN )@@G@@ @E@@@[ J SCAN6 . $ CONTINUE IO )@@G@@@]@@@[. @A@@@[. SAME RECORD FOUND AS LAST TIME @]@@@[. IP )@@G@@ @]@@@[SCSAMEREC. @G@@@[ L,S4 X11,SCRECLAST . $ IQ )@@G@@ POSITION IN RECORD TABLE @E@@@[ J SCAN55 IR )@@G@@ . $ CONTINUE @]@@@[. @E@@@[. NON ZERO STATUS RETURNIS )@@G@@ED FROM DATA BASE ACCESS METHOD @]@@@[. @]@@@[SCDBERR. IT )@@G@@@C@@@[ L,S1 A5,SCPKT+3 . $ STATUS@E@@@[ TNIU )@@G@@E,U A5,022 . $ SKIP IF NOT AN 022@E@@@[ J IV )@@G@@ SCAN7 . $ SCAN NEXT AREA @E@@@[ L,U X10,IW )@@G@@SCPKT . $ ADDRESS OF PKT @C@@@[ LMJ X11,IOERR IX )@@G@@ . $ ERROR @]@@@[. @G@@@[. A FOREIGN PAGE POINTER HAS BIY )@@G@@EEN FOUND. GET FOREIGN PAGE. IF @E@@@[. RECORD IS AN OBJECT REIZ )@@G@@CORD UNLOAD IT. DO NOT INCLUDE IT @G@@@[. IN C4. IF RECORD IS NOT AN JA )@@G@@OBJECT RECORD DO NOT INCLUDE IT IN C2. @]@@@[. @]@@@[SCFOREJB )@@G@@IGN. @I@@@[ TNZ SCOBJUNL . $ SKIP IF RECORDS TJC )@@G@@O BE UNLOADED @G@@@[ J SCAN65 . $ JD )@@G@@ NOT TO BE UNLOADED CONTINUE@E@@@[ DS A0,SCSAVA0 JE )@@G@@ . $ SAVE REGISTERS @C@@@[ DS A2,SCSAVA2 . JF )@@G@@ @C@@@[ DS A4,SCSAVA4 . @C@@@[ JG )@@G@@ S X8,SCSAVX8 . @E@@@[ S X9,SJH )@@G@@CSAVX9 . $ SAVE REGISTER @C@@@[ S X10,SCSAVXJI )@@G@@10 . @E@@@[ A,H1 A3,6,A0 . $ SLOT NJJ )@@G@@UMBER @E@@@[ DL A4,SCPKT . $ AREA-NAME JK )@@G@@ @G@@@[ DS A4,SCFANAME . $ STORE IN PKT FOR FJL )@@G@@OREIGN PG @C@@@[ L,H2 A5,,X9 . $ PAGE @E@@@[JM )@@G@@ L,H2 A4,SCAREACD . $ AREA CODE @E@@@[ JN )@@G@@ LSSL A5,18 . $ LEFT JUSTIFY @E@@@[ LDJO )@@G@@SL A4,18 . $ AREA-CODE , PAGE @G@@@[ LMJ JP )@@G@@ X11,SCFOREIG . $ GET FOREIGN PAGE AND RECORD @G@@@[ J JQ )@@G@@ SCAN65 . $ ERROR RECORD NOT FOUND @E@@@[ JR )@@G@@ L,T1 A4,,A1 . $ LOAD RCODE @G@@@[ L JS )@@G@@ R1,SCREPEAT . $ COUNTER FOR SEARCH @G@@@[ JT )@@G@@ L X11,SCSEARCH . $ INDEX REGISTER FOR SEARCH @G@@@[JU )@@G@@ SE,T1 A4,SCRECORDS,*X11 . $ SEARCH RECORD TABLE JV )@@G@@@E@@@[ J SCFP04 . $ NOT FOUND @G@@@[JW )@@G@@ AN,U X11,1 . $ OFFSET INTO RECORD TABLE JX )@@G@@@G@@@[ L,S3 A4,SCRECORDS,X11 . $ LOAD RECORD TYPE CODE JY )@@G@@ @G@@@[ AND,U A4,1 . $ ZERO ALL BUT OBJEJZ )@@G@@CT BIT @G@@@[ TNZ A5 . $ SKIP IF AN KA )@@G@@OBJECT RECORD @G@@@[ J SCFP03 . $ CHECK KB )@@G@@WHETHER SETS TO SCAN @G@@@[ AND,U A4,010 . DIKC )@@G@@RECT BIT FROM RTYPE @E@@@[ S A5,SCDIRECT KD )@@G@@ . STORE IT FOR UNLOAD @E@@@[ AND,U A4,040 . $ KE )@@G@@ZERO MISC BITS @E@@@[ L A2,SCSAVA0+1 . $ AREA CKF )@@G@@ODE @G@@@[ TNZ A5 . $ SKIP IF UNLOKG )@@G@@ADED VIA SET @E@@@[ LMJ X11,UNL1 . $ UNLOADKH )@@G@@ IT @]@@@[SCFP03. @E@@@[ AND,U A4,020 KI )@@G@@ . $ ZERO MISC BITS @G@@@[ TNZ A5 . $ KJ )@@G@@SKIP IF SETS TO SCAN @E@@@[ J SCFP04 KK )@@G@@ . $ CONTINUE @G@@@[ DL A0,SCSAVA0 . $ KL )@@G@@PAGE ADDRESS AND AREA CODE @E@@@[ DL A2,SCSAVA2 KM )@@G@@ . $ PAGE IN A2 @E@@@[ A,H1 A3,6,A0 . $ KN )@@G@@SLOT NUMBER @E@@@[ L A4,SCRECORDS,X11 . $ RTBL EKO )@@G@@NTRY @E@@@[ LMJ X11,SSET . $ SCAN VIA SETKP )@@G@@ @E@@@[SCFP04 DL A0,SCSAVA0 . $ RESTORE REGISTERSKQ )@@G@@@E@@@[ DL A2,SCSAVA2 . $ RESTORE REGISTER @C@@@[KR )@@G@@ DL A4,SCSAVA4 . @C@@@[ L KS )@@G@@ X8,SCSAVX8 . @C@@@[ L X9,SCSAVX9 KT )@@G@@ . @C@@@[ L X10,SCSAVX10 . @E@@@[KU )@@G@@ J SCAN65 . $ CONTINUE @]@@@[SCFOREKV )@@G@@IG. @E@@@[ S X11,SCFSAVX11 . $ SAVE REGISTER KW )@@G@@@G@@@[ L,U R1,SCFPNO . $ NUMBER OF FOREIGN PG BUKX )@@G@@FFERS @G@@@[ L X11,SCFIND . $ INDEX REGISTER FOKY )@@G@@R SEARCH @E@@@[ SE A4,SCFPTBL,*X11 . $ SEARCH PAGEKZ )@@G@@ TABLE@E@@@[ J SCFGET . $ GET PAGE NEEDED LA )@@G@@@G@@@[ AN,U X11,2 . $ INDEX INTO FOREIGN PG TLB )@@G@@ABLE @E@@@[ L,H2 X11,SCFPTBL+1,X11 . $ ADDRESS OF PAGE LC )@@G@@@]@@@[. @C@@@[. PAGE IS IN BUFFER POINTED TO BY X11 LD )@@G@@@]@@@[. @]@@@[SCFP1. @E@@@[ L A4,X11 LE )@@G@@ . $ LOCATION OF PAGE @E@@@[ L,H1 A5,2,X11 LF )@@G@@ . $ GET PAGE SIZE @G@@@[ AN,U A5,1 . $ LG )@@G@@DISP TO END OF PAGE @G@@@[ A A4,A5 LH )@@G@@ . $ LOCATION OF END OF PAGE @I@@@[ L,H1 A5,6,X11 LI )@@G@@ . $ LOAD NUMBER OF CALC CHAINS AT END @G@@@[ ANLJ )@@G@@ A4,A5 . $ LOCATION OF FIRST SLOT @G@@@[ LK )@@G@@ S,H2 A4,SCFIND1 . $ STORE IN INDEX WD FOR SEARCH @G@@@[LL )@@G@@ L X8,SCFIND1 . $ INDEX WD FOR SEARCH LM )@@G@@@I@@@[ SLJ APS$DBP . $ CONSTRUCT A POINTER FORLN )@@G@@ PRIME PG @G@@@[ L A4,,X9 . $ SLOT LO )@@G@@WD FROM PRIME PAGE @E@@@[ LSSL A4,6 . $ LP )@@G@@ LEFT SHIFT SIX @E@@@[ SSL A4,6 . $ RIGHTLQ )@@G@@ SHIFT SIX @G@@@[ OR A4,SCFSET34 . $ SET BIT 34 LR )@@G@@FOR FOREIGN RECD @G@@@[ L,H1 R1,3,X11 . $ NUMBELS )@@G@@R OF SLOTS ALLOCATED @E@@@[ L R2,SCFMASK . $ LT )@@G@@ MASK FOR SEARCH @]@@@[SCFP2. @E@@@[ MSE A5,,*X8 LU )@@G@@ . $ SEARCH FOR RECORD@E@@@[ J SCFERR LV )@@G@@ . $ RECORD NOT FOUND @]@@@[. @G@@@[. A RECORD ON A FOREIGN LW )@@G@@PAGE WAS FOUND WITH THE CORRECT RECORD @C@@@[. NUMBER. CHECK PLX )@@G@@RIME PAGE POINTER FOR A MATCH.@]@@@[. @G@@@[ L,H2 LY )@@G@@ A1,1,X8 . $ DISPLACEMENT TO RECORD @G@@@[ A LZ )@@G@@ A1,X11 . $ LOCATION OF RECORD @E@@@[ MA )@@G@@ L X10,A1 . $ ADDRESS OF RECORD @G@@@[ L,MB )@@G@@H2 A2,,A1 . $ LOAD RECORD LENGTH @G@@@[ MC )@@G@@ A A2,A1 . $ PAST END OF RECORD @G@@@[MD )@@G@@ AN,U A2,1 . $ LOC OF PRIME PG POINTER ME )@@G@@@G@@@[ TE A0,,A2 . $ SKIP IF POINTERS EQUAL MF )@@G@@ @E@@@[ J SCFP2 . $ DIFFERENT MG )@@G@@@]@@@[. @^@@@[. FOUND THE RECORD @]@@@[. @E@@@[MH )@@G@@ L X11,SCFSAVX11 . $ RESTORE @C@@@[ MI )@@G@@ J 1,X11 . $ RETURN@]@@@[. @C@@@[. THE MJ )@@G@@RECORD WAS NOT FOUND ON THE FOREIGN PAGE @]@@@[. @]@@@[SCFERRMK )@@G@@. @C@@@[ L$SNAP 'FOREIG',7,4,SCSAVA0 @E@@@[ ML )@@G@@ L X11,SCFSAVX11 . $ RESTORE @C@@@[ J MM )@@G@@ 0,X11 . $ RETURN@]@@@[. @C@@@[. PAGE NUMBEMN )@@G@@R IN A4 MUST BE BROUGHT IN @]@@@[. @]@@@[SCFGET. MO )@@G@@@G@@@[ L A0,SCFNXT . $ NEXT PGTBL ENTRY TO WRIMP )@@G@@TE @E@@@[ S A4,SCFPTBL,A0 . $ STORE PAGE TBL MQ )@@G@@@G@@@[ S,H2 A4,SCFDBPKT+8 . $ STORE PAGE IN DB$AM PKTMR )@@G@@ @G@@@[ L,H2 A4,SCFPTBL+1,A0 . $ LOAD BUFFER ADDREMS )@@G@@SS @E@@@[ S,H2 A4,SCFDBPKT+7 . $ STORE IN PAMT )@@G@@CKET @E@@@[ A,U A0,2 . $ INCREMENT SCFNXT MU )@@G@@@G@@@[ TNE,U A0,SCFPNO . $ SKIP IF NOT TIME TO RESMV )@@G@@ET @C@@@[ SZ A0 . $ RESET@E@@@[ MW )@@G@@ S A0,SCFNXT . $ STORE IT @G@@@[ L,MX )@@G@@U X10,SCFDBPKT . $ ADDR OF PKT FOR DB$AM @C@@@[ MY )@@G@@ S X8,SCFSAVX8 . $ SAVE @C@@@[ S X9,SMZ )@@G@@CFSAVX9 . @C@@@[ S X10,SCFSAVX10 . NA )@@G@@ @C@@@[ DS A0,SCFSAVA0 . @C@@@[ NB )@@G@@ DS A2,SCFSAVA2 . @C@@@[ DS A4,SNC )@@G@@CFSAVA4 . @E@@@[ LMJ X11,DB$AM . $ ND )@@G@@ GO READ PAGE @E@@@[ TZ,S1 SCFDBPKT+3 . $ SKIP NE )@@G@@IF READ OK @E@@@[ LMJ X11,IOERR . $ I/O ERROR NF )@@G@@ @G@@@[ L,H2 X11,SCFDBPKT+7 . $ GET ADDRESS OF PANG )@@G@@GE @E@@@[ DL A0,SCFSAVA0 . $ RESTORE REGNH )@@G@@ISTER @C@@@[ DL A2,SCFSAVA2 . @C@@@[ NI )@@G@@ DL A4,SCFSAVA4 . @C@@@[ L X8,SNJ )@@G@@CFSAVX9 . @C@@@[ L X9,SCFSAVX9 . NK )@@G@@ @C@@@[ L X10,SCFSAVX10 . @E@@@[ NL )@@G@@ J SCFP1 . $ CONTINUE @]@@@[. NM )@@G@@@C@@@[. **** SCAN VIA SET **** @]@@@[. NN )@@G@@@A@@@[. INPUTS: X8 - OLD STACK @C@@@[. X10 - LOCATNO )@@G@@ION OF CURRENT RECORD @A@@@[. X11 - RETURN ADDRESS @C@@@[NP )@@G@@. A0 - ADDRESS OF CURRENT PAGE @A@@@[. A1 - NQ )@@G@@AREA CODE @A@@@[. A2 - PAGE NUMBER @C@@@[. NR )@@G@@ A3 - CURRENT SLOT NUMBER @E@@@[. A4 - RECORNS )@@G@@D TABLE ENTRY FOR CURRENT RECORD @]@@@[. @]@@@[SSET. NT )@@G@@@E@@@[ S X8,*STKADR . $ SAVE REGISTERS @G@@@[NU )@@G@@ L X8,STKADR . $ GET ADDRESS OF NEW STACK NV )@@G@@@E@@@[ S X9,1,X8 . $ SAVE REGISTERS @C@@@[NW )@@G@@ S X10,2,X8 . @C@@@[ S NX )@@G@@ X11,3,X8 . @C@@@[ DS A0,4,X8 NY )@@G@@ . @C@@@[ DS A2,6,X8 . @C@@@[NZ )@@G@@ DS A4,8,X8 . @G@@@[ SLJ OA )@@G@@ APS$DBP . $ COMPOSE A DBP FOR RECORD @E@@@[ TNOB )@@G@@Z A0 . SKIP IF DBP OK @C@@@[ J OC )@@G@@ SSAPSERR . ERROR @E@@@[ S A0,SCSDFPKT1+3 OD )@@G@@ . $ DBP OF OWNER @E@@@[ S A0,STDBPO,X8 . $ OE )@@G@@STORE IT IN STACK @E@@@[ L A4,8,X8 . $ RESTOROF )@@G@@E A4 @E@@@[ L,S3 A1,8,X8 . RTYPE FOR OWNEOG )@@G@@R @C@@@[ LSSL A1,35 . @G@@@[ OH )@@G@@ SSL A1,35 . 1 IF OBJECT RECORD OWNS SET @E@@@[OI )@@G@@ S A1,STOUL,X8 . STORE IT IN STACK @E@@@[ OJ )@@G@@ L A1,SCSLVL . $ VIA SET LEVEL @E@@@[ A,OK )@@G@@U A1,1 . $ INCREMENT IT @E@@@[ S OL )@@G@@ A1,SCSLVL . $ STORE IT BACK @E@@@[ DSL A4,1OM )@@G@@2 . $ OFFSET TO STBL @E@@@[ SSL A5,24 ON )@@G@@ . $ RIGHT JUSTIFY IT @G@@@[ SSL A4,12 OO )@@G@@ . $ RIGHT JUSTIFY RECORD CODE @E@@@[ S A4,STRCDE,OP )@@G@@X8 . $ STORE IT IN STACK @E@@@[ L A0,A5 OQ )@@G@@ . $ OFFSET TO STBL @G@@@[ S A0,STSTBL,X8 . $ OR )@@G@@STORE STBL OFFSET IN STACK @G@@@[ L A1,STBL,A0 OS )@@G@@ . $ FIRST WORD OF SET TABLE @G@@@[ S A1,STRTBL,OT )@@G@@X8 . $ STORE ADDR OF RTBL IN STACK @G@@@[ L A2,SOU )@@G@@TBL+1,A0 . $ CNT,MADR FROM STBL @E@@@[ S OV )@@G@@ A2,STMANC,X8 . $ STORE IT IN STACK @G@@@[ S A2,SOW )@@G@@TMANCO,X8 . $ STORE FOR OWNER RECORD @E@@@[ L OX )@@G@@ X9,A0 . $ STBL ADDRESS @G@@@[ A,U X9,2OY )@@G@@ . $ ADDRESS OF FIRST SET ENTRY @E@@@[ LXI,U OZ )@@G@@ X9,1 . $ FIRST SET TO SCAN @]@@@[. @E@@@[. SCANPA )@@G@@ SET. SET ENTRY ADDR IN X9. RECORD ADDR IN X10. @]@@@[. PB )@@G@@@]@@@[SS1. @G@@@[ L,H2 A1,STBL,X9 . $ ADDRESPC )@@G@@S OF SET ENTRY IN STBL @E@@@[ L,T2 A1,,A1 . $ PD )@@G@@SET CODE @E@@@[ S A1,STSCDE,X8 . $ STORE PE )@@G@@IT IN STACK @G@@@[ L,H2 A0,STBL,X9 . $ ADDRESS OF SPF )@@G@@ET ENTRY IN STBL @G@@@[ L,S6 A0,,A0 . $ DISP IPG )@@G@@NTO RECORD OF DBP @G@@@[ A A0,X10 . $ PH )@@G@@ADDRESS OF DBP IN RECORD @C@@@[ L A0,,A0 PI )@@G@@ . $ DBP @]@@@[SS2. @E@@@[ S A0,STDBP,X8 PJ )@@G@@ . $ STORE THIS DBP @G@@@[ TNE A0,STDBPO,X8 . $ PK )@@G@@SKIP IF NOT END OF SET @E@@@[ J SSEOS PL )@@G@@ . $ END OF SET @E@@@[ SLJ DBP$APS . $ PM )@@G@@DECOMPOSE DBP @G@@@[ TNZ A1 . SKIP IF PN )@@G@@NON ZERO AREA CODE @C@@@[ J SSDBPERR . ERPO )@@G@@ROR @G@@@[ S A1,STAREA,X8 . $ STORE AREA CODE INPP )@@G@@ STACK @G@@@[ S A2,STPAGE,X8 . $ STORE PAGE NPQ )@@G@@UMBER IN STACK @G@@@[ S A3,STSLOT,X8 . $ STORE PR )@@G@@SLOT IN STACK @G@@@[ S A4,STATBL,X8 . $ PS )@@G@@STORE AREA TABLE ADDRESS @]@@@[. @A@@@[. CHECK WHETHER PAPT )@@G@@GE IS IN CORE @]@@@[. @E@@@[ LSSL A2,18 PU )@@G@@ . $ PG NUM TO H1 @E@@@[ DSL A1,18 PV )@@G@@ . $ ACODE,PG NUM @G@@@[ DL A0,SCARPG . $ PW )@@G@@CONTROL FOR VIA AREA BUFFER @G@@@[ TNW A0,A2 PX )@@G@@ . $ SKIP IF NOT IN BUFFER @^@@@[ J SSX1@]@@@[PY )@@G@@. @A@@@[. CHECK SET BUFFERS FOR PAGE @]@@@[. PZ )@@G@@@G@@@[ L,T1 A3,STBL,X9 . $ OFFSET TO FIRST SET BUFFQA )@@G@@ER @G@@@[ L,U A5,SCSBNO . $ NUMBER OF SET BUFFQB )@@G@@ERS @G@@@[ LSSL A5,1 . $ X 2 WORDS PEQC )@@G@@R BUFFER @G@@@[ A A5,A3 . $ WORD PQD )@@G@@AST LAST BUFFER CNTL WD @]@@@[SS3. @E@@@[ L A0,SQE )@@G@@CSBUF+1,A3 . $ BUFFER CNTL WD @E@@@[ AN,U A0,1 QF )@@G@@ . $ START PAGE - 1 @C@@@[ L A1,A0 QG )@@G@@ . @G@@@[ A,U A1,SCSPGS . $ LAST PAGE INQH )@@G@@ BUFFER @E@@@[ TNW A0,A2 . $ SKIP IQI )@@G@@F NOT FOUND @^@@@[ J SSX2@E@@@[ A,U A3,2QJ )@@G@@ . $ NEXT SET BUFFER @E@@@[ TE A3,A5 QK )@@G@@ . $ SKIP IF LAST @G@@@[ J SS3 QL )@@G@@ . $ CONTINUE CHECKING BUFFERS @]@@@[. @^@@@[. PAGE NOT IQM )@@G@@N BUFFER @]@@@[. @G@@@[ L A0,A4 QN )@@G@@ . $ ADDRESS OF AREA TABLE ENTRY @E@@@[ DL A0,1,A0 QO )@@G@@ . $ AREA NAME @E@@@[ DS A0,SCSPKT QP )@@G@@ . $ STORE IN PACKET @G@@@[ L A1,A2 . $ QQ )@@G@@AREA CODE,PAGE NUMBER @E@@@[ LSSL A1,18 QR )@@G@@ . $ SHIFT OFF GARBAGE @E@@@[ SSL A1,18 . $ QS )@@G@@PAGE NUMBER @C@@@[ SZ A0 . $ ZERO QT )@@G@@@E@@@[ L A5,A1 . $ PAGE NUMBER @E@@@[QU )@@G@@ DI,U A0,SCSPGS . $ A1 = REMAINDER @G@@@[ QV )@@G@@ AN A5,A1 . $ FIRST PAGE TO PUT IN BUFFER @G@@@[QW )@@G@@ TNZ A5 . $ SKIP IF LEGAL FIRST PAGE QX )@@G@@@G@@@[ L,U A5,1 . $ USE 1 AS FIRST PAGE QY )@@G@@ @E@@@[ S,H2 A5,SCSPKT+8 . $ STORE IN PACKET QZ )@@G@@@G@@@[ L,T1 A0,STBL,X9 . $ OFFSET TO FIRST SET BUFFRA )@@G@@ER @E@@@[ L A5,SCSBUF,A0 . $ BUFFER ADDRESS RB )@@G@@@G@@@[ L,U A1,SCSBNO-1 . $ NO. OF SET BUFFERS - 1 RC )@@G@@ @C@@@[ LSSL A1,1 . $ X 2 @E@@@[ RD )@@G@@ L R1,A1 . $ REPEAT COUNT @E@@@[ LXRE )@@G@@I,U A0,1 . $ INCREMENT @E@@@[ L RF )@@G@@ A1,A0 . $ INDEX FOR TAKE @E@@@[ A,U A1,2RG )@@G@@ . $ POINT TO NEXT @E@@@[ BT A0,SCSBUF,RH )@@G@@*A1 . $ MOVE WORDS @G@@@[ S A5,SCSBUF,A0 RI )@@G@@ . $ STORE BUFFER ADDRESS @E@@@[ L,H2 A5,SCSPKT+RJ )@@G@@8 . $ START PAGE @G@@@[ S,H2 A5,SCSBUF+1,A0 RK )@@G@@ . $ STORE IN BUF CNTL TABLE @E@@@[ LSSC A2,18 RL )@@G@@ . $ POSITION AREA CODE@G@@@[ S,H1 A2,SCSBUF+1,A0 RM )@@G@@ . $ STORE IN BUFFER CNTL TABLE @E@@@[ L,H2 A0,SCSBUF,RN )@@G@@A0 . $ BUFFER ADDRESS @E@@@[ S,H2 A0,SCSPKT+7 RO )@@G@@ . $ STORE IN PACKET @C@@@[ S X8,SCSSVX8 . $ RP )@@G@@SAVE @C@@@[ S X9,SCSSVX9 . $ SAVE @C@@@[ RQ )@@G@@ S X10,SCSSVX10 . $ SAVE @C@@@[ S X11,RR )@@G@@SCSSVX11 . $ SAVE @E@@@[ L,U X10,SCSPKT . $ RS )@@G@@PACKET ADDRESS @E@@@[ LMJ X11,DB$AM . $ READ PRT )@@G@@AGES @G@@@[ TNZ,H2 SCSPKT+3 . $ SKIP IF WDS RU )@@G@@TRANSFERRED @E@@@[ LMJ X11,IOERR . $ IO ERRRV )@@G@@OR @E@@@[ L X8,SCSSVX8 . $ RESTORE RW )@@G@@ @E@@@[ L X9,SCSSVX9 . $ RESTORE RX )@@G@@@E@@@[ L X10,SCSSVX10 . $ RESTORE @E@@@[RY )@@G@@ L X11,SCSSVX11 . $ RESTORE @E@@@[ RZ )@@G@@ L,H2 A0,SCSPKT+7 . $ BUFFER ADDRESS @E@@@[ L SA )@@G@@ A1,STPAGE,X8 . $ PAGE NUMBER @E@@@[ AN,H2 SB )@@G@@ A1,SCSPKT+8 . $ PAGES INTO BUFFER @G@@@[ MSI,H2 A1,SSC )@@G@@CSPKT+6 . $ OFFSET TO PAGE IN BUFFER @E@@@[ A SD )@@G@@ A0,A1 . $ ADDRESS OF PAGE @]@@@[. @C@@@[. PAGESE )@@G@@ IS IN CORE. A0 CONTAINS PAGE ADDRESS. @]@@@[. @]@@@[SS4. SF )@@G@@ @G@@@[ L,H1 A4,3,A0 . $ SLOTS ALLOCATES THSG )@@G@@IS PAGE @I@@@[ A,H1 A4,6,A0 . $ ADD NUMBER OSH )@@G@@F CALC CHAINS AT END @G@@@[ TLE A4,STSLOT,X8 SI )@@G@@ . $ SKIP IF THIS SLOT ALLOCATED @G@@@[ J SSNOTINUSESJ )@@G@@ . $ ERROR - SLOT NOT ALLOCATED @E@@@[ L X10,SK )@@G@@A0 . $ POINTER TO PAGE @E@@@[ A,H1 X10,2,X10 SL )@@G@@ . $ ADD PAGE SIZE @E@@@[ AN X10,STSLOT,X8 SM )@@G@@ . $ ADDRESS OF SLOT @G@@@[ TP 0,X10 . $ SN )@@G@@SKIP IF SLOT IN USE @G@@@[ J SSNOTINUSE SO )@@G@@ . $ ERROR SLOT NOT IN USE @G@@@[ L,S1 A4,,X10 SP )@@G@@ . $ DESC FIELD FROM SLOT @E@@@[ AND,U A4,0SQ )@@G@@10 . $ ZERO MISC BITS @I@@@[ TZ A5 SR )@@G@@ . $ SKIP IF RECORD NOT ON FOREIGN PG @G@@@[ LMSS )@@G@@J X11,SSFOREIGN . $ RECORD ON FOREIGN PAGE @G@@@[ ST )@@G@@ L,H2 X10,,X10 . $ DISPLACEMENT TO RECORD @E@@@[SU )@@G@@ A X10,A0 . $ ADDRESS OF RECORD @G@@@[SS43 SV )@@G@@ L,S3 A4,,X10 . $ LOAD DESC FIELD OF RECORD @E@@@[SW )@@G@@ AND,U A4,010 . $ ZERO MISC BITS @G@@@[ SX )@@G@@ TNZ A5 . $ SKIP IF A RECORD ENTRY @E@@@[SY )@@G@@ J SSVACANT . $ A VACANCY ENTRY @G@@@[ SZ )@@G@@ L,T1 A4,,X10 . $ LOAD RCODE AND DESC @I@@@[TA )@@G@@ TNE,T1 A4,STRECLAST,X8 . $ SKIP IF NOT SAME AS LAST REC TTB )@@G@@YPE @G@@@[ J SSAMEREC . $ SAME AS LASTTC )@@G@@ RECORD MATCHED @E@@@[ L R1,SCREPEAT . $ COUNTETD )@@G@@R FOR SEARCH@E@@@[ L X11,SCSEARCH . $ INDEX FOR SETE )@@G@@ARCH @G@@@[ SE,T1 A4,SCRECORDS,*X11 . $ SEARCH RECORD TABLTF )@@G@@E @G@@@[ J SSBADREC . $ NOT IN RECORTG )@@G@@D TABLE @G@@@[ AN,U X11,1 . $ OFFSETTH )@@G@@ INTO RECORD TABLE @E@@@[SS45 L A4,SCRECORDS,X11 . $ TI )@@G@@GET TABLE ENTRY @E@@@[ S A4,STRECLAST,X8 . $ STORE TJ )@@G@@IT IN STACK @C@@@[ L,S3 A4,STRECLAST,X8 . $ RTYPE @E@#@[TK )@@G@@ AND,U A4,32 . $ ZERO MISC BITS @E@@@# TL )@@G@@ AND,U A4,041 . $ ZERO MISC BITS @E@@@[ L TM )@@G@@ A1,STAREA,X8 . $ AREA CODE @G@#@[ TNZ TN )@@G@@ A5 . $ SKIP IF UNLOADED VIA SET @G@@@# TETO )@@G@@,U A5,041 . SKIP IF VIA SET UNLOAD @G@@@[ TP )@@G@@ J SS5 . $ NOT UNLOADED VIA SET @E@@@[TQ )@@G@@ L,T3 X11,STRECLAST,X8 . LINK TO STBL @C@@@[ TR )@@G@@ L,T1 A5,STBL,X11 . SET CODE@E@@@[ TE A5,STS )@@G@@TSCDE,X8 . SKIP IF VIA THIS SET@C@@@[ J SS5 TT )@@G@@ . CONTINUE@G@@@[. **********************************************TU )@@G@@****************** @G@@@[. ****************************************TV )@@G@@************************ @G@@@[. THE FOLLOWING JUMP CAUSES OWNER CNTW )@@G@@TL RECORDS TO BE CREATED FOR @G@@@[. ALL SETS BEING UNLOADED. IFTX )@@G@@ THE JUMP IS REMOVED OWNER CNTL @G@@@[. RECORDS WILL BE CREATETY )@@G@@D ONLY WHEN THE OWNER OF THE SET IS NOT @G@@@[. BEING UNLOADED. TZ )@@G@@ THIS WILL SERVE TO REDUCE THE NUMBER OF RECORDS @G@@@[. IN THE DATUA )@@G@@A FILES BUT WILL ELIMINATE PLACE NEAR LOGIC DURING THE @^@@@[. RELOUB )@@G@@AD PROCESS. @G@@@[. **********************************************UC )@@G@@******************* @G@@@[. ****************************************UD )@@G@@************************* @E@@@[ J $+3 UE )@@G@@ . SEE ABOVE PARAGRAPH @G@@@[ TZ STOUL,X8 . SKUF )@@G@@IP IF OWNER NOT ULOADED @G@@@[ J SS47 UG )@@G@@ . OWNER WAS UNLOADED NO CNTL REC @G@@@[ TNZ SCSDFPKT1+UH )@@G@@3 . $ SKIP TO WRITE OWNER ENTRY @E@@@[ J SS47UI )@@G@@ . $ CONTINUE @C@@@[ S X8,SCSSVX8UJ )@@G@@ . $ SAVE @C@@@[ S X9,SCSSVX9 . $ SAVE UK )@@G@@@C@@@[ S X10,SCSSVX10 . $ SAVE @C@@@[ S UL )@@G@@ X11,SCSSVX11 . $ SAVE @C@@@[ DS A0,SCSSVA0UM )@@G@@ . $ SAVE @C@@@[ DS A2,SCSSVA2 . $ SAVE UN )@@G@@@C@@@[ DS A4,SCSSVA4 . $ SAVE @E@@@[ L,UO )@@G@@U X10,SCSDFPKT1 . $ PKT FOR DF$AM @E@@@[ LMJ UP )@@G@@ X11,DF$AMW . $ WRITE ENTRY @C@@@[ SZ SCSDUQ )@@G@@FPKT1+3 . $ ZERO @E@@@[ L X8,SCSSVX8 . $ UR )@@G@@RESTORE @E@@@[ L X9,SCSSVX9 . $ RESTORUS )@@G@@E @E@@@[ L X10,SCSSVX10 . $ RESTORE UT )@@G@@ @E@@@[ L X11,SCSSVX11 . $ RESTORE UU )@@G@@@E@@@[ DL A0,SCSSVA0 . $ RESTORE @E@@@[UV )@@G@@ DL A2,SCSSVA2 . $ RESTORE @E@@@[ UW )@@G@@ DL A4,SCSSVA4 . $ RESTORE @]@@@[SS47. UX )@@G@@@E@@@[ AND,U A4,010 . 0 IF NOT DIRECT @E@@@[UY )@@G@@ S A5,SCDIRECT . STORE IT FOR UNLOAD @E@@@[ UZ )@@G@@ LMJ X11,UNLS . $ UNLOAD IT @]@@@[. VA )@@G@@@C@@@[. CHECK WHETHER SETS TO SCAN OFF THIS RECORD. @^@@@[. IFSO SCAVB )@@G@@N THEM. @A@@@[. ELSE CONTINUE SCANNING THIS SET @]@@@[. VC )@@G@@@]@@@[SS5. @E@@@[ L A4,STRECLAST,X8 . $ LAST RVD )@@G@@TBL ENTRY @I@@@[ L A5,STKADR . $ ADDRESS OF CVE )@@G@@URRENT STACK ELEMENT @G@@@[ A,U A5,SCSSTKSIZ VF )@@G@@ . $ NEXT STACK ELEMENT ADDRESS @E@@@[ S A5,STKADR VG )@@G@@ . $ STORE IT BACK @E@@@[ AND A4,SCSMSK VH )@@G@@ . $ ZERO MISC BITS @E@@@[ L A1,STAREA,X8 . $ VI )@@G@@AREA CODE @E@@@[ L A2,STPAGE,X8 . $ PAGE NVJ )@@G@@UMBER @E@@@[ L A3,STSLOT,X8 . SLOT NUMBER VK )@@G@@ @G@@@[ TZ A5 . $ SKIP IF NO SETS TOVL )@@G@@ SCAN @E@@@[ LMJ X11,SSET . $ SCAN THE SETVM )@@G@@S @G@@@[ L A5,STKADR . $ ADDRESS OF LAST STVN )@@G@@ACK ELEMENT @G@@@[ AN,U A5,SCSSTKSIZ . $ ADDRESS OF CVO )@@G@@URRENT STACK @E@@@[ S A5,STKADR . $ STORE VP )@@G@@IT BACK @G@@@[ L,T3 X11,STRECLAST,X8 . $ OFFSET TO STVQ )@@G@@BL ENTRY @E@@@[ L,H2 X11,STBL,X11 . $ ADDRESVR )@@G@@S OF C1 @]@@@[ . @A@@@[. CONTINUE TO SCAN THIS SET VS )@@G@@@]@@@[. @]@@@[SS6. @I@@@[ A,U X11,1 VT )@@G@@ . $ ADDRESS OF FIRST SET ENT. IN RTBL @E@@@[ TPVU )@@G@@ 0,X11 . $ SKIP IF AUTO ENTRY@E@@@[ J VV )@@G@@ SS7 . $ MANUAL ENTRY @E@@@[ L,T2 A5,,VW )@@G@@X11 . $ LOAD SET CODE @E@@@[ TE A5,STSCDE,VX )@@G@@X8 . $ SKIP IF MATCH @E@@@[ J SS6 VY )@@G@@ . $ CONTINUE @]@@@[. @C@@@[. AUTOMATIC ENTRY FOR SEVZ )@@G@@T HAS BEEN FOUND @]@@@[. @E@@@[ L,S6 A0,,WA )@@G@@X11 . $ LOAD DISP TO DBP @E@@@[ A A0,X10 WB )@@G@@ . $ ADDRESS OF DBP @E@@@[ L A0,,A0 WC )@@G@@ . $ GET THE DBP @E@@@[ J SS2 . $ WD )@@G@@CONTINUE @]@@@[. @A@@@[. SET BEING SCANNED IS A MANUWE )@@G@@AL SET@]@@@[. @]@@@[SS7. @G@@@[ L A3,XWF )@@G@@11 . $ ADDR OF MANUAL CNTL IN C1 @G@@@[ A,U WG )@@G@@ A3,2 . $ FIRST MANUAL SET ENTRY IN C1 @G@@@[ L,WH )@@G@@S6 A0,,X11 . $ DISP TO CNTL WD IN RECORD @G@@@[ WI )@@G@@ A A0,X10 . $ ADDR OF MANUAL CNTL IN RECORD @G@@@[WJ )@@G@@ L A4,,A0 . $ MANUAL CNTL WORD FROM RECORD WK )@@G@@@E@@@[ L A5,STSCDE,X8 . $ SETCODE @G@@@[WL )@@G@@ A,U A0,1 . $ ADDRESS OF FIRST MANUAL DBP WM )@@G@@@]@@@[SS8. @G@@@[ TNZ A4 . $ SKIP IWN )@@G@@F MORE SETS TO CHECK @G@@@[ J SSMANERR . $ WO )@@G@@ERROR NOT A MEMBER OF SET @E@@@[ TN A4 WP )@@G@@ . $ SKIP IF BIT 35 SET@E@@@[ J SS9 . $ WQ )@@G@@CONTINUE @E@@@[ L,T2 A2,,A3 . $ SET COWR )@@G@@DE @G@@@[ TNE A2,A5 . $ SKIP IF DIFFWS )@@G@@ERENT SET CODE @E@@@[ J SS95 . $ SET HAWT )@@G@@S BEEN FOUND@G@@@[ A,S2 A0,,A3 . $ ADD OFFSET TWU )@@G@@O NEXT MANUAL DBP @]@@@[SS9. @I@@@[ A,S2 A3,,A3 WV )@@G@@ . $ ADD OFFSET TO NEXT MANUAL ENT IN C1 @G@@@[ LSWW )@@G@@SL A4,1 . $ SHIFT MANUAL CONTROL WD @E@@@[ WX )@@G@@ J SS8 . $ CONTINUE @]@@@[SS95. WY )@@G@@@E@@@[ L A0,,A0 . $ GET DBP @E@@@[WZ )@@G@@ J SS2 . $ CONTINUE @]@@@[. XA )@@G@@ @A@@@[. END OF SET HAS BEEN FOUND @]@@@[. @]@@@[XB )@@G@@SSEOS. @C@@@[ S X8,SVX8 . SAVE @A@@@[XC )@@G@@ S X9,SVX9 @A@@@[ S X10,SVX10 XD )@@G@@ @A@@@[ S X11,SVX11 @A@@@[ DS XE )@@G@@ A0,SVA0 @C@@@[ DS A2,SVA2 . XF )@@G@@@C@@@[ DS A4,SVA4 . @E@@@[ L XG )@@G@@ X10,STSCDE,X8 . $ SET CODE @E@@@[ S,T3 XH )@@G@@ X10,SCSDFPKT+3 . $ STORE IN PACKET @E@@@[ L,U X10,XI )@@G@@SCSDFPKT . $ PACKET ADDRESS @I@@@[ TZ EOSFLG XJ )@@G@@ . SKIP IF END OF SET CNTL NOT DESIRED @G@@@[ LMXK )@@G@@J X11,DF$AMW . $ WRITE EOS IN DATA FILE @C@@@[ XL )@@G@@ L X8,SVX8 . RESTORE @A@@@[ L X9,SXM )@@G@@VX9 @A@@@[ L X10,SVX10 @A@@@[ L XN )@@G@@ X11,SVX11 @A@@@[ DL A0,SVA0 @C@@@[XO )@@G@@ DL A2,SVA2 . @C@@@[ DL XP )@@G@@ A4,SVA4 . @]@@@[. @A@@@[. CHECK WHETHER MOXQ )@@G@@RE SETS TO SCAN. @]@@@[. @E@@@[ L X11,STSTBLXR )@@G@@,X8 . $ SET TABLE OFFSET @E@@@[ L A5,X9 XS )@@G@@ . $ COUNT,OFFSET @C@@@[ SSL A5,18 . $ XT )@@G@@COUNT @G@@@[ TNE,H1 A5,STBL+1,X11 . $ SKIP IF MORE SETS XU )@@G@@TO SCAN @G@@@[ J SSDONE . $ VIA SET FINIXV )@@G@@SHED AT THIS LEVEL@G@@@[ A X9,(1,1) . $ INCREMXW )@@G@@ENT LOCATION AND COUNT @E@@@[ L X10,2,X8 . $ XX )@@G@@LOCATION OF OWNER @E@@@[ J SS1 . $ SCAN NXY )@@G@@EXT SET @]@@@[. @E@@@[. ALL SETS HAVE BEEN SCANNED. RETURNXZ )@@G@@ TO NEXT LEVEL. @]@@@[. @]@@@[SSDONE. @E@@@[ YA )@@G@@ L A0,SCSLVL . $ LEVEL OF VIA SET @E@@@[ ANYB )@@G@@,U A0,1 . $ DECRMENT IT @E@@@[ S YC )@@G@@ A0,SCSLVL . $ STORE IT BACK @C@@@[ L X9,1YD )@@G@@,X8 . @C@@@[ L X10,2,X8 . YE )@@G@@ @C@@@[ L X11,3,X8 . @C@@@[ YF )@@G@@ DL A0,4,X8 . @C@@@[ DL A2,6YG )@@G@@,X8 . @C@@@[ DL A4,8,X8 . YH )@@G@@ @E@@@[ L X8,0,X8 . $ RESTORE REGISTERS YI )@@G@@@C@@@[ J 0,X11 . $ RETURN@]@@@[SSAMEREC. YJ )@@G@@@E@@@[ L,S4 X11,STRECLAST,X8 . $ OFFSET INTO RTBL @E@@@[YK )@@G@@ J SS45 . $ CONTINUE @]@@@[. YL )@@G@@ @C@@@[. A RECORD ON A FOREIGN PAGE WAS ENCOUNTERED @]@@@[. YM )@@G@@ @]@@@[SSFOREIGN. @E@@@[ DS A0,SCSAVA0 . $ YN )@@G@@ SAVE REGISTERS @C@@@[ DS A2,SCSAVA2 . YO )@@G@@@C@@@[ DS A4,SCSAVA4 . @C@@@[ S YP )@@G@@ X8,SCSAVX8 . @E@@@[ S X9,SCSAVX9YQ )@@G@@ . $ SAVE REGISTER @C@@@[ S X10,SCSAVX10 YR )@@G@@ . @E@@@[ L X9,X10 . $ ADDRESS OF SYS )@@G@@LOT @E@@@[ L A1,STAREA,X8 . $ AREA CODE YT )@@G@@@E@@@[ L A2,STPAGE,X8 . $ PAGE NUMBER @E@@@[YU )@@G@@ L A3,STSLOT,X8 . $ SLOT NUMBER @G@@@[ YV )@@G@@ L X11,STATBL,X8 . $ ADDRESS OF AREA TABLE @E@@@[YW )@@G@@ DL A4,1,X11 . $ AREA-NAME @G@@@[ YX )@@G@@ DS A4,SCFANAME . $ STORE IN PKT FOR FOREIGN PG @C@@@[YY )@@G@@ L,H2 A5,,X9 . $ PAGE @E@@@[ L,H2 YZ )@@G@@ A4,STAREA,X8 . $ AREA CODE @E@@@[ LSSL A5,1ZA )@@G@@8 . $ LEFT JUSTIFY @E@@@[ LDSL A4,18 ZB )@@G@@ . $ AREA-CODE , PAGE @G@@@[ LMJ X11,SCFOREIG ZC )@@G@@ . $ PROCESS RECORD ON FOREIGN PG @E@@@[ J SSFORERR ZD )@@G@@ . $ AN ERROR OCCURRED @E@@@[ L X10,A1 ZE )@@G@@ . $ ADDRESS OF RECD @E@@@[ DL A0,SCSAVA0 . $ ZF )@@G@@ RESTORE REGISTERS@E@@@[ DL A2,SCSAVA2 . $ RESTOZG )@@G@@RE REGISTER @C@@@[ DL A4,SCSAVA4 . @C@@@[ZH )@@G@@ L X8,SCSAVX8 . @C@@@[ L ZI )@@G@@ X9,SCSAVX9 . @E@@@[ J SS43 ZJ )@@G@@ . $ CONTINUE @]@@@[. @E@@@[. AN ERROR OCCURRED PROCZK )@@G@@ESSING A RECORD ON A FOREIGN PAGE @^@@@[. DURING VIA SET SCAN. @]@@@[ZL )@@G@@. @]@@@[SSFORERR. @E@@@[ L A0,SSFERRMSG ZM )@@G@@ . $ ACW FOR PRINT @E@@@[ ER PRINT$ . $ ZN )@@G@@PRINT IT @E@@@[ ER ERR$ . $ ERROR ZO )@@G@@OFF @]@@@[SSX1. @G@@@[ L,H2 A0,SCDBUF ZP )@@G@@ . $ BUFFER ADDRESS (VIA AREA) @E@@@[ L,H2 A1,STPAGE,ZQ )@@G@@X8 . $ PAGE NUMBER @E@@@[ AN,H2 A1,SCSTPG ZR )@@G@@ . $ PAGES INTO BUFFER @E@@@[ MSI,H2 A1,SCPKT+6 . $ ZS )@@G@@OFFSET INTO BUFFER@E@@@[ A A0,A1 . $ PAGE AZT )@@G@@DDRESS @E@@@[ J SS4 . $ CONTINUE ZU )@@G@@ @]@@@[SSX2. @E@@@[ L,U A1,SCSBNO-1 . $ ZV )@@G@@BUFFERS - 1 @C@@@[ LSSL A1,1 . $ X 2 ZW )@@G@@@G@@@[ A,T1 A1,STBL,X9 . $ ADD OFFSET TO BUFFER 1 ZX )@@G@@ @E@@@[ AN A1,A3 . $ REPEAT COUNT ZY )@@G@@@E@@@[ L R1,A1 . $ REPEAT COUNT @E@@@[ZZ )@@G@@ L A1,SCSBUF,A3 . $ FIRST CNTL WD @E@@@[ AA )@@G@@ L A5,SCSBUF+1,A3 . $ SECOND CNTL WD @C@@@[ LXAB )@@G@@I,U A3,1 . $ INDEX @E@@@[ L A0,A3 AC )@@G@@ . $ INDEX REGISTER @E@@@[ A,U A0,2 AD )@@G@@ . $ REGISTER FOR TAKE @E@@@[ BT A3,SCSBUF,*A0 . $ AE )@@G@@MOVE WORDS @G@@@[ S A1,SCSBUF,A3 . $ STORE AF )@@G@@FIRST CNTL WD @G@@@[ S A5,SCSBUF+1,A3 . $ AG )@@G@@STORE SECOND CNTL WD @E@@@[ L,H2 A0,SCSBUF,A3 AH )@@G@@ . $ BUFFER ADDRESS @E@@@[ L A1,STPAGE,X8 . $ AI )@@G@@PAGE NUMBER @G@@@[ AN,H2 A1,SCSBUF+1,A3 . $ NUMBERAJ )@@G@@ OF PAGES INTO BUFFER @G@@@[ MSI,H2 A1,SCSPKT+6 . $ AK )@@G@@OFFSET TO PAGE WITHIN BUFFER @G@@@[ A A0,A1 AL )@@G@@ . $ A0 CONTAINS PAGE ADDRESS @E@@@[ J SS4 AM )@@G@@ . $ CONTINUE @]@@@[. @A@@@[. ERROR ENCOUNTEREAN )@@G@@D COMPOSING A DBP @]@@@[. @]@@@[SSDBPERR. @C@@@[ L$AO )@@G@@SNAP 'DBPERR',7,1,SCSAVA0 @E@@@[ L A0,SSDBPMSAP )@@G@@G . ACW FOR PRINT @E@@@[ ER PRINT$ AQ )@@G@@ . PRINT ERROR MESSAGE @E@@@[ ER ERR$ . ERAR )@@G@@ROR OFF @]@@@[. @C@@@[. ERROR ENCOUNTERED DECOMPOSINAS )@@G@@G A DBP @]@@@[. @]@@@[SSAPSERR. @C@@@[ L$AT )@@G@@SNAP 'APSERR',7,1,SCSAVA0 @E@@@[ L A0,SSAPSMSAU )@@G@@G . ACW FOR PRINT @E@@@[ ER PRINT$ AV )@@G@@ . PRINT ERROR MESSAGE @^@@@[ ER ERR$@]@@@[. AW )@@G@@@E@@@[. A VACANCY ENTRY WAS ENCOUNTERED WHILE SCANNING A SET @]@@@[AX )@@G@@. @]@@@[SSVACANT. @C@@@[ L$SNAP 'VACANT',7,1,SCSAY )@@G@@AVA0 @E@@@[ L A0,SSVACMSG . $ ACW FOR PRINAZ )@@G@@T @E@@@[ ER PRINT$ . $ PRINT ERROR MSG BA )@@G@@@C@@@[ ER ERR$ . @]@@@[. BB )@@G@@@E@@@[. A SLOT NOT ALLOCATED OR NOT IN USE WAS FOUND WHILE @^@@@[BC )@@G@@. SCANNING A SET @]@@@[. @]@@@[SSNOTINUSE. @C@@@[ BD )@@G@@ L$SNAP 'SLOT ',7,1,SCSAVA0 @E@@@[ L A0,SBE )@@G@@SLOTMSG . $ ACW FOR PRINT @E@@@[ ER PRINT$ BF )@@G@@ . $ PRINT MSG @E@@@[ ER ERR$ BG )@@G@@ . $ ERROR OFF @]@@@[. @A@@@[. AN ERROR OCCURRED SCANBH )@@G@@NING A SET @]@@@[. @]@@@[SSMANERR. @C@@@[ L$SNAP BI )@@G@@ 'MANERR',7,1,SCSAVA0 @E@@@[ L A0,SSMANMSG BJ )@@G@@ . $ ACW FOR PRINT @E@@@[ ER PRINT$ . $ BK )@@G@@PRINT MSG @E@@@[ ER ERR$ . $ ERROR BL )@@G@@OFF @]@@@[. @E@@@[. AN INVALID RECORD TYPE WAS ENCOUNTBM )@@G@@ERED DURING SET SCAN @]@@@[. @]@@@[SSBADREC. @C@@@[ BN )@@G@@ L$SNAP 'BADREC',7,1,SCSAVA0 @E@@@[ L A0,SBO )@@G@@SRECMSG . $ ACW FOR PRINT @E@@@[ ER PRINT$ BP )@@G@@ . $ PRINT MSG @E@@@[ ER ERR$ BQ )@@G@@ . $ ERROR OFF @]@@@[$(0). @G@@@[SCDFPKT + 0 BR )@@G@@ . PACKET FOR DATA FILE AM @A@@@[ + BS )@@G@@ SCDFAREA @G@@@[SCAREA + 0 . LOCATIONBT )@@G@@ OF AREA TABLE ENTRY @E@@@[SCDFAREA + 1,0,2 . ARBU )@@G@@EA ENTRY FOR DFILE@E@@@[SCAREACD + 0 . AREA CODBV )@@G@@E @E@@@[SCARPG RES 2 . AREA CODE,PAGEBW )@@G@@ @G@@@[SCAREASTOP + 0 . STOP LOCATION FOR ARBX )@@G@@EA TABLE @G@@@[SCMAXREC EQU 100 . NO. OF RECORD BY )@@G@@TYPES ALLOWED @G@@@[SCRECORDS RES SCMAXREC . RECORD BZ )@@G@@TABLE FOR SCAN @G@@@[SCRECSTAT RES SCMAXREC . CCA )@@G@@OUNTS FOR RECORD TYPES @G@@@[SCC2BUFSZ EQU 1000 CB )@@G@@ . NUMBER OF WORDS MAX FOR C2 @G@@@[SCC4BUFSZ EQU 1000 CC )@@G@@ . NUMBER OF WORDS MAX FOR C4 @E@@@[SCMAXPG + 0 CD )@@G@@ . SIZE OF LARGEST PAGE@G@@@[SCDBUF1 + 0 CE )@@G@@ . BUFFER 1 FOR DATA BASE PAGES @G@@@[SCDBUF2 + 0 CF )@@G@@ . BUFFER 2 FOR DATA BASE PAGES @^@@@[SCC2LOC + CG )@@G@@ 0 @I@@@[SCC2LOW + 0 . LOW VALUE FOR CURRENCH )@@G@@T C2 INTERVAL @G@@@[SCC2HI - 100000 . HICI )@@G@@ VALUE FOR CURRENT C2 INTERVAL@G@@@[SCC2THISPG + 0 CJ )@@G@@ . 0 - NO C2 OCCUR. 1 - C2 OCCUR. @^@@@[SCC4LOC + 0 @I@@@[CK )@@G@@SCC4LOW + 0 . LOW VALUE FOR CURRENT C4 INTERVACL )@@G@@L @G@@@[SCC4HI - 100000 . HI VALUE FOR CCM )@@G@@URRENT C4 INTERVAL@G@@@[SCC4THISPG + 0 . 0 - NO CCN )@@G@@4 OCCUR. 1 - C4 OCCUR. @E@@@[SCPKT* . PACO )@@G@@CKET FOR DBAM @E@@@[SCANAME RES 2 . AREA NAMCP )@@G@@E @^@@@[ + 0 @A@@@[ + 0200CQ )@@G@@0,0 @^@@@[ + 0 @^@@@[ + 0 CR )@@G@@@E@@@[SCPAGE + 0 . PAGE SIZE @A@@@[CS )@@G@@ + SCDBPGS,0 @^@@@[ + 0,1 @E@@@[CT )@@G@@SCDBUF + 0 . CURRENT BUFFER @E@@@[SCSTPGCU )@@G@@ + 0 . START PAGE @G@@@[SCENDPGADR +CV )@@G@@ 0 . ADDRESS PAST END OF PG BUFFER @I@@@[SCENDACW )@@G@@REA + 0 . 0 - NOT END OF AREA. 1 - END AREA CX )@@G@@ @G@@@[SCSEARCH + 1,0 . INDEX REGISTER FOR SCY )@@G@@EARCH @G@@@[SCREPEAT + 0 . REPEAT COUNT FCZ )@@G@@OR SEARCH @G@@@[SCRECLAST + 0 . LAST FOUDA )@@G@@ND RECORD ENTRY @E@@@[SCDBBUFSZ + 0 . CUDB )@@G@@RRENT BUFFER SIZE @G@@@[SCC2AREA + SCDUMMY . LOCATIONDC )@@G@@ OF AREA WD FOR C2 @G@@@[SCC4AREA + SCDUMMY . LODD )@@G@@CATION OF AREA WD FOR C4 @^@@@[SCDUMMY + 0 @^@@@[SCOBJUDE )@@G@@NL + 1 @^@@@[SCMINUS1000 - 1000@I@@@[SCFPNO EQU DF )@@G@@ 10 . NUMBER OF PAGES IN FOREIGN PG BUF @G@@@[DG )@@G@@SCFPTBL RES SCFPNO*2 . PAGE TABLE FOR FOREIGN PG BUF DH )@@G@@@E@@@[SCFNXT + 0 . NEXT BUFFER TO WRITE@E@@@[DI )@@G@@SCFIND + 2,0 . INDEX FOR SEARCH @]@@@[SCFDBPDJ )@@G@@KT. @E@@@[SCFANAME RES 2 . $ AREA NAME DK )@@G@@@^@@@[ + 0 @A@@@[ + 02000,0 DL )@@G@@@^@@@[ + 0 @^@@@[ + 0 @^@@@[ DM )@@G@@ + 0 @^@@@[ + 1,0 @^@@@[ + DN )@@G@@ 0 @E@@@[SCFMASK + 0207777,0 . MASK FOR SLOT SEARCHDO )@@G@@@G@@@[SCFIND1 -1,0 . INDEX FOR SLOT SEARCH DP )@@G@@ @E@@@[SCFSET34 + 0200000,0 . SET BIT 34 DQ )@@G@@@I@@@[SCSDFPKT + 0 . PACKET FOR DATA FILE ACCESDR )@@G@@S METHOD @G@@@[ + $+1 . LOCATIONDS )@@G@@ OF END OF SET ENTRY @A@@@[ + 2,0,2 @^@@@[DT )@@G@@ + 0 @E@@@[SCSDFPKT1 + 0 . PKDU )@@G@@T FOR OWNER ENTRY @^@@@[ + $+1 @A@@@[ + DV )@@G@@ 3,0,2 @^@@@[ + 0 @G@@@[SCSMAX EQU DW )@@G@@ 30 . MAXIMUM NUM. OF SETS TO SCAN @G@@@[SCSSIZ EQDX )@@G@@U 400 . WORDS RESERVED IN SET TABLE @G@@@[. ....DY )@@G@@..................................................................@G@@@[DZ )@@G@@. SET CODE . C1 TABLE ADDRESS .EA )@@G@@@G@@@[. ................................................................EB )@@G@@......@G@@@[. COUNT OF SET ENTRIES . ADDRESS OF MANUAL WORDEC )@@G@@ IN C1 .@G@@@[. ....................................................ED )@@G@@..................@G@@@[. BUFFER CNTL ADDRESS . CNTL . SET ENTRYEE )@@G@@ ADDRESS (C1) .@G@@@[. ........................................EF )@@G@@..............................@E@@@[STBL RES SCSSIZ EG )@@G@@ . SET TABLE @G@@@[SCSNXT + 0 . NEEH )@@G@@XT LOCATION IN SET TABLE @E@@@[SCSBUF RES SCSMAX*10 EI )@@G@@ . BUFFER ACCESS WORDS @E@@@[SCSMSK + 020,0 . SEEJ )@@G@@TS TO SCAN @E@@@^SCSMSK1 + 060,0 . SETS TO EK )@@G@@SCAN @G@@@[SCSBNX + 0 . NEXT BUFFER TOEL )@@G@@ ALLOCATE @G@@@[SCSLVL + 0 . LEVEL OFEM )@@G@@ SCAN VIA SET @C@@@[SCSSVX8 + 0 . SAEN )@@G@@VE @C@@@[SCSSVX9 + 0 . SAVE @C@@@[SCSSVXEO )@@G@@10 + 0 . SAVE @C@@@[SCSSVX11 + 0 EP )@@G@@ . SAVE @^@@@[SCSSVA0 RES 2 @^@@@[SCSSVA2 REEQ )@@G@@S 2 @^@@@[SCSSVA4 RES 2 @G@@@[SCSSTKMAX EQU 8 ER )@@G@@ . MAXIMUM LEVEL FOR VIA SET SCAN @G@@@[SCSSTKSIZ EQU ES )@@G@@ 50 . SIZE OF STACK ELEMENT @E@@@[SCSSTK REET )@@G@@S SCSSTKSIZ*SCSSTKMAX . STACK FRAME @G@@@[STKADR + EU )@@G@@ SCSSTK . ADDRESS OF NEXT STACK ELEMENT @G@@@[STSAVE EQEV )@@G@@U 0 . 10 WORDS TO SAVE MINOR SET @C@@@[STSCDEEW )@@G@@ EQU 10 . SET CODE@E@@@[STRCDE EQU 11 EX )@@G@@ . RECORD CODE @G@@@[STSTBL EQU 12 EY )@@G@@ . OFFSET INTO SET TABLE @G@@@[STRTBL EQU 13 EZ )@@G@@ . LOCATION OF RECORD TABLE ENT @G@@@[STAUTO EQU FA )@@G@@ 14 . 1 INDICATES AN AUTOMATIC SET @E@@@[STMANC EQFB )@@G@@U 15 . COUNT,MANUAL ADDRESS@E@@@[STDBPO EQU FC )@@G@@ 16 . DBP FOR OWNER @E@@@[STSLOT EQU 18 FD )@@G@@ . SLOT OF DBP @E@@@[STPAGE EQU 19 FE )@@G@@ . PAGE OF DBP @E@@@[STAREA EQU 20 FF )@@G@@ . AREA OF DBP @G@@@[STRECLAST EQU 21 . LAFG )@@G@@ST RTBL ENTRY THIS LEVEL @E@@@[STDBP* EQU 22 FH )@@G@@ . DBP THIS RECORD @E@@@[STMANCO EQU 23 . MAFI )@@G@@NUAL CNTL OF OWNER@E@@@[STATBL EQU 24 . AREA TABFJ )@@G@@LE ADDRESS @G@@@[STOUL EQU 25 . 1 IF OWNER IS FK )@@G@@UNLOADED @G@@@[SCDIRECT* + 0 . 1 IF RECFL )@@G@@ORD IS DIRECT @E@@@[SCSPKT RES 2 . PAFM )@@G@@CKET FOR VIA SET @^@@@[ + 0 @C@@@[ + FN )@@G@@ 02000,0 . READ @^@@@[ RES 3 @A@@@[ FO )@@G@@ + SCSPGS,0 @^@@@[ + 0 @A@@@[SSDBPMFP )@@G@@SG + 0106,$+1 @C@@@[ 'ERROR ENCOUNTERED COMPOSIFQ )@@G@@NG A DBP' @A@@@[SSAPSMSG + 0106,$+1 @C@@@[ 'EFR )@@G@@RROR ENCOUNTERED DECOMPOSING A DBP' @A@@@[SSMANMSG + 0105,$+1 FS )@@G@@ @C@@@[ 'ERROR SCANNING A MANUAL SET' @E@@@[SSFERRFT )@@G@@MSG + 0107,$+1 . ACW FOR PRINT @E@@@[ 'UFU )@@G@@NLOAD VIA SET. FOREIGN RECORD ERROR.' @A@@@[SSVACMSG + FV )@@G@@ 0110,$+1 @E@@@[ 'VACANCY ENTRY ENCOUNTERED WHILE SCANNFW )@@G@@ING SET.' @A@@@[SSLOTMSG + 0106,$+1 @C@@@[ 'SFX )@@G@@LOT NOT IN USE ON PAGE. SET SCAN.' @C@@@[SSRECMSG + 0106,$+1 FY )@@G@@ . @C@@@[ 'RECORD TYPE NOT IN C1. SET SCAN.' FZ )@@G@@@^@@@[EOSFLG + 0 @^@@@[SCSAVA0 RES 2 @^@@@[SCSAVAGA )@@G@@2 RES 2 @^@@@[SCSAVA4 RES 2 @^@@@[SCSAVX8 + GB )@@G@@ 0 @^@@@[SCSAVX9 + 0 @^@@@[SCSAVX10 + 0 @^@@@[GC )@@G@@SCSAVX11 + 0 @^@@@[SVX8 + 0 @^@@@[SVX9 + GD )@@G@@ 0 @^@@@[SVX10 + 0 @^@@@[SVX11 + 0 GE )@@G@@@^@@@[SVA0 + 0 @^@@@[SVA2 + 0 @^@@@[SVA4 GF )@@G@@ + 0 @C@@@[SCFSAVA0 RES 2 . SAVE GG )@@G@@@C@@@[SCFSAVA2 RES 2 . @C@@@[SCFSAVA4 REGH )@@G@@S 2 . @C@@@[SCFSAVX8 + 0 GI )@@G@@ . @C@@@[SCFSAVX9 + 0 . GJ )@@G@@@C@@@[SCFSAVX10 + 0 . @^@@@[SCFSAVX11 + GK )@@G@@ 0 @^@@@[ END ___RCH@G@@@[SCFIND1 GL )@@G@@*[@@@@*SDFF*@[@@@@$(1) @C@@@@ . RELOAD FUNCTION OF DATA BASE REORGANIZAGM )@@G@@TION @B@@@@ . WRITTEN BY Z. NAZIF DECEMBER 1974 @#@@@@ AXRGN )@@G@@$ @]@@@@RELOAD* . @B@@@@ TZ TOPT . GO )@@G@@@ @@@@ SLJ DEBUG$ @G@@@@ S,H2 X11,RETURNGP )@@G@@ . SAVE RETURN ADDR TO MAIN PROG @B@@@@ TNZ,H1 Z1 GQ )@@G@@ . @B@@@@ J $+3 . @[@@@@GR )@@G@@ . @[@@@@ . @B@@@@ LX,U X10,Z1CPAR . @E@@@@GS )@@G@@ LMJ X11,CF$AM . WRITE THE Z1 TABLE OUT @[@@@@ . GT )@@G@@@[@@@@ . @[@@@@ . @C@@@@ . FIND MAXIMUM PAGE SIZE FOR AREAS INVOLVGU )@@G@@ED @[@@@@ . @G@@@@ SLJ MXPGET . $W MXPGEGV )@@G@@T GET MAX PAGE SIZE @[@@@@ . @B@@@@PF1 FORM 12,6,18 GW )@@G@@ . @[@@@@ . @[@@@@ . @^@@@@ . MCORE FOR Z2 TABLE @[@@@@GX )@@G@@ . @[@@@@ . @F@@@@ SZ A6 . $P INITIALIZE # GY )@@G@@OF WRDS IN Z2 @E@@@@ TNZ,H1 C5 . $T ANY WORDS IN GZ )@@G@@TABLE C5 @C@@@@ SLJ RER001 . $A NO YES @F@@@@HA )@@G@@ LA,H1 A0,C5 . $P # OF C5 WORDS TO A0 @B@@@@HB )@@G@@ LA A1,A0 . @B@@@@ MSI,U A1,ZHC )@@G@@2MULT . @H@@@@ AA A0,A1 . $P ADD DHD )@@G@@OUBLE THE # OF WORDS TO A0 @B@@@@ LA A2,LAST$D HE )@@G@@ . @B@@@@ AA,U A2,1 . @G@@@@ SAHF )@@G@@,H2 A2,Z2 . $P UPDATE Z2 TABLE ADDRESS @E@@@@ HG )@@G@@ AA A0,LAST$D . $P UPDATE LAST$D @B@@@@ SAHH )@@G@@ A0,LAST$D . @B@@@@ ER MCORE$ HI )@@G@@ . @[@@@@ . @[@@@@ . @^@@@@ . MCORE FOR C4 TABLE @[@@@@ . HJ )@@G@@@[@@@@ . @B@@@@ LA A0,LAST$D . @B@@@@ HK )@@G@@ LA A1,A0 . @B@@@@ AA,U A1,1 HL )@@G@@ . @E@@@@ SA,H2 A1,C4ADD . UPDATE C4 ADDRHM )@@G@@ESS @B@@@@ AA,U A0,C4SIZE . @E@@@@ SAHN )@@G@@ A0,LAST$D . UPDATE LAST$D @B@@@@ ER HO )@@G@@ MCORE$ . @[@@@@ . @[@@@@ . @[@@@@ . @^@@@@ . MCOHP )@@G@@RE FOR MERGE TABLE@[@@@@ . @[@@@@ . @B@@@@ LA A0,LHQ )@@G@@AST$D . @B@@@@ LA A1,A0 . @B@@@@HR )@@G@@ AA,U A1,1 . @G@@@@ SA,H2 A1,MHS )@@G@@RGADD . UPDATE MERGE TABLE ADDRESS @B@@@@ AA,U HT )@@G@@ A0,MRGSIZ . @E@@@@ SA A0,LAST$D . UPHU )@@G@@DATE LAST$D @B@@@@ ER MCORE$ . @[@@@@HV )@@G@@ . @[@@@@ . @A@@@@ . MCORE FOR OVERFLOW RANGE TABLE @[@@@@ . HW )@@G@@@[@@@@ . @B@@@@ LA A0,LAST$D . @B@@@@ HX )@@G@@ LA A1,A0 . @B@@@@ AA,U A1,1 HY )@@G@@ . @G@@@@ SA,H2 A1,RNGADD . UPDATE RANGE THZ )@@G@@ABLE ADDRESS @B@@@@ AA,U A0,RNGSIZ . @E@@@@IA )@@G@@ SA A0,LAST$D . UPDATE LAST$D @B@@@@ IB )@@G@@ ER MCORE$ . @[@@@@ . @[@@@@ . @ @@@@ . MCOIC )@@G@@RE FOR RECORD BUFFER @E@@@@ . RECORD BUFFER SIZE USED WILL BE THE MAXID )@@G@@IMUM ALLOWED @ @@@@ . FOR THE REORGANIZATION @[@@@@ . @[@@@@IE )@@G@@ . @B@@@@ LA A0,LAST$D . @B@@@@ LAIF )@@G@@ A1,A0 . @B@@@@ AA,U A1,1 IG )@@G@@ . @G@@@@ SA,H2 A1,RECADD . UPDATE RECORD BUFFERIH )@@G@@ ADDRESS @B@@@@ AA A0,MAXRSIZE . @E@@@@ II )@@G@@ SA A0,LAST$D . UPDATE LAST$D @B@@@@ ERIJ )@@G@@ MCORE$ . @[@@@@ . @[@@@@ . @G@@@@ . THIS CODEIK )@@G@@ EXPANDS TABLE C5 BY MERGING TABLES C5,C3 AND Z1 INTO A NEW @^@@@@ . TABIL )@@G@@LE CALLED Z2. @B@@@@ . NO REGISTERS ARE SAVED IN THIS PART @[@@@@IM )@@G@@ . @^@@@@ . REGISTER USAGE @A@@@@ . X8 TRAVERSES TABLIN )@@G@@E Z1 @A@@@@ . X9 WITHIN TABLE Z1 @[@@@@ . @A@@@@ . IO )@@G@@ X5 TRAVERSES TABLE Z2 @A@@@@ . X6 WITHIN TABLE Z2 IP )@@G@@@ @@@@ . A6 LENGTH OF Z2 @A@@@@ . X7 TRAVERSES TABLIQ )@@G@@E C3 @[@@@@ . @A@@@@ . X3 TRAVERSES TABLE C5 @A@@@@ . IR )@@G@@ X4 WITHIN C5 @C@@@@ . A0 POINTER TO ENTRY OR TEIS )@@G@@MPORARY @C@@@@ . A8,A9,A10 ARE LOOP CONTROL REGISTERS @A@@@@IT )@@G@@ . A11,A12 CALC PROC NAME @A@@@@ . A2 ADDRESS OF CALC RIU )@@G@@OUTINE@G@@@@ . A3 WILL SEARCH CLSEG$, ABSOLUTE ADDRESS OF CALC ENIV )@@G@@TRIES @[@@@@ . @[@@@@ . @E@@@@ L,H2 X5,Z2 IW )@@G@@. $P ADDRESS OF Z2 TO X5 @F@@@@ L,H2 X3,C5 . $P SIX )@@G@@TARTING ADDRESS OF C5 TO X3 @G@@@@Z2LP1 L X6,X5 . $P XIY )@@G@@6 TO INDEX THROUGH ENTRY OF Z2 @G@@@@ L X4,X3 IZ )@@G@@. $P X4 TO INDEX THROUGH ENTRY OF C5 @E@@@@ L,T1 A1,0JA )@@G@@,X3 . $P RECORD CODE TO A1 FROM C5@ @@@@ . TRANSFER C5 ENTRY TO Z2 JB )@@G@@@C@@@@ L,U A0,9 . $P #9 TO A0 @E@@@@ A,JC )@@G@@S3 A0,0,X3 . $P ADD CALC ITEM COUNT TO A0@F@@@@ A JD )@@G@@ X4,A0 . $P X4 POINTS TO AREA COUNT IN C5 @I@@@@ A,U JE )@@G@@ A0,1 . $P ADD AREA COUNT TO WORDS TRANSFERRED @E@@@@JF )@@G@@ L A10,0,X4 . $P AREA COUNT TO A10 FROM C5@G@@@@ JG )@@G@@ MSI,U A10,Z2LINK . $P # OF WRDS TO TRANSFER FOR ALL AREA @E@@@@JH )@@G@@ A A10,A0 . $P LENGTH OF C5 ENTRY TO A10@F@@@@ JI )@@G@@ L R1,A0 . $P # OF WRDS TO TRANSFER TO R1 @E@@@@ JJ )@@G@@ L X1,X3 . $P ORIGINATING ADDRESS TO X1@E@@@@ L JK )@@G@@ X2,X5 . $P DESTINATION ADDRESS TO X2@E@@@@ LMJ JL )@@G@@ X11,PTRANS . $W TRANSFER C5 ENTRY TO Z2 @E@@@@ TNZ,T2 1,X3JM )@@G@@ . ANY WITHIN CLAUSES @C@@@@ J NOWITH JN )@@G@@ . NO @E@@@@ L A13,0,X4 . $P AREA JO )@@G@@COUNT TO A13@F@@@@ AN,U A13,1 . $P A13 WILL COJP )@@G@@NTROL LOOP @ @@@@ L A3,X4 @I@@@@ A,U JQ )@@G@@ A3,1 . $P A3 POINTS TO FIRST AREA ENTRY IN C5 @I@@@@JR )@@G@@ A X6,A0 . $P X6 POINTS TO FIRST AREA ENTRYJS )@@G@@ IN Z2 @G@@@@Z2LP11 DL A11,0,A3 . $P TRANSFER 2 JT )@@G@@WORDS OF ENTRY @B@@@@ TZ WOPT . @B@@@@JU )@@G@@ J $+3 . @E@@@@ TNZ A12 JV )@@G@@ . $T OPTION SET @D@@@@ J Z2GTPR JW )@@G@@ . $J Z2GTPR @F@@@@ DS A11,0,X6 . $PJX )@@G@@ STORE TWO WORDS IN Z2 @ @@@@ L A11,2,A3 @G@@@@ JY )@@G@@ S A11,2,X6 . $P STORE THIRD WORD IN Z2 @E@@@@JZ )@@G@@Z2GPR1 L,U A12,Z2LINK . $P NEW LINK IS 4@ @@@@ KA )@@G@@ S,S1 A12,0,X6 @B@@@@ S X6,Z2AENT . KB )@@G@@@B@@@@ SZ 3,X6 . @ @@@@ A,S1 KC )@@G@@ A3,0,A3 @ @@@@ A,S1 X6,0,X6 @G@@@@ JGD KD )@@G@@ A13,Z2LP11 . $P ARE WE DONE WITH ALL AREAS @E@@@@ KE )@@G@@ . $A NO,Z2LP11 YES @F@@@@Z2CON1 LX KF )@@G@@ X11,Z2AENT . $P ADDR OF Z2AENT TO X11 @B@@@@ SZ,S1 KG )@@G@@ 0,X11 . @E@@@@ SZ 2,X5 . $P ZERO 3RKH )@@G@@D WORD OF Z2 ENTRY@E@@@@ SZ 4,X5 . $P ZERO 5TH WORDKI )@@G@@ OF Z2 @E@@@@ SZ 3,X5 . $P ZERO 4TH WORD OF Z2KJ )@@G@@ ENTRY@A@@@@ . SEARCH FOR CALC PROCEDURE ADDRESS@[@@@@ . @E@@@@ KK )@@G@@ TNZ,S3 0,X5 . ANY CALC ENTRIES @I@@@@ J KL )@@G@@ Z2GT2 . SKIP PART THAT ESTABLISHES CALC ADDRESSE KM )@@G@@@E@@@@ DL A11,7,X5 . CALC PROC NAME TO A11,A12 @G@@@@KN )@@G@@ L,H2 A13,CLSEG$ . $P COUNT OF CALC PROCEDURES TO A13 KO )@@G@@@E@@@@ AN,U A13,1 . $P A13 WILL CONTROL LOOP @G@@@@KP )@@G@@ L,U A3,CLSEG$+1 . $P A3 WILL INDEX THROUGH ENTRIES KQ )@@G@@@ @@@@Z2CAL1 DTE A11,0,A3 @^@@@@ J $+2 @ @@@@KR )@@G@@ J CALAD1 @^@@@@ A,U A3,3@E@@@@ KS )@@G@@ JGD A13,Z2CAL1 . $T ANY MORE CALC PROCEDURES@E@@@@ SLKT )@@G@@J RER002 . $A YES,Z2CAL1 NO,ERR @]@@@@Z2GTPR . @B@@@@KU )@@G@@ DS A0,SAVER1 . @B@@@@ DS A2,SKV )@@G@@AVER1+2 . @E@@@@ LA,T3 A1,0,A3 . $P AREA KW )@@G@@CODE TO A1 @F@@@@ LX,U X10,C3 . $P PREPARE TO KX )@@G@@SEARCH C3 @F@@@@ LMJ X11,TABSE1 . $W TABSE SEARCKY )@@G@@H C3 TABLE @B@@@@ TZ A2 . @B@@@@ KZ )@@G@@ J PTTGT1 . @B@@@@ LA,U A12,1 LA )@@G@@ . @D@@@@ DS A11,0,X6 . STORE PAGE 1 LB )@@G@@@G@@@@ LA,H1 A11,4,A0 . $P # OF PAGES ALLOCATED TOLC )@@G@@ A11 @G@@@@ ANA,H2 A11,5,A0 . $P SUBTRACT GLOBAL OLD )@@G@@VERFLOW @B@@@@ SA A11,2,X6 . @B@@@@ LE )@@G@@ J PTTGT2 . @E@@@@ . PATCH TO ZERO OUT ENTRIES FLF )@@G@@OR AREAS NOT IN AREA COMMAND @[@@@@ . @]@@@@PTTGT1 . @B@@@@ LG )@@G@@ LA,U A12,0 . @B@@@@ DS A11,0,X6 LH )@@G@@ . @B@@@@ SZ 2,X6 . @]@@@@PTTGT2LI )@@G@@ . @B@@@@ DL A0,SAVER1 . @B@@@@ DLLJ )@@G@@ A2,SAVER1+2 . @D@@@@ J Z2GPR1 LK )@@G@@ . $J Z2GPR1 @]@@@@NOWITH . @D@@@@ . NO WITHIN CLAUSE ON THIS RELL )@@G@@CORD, CREATE AN ENTRY @A@@@@ . WITH AREA CODE = 0 AND RANGE 0 @^@@@@LM )@@G@@ . X5 POINTS TO Z2 ENTRY@[@@@@ . @[@@@@ . @F@@@@ L,U LN )@@G@@ A13,10 . RELATIVE LOCATION TO A13 @H@@@@ S,T2 LO )@@G@@ A13,1,X5 . STORE RELATIVE LOCATION IN Z2 ENTRY @G@@@@ LP )@@G@@ A X6,A0 . X6 POINTS TO FIRST AREA ENTRY @G@@@@LQ )@@G@@ AN,U X6,1 . X6 POINTS TO AREA CNT LOC LR )@@G@@@ @@@@ L,U A13,1 @F@@@@ S A13,0,X6 LS )@@G@@ . AREA COUNT TO Z2 ENTRY @E@@@@ A,U X6,1 LT )@@G@@ . ADVANCE X6 BY 1 @^@@@@ SZ 0,X6@B@@@@ LU )@@G@@ SZ 1,X6 . @B@@@@ SZ 2,X6 LV )@@G@@ . @B@@@@ SZ 3,X6 . @D@@@@ LW )@@G@@ L,U A13,Z2LINK . LINK TO A13 @E@@@@ S,S1 LX )@@G@@ A13,0,X6 . LINK TO Z2 ENTRY @E@@@@ S X6,ZLY )@@G@@2AENT . SAVE ADDRESS OF LINK@E@@@@ A,S1 X6,0,X6 LZ )@@G@@ . POINT TO NEXT @B@@@@ J Z2CON1 MA )@@G@@ . @F@@@@CALAD1 L,H1 A2,2,A3 . $P ADDRESS OF CALC PROC TO AMB )@@G@@2 @G@@@@ S,H2 A2,4,X5 . $P SAVE ADDR OF CALC ROUTINEMC )@@G@@ IN Z2 @C@@@@ . STORE CALC ITEMS ABSOLUTE ADDRESSES IN Z2 @ @@@@MD )@@G@@ L A3,X5 @^@@@@ A,U A3,9@G@@@@ ME )@@G@@ LXI,U A3,1 . $P X3 WILL INDEX THROUGH CALC ITEMS @E@@@@MF )@@G@@ L,S3 A14,0,X5 . $P # OF CALC ITEMS TO A14 @G@@@@ MG )@@G@@ AN,U A14,1 . $P A14 WILL CONTROL LOOP FOR CALC ITEMS @F@@@@MH )@@G@@ LA A2,RECADD . ADDRESS OF RECORD BUFFER @B@@@@MI )@@G@@ AA,U A2,1 . @G@@@@CALAD2 L,H2 A15,MJ )@@G@@0,A3 . $P START WRD CNT OF CALC ITEM TO A15 @G@@@@ A MK )@@G@@ A15,A2 . $P ABSOLUTE ADDR OF CALC ITEM TO A15 @E@@@@ S,ML )@@G@@H2 A15,0,*A3. $P STORE ABSOLUTE ADDR IN Z2 @E@@@@ JGD MM )@@G@@ A14,CALAD2 . $T ANY MORE CALC ITEMS @D@@@@ MN )@@G@@ . $A YES,CALAD2 NO @]@@@@Z2GT2 . @ @@@@ L MO )@@G@@ X6,X5 @^@@@@ AN,U X6,1@G@@@@ A X6,AMP )@@G@@0 . $P POINT TO AREA COUNT IN Z2 ENTRY @G@@@@ S,H2 MQ )@@G@@ X3,2,X5 . $P SAVE ADDRESS OF ORIGINAL ENTRY OF C5 @A@@@@ . PREPARE TMR )@@G@@O SEARCH Z1 TABLE @A@@@@ . RECORD CODE IS STILL IN A1 @E@@@@MS )@@G@@ L,U X10,Z1 . $P ADDRESS OF Z1 TO X10 @G@@@@ MT )@@G@@ LMJ X11,TABSE1 . $W SEARCH TABLE Z1 FOR RECORD CODE @G@@@@MU )@@G@@ S A2,Z1ENSW . $P SAVE RET CODE FROM Z1 IN Z1ENSW MV )@@G@@@F@@@@ JNZ A2,Z2GT11 . $T ANY ENTRY IN Z1 FOR REC CODE MW )@@G@@@C@@@@ . $A NO,Z2GT1 YES @E@@@@ L MX )@@G@@ X8,A0 . $P X8 POINTS TO ENTRY IN Z1 @E@@@@ L MY )@@G@@ X9,X8 . $P X9 WILL INDEX THROUGH Z1 @D@@@@ L,T2 A0,0MZ )@@G@@,X8 . $P LOAD FACTOR TO A0 @F@@@@ S,T1 A0,1,X5 . $P SNA )@@G@@AVE IN T1 OF 2ND WORD IN Z2 @D@@@@ L A0,1,X8 . $P FNB )@@G@@CNT + ICNT TO A0 @F@@@@ S A0,3,X5 . $P STORE FCNT + NC )@@G@@ICNT IN Z2 ENTRY @E@@@@ L,H2 A8,1,X8 . $P # OF IN STATEND )@@G@@MENTS TO A8 @D@@@@ TNZ A8 . $T ANY IN STATEMENTS NE )@@G@@@D@@@@ J Z2GT1 . $A NO,Z2GT1 YES @G@@@@ NF )@@G@@ AN,U A8,1 . $P A8 TO CONTROL LOOP[ SEARCH FOR IN] @G@@@@NG )@@G@@ A,U X9,2 . $P X9 POINTS TO FIRST IN WRD IN Z1 NH )@@G@@@G@@@@ LXI,U X9,1 . $ X9 WILL INCREMENT BY 1 UPON INDENI )@@G@@XING @]@@@@Z2BLD1 . @E@@@@ L,T3 A1,0,*X9 . $P AREA CONJ )@@G@@DE TO A1 FROM Z1 @F@@@@ . SEARCH Z2 TABLE FOR AREA, X6 POINTS TO AREA CNK )@@G@@OUNT IN Z2 TABLE @D@@@@ L,H2 A10,0,X6 . $P AREA COUNT TONL )@@G@@ A10 @E@@@@ AN,U A10,1 . $P A10 WILL CONTROL LOOP NM )@@G@@@H@@@@ L X4,X6 . X4 WILL INDEX THROUGH THE AREA NN )@@G@@ENTRIES @^@@@@ A,U X4,1 @D@@@@Z2LP2 TNE,T3 A1,0NO )@@G@@,X4 . $T FOUND AREA IN Z2 @C@@@@ J Z2BLD3 . $A YNP )@@G@@ES,Z2BLD3 NO@E@@@@ A,S1 X4,0,X4 . $P POINT TO NEXT ARNQ )@@G@@EA @C@@@@ JGD A10,Z2LP2 . $T ARE WE DONE @E@@@@ NR )@@G@@ . $A NO,Z2LP2 YES Z2BL33 @]@@@@Z2BL33 NS )@@G@@@I@@@@ L,U A4,Z2LINK . PREPARE TO PATCH LAST LINKNT )@@G@@ IN Z2 AREA EN @E@@@@ S,S1 A4,0,X4 . STORE INNU )@@G@@ Z2 ENTRY @F@@@@ A,U X4,Z2LINK . POINT TO NEXT NV )@@G@@AREA ENTRY @E@@@@ L,H2 A4,0,X6 . $P AREA CNT TONW )@@G@@ A4 @F@@@@ A,U A4,1 . $P INCREMENT AREA CNNX )@@G@@T @F@@@@ S,H2 A4,0,X6 . STORE AREA COUNT IN NY )@@G@@Z2 @G@@@@ S,T3 A1,0,X4 . $P AREA CODE TO NEW NZ )@@G@@ENTRY IN Z2 @E@@@@ L,U A4,0 . $P LINK TO A4 OA )@@G@@ @G@@@@ S,S1 A4,0,X4 . $P LINK TO S1 OF ENTOB )@@G@@RY IN Z2 @C@@@@Z2BLD3 . . FOUND AREA CODE @D@@@@OC )@@G@@ L,H1 A4,0,X9 . $P LOWER BOUND TO A4 @E@@@@ S OD )@@G@@ A4,1,X4 . $P SAVE LOWER BOUND IN Z2 @D@@@@ L,H2 OE )@@G@@ A4,0,*X9 . $P UPPER BOUND TO A4 @E@@@@ S A4,2,X4 OF )@@G@@. $P SAVE UPPER BOUND IN Z2 @F@@@@ JGD A8,Z2BLD1 . $T AOG )@@G@@RE WE DONE WITH IN ENTRIES @C@@@@ J Z2GT1 OH )@@G@@ . $J Z2GT1@F@@@@Z2GT11 SZ,T1 1,X5 . $P ZERO OUT LOOI )@@G@@AD FACTOR @F@@@@ SZ 3,X5 . $P ZERO OUT INOJ )@@G@@CNT & FCNT @[@@@@ . @G@@@@ . START OVER WITH ALL AREAS IN Z2 AND GETOK )@@G@@ LOAD FACTOR & BITS FROM C3. @G@@@@ . WHEN DONE, X6 WILL POINT TO NEXT OL )@@G@@WORD PAST ALL THE AREA ENTRIES IN @]@@@@ . Z2 @]@@@@Z2GT1 OM )@@G@@@G@@@@ L,H2 A10,0,X6 . $A NO,Z2BLD1 YES AREA CNT OF Z2 TO ON )@@G@@A10 @H@@@@ AN,U A10,1 . $P AREA COUNT TO A10, A10 TOOO )@@G@@ CONTROL LOOP @G@@@@ A,U X6,1 . $P X6 POINTS TO OP )@@G@@FIRST AREA ENTRY IN Z2 @E@@@@Z2LP3 L,T3 A1,0,X6 . $P AREA COOQ )@@G@@DE FROM Z2 TO A1 @E@@@@ L,U X10,C3 . $P ADDRESS OF C3OR )@@G@@ TO X10 @E@@@@ LMJ X11,TABSE1 . $W SEARCH TABLE C3 FOOS )@@G@@R AREA@D@@@@ JNZ A2,Z2BLD4 . $T FOUND AREA ENTRY @C@@@@OT )@@G@@ L X7,A0 . $A NO,Z2BLD4 YES@C@@@@ L,S4 OU )@@G@@ A0,3,X7 . $P BITS TO A0 @E@@@@ S,S2 A0,0,X6 . $P SOV )@@G@@AVE IN AREA ENTRY IN Z2 @D@@@@ L,H1 A0,6,X7 . $P LOAD FAOW )@@G@@CTOR TO A0 @C@@@@ S,T2 A0,0,X6 . $P STORE IN Z2 @F@@@@OX )@@G@@Z2BLD5 A,S1 X6,0,X6 . $P X6 POINTS TO NEXT ENTRY @C@@@@OY )@@G@@ JGD A10,Z2LP3 . $T ARE WE DONE @C@@@@ OZ )@@G@@ . $A NO,Z2LP3 YES @B@@@@ A,U X6,Z2LINK PA )@@G@@ . @E@@@@ TZ Z1ENSW . $T WAS THERE AN ENTRY IN Z1 PB )@@G@@@C@@@@ J Z2ENT1 . $J Z2ENT1 NO @F@@@@ TZPC )@@G@@,H2 1,X8 . WAS THERE IN STATEMENT @C@@@@ J PD )@@G@@ Z2FROM . YES @^@@@@ LXI,U X9,1@^@@@@PE )@@G@@ A,U X9,2@C@@@@Z2FROM TNZ,H1 1,X8 . $T ANY FCNPF )@@G@@T @C@@@@ J Z2ENT1 . $J Z2ENT1 @A@@@@ PG )@@G@@ L A0,X6 . $ @G@@@@ AN A0,X5 . $ CPH )@@G@@ALCULATE RELATIVE POSITION OF FCNT @F@@@@ S,H1 A0,2,X5 PI )@@G@@. $P SAVE RELATIVE POSITION IN Z2 @F@@@@ . TRANSFER FCOUNT ENTRIES, X9PJ )@@G@@ POINTS TO FIRST ENTRY OF FCOUNT @A@@@@ LXI,U X6,1 PK )@@G@@. @C@@@@ L,H1 A8,1,X8 . $P FCNT TO A8 @E@@@@ PL )@@G@@ AN,U A8,1 . $P A8 WILL CONTROL LOOP @]@@@@Z2BLD2 . PM )@@G@@@E@@@@ L A0,0,*X9 . $P FROM ENTRY TO A0 FROM Z1 @F@@@@PN )@@G@@ S A0,0,*X6 . $P SAVE FROM ENTRY IN Z2 ENTRY @C@@@@PO )@@G@@ JGD A8,Z2BLD2 . $T ARE WE DONE @C@@@@Z2ENT1 LXI,U PP )@@G@@ X5,0 . $A NO,Z2BLD2 YES@A@@@@ LXI,U X6,0 . $P PQ )@@G@@@E@@@@ L A0,X6 . $P NEXT ENTRY ADDRESS TO A0 @D@@@@PR )@@G@@ AN A0,X5 . $P CALCULATE LINK @D@@@@ S,PS )@@G@@T3 A0,0,X5 . $P SAVE LINK IN Z2 @E@@@@ A A6,APT )@@G@@0 . $P UPDATE # OF WRDS IN Z2 @D@@@@ TNZ,T3 0,X3 PU )@@G@@. $T ANY LINK IN C5 @C@@@@ J Z2DONE . $J Z2DONE PV )@@G@@ @E@@@@ A,T3 X3,0,X3 . $P POINT TO NEXT ENTRY IN C5PW )@@G@@@E@@@@ A,T3 X5,0,X5 . $P POINT TO NEXT ENTRY IN Z2@B@@@@PX )@@G@@ J Z2LP1 . $J Z2LP1 @D@@@@Z2BLD4 . PY )@@G@@ NO AREA ENTRY IN C3 @D@@@@ SZ,S2 0,X6 . $P ZPZ )@@G@@ERO BITS FIELD @D@@@@ SZ,T2 0,X6 . $P ZERO LOAD FACQA )@@G@@TOR @C@@@@ J Z2BLD5 . $J Z2BLD5 @C@@@@Z2DONEQB )@@G@@ SZ,T3 0,X5 . $P ZERO LINK @E@@@@ S,H1 A6,ZQC )@@G@@2 . $P STORE # OF WRDS IN Z2 @[@@@@ . @^@@@@ . Z2 HAS BEEN BUIQD )@@G@@LT @[@@@@ . @[@@@@ . @[@@@@ . @ @@@@ . WRITE OUT THE Z2 TABLQE )@@G@@E @[@@@@ . @B@@@@ LX,U X10,Z2CPAR . @F@@@@QF )@@G@@ LMJ X11,CF$AM . WRITE THE Z2 TABLE OUT @[@@@@QG )@@G@@ . @[@@@@ . @[@@@@ . @[@@@@ . @C@@@@ . PREPARE TO MCORE FOR QH )@@G@@THE BUFFER NEEDED @[@@@@ . @[@@@@ . @B@@@@ L QI )@@G@@ A0,LAST$D . @B@@@@ L A1,A0 . QJ )@@G@@@B@@@@ A,U A1,1 . @B@@@@ S QK )@@G@@ A1,BUFADD . @B@@@@ LA A2,MAXPSIZE . QL )@@G@@@E@@@@ MSI,U A2,BLSIZE . $P GET BUFFER SIZE @B@@@@QM )@@G@@ MSI,U A2,NUMBLK . @B@@@@ AA A0,AQN )@@G@@2 . @B@@@@ S A0,LAST$D . @D@@@@QO )@@G@@ ER MCORE$ . $W MCORE$ @[@@@@ . @[@@@@QP )@@G@@ . @[@@@@ . @C@@@@ . PREPARE TO MCORE FOR THE BUFFER INDEX TABLE QQ )@@G@@@[@@@@ . @[@@@@ . @B@@@@ L A0,LAST$D . QR )@@G@@@B@@@@ L A1,A0 . @B@@@@ A,U QS )@@G@@ A1,1 . @B@@@@ S A1,BFIADD . QT )@@G@@@B@@@@ LA,U A2,BFISIZ . @B@@@@ AA QU )@@G@@ A0,A2 . @B@@@@ S A0,LAST$D . QV )@@G@@@D@@@@ ER MCORE$ . $W MCORE$ @[@@@@/ QW )@@G@@@]@@@@MLOOP1 . @A@@@@ . THIS IS THE MAIN LOOP OF RELOAD @[@@@@ . QX )@@G@@@A@@@@ . ACCESS RECORD FROM DATA FILE @[@@@@ . @A@@@@ . SAVE OLD QY )@@G@@BUFPKT FOR DEBUGGING @[@@@@ . @B@@@@ DL A0,BUFPKT QZ )@@G@@ . @B@@@@ DS A0,BPKTSV . @B@@@@ RA )@@G@@ DL A0,BUFPKT+2 . @B@@@@ DS A0,BPKTSV+RB )@@G@@2 . @[@@@@ . @[@@@@ . @B@@@@ . INITIALIZE SWITCHES FOR NEXRC )@@G@@T RECORD @[@@@@ . @E@@@@ SZ STDWRAP . $PRD )@@G@@ RESET STDWRAP @G@@@@ SZ BUFPKT+3 . $P RESETRE )@@G@@ 4TH WORD OF BUFPKT @F@@@@ SZ ST7RAP . $PRF )@@G@@ RESET STN WRAP SWITCH @F@@@@ SZ ARSCAN . BERG )@@G@@GINNING OF AREA SCAN @G@@@@ SZ FROMSW . $PRH )@@G@@ RESET FROM ENTRY SWITCH @F@@@@ SZ STNRSW RI )@@G@@ . RESET NEAR LOGIC SWITCH @G@@@@ LX X10,RECADD . $P RJ )@@G@@ADDRESS OF RECORD BUFFER TO X10 @F@@@@ LMJ X11,DF$AMRRK )@@G@@ . $P NEXT RECORD TO RECORD BUFFER @F@@@@ L A0,DFIEOF RL )@@G@@ . $P END OF FILE INDICATOR TO A0 @F@@@@ LA A1,RECADD RM )@@G@@ . ADDRESS OF RECORD BUFFER @G@@@@ TNE A0,0,A1 RN )@@G@@ . $T WAS END OF FILE WORD RETURNED @C@@@@ J DFEORO )@@G@@F . $A YES,DFEOF @G@@@@ . RECORD PRECEDED WITH CONTROL WORD SHOULRP )@@G@@D BE IN RECORD BUFFER NOW @F@@@@ TNZ 0,A1 . $T RQ )@@G@@IS FIRST WRD CONTROL OR DBP @C@@@@ J CONTRL . $A RR )@@G@@YES,CONTRL @[@@@@ . @A@@@@ . GET TABLE ENTRIES FOR RECORD @[@@@@RS )@@G@@ . @F@@@@ LA A0,RECADD . ADDRESS OF RECORD BURT )@@G@@FFER @E@@@@ L,T1 A1,1,A0 . $P RECORD CODE TO A1 RU )@@G@@@F@@@@ L,U X10,Z2 . $P ADDRESS OF Z2 WRD TO X10 RV )@@G@@@H@@@@ LMJ X11,TABSE1 . $W SEARCH TABLE Z2 FOR ENTRY (RERW )@@G@@C CODE) @E@@@@ TZ A2 . $T ARE WE SUCCESSFULRX )@@G@@ @C@@@@ SLJ RER003 . $E NO ERROR @F@@@@ RY )@@G@@ L X5,A0 . $P POINTER OF Z2 ENTRY TO X5 @E@@@@ RZ )@@G@@ S X5,Z2ENT . $P SAVE POINTER TO ENTRY @[@@@@ . @A@@@@SA )@@G@@ . DECOMPOSE DBK & FIND OUT AREA @F@@@@ LA A0,RECADD SB )@@G@@ . ADDRESS OF RECORD BUFFER @C@@@@ L A0,0,A0 SC )@@G@@. $P DBK TO A0 @F@@@@ SLJ DBP$APS . $W CALL ROUTINE SD )@@G@@TO DECOMPOSE DBP @B@@@@ JNZ A1,EDPAT1 . @B@@@@SE )@@G@@ TNZ DESARE . @B@@@@ SLJ RER0SF )@@G@@04 . @B@@@@ LA A1,DESARE . @]@@@@SG )@@G@@EDPAT1 . @G@@@@ DS A1,OLDARE . $P SAVE VALUES RETURNESH )@@G@@D FROM DBP$APS @A@@@@ DS A3,OLDSLT . $P @[@@@@ . SI )@@G@@@C@@@@ . FIGURE OUT IF USER SPECIFIED FROM ENTRY @E@@@@ . X5 POINTSSJ )@@G@@ TO Z2 ENTRY FOR RECORD. ( SAVED IN Z2ENT ) @[@@@@ . @[@@@@ . SK )@@G@@@[@@@@ . @C@@@@ L,H1 A3,3,X5 . $P #OF FCNT TO A3 @E@@@@SL )@@G@@ TNZ A3 . $T ANY FROM ENTRY @E@@@@ SM )@@G@@ J TYPECHK . $A NO,RELCN2 YES @D@@@@ ANSN )@@G@@,U A3,1 . $P A3 WILL CONTROL LOOP @E@@@@ L X6,XSO )@@G@@5 . $P X6 WILL SCAN FCNT ENTRIES @E@@@@ A,H1 X6,2,X6 SP )@@G@@. $P POINT TO FCNT ENTRIES @D@@@@FCNLP1 TNE,T2 A1,0,X6 . $T ASQ )@@G@@REA CODES MATCH @C@@@@ J FRFND1 . $A YES,FRFND1 NOSR )@@G@@@E@@@@ A,U X6,1 . $P POINT TO NEXT ENTRY @G@@@@SS )@@G@@ JGD A3,FCNLP1 . $T ARE WE DONE WITH ALL FCNT ENTRIES ST )@@G@@@D@@@@ J TYPECHK . $J TYPECHK @H@@@@FRFND1SU )@@G@@ LA,T3 A1,0,X6 . $P FOUND FROM ENTRY FOR THIS AREA SV )@@G@@@B@@@@ LA,U A0,1 . @E@@@@ SA SW )@@G@@ A0,FROMSW . $P SET FROMSW @[@@@@ . @[@@@@ . @A@@@@SX )@@G@@ . CHECK IF RECORD IS A CALC RECORD @[@@@@ . @[@@@@ . @]@@@@TYPECHSY )@@G@@K @[@@@@ . @[@@@@ . @F@@@@ LA A0,RECADD SZ )@@G@@ . ADDRESS OF RECORD BUFFER @G@@@@ L,S3 A5,1,A0 . $PTA )@@G@@ RECORD DESCRIPTION TO A5 6 @G@@@@ AND A5,CALMSK TB )@@G@@. $P MASK RECORD TYPE BIT,RESULT TO A6 @E@@@@ JNZ A6,RTC )@@G@@ELCAL . $T IS RECORD A CALC RECORD @C@@@@ TD )@@G@@. $A YES,RELCAL NO@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@TE )@@G@@ . @[@@@@ . @]@@@@RELCN2 . @]@@@@ . @[@@@@ . @E@@@@TF )@@G@@ LA A0,FROMSW . $T FROMSW SET @E@@@@ TG )@@G@@ JNZ A0,RELCN1 . $A YES,RELCN1 NO @B@@@@ TNTH )@@G@@Z DESARE . @B@@@@ SLJ RER005 TI )@@G@@ . @B@@@@ L A1,DESARE . @G@@@@RELCN1 S TJ )@@G@@ A1,NEWARE . $P SAVE AREA CODE TO BE LOADED IN NEWARE@[@@@@ . TK )@@G@@@C@@@@ . FIND CORRESPONDING AREA ENTRY WITHIN Z2 ENTRY@[@@@@ . @G@@@@TL )@@G@@ SLJ FZ2AENT . $W FZ2AENT FIND AREA ENTRY TM )@@G@@@E@@@@ JNZ A0,NPGMSG . $T AREA ENTRY FOUND @E@@@@TN )@@G@@ . $A NO,NPGEMSG YES @F@@@@Z2AFNDTO )@@G@@ S X6,Z2AREA . $P SAVE POINTR TO Z2 AREA ENTRY @E@@@@ . TP )@@G@@ . A1 SHOULD CONTAIN NEW AREA @E@@@@ LXTQ )@@G@@,U X10,C3 . $P ADDRESS OF C3 TO X10 @G@@@@ LMJ TR )@@G@@ X11,TABSE1 . $W SEARCH C3 TABLE FOR NEW AREA ENTRY @C@@@@ TZTS )@@G@@ A2 . $T SUCCESSFUL @C@@@@ SLJ RER006 TT )@@G@@. $E EXIT NO @E@@@@ S A0,NEWC3A . $P SAVE ADDRESS TU )@@G@@TO C3 ENTRY @[@@@@ . @[@@@@ . @[@@@@ . @C@@@@ . CHECK IF RECORDTV )@@G@@ HAS A DIRECT LOCATION MODE @C@@@@ . LOCATION MODE IS IN S4 OF FIRST ZTW )@@G@@2 ENTRY WORD@ @@@@ . Z2 ENTRY ADDRESS IN Z2ENT @[@@@@ . @[@@@@ . TX )@@G@@@G@@@@ LA A2,Z2ENT . ADDRESS OF Z2 ENTRY TO A2 TY )@@G@@ @E@@@@ LA,S4 A2,0,A2 . $P TYPE TO A2 TZ )@@G@@@G@@@@ TNE,U A2,1 . $P DOES REC HAVE DIRECT LOUA )@@G@@C @E@@@@ J RELDIR . $T YES,RELDIR NO UB )@@G@@@F@@@@ TNZ OWNRSW . $T IS OWNER SWITCH SET UC )@@G@@@D@@@@ J STNGT1 . $J STNGT1 @]@@@@OWNCR1UD )@@G@@ . @F@@@@ . OWNER RECORD SWITCH WAS SET INDICATING POSSIBLE STORE NEAUE )@@G@@R @[@@@@ . @F@@@@ SZ OWNRSW . $P RESETUF )@@G@@ OWNER SWITCH @G@@@@ L A0,OWNARE . $P AREA UG )@@G@@CODE OF OWNER TO AO @G@@@@ S A0,STNARE . $PUH )@@G@@ A/C OF OWNER TO STNARE @E@@@@ L A0,OWNPGE UI )@@G@@ . $P PAGE # TO A0 @E@@@@ S A0,STNPGE . PAUJ )@@G@@GE # TO STNPGE @G@@@@ TNE A1,STNARE . $T STNARUK )@@G@@E SAME AS AREA IN A1 @E@@@@ J STCRNG . $AUL )@@G@@ YES,STCRNG NO @[@@@@ . @F@@@@ . STNARE WAS FOUND TO BE DIFFERENT UM )@@G@@THAN AREA FOR THIS RECORD @E@@@@ . CHECK IF RECORD CAN RESIDE IN STNUN )@@G@@ARE WHERE OWNER IS @E@@@@ . THIS IS TO COVER THE CASE WHERE THE CALUO )@@G@@C ROUTINE FOR THE @D@@@@ . OWNER CHANGES THE AREA DUE TO A CALC KEY CHANUP )@@G@@GE. @C@@@@ . NEWARE CONTAINS AREA CODE BEFORE THIS CHECK. @B@@@@ . PREUQ )@@G@@VIOUS VALUE OF A1 SAVED IN NEWARE @[@@@@ . @[@@@@ . @E@@@@ UR )@@G@@ LA A1,STNARE . $P STNARE TO A1 @D@@@@ SLUS )@@G@@J FZ2AENT . $W FZ2AENT @E@@@@ JNZ A0,OUT )@@G@@WNCR2 . $T AREA ENTRY FOUND @B@@@@ . $A NO,OWUU )@@G@@NCR2 YES @[@@@@ . @[@@@@ . @C@@@@ . RECORD CAN BE RELOADED IN AUV )@@G@@REA OF OWNER. @ @@@@ . UPDATE Z2AREA AND NEWC3A. @[@@@@ . @[@@@@UW )@@G@@ . @E@@@@ SX X6,Z2AREA . $P UPDATE Z2AREA UX )@@G@@@E@@@@ LX,U X10,C3 . $P ADDRESS OF C3 @G@@@@UY )@@G@@ LMJ X11,TABSE1 . $W TABSE1 SEARCH C3 FOR STNARE UZ )@@G@@@E@@@@ JZ A2,$+2 . $T SUCCESSFULL @E@@@@VA )@@G@@ SLJ RER006 . $A NO,RER006 YES @E@@@@ VB )@@G@@ SA A0,NEWC3A . $P UPDATE NEWC3A @E@@@@ SAVC )@@G@@ A1,NEWARE . $P UPDATE NEWARE @D@@@@ J VD )@@G@@ STCRNG . $J STCRNG @G@@@@STNGT1 TE A1,STNARE VE )@@G@@ . $T STNARE SAME AS AREA IN A1 @E@@@@ J RELCVF )@@G@@N3 . $A NO,RELCN3 YES @]@@@@STCRNG . @E@@@@ L,VG )@@G@@H2 A2,2,X6 . $P UPPER RANGE TO A2@E@@@@ L VH )@@G@@ A0,STNPGE . $P STN PAGE TO A0 @F@@@@ TG A2,AVI )@@G@@0 . STORE NEAR PGE > UPPER @B@@@@ J $+2 VJ )@@G@@ . @D@@@@ J RELCN3 . IGNORE IVK )@@G@@T @G@@@@ TLE,H2 A0,1,X6 . LOWER RNGE <= STORE VL )@@G@@NEAR PGE @D@@@@ J RELCN3 . IGNORE IT VM )@@G@@@E@@@@ . $T STN PGE IN RANGE @E@@@@VN )@@G@@ . $A NO,RELCN2 YES @F@@@@ VO )@@G@@ S,H1 A0,3,X6 . $P STN PGE TO Z2 ENTRY @B@@@@ VP )@@G@@ L,U A0,1 . @F@@@@ S A0,STNRSW VQ )@@G@@ . $P SET STORE NEAR SWITCH @D@@@@ J AREGT2 VR )@@G@@ . $J AREGT2 @G@@@@OWNCR2 LA A1,NEWARE . REVS )@@G@@CORD CANNOT BE RELOADED TO @E@@@@ VT )@@G@@ . SAME AREA AS OWNER @]@@@@RELCN3 @G@@@@ TZ,H2 3,X6VU )@@G@@ . $T ANY PGE NUMBER IN Z2 AREA ENTRY @D@@@@ J VV )@@G@@ AREGT2 . $J AREGT2 @F@@@@NPGENU . NO PAGE HAS BEEN DVW )@@G@@ELIVERED TO THE RECORD FROM AREA @E@@@@ L,U X10,BUFPKTVX )@@G@@ . $P ADDRESS OF BUFPKT TO X10@E@@@@ L,U A0,6 . $P FVY )@@G@@UNCTION CODE 6 TO A0 @G@@@@ S,H2 A0,0,X10 . $P FUNCTIOVZ )@@G@@N CODE TO BUFFER ROUTINE PKT @D@@@@ S,T1 A1,1,X10 . $P AWA )@@G@@REA CODE(NEW) @A@@@@ L A0,Z2AREA @G@@@@ WB )@@G@@ S,H2 A0,2,X10 . $P AREA POINTER OF Z2 TO BUFPKT @G@@@@WC )@@G@@ LMJ X11,BUFROU . $W GET FIRST DATA PAGE WITHIN RANGE WD )@@G@@@ @@@@ TZ,H1 BUFPKT @ @@@@ SLJ RER010 WE )@@G@@@G@@@@ . THE CALL WILL SET THE PAGE NUMBERWF )@@G@@ IN @D@@@@ . THE Z2 AREA ENTRY @B@@@@WG )@@G@@ SLJ DATYPE . @C@@@@ J ARECWH )@@G@@UR . $J ARECUR @D@@@@ . CHECK IF LAST AREA, RECORD AND PAGE AREWI )@@G@@ CURRENT @]@@@@AREGT2 . @E@@@@ TE A1,CURARE . $T IWJ )@@G@@S NEW AREA CURRENT @E@@@@ J ARNCUR . $A NO,ARNCWK )@@G@@UR YES,ARECUR @]@@@@ARECUR . @B@@@@ L A1,CURARE WL )@@G@@ . @D@@@@ S A1,NEWARE . $P SAVE AREA CODE WM )@@G@@@F@@@@ LA A0,RECADD . ADDRESS OF RECORD BUFFER WN )@@G@@@E@@@@ L,T1 A2,1,A0 . $P RECORD CODE TO A2 @B@@@@WO )@@G@@ TNE A2,CURREC . @^@@@@ J $+2 WP )@@G@@@E@@@@ SA A2,CURREC . MAKE RECORD CURRENT @A@@@@WQ )@@G@@ . @]@@@@RECCUR . @F@@@@ TZWR )@@G@@ STNRSW . $T ANY STORE NEAR LOGIC @E@@@@ J WS )@@G@@ RECGT1 . YES,RECGT1 NO @E@@@@ L,H2 WT )@@G@@ A3,3,X6 . $P LAST PAGE FROM Z2AREA @D@@@@RECGT2 TE A3,CWU )@@G@@URPGE . $T IS PAGE CURRENT @C@@@@ J PGNCUR . $A NWV )@@G@@O,PGNCUR YES@B@@@@PGECUR L A3,CURPGE . @F@@@@ WW )@@G@@ S A3,NEWPGE . $P SAVE CURRENT PAGE FOR POINTER @C@@@@ . PAGWX )@@G@@E IS CURRENT, CHECK IF WE CAN STORE IN IT @E@@@@ L X9,CUWY )@@G@@RADD . $P ADDRESS OF PAGE TO X9 @D@@@@ L,H1 X8,2,X9 WZ )@@G@@. $P PAGE LENGTH TO X8 @ @@@@ A X8,X9 @A@@@@ XA )@@G@@ AN,U X8,1 . $P @G@@@@ AN,H1 X8,6,X9 . $P XXB )@@G@@8 POINTS PAST THE CALC HEADERS @G@@@@ S X8,FSLTVA XC )@@G@@. $P SAVE POINTER TO FIRST SLOT ON PAGE @ @@@@ . DOES PAGE HAVE ANY SPXD )@@G@@ACE @F@@@@ LA A0,RECADD . ADDRESS OF RECORD BUXE )@@G@@FFER @E@@@@ L,T3 A3,1,A0 . $P RECORD LENGTH TO A3 XF )@@G@@@ @@@@ L A2,Z2ENT @G@@@@ TZ,T1 1,A2 XG )@@G@@ . $T ANY LOAD FACTOR BY USER @E@@@@ J USERXH )@@G@@LD . $A YES,USERLD NO @F@@@@ LX X11,Z2AREAXI )@@G@@ . $P ADDR OF Z2AREA TO X11 @E@@@@ L,T2 A4,0,X11 XJ )@@G@@ . $P LOAD FACTOR TO A4 @E@@@@SPFIND LMJ X11,RSPACE . $WXK )@@G@@ ANY SPACE AVAILABLE @I@@@@ S A2,SPACSW . SAXL )@@G@@VE ERROR RETURN FROM RSPACE ROUTINE @E@@@@ JNZ A2,NXM )@@G@@OSPC1 . $T SUCCESSFUL @E@@@@ XN )@@G@@ . $A NO,NOSPC1 YES @[@@@@ . @C@@@@ . GO AHEAD AND ASSIGN RXO )@@G@@ECORD AND SLOT NUMBER @D@@@@ . X9 POINTS TO PAGE, FSLTVA POINTS TO FIXP )@@G@@RST SLOT @E@@@@ LMJ X11,RNUSLT . $W ASSIGN SLOT AND RXQ )@@G@@EC # @F@@@@ . A2>0 IF A SLOT IS BEING REUSED, A3 HAS NEW RECORD # ASSIXR )@@G@@GNED @B@@@@ . A0 HAS CONTENTS OF SLOT JUST ASSIGNED @A@@@@ S XS )@@G@@ A1,NEWSLT @[@@@@ . @ @@@@ . PREPARE TO STORE RECORD XT )@@G@@@[@@@@ . @E@@@@ LXM X1,RECADD . $P RECORD ADDRESS TOXU )@@G@@ X1 @B@@@@ AX,U X1,1 . @E@@@@ L,XV )@@G@@T3 A1,0,X1 . $P RECORD LENGTH TO A1 @E@@@@ LMJ XW )@@G@@ X11,RSTORE . $P STORE RECORD ON PAGE @F@@@@ J PTRFXX )@@G@@RM . $J PTRFRM GO FORM NEW DBP AND @F@@@@ XY )@@G@@ . GATHER STATISTICS FOR C4 @]@@@@USERLD . @G@@@@ XZ )@@G@@ L,T1 A4,1,A2 . $P LOAD FACTOR SPECIFIED TO A4 @D@@@@YA )@@G@@ J SPFIND . $J SPFIND @[@@@@ . @[@@@@YB )@@G@@ . @[@@@@ . @ @@@@ARNCUR . AREA NOT CURRENT @G@@@@ . BUILD BUFYC )@@G@@ROU PACKET FOR NEW AREA AND PAGE NUMBER AS OBTAINED FROM Z2 @G@@@@ YD )@@G@@ L,U X10,BUFPKT . $P X10 POINTS TO BUFFER ROUTINE PKT @F@@@@YE )@@G@@ S,T1 A1,1,X10 . $P AREA CODE TO T1 OF 2ND WRD @F@@@@YF )@@G@@ TZ STNRSW . $T ANY STORE NEAR LOGIC @E@@@@YG )@@G@@ J STGTPG . $A YES,STGTPG NO @G@@@@ YH )@@G@@ L,H2 A2,3,X6 . $P PAGE PREVIOUSLY RETURNED TO A2 @G@@@@YI )@@G@@ARNGT1 S,H2 A2,1,X10 . $P PAGE # TO H2 OF 2ND WRD OF PKT YJ )@@G@@@E@@@@ L,U A0,1 . $P FUNCTION CODE IS 1 @E@@@@YK )@@G@@ S,H2 A0,0,X10 . $P FUNCTION CODE TO PACKET@G@@@@ YL )@@G@@ S,H2 X6,2,X10 . $P AREA ENTRY ADDRESS OF Z2 TO PACKET @C@@@@YM )@@G@@ LMJ X11,BUFROU . $W GET PAGE @C@@@@ TZ,H1 YN )@@G@@ BUFPKT . $T SUCCESSFUL @D@@@@ J BUNSUC . $AYO )@@G@@ NO,BUNSUC YES @G@@@@ . YES, AREA, YP )@@G@@PAGE, BLOCK, ADDR INFO @E@@@@ . SETUPYQ )@@G@@ IN CURRENCY WORDS@G@@@@ SLJ DATYPE . MAKE SURYR )@@G@@E PAGE IS DATA TYPE @ @@@@ J ARECUR @]@@@@STGTPGYS )@@G@@ . @G@@@@ L,H1 A2,3,X6 . $P LAST STORE NEAR PYT )@@G@@GE TO A2 @D@@@@ J ARNGT1 . $J ARNGT1 YU )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @B@@@@PGNCURYV )@@G@@ . PAGE NOT CURRENT BUT AREA IS @E@@@@ . BUILD PACKET TO CALL YW )@@G@@BUFROU TO MAKE PAGE CURRENT @G@@@@ L,U X10,BUFPKT YX )@@G@@ . X10 POINTS TO BUFFER PACKET @E@@@@ S,T1 A1,1,X10 YY )@@G@@ . AREA CODE TO PACKET@F@@@@ S,H2 A3,1,X10 YZ )@@G@@ . $P PAGE NUMBER TO PACKET @B@@@@ L,U A0,1 ZA )@@G@@ . @G@@@@ S,H2 A0,0,X10 . $P FUNCTION CODE 1 TZB )@@G@@O PACKET @I@@@@ S,H2 X6,2,X10 . $P POINTER TO ZC )@@G@@AREA ENTRY IN Z2 TO PKT @G@@@@ LMJ X11,BUFROU ZD )@@G@@ . $W BUFROU CALL BUFFER ROUTINES @D@@@@ TZ,H1 BUFPKT ZE )@@G@@ . SUCCESSFUL @B@@@@ SLJ RER007 . ZF )@@G@@@B@@@@ TE A3,CURPGE . @B@@@@ SLJ ZG )@@G@@ RER008 . @B@@@@ SLJ DATYPE . ZH )@@G@@@B@@@@ L A0,CURADD . @^@@@@ A,U ZI )@@G@@ A0,1@B@@@@ TZ,S3 0,A0 . @B@@@@ SLZJ )@@G@@J RER009 . @B@@@@ J PGECUR ZK )@@G@@ . @H@@@@RECGT1 L,H1 A3,3,X6 . $P LAST STORE NEAR LZL )@@G@@OGIC PGE TO A3 @D@@@@ J RECGT2 . $J RECGTZM )@@G@@2 @[@@@@ . @A@@@@PTRFRM . FORM NEW DATA BASE POINTER @G@@@@ ZN )@@G@@ DL A1,NEWARE . $P NEW AREA TO A1, NEW PAGE TO A2 @D@@@@ZO )@@G@@ L A3,NEWSLT . $P NEW SLOT TO A3 @ @@@@ SLZP )@@G@@J APS$DBP @E@@@@ TNZ A0 . $T WAS AREA IN CZQ )@@G@@3 TABLE @B@@@@ SLJ RER011 . $E ERROR @F@@@@ ZR )@@G@@ S A0,NEWDBP . $P SAVE NEW DATA BASE POINTER @D@@@@ . CALZS )@@G@@L KEY FILE ACCESS METHOD TO INSERT NEW POINTER @[@@@@ . @G@@@@ ZT )@@G@@ S A0,KFAPKT+4 . $P NEW DBP TO PACKET OF KEY ACCESS @F@@@@ZU )@@G@@ LA A0,RECADD . ADDRESS OF RECORD BUFFER @D@@@@ZV )@@G@@ L A0,0,A0 . $P OLD DBP TO A0 @G@@@@ S ZW )@@G@@ A0,KFAPKT+3 . $P OLD DBP TO PACKET OF KEY ACCESS @A@@@@ ZX )@@G@@ L,U X10,KFAPKT @F@@@@ LMJ X11,KF$AMW . $WZY )@@G@@ CALL KF$AMW WRITE FUNCTION @ @@@@ TZ KFAPKT+5 @D@@@@ZZ )@@G@@ SLJ RER012 . SUCCESSFUL RETURN @G@@@@ L AA )@@G@@ A0,CURPGE . $P CURRENT PAGE TO STNPGE @B@@@@ AB )@@G@@ S A0,STNPGE . @B@@@@ L A0,CURARE AC )@@G@@ . @G@@@@ S A0,STNARE . $P CURRENT AREAD )@@G@@A TO STNARE @G@@@@ L A0,RELNUM . $P NUM OAE )@@G@@F RECORDS RELOADED TO A0@D@@@@ A,U A0,1 . $PAF )@@G@@ INCREMENT @E@@@@ S A0,RELNUM . $P SAVE IN RELAG )@@G@@NUM @B@@@@ LA A0,RELSNUM . @^@@@@ AAAH )@@G@@,U A0,1@E@@@@ SA A0,RELSNUM . INCREMENT RELSAI )@@G@@NUM @ @@@@ J MLOOP1 @[@@@@ . @[@@@@ . @[@@@@AJ )@@G@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@AK )@@G@@ . @E@@@@BUNSUC . ACCESS OF PAGE WAS UNSUCCESSFUL, DO SOMETHING AL )@@G@@@ @@@@ SLJ RER013 @G@@@@NOSPC1 . PAGE DOES NOT HAVE ANAM )@@G@@Y MORE SPACE, GET NEXT PAGE IN RANGE @F@@@@ L,U X10,AN )@@G@@BUFPKT . $P ADDR OF BUFFER PACKET TO X10 @E@@@@ L A0,CAO )@@G@@URARE . $P CURRENT AREA TO A0 @F@@@@ S,T1 A0,1,X10 AP )@@G@@. $P CURRENT AREA TO T1 OF 2ND WRD @E@@@@ L A1,CURPGE AQ )@@G@@. $P CURRENT PAGE TO A1 @F@@@@ S,H2 A1,1,X10 . $P CAR )@@G@@URRENT PAGE TO H2 OF 2ND WRD @E@@@@ L,U A2,7 . $P FAS )@@G@@UNCTION CODE 7 TO A2 @E@@@@ S,H2 A2,0,X10 . $ FUNCTIOAT )@@G@@N CODE TO PACKET @B@@@@ LA A2,Z2AREA . @B@@@@AU )@@G@@ SA,H2 A2,2,X10 . @E@@@@ LMJ X11,AV )@@G@@BUFROU . $W CALL BUFFER ROUTINE @ @@@@ TZ,H1 BUFPKT AW )@@G@@@C@@@@ J SPCERR .$J SPCERR@F@@@@ SLAX )@@G@@J DATYPE . MAKE SURE PAGE IS DATA @C@@@@ J AY )@@G@@ ARECUR . $J ARECUR @[@@@@ . @B@@@@SPCERR E$DIT AZ )@@G@@ EDPKT . @B@@@@ E$COPY 36,MSGSPCE . BA )@@G@@@B@@@@ E$DECV CURREC . @B@@@@ E$CHAR BB )@@G@@ '(' . @B@@@@ E$OCTV CURREC . BC )@@G@@@^@@@@ E$CHAR ')' @B@@@@ P$RINT (PF1 1,14,PRINT)BD )@@G@@ . @ @@@@ SLJ RER014 @[@@@@ . @[@@@@ . @E@@@@BE )@@G@@ . SUBROUTINE TO MAKE SURE THAT PAGE OBTAINED IS A DATA PAGE@B@@@@ . THEBF )@@G@@ ADDRESS OF THE PAGE IS IN CURADD. @#@@@@ . USES A0 ONLY @[@@@@ . BG )@@G@@@[@@@@ . @^@@@@DATYPE + 0 @B@@@@ LA A0,CBH )@@G@@URADD . @B@@@@ LA,S3 A0,1,A0 . @B@@@@BI )@@G@@ TE,U A0,0 . @B@@@@ SLJ RER0BJ )@@G@@69 . @B@@@@ J *DATYPE . @[@@@@BK )@@G@@ . @[@@@@ . @[@@@@ . @]@@@@CONTRL . @F@@@@ LA BL )@@G@@ A2,RECADD . ADDRESS OF RECORD BUFFER @B@@@@ L,T1 BM )@@G@@ A0,1,A2 . @E@@@@ TE,U A0,01 . $TBN )@@G@@ SPECIAL CODE = 01@D@@@@ J CONTR1 . $J MLOOBO )@@G@@P1 @B@@@@ L A1,2,A2 . @F@@@@ S BP )@@G@@ A1,DESARE . $P AREA CODE TO DES AREA @D@@@@ J BQ )@@G@@ MLOOP1 . $J MLOOP1 @]@@@@CONTR1 . @G@@@@ BR )@@G@@ TE,U A0,03 . $T SPECIAL CODE 3 (OWNER REC) @E@@@@BS )@@G@@ J CONTR2 . $A NO,CONTR2 YES @E@@@@ BT )@@G@@ L A1,2,A2 . $P OLD DBP TO A1 @[@@@@ . @D@@@@BU )@@G@@ . CALL KEY FILE ACCESS METHOD FOR NEW DBP IF ANY @[@@@@ . @E@@@@BV )@@G@@ S A1,KFAPKT+3 . OLD DBP TO PACKET @F@@@@ BW )@@G@@ L,U X10,KFAPKT . $W KF$AMR RANDOM READ @A@@@@ BX )@@G@@ LMJ X11,KF$AMR @E@@@@ TZ KFAPKT+5 BY )@@G@@ . $T SUCCESSFUL @E@@@@ J DBPNFD . $ABZ )@@G@@ NO,DBPNFD YES @[@@@@ . @ @@@@ . FOUND NEW DBP IN KEY FILE @[@@@@CA )@@G@@ . @E@@@@ TNZ,H1 KFAPKT+4 . $T OWNER IS RELOADEDCB )@@G@@@E@@@@ J DBPNFD . $A NO,DBPNFD YES @E@@@@CC )@@G@@ L A0,KFAPKT+4 . NEW DBP TO A0 @F@@@@OWNAFDCD )@@G@@ SLJ DBP$APS . $W DBP$APS DECOMPOSE DBP @E@@@@ CE )@@G@@ L A8,A1 . AREA CODE TO A8 @E@@@@ L CF )@@G@@ A7,A2 . PAGE NUMP$BER TO A7 @F@@@@ SLJ CG )@@G@@ CHKPGE . $W CHKPGE SEE WHAT TYPE @E@@@@ TNE,U CH )@@G@@ A2,1 . $T IS IT DATA PGE @E@@@@ J STNGCI )@@G@@T3 . $A YES,STNGT3 NO @E@@@@ SZ OWNPGE CJ )@@G@@ . $P ZERO OUT OWNPGE @F@@@@ S A8,OWNARE CK )@@G@@ . $P AREA CODE TO OWNARE @D@@@@ J STNGT4 CL )@@G@@ . $J STNGT4 @]@@@@STNGT3 .@F@@@@ S A8,OWNARE CM )@@G@@ . $P AREA CODE TO OWNARE @F@@@@ S A7,OWNPGE CN )@@G@@ . $P PAGE NUMBER TO OWNPGE @]@@@@STNGT4 @B@@@@ L,CO )@@G@@U A0,1 . @E@@@@ S A0,OWNRSW CP )@@G@@ . $P SET OWNER SWITCH @D@@@@ J MLOOP1 . $JCQ )@@G@@ MLOOP1 @]@@@@DBPNFD . @F@@@@ LA A0,RECADD CR )@@G@@ . ADDRESS OF RECORD BUFFER @E@@@@ L A0,2,A0 CS )@@G@@ . $P OLD DBP TO A0 @D@@@@ J OWNAFD . $JCT )@@G@@ OWNAFD @]@@@@CONTR2 . @G@@@@ TE,U A0,4 CU )@@G@@ . $T SPECIAL CODE 4 (DIRECT) @C@@@@ J CONTR3 CV )@@G@@ $J CONTR3@B@@@@ LA,U A2,1 . @H@@@@CW )@@G@@ SA A2,DIRSW2 . $P SET DIRSW2 TO INDICATE DIR CNCX )@@G@@TL @F@@@@ LA A0,RECADD . RECORD BUFFER ADDRESCY )@@G@@S @G@@@@ LA A1,2,A0 . $P DIRECT CNTL REC ICZ )@@G@@NFORMATION @D@@@@ SA A1,DIRCNTL . $P SAVE INFO DA )@@G@@@D@@@@ J MLOOP1 . $J MLOOP1 @]@@@@CONTR3DB )@@G@@ . @E@@@@ TE,U A0,2 . $T SPECIAL CODE 2 DC )@@G@@@E@@@@ J MLOOP1 . $A NO,MLOOP1 YES @A@@@@DD )@@G@@ . END OF SET CONTROL RECORD FOUND @B@@@@ J MLOOP1 DE )@@G@@ . @E@@@@ . $P PAGE # TO ODF )@@G@@WNPGE @[@@@@ . @[@@@@/ @[@@@@ . @[@@@@ . @[@@@@ . @ @@@@DG )@@G@@ . RECORD IS A CALC RECORD @[@@@@ . @]@@@@RELCAL @A@@@@ . SAVDH )@@G@@E ANY REGISTERS IF NEEDED @F@@@@ L,H2 A2,4,X5 . $P ADI )@@G@@DDR OF CALC PROCEDURE TO A2 @H@@@@ S,H2 A2,CALCAL . $DJ )@@G@@P STORE PROPER ADDRESS IN INSTRUCTION @G@@@@ L X2,(DK )@@G@@1,CALPR1) . ADDRESS OF 1ST CALC PAR TO X2 @E@@@@ L,S3 DL )@@G@@ A0,0,X5 . $P CALC ITEM COUNT TO A0 @E@@@@ TNZ A0 DM )@@G@@ . $T ANY CALC ITEM ENTRIES @B@@@@ SLJ RER015 DN )@@G@@. $E ERROR @E@@@@ AN,U A0,1 . $P A0 TO CONTROL LOOP DO )@@G@@ @E@@@@ L X6,X5 . $P ADDR OF Z2 ENTRY TO X6 DP )@@G@@@G@@@@ A,U X6,9 . $P X6 POINTS TO 1ST CALC ITEM ENTRDQ )@@G@@Y @ @@@@ LXI,U X6,1 @E@@@@CALLP1 L A1,0DR )@@G@@,*X6 . $P CALC ITEM TO A1 @G@@@@ S A1,0,*X2 DS )@@G@@ . $P CALC ITEM TO PARAMETER LIST @F@@@@ JGD A0,CDT )@@G@@ALLP1 . $T ARE WE DONE WITH CALC ENTRIES @C@@@@ DU )@@G@@ . $A NO,CALLP1 YES@E@@@@ L A0,CALRIN . $P RETURN DV )@@G@@INSTRUCTION TO A0 @G@@@@ S A0,0,X2 . $P STORE RETURN DW )@@G@@IN PARAMETER LIST @[@@@@ . @D@@@@ . GET AREA NAME FROM C3 TO BEDX )@@G@@ USED IN CALC ROUTINE @[@@@@ . @B@@@@ TNZ DESARE DY )@@G@@ . @B@@@@ SLJ RER016 . @D@@@@ DZ )@@G@@ L A1,DESARE . $ AREA CODE TO A1 @E@@@@ L,U EA )@@G@@ X10,C3 . $P ADDRESS OF C3 TO X10 @E@@@@ LMJ X11,EB )@@G@@TABSE1 . $W GET AREA ENTRY FROM C3 @^@@@@ TZ A2 @ @@@@EC )@@G@@ SLJ RER017 @B@@@@ A,U A0,1 ED )@@G@@ . @E@@@@ DL A2,0,A0 . $P AREA NAME TO A2,A3 EE )@@G@@@G@@@@ DS A2,CALPR2 . $P AREA NAME TO CALPR2 FOR CALC UEF )@@G@@SAGE @F@@@@ L,U X10,CALPR2 . $P X10 POINTS TO PARAMETER EG )@@G@@LIST @G@@@@ L A2,X5 . $P A2 POINTS TO Z2 ENTRY FEH )@@G@@OR RECORD @[@@@@ . @E@@@@CALCAL LMJ X11,0 . $P CALL CEI )@@G@@ALC ROUTINE @^@@@@CALPR1 + 0 @^@@@@ + EJ )@@G@@ 0 @^@@@@ + 0 @^@@@@ + 0 @^@@@@EK )@@G@@ + 0 @^@@@@ + 0 @^@@@@ + EL )@@G@@ 0 @^@@@@ + 0 @^@@@@ + 0 EM )@@G@@@^@@@@ + 0 @^@@@@ + 0 @ @@@@CALRINEN )@@G@@ J CALRET @[@@@@ . @G@@@@CALRET . CALC ROUTINE RETUEO )@@G@@RNS HERE WITH A15= PGE#,CCH# AND AREA @E@@@@ . TO USE FOR EP )@@G@@RELOADING IN 3RD WORD OF CALPR2 @G@@@@ S,H2 A15,CLCHNEEQ )@@G@@ . $P SAVE CALC CHAIN NUMBER IN CLCHNE @A@@@@ SSL A15,ER )@@G@@18 . $ @G@@@@ S,H2 A15,CLPGE . $P SAVE CALC PAGE NUMES )@@G@@BER IN CLPGE @G@@@@ S,H2 A15,STNPGE . $P UPDATET )@@G@@E STORE NEAR PAGE @B@@@@ . EU )@@G@@@B@@@@ . @B@@@@ EV )@@G@@ . @B@@@@ . EW )@@G@@@E@@@@ . USE AREA NAME(POINTED TO BY X10) TO SEARCH C3 TABLE @E@@@@EX )@@G@@ . THIS IS NECESSARY SINCE THE CALC ROUTINE MIGHT CHANGE @#@@@@ . AREEY )@@G@@A NAME. @B@@@@ . @B@@@@ EZ )@@G@@ . @B@@@@ FA )@@G@@ . @G@@@@ TNZ,H1 C3 . MAKE SURE C3 IFB )@@G@@S NOT EMPTY @B@@@@ SLJ RER001 . @E@@@@FC )@@G@@ LXM,H2 X5,C3 . $P C3 TABLE ADDRESS@F@@@@ FD )@@G@@ LXI,U X5,9 . $P TABLE INCREMENT TO X5 @H@@@@ FE )@@G@@ ANX,U X5,9 . $P POINT ONE ENTRY BEFORE BEGINNING FF )@@G@@@D@@@@ DL A2,0,X10 . AREA NAME @E@@@@ FG )@@G@@ LA,H1 A0,C3 . $P # OF WORDS IN C3 @B@@@@ DSFH )@@G@@L A0,36 . @G@@@@ DI,U A0,9 FI )@@G@@ . $P # OF AREA ENTRIES IN C3 TO A0@B@@@@ TZ A1 FJ )@@G@@ . @E@@@@ SLJ RER068 . NO REMAINDER AFK )@@G@@LLOWED@H@@@@ LR R1,A0 . # OF AREA ENTRIES TOFL )@@G@@ CONTROL LOOP @F@@@@CLANLP1 SE A2,10,*X5 . $P SEARCFM )@@G@@H FOR AREA NAME @B@@@@ SLJ RER018 . @B@@@@FN )@@G@@ TE A3,2,X5 . @B@@@@ J CLANFO )@@G@@LP1 . @E@@@@ LA,T1 A1,0,X5 . $P AREA FP )@@G@@CODE TO A1 @G@@@@ SX X5,NEWC3A . $P SAVE AREA CFQ )@@G@@ODE IN NEWC3A @E@@@@ S A1,NEWARE . $P SAVE NEW AREFR )@@G@@A IN NEWARE @G@@@@ S A1,STNARE . $P AREA CODE TFS )@@G@@O STORE NEAR AREA @[@@@@ . @G@@@@ L X5,Z2ENT . $P AFT )@@G@@DDRESS OF Z2 ENTRY FOR RECORD TO X5 @[@@@@ . @C@@@@ . PREPARE TO SEARFU )@@G@@CH Z2 TABLE FOR THIS RECORD @[@@@@ . @F@@@@ LA A0,RFV )@@G@@ECADD . ADDRESS OF RECORD BUFFER @E@@@@ L,T1 A1,1FW )@@G@@,A0 . $P RECORD CODE TO A1 @F@@@@ L X6,X5 FX )@@G@@ . $P ADDRESS OF Z2 ENTRY TO X6 @E@@@@ A,T2 X6,1,X6 FY )@@G@@. $P POINT TO AREA ENTRY @A@@@@ L X1,X6 . FZ )@@G@@@A@@@@ AN,U X1,1 . @F@@@@ L,H2 A0,0GA )@@G@@,X1 . $P # OF AREA ENTRIES IN Z2 TO A0 @E@@@@ AN,U A0,1GB )@@G@@ . $P A0 WILL CONTROL LOOP @D@@@@ L A1,NEWARE GC )@@G@@. $P AREA CODE TO A1 @D@@@@CLOOP1 TNE,T3 A1,0,X6 . $T AREA COGD )@@G@@DES EQUAL @C@@@@ J CALAFD . $A YES,CALAFD @G@@@@GE )@@G@@ A,S1 X6,0,X6 . $P POINT TO NEXT AREA ENTRY IN Z2 GF )@@G@@@E@@@@ JGD A0,CLOOP1 . $T ANY MORE AREA ENTRIES @G@@@@GG )@@G@@ SLJ RER019 . $E EXIT AREA ENTRY SHOULD BE FOUND IN Z2GH )@@G@@@D@@@@CALAFD . FOUND AREA ENTRY IN Z2 FOR NEW CALC AREA @A@@@@ GI )@@G@@ . X6 POINTS TO AREA ENTRY @E@@@@ S X6,Z2AREA . $P SGJ )@@G@@AVE AREA ENTRY IN Z2AREA@[@@@@ . @F@@@@ . CHECK IF PAGE # RETURNED BYGK )@@G@@ CALC IS WITHIN PROPER PAGE RANGE @[@@@@ . @C@@@@ L GL )@@G@@ A3,CLPGE . PAGE # TO A3 @B@@@@ JZ A3,CLCMSG GM )@@G@@ . @G@@@@ TLE,H2 A3,1,X6 . $T IS LOWER RANGE LESS OR EQGN )@@G@@UAL TO PGE #@C@@@@ SLJ RER020 . $E EXIT ERROR @D@@@@GO )@@G@@ L,H2 A4,2,X6 . $P UPPER RANGE TO A4 @E@@@@ A,GP )@@G@@U A4,1 . $P INCREMENT UPPER RANGE BY1@G@@@@ TLE GQ )@@G@@ A3,A4 . $T IS UPPER RANGE+1 LESS OR EQUAL TO PGE@C@@@@ J GR )@@G@@ $+2 . $J CLANCU @C@@@@ SLJ RER021 GS )@@G@@. $E EXIT ERROR @C@@@@ . CHECK IF AREA,RECORD AND PAGE ARE CURRENT GT )@@G@@@[@@@@ . @D@@@@ L A1,NEWARE . $P NEW AREA TO A1 GU )@@G@@@E@@@@ TE A1,CURARE . $T IS NEW AREA CURRENT @C@@@@GV )@@G@@ J CLANCU . $A NO,CLANCU YES@A@@@@CLACUR . YES NEW AGW )@@G@@REA IS CURRENT @G@@@@ L A1,CURARE . MAKE SURE THAT AGX )@@G@@1 HAS CURRENT AREA @E@@@@ S A1,NEWARE . $P SAVE CUGY )@@G@@RRENT AREA CODE @F@@@@ LA A2,RECADD . ADDRESS GZ )@@G@@OF RECORD BUFFER @E@@@@ L,T1 A2,1,A2 . $P RECORD CODEHA )@@G@@ TO A2 @E@@@@ TE A2,CURREC . $T IS RECORD CURRENTHB )@@G@@ @D@@@@ J CLRNCU . $A NO,CLRNCU YES @A@@@@HC )@@G@@CLRCUR . YES RECORD IS CURRENT @E@@@@ L A3,CLPGE HD )@@G@@ . $P NEW PAGE # TO A3 @G@@@@ TE A3,CURPGE . $THE )@@G@@ IS NEW PAGE # SAME AS CURRENT @D@@@@ J CLANCU HF )@@G@@ . $A NO,CLPNCU YES @ @@@@ J CLPCUR @E@@@@CLANCUHG )@@G@@ . AREA NOT CURRENT, CALC PRIMARY PAGE NOT CURRENT @[@@@@ . @E@@@@HH )@@G@@ . PREPARE TO BUILD PACKET FOR BUFROU TO GET PRIMARY PAGE @[@@@@ . HI )@@G@@@G@@@@ L,U X10,BUFPKT . $P X10 POINTS TO BUFFER ROUTINE PHJ )@@G@@ACKET @D@@@@ L A1,NEWARE . $P AREA CODE TO A1 @F@@@@HK )@@G@@ S,T1 A1,1,X10 . $P AREA CODE TO T1 OF BUFPKT+1 @E@@@@HL )@@G@@ S,H2 A3,1,X10 . $P PAGE # TO H2 OF BUFPKT @G@@@@ HM )@@G@@ L,U A0,1 . $P BUFFER ROUTINE FUNCTION CODE =1 @E@@@@HN )@@G@@ S,H2 A0,0,X10 . $P FUNCTION CODE TO PACKET @G@@@@ HO )@@G@@ S,H2 X6,2,X10 . $P AREA ENTRY ADDRESS OF Z2 TO PACKET @H@@@@HP )@@G@@ LMJ X11,BUFROU . $W BUFROU CALL BUFFER ROUTINE TO GET PGHQ )@@G@@E @C@@@@ TZ,H1 BUFPKT . $T SUCCESSFUL @C@@@@ HR )@@G@@ SLJ RER022 . $E EXIT ERROR @G@@@@ SLJ DATYHS )@@G@@PE . MAKE SURE PAGE IS A DATA PAGE @D@@@@ J HT )@@G@@ CLACUR . $J CLACUR @[@@@@ . @[@@@@ . @[@@@@ . HU )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . HV )@@G@@@[@@@@ . @E@@@@ . PRIMARY PAGE OBTAINED FROM DATA BASE FOR CALC RECORHW )@@G@@D @[@@@@ . @[@@@@ . @E@@@@CLPCUR . NEW PAGE IS CURRENT, CHECK HX )@@G@@IF WE CAN STORE IN IT @[@@@@ . @A@@@@ . FORM POINTER TO CALC CHAIN HY )@@G@@HEADER@D@@@@ L A1,NEWARE . $P AREA CODE TO A1 @D@@@@HZ )@@G@@ L A2,CLPGE . $P CALC PAGE TO A2 @G@@@@ L IA )@@G@@ A3,CLCHNE . $P CALC CHAIN # TO A3, IF 0 THEN 1ST CHN@D@@@@ IB )@@G@@ SLJ APS$DBP . $W APS$DBP FORM NEW @C@@@@ TNZ IC )@@G@@ A0 . $T SUCCESSFUL @B@@@@ SLJ RER023 . $E EID )@@G@@XIT @G@@@@ S A0,CLCHDR . $P SAVE NEW HEADER POINTER IIE )@@G@@N CLCHDR @[@@@@ . @A@@@@ . POINT TO CALC CHAIN HEADER @E@@@@IF )@@G@@ L X9,CURADD . $P ADDRESS OF PAGE TO X9 @F@@@@ IG )@@G@@ TZ CLCHNE . $T WAS CALC CHAIN RETURNED 0 @D@@@@ IH )@@G@@ J CLCHNZ . $A NO,CLCHNZ YES @G@@@@ A,U II )@@G@@ X9,7 . $P X9 CONTAINS POINTER TO CALC HEADER @G@@@@ S IJ )@@G@@ X9,CLCHAD . $P SAVE ADDRESS OF CALC CHAIN HEADER @C@@@@ IK )@@G@@ J CLCON2 . $J CLCON2 @F@@@@CLCHNZ . CALC CHAIN NUMBIL )@@G@@ER RETURNED BY CALC ROUTINE IS NOT ZERO @D@@@@ L,H1 X8,2IM )@@G@@,X9 . $P PAGE LENGTH TO X8 @ @@@@ A X8,X9 @G@@@@IN )@@G@@ AN X8,CLCHNE . $P X8 POINTS TO CALC CHAIN HEADER IO )@@G@@@G@@@@ S X8,CLCHAD . $P SAVE POINTER TO CALC CHAIN HEADIP )@@G@@ER @[@@@@ . @[@@@@ . @[@@@@ . @^@@@@ . SEE IF PAGE HAS SPACEIQ )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @A@@@@CLCON2 L X9,CLCHAD IR )@@G@@ @A@@@@ AN X9,CURADD @F@@@@ S IS )@@G@@ X9,CHDREL . $+ SAVE REL PTR TO CALC HDR @[@@@@ . @E@@@@ IT )@@G@@ L X9,CURADD . $P ADDRESS OF PAGE TO X9 @D@@@@ L,IU )@@G@@H1 X8,2,X9 . $P PAGE LENGTH TO X8 @ @@@@ A X8,XIV )@@G@@9 @^@@@@ AN,U X8,1@G@@@@ AN,H1 X8,6,X9 IW )@@G@@. $P X8 POINTS PAST THE CALC HEADERS @G@@@@ S X8,FIX )@@G@@SLTVA . $P SAVE POINTER TO FIRST SLOT IN PAGE @F@@@@ LA IY )@@G@@ A2,RECADD . ADDRESS OF RECORD BUFFER @E@@@@ L,T3 IZ )@@G@@ A3,1,A2 . $P RECORD LENGTH TO A3 @ @@@@ L A2,ZJA )@@G@@2ENT @^@@@@ TZ,T1 1,A2@ @@@@ J CLUSLD JB )@@G@@@F@@@@ LX X11,Z2AREA . $P ADDR OF Z2AREA TO X11 JC )@@G@@@E@@@@ L,T2 A4,0,X11 . $P LOAD FACTOR TO A4 @E@@@@JD )@@G@@CLSPAC LMJ X11,RSPACE . $W ANY SPACE AVAILABLE @F@@@@ JE )@@G@@ S A2,SPACSW . SAVE ERROR RETURN FOR DEBUGGING @F@@@@ JF )@@G@@ TZ A2 . $T FOUND SPACE ON PRIMARY PAGE @D@@@@ JG )@@G@@ J CLNSPC . $A NO,CLNSPC YES @[@@@@ . @G@@@@ . SPAJH )@@G@@CE WAS FOUND ON PRIMARY PAGE, GO AHEAD AND STORE THE RECORD @D@@@@JI )@@G@@ . X9 POINTS TO PAGE, FSLTVA POINTS TO FIRST SLOT @[@@@@ . @]@@@@JJ )@@G@@CLFSPC . @G@@@@ LMJ X11,RNUSLT . $W ASSIGN SLOT AND REJK )@@G@@CORD NUMBER @D@@@@ . UPON RETURN A2=0 IMPLIES A SLOT IS BEING REUSJL )@@G@@ED @C@@@@ . A3 HAS NEW RECORD NUMBER ASSIGNED@A@@@@ . JM )@@G@@ A1 HAS SLOT NUMBER @A@@@@ S A1,NEWSLT JN )@@G@@@F@@@@ LA A0,RECADD . ADDRESS OF RECORD BUFFER JO )@@G@@@F@@@@ LX X1,A0 . $P ADDR OF RECORD BUFFER JP )@@G@@@F@@@@ AX,U X1,1 . $P RECORD ADDRESS TO X1 JQ )@@G@@@E@@@@ L,T3 A1,1,A0 . $P RECORD LENGTH TO A1 @E@@@@JR )@@G@@ LMJ X11,RSTORE . $P STORE RECORD ON PAGE @B@@@@ JS )@@G@@ L A1,CURPGE . @B@@@@ S A1,NEWPGE JT )@@G@@ . @B@@@@ S A1,PPGNUM . @A@@@@ . FORJU )@@G@@M NEW DBP FOR RECORD STORED @A@@@@ DL A1,NEWARE JV )@@G@@@A@@@@ L A3,NEWSLT @F@@@@ SLJ APS$JW )@@G@@DBP . $W FORM NEW DATA BASE POINTER @^@@@@ TNZ A0 JX )@@G@@@ @@@@ SLJ RER024 @F@@@@ S A0,NEWDBP JY )@@G@@. $P SAVE NEW DATA BASE POINTER @D@@@@ . CALL KEY FILE ACCESS METHODJZ )@@G@@ TO INSERT NEW POINTER @[@@@@ . @G@@@@ S A0,KFAPKT+KA )@@G@@4 . $P NEW DBP TO PACKET OF KEY ACCESS @F@@@@ LA A0,RKB )@@G@@ECADD . ADDRESS OF RECORD BUFFER @D@@@@ L A0,0KC )@@G@@,A0 . $P OLD DBP TO A0 @G@@@@ S A0,KFAPKT+3 . $PKD )@@G@@ OLD DBP TO PACKET OF KEY ACCESS @A@@@@ L,U X10,KFAPKTKE )@@G@@ @F@@@@ LMJ X11,KF$AMW . $W CALL KF$AMW WRITE FUNCTKF )@@G@@ION @ @@@@ TZ KFAPKT+5 @E@@@@ SLJ RER0KG )@@G@@25 . $ SUCCESSFUL RETURN @[@@@@ . @B@@@@ . PROCEED TO LINKKH )@@G@@ RECORD IN CALC CHAIN @F@@@@ L,H2 A0,NEWSLT . $P NEW DATKI )@@G@@A BASE SLOT TO A0 @E@@@@ L X8,CURADD . ADDRESS OFKJ )@@G@@ DATA PAGE TO X8 @G@@@@ A,H1 X8,2,X8 . $P X8 POINTS PASKK )@@G@@T THE LAST SLOT ON PAGE @G@@@@ AN X8,A0 . $P X8 POINKL )@@G@@TS TO THE SLOT WHERE LAST @D@@@@ . $ RKM )@@G@@ECORD WAS LOADED @E@@@@ L X7,CURADD . $P PAGE ADDRESS KN )@@G@@TO X7 @H@@@@ A,H2 X7,0,X8 . $P X7 POINTS TO RECORDKO )@@G@@ HEADER JUST LOADED @ @@@@ L A1,X7 @ @@@@ KP )@@G@@ TG A1,X8 @F@@@@ SLJ RER026 . X7 CANNOT KQ )@@G@@POINT PAST THE SLOT @D@@@@ L,T1 A1,0,X7 . RECORD CODKR )@@G@@E TO A1 @G@@@@ SLJ CLPFND . $W FIND RELATIVE LOCATIONKS )@@G@@ OF CALC POINTER @C@@@@ TZ A2 . $T SUCCESSFUL KT )@@G@@@C@@@@ SLJ RER027 . $A NO,EXIT YES @H@@@@ S KU )@@G@@ X1,RELATV . SAVE REL LOC OF CALC PTR WITHIN REC @G@@@@KV )@@G@@ A X7,X1 . $P X7 POINTS TO CALC PTR IN LDED REC KW )@@G@@@D@@@@CLCON1 . CHECK IF CALC CHAIN HEADER POINTER EXISTS @[@@@@ . KX )@@G@@@F@@@@ LX X11,CLCHAD . $P ADDR OF CLCHAD TO X11 KY )@@G@@@E@@@@ TNZ 0,X11 . $T IS CALC CHAIN HEADER ZERO@C@@@@KZ )@@G@@ J CLSTZ1 . $A YES,CLSTZ1 NO@F@@@@ . LINK NEW RECORDLA )@@G@@ FIRST IN CALC CHAIN, NONZERO CALC HEADER CASE @E@@@@ . X7 HAS ABSOLUTELB )@@G@@ LOCATION OF CALC POINTER WITHIN RECORD @[@@@@ . @F@@@@ LXLC )@@G@@ X11,CLCHAD . $P ADDR OF CLCHAD TO X11 @G@@@@ L LD )@@G@@ A4,0,X11 . $P POINTER OF CALC CHAIN HEADER TO A4 @G@@@@ LE )@@G@@ S A4,0,X7 . $P NEXT POINTER TO NEW RECORD (PRIMARY) @F@@@@LF )@@G@@ L A5,NEWDBP . $P NESLY CREATED POINTER TO A5 @F@@@@LG )@@G@@ LX X11,CLCHAD . $P ADDR OF CLCHAD TO X11 @G@@@@LH )@@G@@ S A5,0,X11 . $P NEWLY CREATED POINTER TO CALC HEADERLI )@@G@@@G@@@@ J CLDONE . $J CLDONE, STORED ONE CALC RECORD LJ )@@G@@ @G@@@@CLSTZ1 . CALC CHAIN HEADER ZERO, CREATE NEW CALC CHAIN ON THLK )@@G@@IS PAGE @F@@@@ . X7 HAS ABSOLUTE LOCATION OF CALC POINTER WITHLL )@@G@@IN RECORD @]@@@@ . @F@@@@ L A4,CLCHDR . $P LM )@@G@@POINTER TO CALC HEADER TO A4 @F@@@@ S A4,0,X7 . $P HLN )@@G@@EADER POINTER TO NEW RECORD @F@@@@ L A5,NEWDBP . $P NLO )@@G@@EWLY CREATED POINTER TO A5 @F@@@@ LX X11,CLCHAD LP )@@G@@ . $P ADDR OF CLCHAD TO X11 @G@@@@ S A5,0,X11 . $P LQ )@@G@@NEWLY CREATED POINTER TO CALC HEADER@G@@@@ J CLDONE LR )@@G@@ . $J STORED ONE CALC RECORD (PRIMARY) @[@@@@ . @C@@@@ . SAVE PRIMLS )@@G@@ARY PAGE INFORMATION FOR LATER CHECK@E@@@@CLNSPC . NO SPACE ON PRIMARY PLT )@@G@@AGE FOR STORING CALC RECORD @F@@@@ L A5,CURADD . $P LU )@@G@@CURRENT PAGE ADDRESS TO A5 @D@@@@ S A5,PPGADD . $P LV )@@G@@SAVE IN PPGADD @E@@@@ L A6,CURPGE . $P CURRENT PAGELW )@@G@@ # TO A6 @D@@@@ S A6,PPGNUM . $P SAVE IN PPGNUM LX )@@G@@@D@@@@ . GET CALC CHAIN HEADER POINTER AND CHECK IF ZERO @F@@@@ LY )@@G@@ LX X11,CLCHAD . $P ADDR OF CLCHAD TO X11 @E@@@@ LZ )@@G@@ L A7,0,X11 . $P CALC CHAIN HEADER TO A7 @F@@@@ S MA )@@G@@ A7,CLSAVP . $P SAVE CALC POINTER IN CLSAVP @F@@@@ TNMB )@@G@@Z A7 . $T IS CALC CHAIN HEADER EQUAL 0 @D@@@@ J MC )@@G@@ CLZER1 . $A YES,CLZER1 NO @A@@@@ S A7,CMD )@@G@@LNXTP . @B@@@@ LA,U A0,1 . @E@@@@ ME )@@G@@ SA A0,CHOVSW . $P SET CHOVSW @G@@@@ L MF )@@G@@ A0,A7 . CHECK IF CALC POINTER POINTS ELSEWHERE @G@@@@CCHNE1MG )@@G@@ SLJ DBP$APS . $W DBP $APS ROUTINE TO DECOMPOSE CL HDR@G@@@@MH )@@G@@ DS A1,CLCARE . $P SAVE VALUES RETURNED FROM DBP$APS MI )@@G@@@D@@@@ DS A3,CLCSLT . A2 HAS PAGE NUMBER @G@@@@ MJ )@@G@@ TE A2,CURPGE . $T DOES HDR POINT TO ANOTHER PAGE @D@@@@MK )@@G@@ J CLAPG1 . $A YES,CLAPG1 NO @E@@@@ L ML )@@G@@ A7,CLNXTP . $P CALC HEADER TO A7 @G@@@@ TNE MM )@@G@@ A7,CLCHDR . $T DOES POINTER POINT TO CALC HEADER @D@@@@ J MN )@@G@@ CLPTHR . $A YES,CLPTHR NO @G@@@@ . POINTER POINTS TO SAMMO )@@G@@E PAGE, GET NEXT POINTER FROM RECORD POINTED TO @ @@@@ . WATCH FOR FOREIMP )@@G@@GN RECORDS @E@@@@ . A2 HAS PAGE #, A3 SLOT NUMBER, CURADD HAS PAGE ADDRMQ )@@G@@ESS @E@@@@ SLJ FNXTCL . FIND NEXT CALC POINTER MR )@@G@@@F@@@@ SZ CHOVSW . $P RESET SWITCH CHOVSW MS )@@G@@@G@@@@ J CCHNE1 . $J CCHNE1 GO FIND IF IT POINTS ELSMT )@@G@@EWHERE@A@@@@CLRNCU . CALC RECORD IS NOT CURRENT @G@@@@ S MU )@@G@@ A2,CURREC . $P STORE RECORD CODE IN CURRENT RECORD @ @@@@ J MV )@@G@@ CLRCUR @F@@@@CLUSLD . USER HAS SPECIFIED HIS OWN LOAD FACTOR MW )@@G@@FOR THIS RECORD @F@@@@ L,T1 A4,1,A2 . $P LOAD FACTOR SMX )@@G@@PECIFIED TO A4 @C@@@@ J CLSPAC . $J CLSPAC MY )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . MZ )@@G@@@G@@@@CLPTHR . CALC POINTER POINTS TO HEADER, MEANS END OF CHAIN BEFORE NA )@@G@@ @F@@@@ . REACHING OVERFLOW, PREPARE TO GET OVERFLOW PAGE (NENB )@@G@@XT) @^@@@@ L,U A0,1@A@@@@ S A0,CENDSW NC )@@G@@ @[@@@@ . @[@@@@ . @[@@@@ . @E@@@@ . NEXT CODE MIGHT EXECUND )@@G@@TE IN CASE CALC HEADER IS ZERO @C@@@@ . GET FIRST OVERFLOW PAGE NEXNE )@@G@@T TO PRIMARY PAGE @[@@@@ . @[@@@@ . @[@@@@ . @F@@@@CLPTH1 L,NF )@@G@@U X10,BUFPKT . $P X10 POINTS TO BUFFER PACKET @A@@@@ L NG )@@G@@ A9,CURARE @E@@@@ S,T1 A9,1,X10 . $P AREA CNH )@@G@@ODE TO PACKET @E@@@@ L,U A10,3 . $P FUNCTION CODNI )@@G@@E 3 TO A10 @F@@@@ S,H2 A10,0,X10 . $P FUNCTION CODE 3 TONJ )@@G@@ PACKET @E@@@@ L A11,CURPGE . $P CURRENT PAGE TO A1NK )@@G@@1 @F@@@@ S,H2 A11,1,X10 . $P DATA PAGE NUMBER TO PACNL )@@G@@KET @A@@@@ L X6,Z2AREA . @G@@@@ S,H2 NM )@@G@@ X6,2,X10 . $P AREA ENTRY ADDRESS OF Z2 TO BUFPKT @[@@@@ . @[@@@@NN )@@G@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@NO )@@G@@ . @[@@@@ . @G@@@@ LMJ X11,BUFROU . $W BUFROU CALL NP )@@G@@BUFFER ROUTINE TO GET; @G@@@@ . $ FIRST NQ )@@G@@OVERFLOW PAGE AFTER DATA PAGE @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@NR )@@G@@ . @[@@@@ . @[@@@@ . @C@@@@ TZ,H1 BUFPKT . $T NS )@@G@@SUCCESSFUL @[@@@@ . @[@@@@ . @[@@@@ . @D@@@@ J NT )@@G@@ CBNSUC . $A NO,CBNSUC YES @A@@@@ L A11,CURPGENU )@@G@@ @[@@@@ . @G@@@@ . OBTAINED NEXT OVERFLOW PAGE, POINTERS TO LASTNV )@@G@@ RECORD IN CALC CHAIN @G@@@@ . ARE SAVED IN LSRADD, LSRREL, LSRSLT . TNW )@@G@@HEY REFER TO PRIMARY PAGE. @G@@@@ . IN CASE LAST RECORD WAS A FOREIGNNX )@@G@@ RECORD, FOREIGN PAGE NUMBER IS IN @D@@@@ . FORPGE AND LSRSLT HAS SLOT NY )@@G@@NUMBER ON THAT PAGE @[@@@@ . @E@@@@ . PROCEED TO CHECK IF SPACE INZ )@@G@@S AVAILABLE IN OVERFLOW PAGE @E@@@@CLCGT3 L X9,CURADD . $P OA )@@G@@ADDRESS OF PAGE TO X9 @D@@@@ L,S3 A0,1,X9 . $P PAGE TOB )@@G@@YPE TO A0 @E@@@@ TNE,U A0,01 . PAGE SHOULD BE OVERFLOC )@@G@@OW @D@@@@ J CLCGT4 . $J CLCGT4 @B@@@@OD )@@G@@ LA,U A0,DMSLEV5 . @E@@@@ JNZ A0,$OE )@@G@@+2 . SHOULD BE LEVEL5 @A@@@@ SLJ RER028 OF )@@G@@ . @B@@@@ TNZ,H2 BUFPKT+3 . @G@@@@ SLOG )@@G@@J RER028 . TYPE CHANGE SWITCH MUST BE SET @^@@@@CLCGT4OH )@@G@@ . @E@@@@ L,H1 X8,2,X9 . $P PAGE LENGTH OI )@@G@@TO X8 @ @@@@ A X8,X9 @^@@@@ AN,U OJ )@@G@@ X8,1@G@@@@ AN,H1 X8,6,X9 . $P X8 POINTS PAST CALC HEADOK )@@G@@ERS IF ANY @G@@@@ S X8,FSLTVA . $P SAVE POINTER TO FIOL )@@G@@RST SLOT ON PAGE @F@@@@ LA A0,RECADD . ADDRESS OM )@@G@@OF RECORD BUFFER @E@@@@ L,T3 A3,1,A0 . $P RECORD LENGON )@@G@@TH TO A3 @G@@@@ L,U A4,100 . $P PERCENT FILL 100 FOO )@@G@@OR OVERFLOW PGE @F@@@@ LMJ X11,RSPACE . $W RSPACE ANY SOP )@@G@@PACE AVAILABLE @F@@@@ S A2,SPACSW . SAVE ERROR RETUOQ )@@G@@RN FOR DEBUGGING @F@@@@ TZ A2 . $T FOUND SPACE OR )@@G@@ON OVERFLOW PAGE @E@@@@ J NSOVFP . $A NO,NSOVFP YEOS )@@G@@S,YSOVFP @ @@@@ J YSOVFP @[@@@@ . @[@@@@ . OT )@@G@@@[@@@@ . @C@@@@CLAPG1 . CALC POINTER POINTS TO ANOTHER PAGE @E@@@@OU )@@G@@ . INFORMATION OBTAINED FROM CALC POINTER IS SAVED IN @B@@@@ OV )@@G@@ . CLCARE, CLCPGE, CLCSLT, CLCC3A @F@@@@ . GET PAGE DIRECTLY BOW )@@G@@Y CALLING BUFROU WITH FUNCTION 5 @]@@@@CLCLP2 . @F@@@@ L OX )@@G@@ A0,CLCPGE . $P PAGE NUMBER POINTED TO TO A0 @^@@@@ OY )@@G@@ . @^@@@@ . @G@@@@ L,U X10,OZ )@@G@@BUFPKT . $P X10 POINTS TO PACKET OF BUFROU @A@@@@ L,H2 PA )@@G@@ A1,CLCARE @E@@@@ . MAKE A CHECK FOR CALC CHAIPB )@@G@@N GOING @B@@@@ . TO THE SAME AREA. @E@@@@ PC )@@G@@ TE A1,NEWARE . $T CLCARE = NEWARE @G@@@@ PD )@@G@@ . CANNOT ACCEPT CALC CHAIN TO @E@@@@ PE )@@G@@ . ANOTHER AREA. @E@@@@ SLPF )@@G@@J RER063 . $A NO,RER063 YES @F@@@@ S,T1 PG )@@G@@ A1,1,X10 . $P AREA CODE TO T1 OF BUFPKT+1 @E@@@@ S,H2 PH )@@G@@ A0,1,X10 . $P PAGE # TO H2 OF BUFPKT @G@@@@ L,U A0,5PI )@@G@@ . $P BUFFER ROUTINE FUNCTION CODE = 5 @E@@@@ S,H2 PJ )@@G@@ A0,0,X10 . $P FUNCTION CODE TO PACKET @A@@@@ L A2,ZPK )@@G@@2AREA @G@@@@ S,H2 X6,2,X10 . $P AREA ENTRY ADDRESSPL )@@G@@ OF Z2 TO PACKET @G@@@@ LMJ X11,BUFROU . $W BUFROU CALL PM )@@G@@BUFFER ROUTINE TO GET PG@C@@@@ TZ,H1 BUFPKT . $T SUCCESPN )@@G@@SFUL @ @@@@ SLJ RER029 @[@@@@ . @[@@@@ . @[@@@@PO )@@G@@ . @A@@@@ . CHECK IF SPACE IS AVAILABLE @ @@@@ . CHECK IF PAGE IPP )@@G@@S OVERFLOW @[@@@@ . @[@@@@ . @[@@@@ . @E@@@@ L PQ )@@G@@ X9,CURADD . $P ADDRESS OF PAGE TO X9 @D@@@@ L,S3 A0,1PR )@@G@@,X9 . $P PAGE TYPE TO A0 @E@@@@ TNE,U A0,01 . $P PS )@@G@@PAGE SHOULD BE OVERFLOW @D@@@@ J CLCGT5 . $JPT )@@G@@ CLCGT5 @B@@@@ LA,U A0,DMSLEV5 . @ @@@@ PU )@@G@@ JNZ A0,$+2 @A@@@@ SLJ RER030 . @^@@@@PV )@@G@@CLCGT5 . @E@@@@ L,H1 X8,2,X9 . $P PAGE LPW )@@G@@ENGTH TO X8 @ @@@@ A X8,X9 @^@@@@ ANPX )@@G@@,U X8,1@G@@@@ AN,H1 X8,6,X9 . $P X8 POINTS PAST CALPY )@@G@@C HEADERS IF ANY @G@@@@ S X8,FSLTVA . $P SAVE POINTERPZ )@@G@@ TO FIRST SLOT ON PGE @F@@@@ LA A0,RECADD . ADQA )@@G@@DRESS OF RECORD BUFFER @E@@@@ L,T3 A3,1,A0 . $P RECORQB )@@G@@D LENGTH TO A3 @G@@@@ L,U A4,100 . $P PERCENT FILLQC )@@G@@ 100 FOR OVERFLOW @F@@@@ LMJ X11,RSPACE . $W RSPACEQD )@@G@@ ANY SPACE AVAILABLE @G@@@@ S A2,SPACSW . $P SAVE EQE )@@G@@RROR RETURN FOR DEBUGGING @E@@@@ TNZ A2 . $T QF )@@G@@FOUND SPACE ON PAGE @D@@@@ J YSOVFP . $A YES,YSQG )@@G@@OVFP NO @E@@@@ SZ CHOVSW . $P ZERO CHOVSWQH )@@G@@ @[@@@@ . @E@@@@ . NO SPACE ON OVERFLOW PAGE, HAVE TO TRAVERSE CQI )@@G@@ALC CHAIN @D@@@@ . SLOT POINTED AT IN CURRENT PAGE FOUND IN CLCSLT QJ )@@G@@@C@@@@CLCLP3 . TRAVERSING CALC CHAIN ON CURRENT PAGE @A@@@@ L QK )@@G@@ A3,CLCSLT @[@@@@ . @G@@@@ SLJ FNXTCL QL )@@G@@. $W FNXTCL GO FIND NEXT CALC POINTER @G@@@@ QM )@@G@@ . A0 WILL HAVE POINTER UPON RETURN @G@@@@ SLJ QN )@@G@@ DBP$APS . $W DBP$APS CALL ROUTINE TO DECOMPOSE PTR@G@@@@ DSQO )@@G@@ A1,CLCARE . $P SAVE VALUES RETURNED FROM DBP$APS @G@@@@ QP )@@G@@ DS A3,CLCSLT . $ A2 HAS PAGE NUMBER, A3 SLOT NUMBER @G@@@@QQ )@@G@@ TNE A2,CURPGE . $T DOES PTR POINT TO ANOTHER PAGE QR )@@G@@@C@@@@ J CLCLP3 . $A NO,CLCLP3 YES@E@@@@ L QS )@@G@@ A7,CLNXTP . $P CALC POINTER TO A7 @E@@@@ . $ CALCQT )@@G@@ PTR MUST POINT TO ANOTHER PGE OR HDR @G@@@@ TE A7,CQU )@@G@@LCHDR . $T DOES POINTER POINTER TO CALC HEADER @C@@@@ J QV )@@G@@ CLCLP2 . $A NO,CLCLP2 YES@A@@@@ . SET END OF CALC CHAIN SWITCH QW )@@G@@@^@@@@ L,U A0,1@F@@@@ S A0,CENDSW . $PQX )@@G@@ SET CALC CHAIN END SWITCH @[@@@@ . @G@@@@ . GO GET NEXT OVERFLOW QY )@@G@@PAGE, PAGE NUMBER IS IN CLCPGE, SAME AREA @G@@@@NSOVFP . EITHER NOQZ )@@G@@ SPACE IS AVAILABLE IN OVERFLOW PAGE OR CALC CHAIN @E@@@@ . ENDRA )@@G@@ED IN AN OVERFLOW PAGE WITH NO SPACE IN IT @C@@@@ . BUILD PACRB )@@G@@KET WITH FUNCTION CODE 2 @E@@@@ L,U X10,BUFPKT . $PRC )@@G@@ X10 POINTS TO BUFPKT @C@@@@ L A9,NEWARE . $P AREA RD )@@G@@CODE @E@@@@ S,T1 A9,1,X10 . $P AREA CODE TO PACKET RE )@@G@@@E@@@@ L,U A10,2 . $P FUNCTION CODE 2 TO A10 @F@@@@RF )@@G@@ S,H2 A10,0,X10 . $P FUNCTION CODE 2 TO PACKET @F@@@@RG )@@G@@ L A11,CURPGE . $P LAST OVERFLOW PGE # TO A11 @F@@@@RH )@@G@@ S,H2 A11,1,X10 . $P OVERFLOW PAGE # TO PACKET @A@@@@RI )@@G@@ L X6,Z2AREA . $ @G@@@@ S,H2 X6,2,X10 RJ )@@G@@ . $P AREA ENTRY ADDRESS OF Z2 TO BUFPKT @G@@@@ LMJ X11,RK )@@G@@BUFROU . $W BUFROU CALL BUFFER ROUTINE TO GET; @G@@@@ RL )@@G@@ . $ NEXT OVERFLOW PAGE AFTER THAT GIVEN@C@@@@ TZRM )@@G@@,H1 BUFPKT . $T SUCCESSFUL @D@@@@ J CBNSUC RN )@@G@@ . $A NO,CBNSUC YES @E@@@@ . OBTAINED NEXT OVERFLOW PAGE, CHECK IF IRO )@@G@@T HAS SPACE @A@@@@ L A11,CURPGE . @ @@@@ RP )@@G@@ J CLCGT3 @C@@@@CLZER1 . CALC HEADER WAS FOUND TO BE ZERO RQ )@@G@@ @B@@@@ . SET HEADER EQUAL ZERO SWITCH @^@@@@ L,RR )@@G@@U A0,1@F@@@@ S A0,HEZRSW . $P SET HEAD EQUAL ZERS )@@G@@RO SWITCH @G@@@@ J CLPTH1 . $J CLPTH1 GO GET FRSRT )@@G@@T OVERFLOW PAGE @E@@@@YSOVFP . SPACE WAS FOUND ON OVERFLOW PAGE WHICH RU )@@G@@IS CURRENT @A@@@@ . PROCEED TO STORE RECORD @E@@@@ L RV )@@G@@ X9,CURADD . $P ADDRESS OF PAGE TO X9 @E@@@@ L,H1 RW )@@G@@ X8,2,X9 . $P PAGE LENGTH TO X8 @ @@@@ A X8,XRX )@@G@@9 @^@@@@ AN,U X8,1@G@@@@ AN,H1 X8,6,X9 RY )@@G@@ . $P X8 POINTS PAST CALC HEADERS @G@@@@ S X8,FRZ )@@G@@SLTVA . $P SAVE POINTER TO FIRST SLOT ON PGE @F@@@@ L SA )@@G@@ A0,CURPGE . $P CURRENT PAGE NUMBER TO A0 @F@@@@ S SB )@@G@@ A0,NEWPGE . $P SAVE PAGE NUMBER IN NEWPGE @F@@@@ LA SC )@@G@@ A0,RECADD . ADDR OF RECORD BUFFER @E@@@@ L,T3 SD )@@G@@ A3,1,A0 . $P RECORD LENGTH TO A3 @E@@@@ L,U A4,1SE )@@G@@00 . $P PERCENT FILL 100 TO A4 @G@@@@ LMJ X11,RNUSLTSF )@@G@@ . $W ASSIGN SLOT AND RECORD NUMBER @D@@@@ . UPON RETURN, A2>0 IMPSG )@@G@@LIES A SLOT IS BEING REUSED @D@@@@ . A4 HAS NEW RECORD NUSH )@@G@@MBER ASSIGNED @A@@@@ . A1 HAS SLOT NUMBER @A@@@@ SI )@@G@@ S A1,NEWSLT @F@@@@ LA A0,RECADD SJ )@@G@@ . ADDRESS OF RECORD BUFFER @E@@@@ LXM,U X1,1,A0 . $SK )@@G@@P RECORD ADDRESS TO X1 @E@@@@ L,T3 A1,1,A0 . $P RECOSL )@@G@@RD LENGTH TO A1 @E@@@@ LMJ X11,RSTORE . $P STORE RECOSM )@@G@@RD ON PAGE @[@@@@ . @[@@@@ . @A@@@@ . FORM NEW DBP FOR RECORD STOSN )@@G@@RED @[@@@@ . @A@@@@ DL A1,NEWARE @A@@@@ SO )@@G@@ L A3,NEWSLT @G@@@@ SLJ APS$DBP . $WSP )@@G@@ APS$DBP FORM NEW DATA BASE POINTER @^@@@@ TNZ A0 @ @@@@SQ )@@G@@ SLJ RER031 @E@@@@ S A0,NEWDBP . $PSR )@@G@@ SAVE DBP IN NEWDBP @G@@@@ SLJ C4INST . INSS )@@G@@SERT ENTRY FOR OVF RANGE @[@@@@ . @D@@@@ . CALL KEY FILE ACCESS ST )@@G@@METHOD TO INSERT NEW POINTER @[@@@@ . @D@@@@ L A0,NSU )@@G@@EWDBP . RESTORE DBP @G@@@@ S A0,KFAPKT+4 . $SV )@@G@@P NEW DBP TO PACKET OF KEY ACCESS @F@@@@ LA A0,RECADD SW )@@G@@ . ADDRESS OF RECORD BUFFER @D@@@@ L A0,0,A0 SX )@@G@@ . $P OLD DBP TO A0 @G@@@@ S A0,KFAPKT+3 . $P OLD SY )@@G@@DBP TO PACKET OF KEY ACCESS @A@@@@ L,U X10,KFAPKT SZ )@@G@@@F@@@@ LMJ X11,KF$AMW . $W CALL KF$AMW WRITE FUNCTION TA )@@G@@@ @@@@ TZ KFAPKT+5 @G@@@@ SLJ RER032 TB )@@G@@ . $ SUCCESSFUL RETURN FROM KEY ACCESS M @[@@@@ . @B@@@@ . PROCEED TTC )@@G@@O LINK RECORD IN CALC CHAIN @[@@@@ . @F@@@@ LA A1,RTD )@@G@@ECADD . ADDRESS OF RECORD BUFFER @E@@@@ L,T1 ATE )@@G@@1,1,A1 . $P RECORD CODE TO A1 @F@@@@ SLJ CLPFND TF )@@G@@ . $W FIND CALC RELATIVE POINTER @C@@@@ TZ A2 TG )@@G@@ . $ SUCCESSFUL @ @@@@ SLJ RER033 @G@@@@ S TH )@@G@@ X1,RELATV . $P SAVE RELATIVE LOCATION OF CLC PTR @A@@@@ TI )@@G@@ L X9,CURADD @ @@@@ L X8,X9 @ @@@@TJ )@@G@@ A,H1 X8,2,X8 @G@@@@ AN X8,NEWSLT . $PTK )@@G@@ X8 POINTS TO SLOT OF RELOADED REC @G@@@@ A,H2 X9,0,X8 TL )@@G@@ . $P X9 POINTS TO RELOADED RECORD @G@@@@ S X9,RTM )@@G@@LRCAD . $P SAVE ADDRESS OF RELOADED RECORD @F@@@@ A TN )@@G@@ X9,RELATV . $P X9 POINTS TO CALC POINTER @F@@@@ TNZ TO )@@G@@ HEZRSW . $T CALC HEADER ZERO SWITCH SET @ @@@@ J TP )@@G@@ LNKNZR @C@@@@ . HEADER POINTER TO GO INTO NEWLY STORED RECORD@E@@@@TQ )@@G@@ L A0,CLCHDR . $P CALC HEADER TO A0 @G@@@@ TR )@@G@@ S A0,0,X9 . $P CALC HEADER TO PTR LOC OF REL REC @[@@@@TS )@@G@@ . @E@@@@ . MAKE PRIMARY PAGE CURRENT TO STORE POINTER TO NEW RECORD TT )@@G@@@[@@@@ . @F@@@@ L,U X10,BUFPKT . $P ADDRESS OF BUFPKTTU )@@G@@ TO X10 @F@@@@ L A1,NEWARE . $A AREA CODE TO T1 OTV )@@G@@F BUFPKT @E@@@@ L A3,CLPGE . $P PRIMARY PAGE TO A3 TW )@@G@@ @F@@@@ S,T1 A1,1,X10 . $P AREA CODE TO T1 OF BUFPKTTX )@@G@@+1 @F@@@@ S,H2 A3,1,X10 . $P PRIMARY PAGE TO H2 OF PACTY )@@G@@KET @G@@@@ L,U A0,1 . $P BUFFER ROUTINE FUNCTION CTZ )@@G@@ODE 1 TO A0 @E@@@@ S,H2 A0,0,X10 . $P FUNCTION CODE TO PAUA )@@G@@CKET @A@@@@ L A0,Z2AREA . $ @G@@@@ S,H2 UB )@@G@@ A0,2,X10 . $P Z2 AREA ENTRY ADDRESS TO PACKET @D@@@@ LMUC )@@G@@J X11,BUFROU . $W BUFROU GET PAGE @C@@@@ TZ,H1 BUFPUD )@@G@@KT . $ SUCCESSFUL? @B@@@@ SLJ RER034 . NO UE )@@G@@@A@@@@ L X5,CURADD . @G@@@@ A X5,CUF )@@G@@HDREL . $P X5 POINTS TO HEADER ON PRIMARY PAGE @A@@@@ L UG )@@G@@ A0,NEWDBP @G@@@@ S A0,0,X5 . $P NEWLY FORMED UH )@@G@@POINTER TO HEADER @ @@@@ J CLDN1 @[@@@@ . UI )@@G@@@D@@@@LNKNZR . LINK CALC RECORD, NONZERO CALC HEADER CASE @[@@@@ . UJ )@@G@@@E@@@@ . FIRST, STORE LAST POINTER FOUND IN NEWLY RELOADED RECORD @[@@@@UK )@@G@@ . @G@@@@ L X9,RLRCAD . $P ADDRESS OF RELOADED RECUL )@@G@@ TO X9 @G@@@@ A X9,RELATV . $P X9 POINTS TO CALCUM )@@G@@ POINTER OF REL RC@E@@@@ TZ CHOVSW . $T CHOVSUN )@@G@@W SET @E@@@@ J LNKDOV . $A YES,LNKDOV UO )@@G@@NO @E@@@@ L A0,CLNXTP $P LAST POINTER TO A0 UP )@@G@@@G@@@@ S A0,0,X9 . $P STORE LAST POINTER IN NEW RECUQ )@@G@@ORD @C@@@@ . WAS LAST CALC POINTER FROM A FOREIGN PAGE @F@@@@ UR )@@G@@ L,U X10,BUFPKT . $P ADDRESS OF BUFPKT TO X10 @F@@@@ US )@@G@@ L A1,NEWARE . $P AREA CODE TO T1 OF BUFPKT+1 @E@@@@ UT )@@G@@ S,T1 A1,1,X10 . $P AREA CODE TO BUFPKT+1 @D@@@@ L,UU )@@G@@U A0,5 . $P FN CODE 5 TO A0 @E@@@@ S,H2 A0,0UV )@@G@@,X10 . $P FN CODE TO PACKET @A@@@@ L A0,Z2AREA UW )@@G@@ @G@@@@ S A0,2,X10 . $P Z2 AREA ENTRY ADDRESS TUX )@@G@@O PACKET @E@@@@ TZ FORRSW . $T FOREIGN REC SWITCUY )@@G@@H SET @D@@@@ J LNFOSW . $A YES,LNFORSW NO @D@@@@UZ )@@G@@ . MAKE PAGE WHERE LAST POINTER CAME FROM CURRENT @E@@@@ L VA )@@G@@ A3,LSTPGE . $P LAST PAGE # TO A3 @E@@@@ S,H2 VB )@@G@@ A3,1,X10 . $P PAGE NUMBER TO PACKET @G@@@@ LMJ X11,VC )@@G@@BUFROU . $W CALL BUFROU TO MAKE PAGE CURRENT @C@@@@ TZ,H1 VD )@@G@@ BUFPKT . $ SUCCESSFUL @ @@@@ SLJ RER035 @F@@@@VE )@@G@@ L X9,CURADD . $P X9 POINTS TO TOP OF PAGE @ @@@@VF )@@G@@ L X8,X9 @ @@@@ A,H1 X8,2,X8 @F@@@@VG )@@G@@ AN X8,LSRSLT . $P X8 POINTS TO RECORD SLOT @G@@@@VH )@@G@@ A,H2 X9,0,X8 . $P X9 POINTS TO LAST CALC RECORD VI )@@G@@@F@@@@ A X9,LSRREL . $P X9 POINTS TO CALC POINTER VJ )@@G@@@D@@@@ L A0,NEWDBP . $+ NEW DBP TO A0 @G@@@@ VK )@@G@@ S A0,0,X9 . $P STORE NEW RELOADED REC PTR IN LST @ @@@@VL )@@G@@ J CLDN1 @[@@@@ . @G@@@@LNFOSW . LAST CALC POINTVM )@@G@@ER CAME FROM A FOREIGN PAGE, MAKE THAT CURRENT @[@@@@ . @F@@@@ VN )@@G@@ L A3,FORPGE $P FOREIGN PAGE NUMBER TO A3 @G@@@@ VO )@@G@@ S A3,1,X10 . $P FOREIGN PAGE NUMBER TO PACKET @G@@@@VP )@@G@@ LMJ X11,BUFROU . $W BUFROU MAKE FOREIGN PAGE CURRENT VQ )@@G@@@C@@@@ TZ,H1 BUFPKT . $ SUCCESSFUL @ @@@@ SLVR )@@G@@J RER036 @F@@@@ . FOREIGN PAGE IS CURRENT NOW, GET ADDRESSABILIVS )@@G@@TY OVER RECORD @[@@@@ . @F@@@@ L X9,CURADD . $PVT )@@G@@ X9 POINTS TO TOP OF PAGE @ @@@@ L X8,X9 @ @@@@VU )@@G@@ A,H1 X8,2,X8 @F@@@@ AN X8,FORSLT . $PVV )@@G@@ X8 POINTS TO RECORD SLOT @G@@@@ A X9,0,X8 $P XVW )@@G@@9 POINTS TO CALC REC ON FOREIGN PGE @F@@@@ A X9,LSRREL VX )@@G@@ . $P X9 POINTS TO CALC POINTER @D@@@@ L A0,NEWDBP VY )@@G@@ . $P NEW DBP TO A0 @G@@@@ S A0,0,X9 . $P STOREVZ )@@G@@ NEW RELOADED DBP IN FOR REC @ @@@@ J CLDN1 @[@@@@WA )@@G@@ . @C@@@@LNKDOV . CALC HDR POINTS DIRECTLY TO OVF PAGE @E@@@@ WB )@@G@@ LA A0,CLCHAD . $P ADDR OF HDR TO A0@E@@@@ LAWC )@@G@@ A3,0,A0 . $P HDR VALUE TO A3 @B@@@@ TE WD )@@G@@ A3,CLSAVP . @B@@@@ SLJ RER037 . WE )@@G@@@F@@@@ SA A3,0,X9 . HDR TO NEW REC CHAIN PTR WF )@@G@@@E@@@@ LA A4,NEWDBP . $P NEW DBP TO A4 @E@@@@WG )@@G@@ SA A4,0,A0 . $P NEW DBP TO HDR @C@@@@ WH )@@G@@ J CLDN1 . $J CLDN1@[@@@@ . @[@@@@ . @]@@@@WI )@@G@@CBNSUC . @ @@@@ SLJ RER038 @G@@@@CLDN1 . FINISHED LWJ )@@G@@INKING CALC RECORDS, MAKE AN ENTRY FOR C4 TAB PURPOSE @ @@@@CLDONE . LOAWK )@@G@@DED CALC RECORD @B@@@@ LA A0,RELCNUM . @B@@@@WL )@@G@@ AA,U A0,1 . @E@@@@ SA A0,RWM )@@G@@ELCNUM . $P INCREMENT RELCNUM@B@@@@ L A0,RELNUM WN )@@G@@ . @^@@@@ A,U A0,1@B@@@@ S A0,RWO )@@G@@ELNUM . @ @@@@ . RESET ALL SWITCHES @E@@@@ SZWP )@@G@@ FORRSW . $P RESET SWITCHES @F@@@@ SZ WQ )@@G@@ CHOVSW . HDR POINTS DIREC TO OVF @E@@@@ SZ WR )@@G@@ CENDSW . CALC CHNE END SW @E@@@@ SZ HEZRWS )@@G@@SW . HEADER ZERO SWITCH @B@@@@ SZ STIWRAP WT )@@G@@ . @B@@@@ SZ STOWRAP . @B@@@@ WU )@@G@@ SZ STGWRAP . @ @@@@ J MLOOP1 WV )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@/ @[@@@@ . @[@@@@ . WW )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @D@@@@ . Z2ENT HASWX )@@G@@ ADDRESS OF Z2 TABLE RECORD ENTRY @D@@@@RELDIR . RECORD BEING RELOADEDWY )@@G@@ IS A DIRECT RECORD @E@@@@ . NEWARE HAS NEW AREA CODE ( AREA TWZ )@@G@@O RELOAD TO) @D@@@@ . NEWC3A HAS ADDRESS TO C3 ENTRY OF NEWARXA )@@G@@E @G@@@@ . Z2AREA HAS ADDRESS OF Z2 TABLE AREA ENTRY (WITHIN RXB )@@G@@ECORD ENTRY)@G@@@@ TNZ DIRSW2 . $ MAKE SURE THEREXC )@@G@@ WAS A DIRECT @F@@@@ . CONTROL RXD )@@G@@ECORD SPECIFIED @A@@@@ SLJ RER081 .@]@@@@ XE )@@G@@ . @G@@@@ . CALL BUFFER ROUTINE TO OBTAIN PAGE FOR DIRECT REXF )@@G@@CORD RELOAD @G@@@@ . WITH PAGE NUMBER FROM DIRECT CONTROL RECORXG )@@G@@D AND BUFROU @A@@@@ . FUNCTION CODE 1 . @]@@@@ XH )@@G@@ . @G@@@@ LX,U X10,BUFPKT . $P X10 TO POINT TO BUFFXI )@@G@@ER RTN PKT @A@@@@ LA A1,NEWARE .@G@@@@ SAXJ )@@G@@,T1 A1,1,X10 . $P AREA CODE TO T1 OF 2ND WORD @A@@@@ XK )@@G@@ LA,H1 A2,DIRCNTL .@G@@@@ SA,H2 A2,1,X10 .XL )@@G@@ $P PAGE NUMBER TO H2 OF 2ND WRD @E@@@@ SA A2,NEWPGE XM )@@G@@ . $P PAGE # TO NEWPGE @B@@@@ LA,U A0,1 .XN )@@G@@ $ @G@@@@ SA,H2 A0,0,X10 . $P BUFROU FUNCTION CODEXO )@@G@@ 1 TO H2 @D@@@@ . OF BUFPKT XP )@@G@@@A@@@@ LX X6,Z2AREA .@G@@@@ SX,H2 X6,2XQ )@@G@@,X10 . $P Z2 AREA ENTRY TO H2 OF 3RD WRD @G@@@@ LMJ XR )@@G@@ X11,BUFROU . $W BUFROU, GET PAGE WITH PAGE RNGE @C@@@@ XS )@@G@@ . CHECK @D@@@@ TZ,H1 BUFPKT XT )@@G@@ . $T SUCCESSFUL @E@@@@ SLJ RER082 . $A NOXU )@@G@@,RER082 YES @G@@@@ SLJ DATYPE . PAGE BETXV )@@G@@TER BE A DATA PAGE @F@@@@ LX X3,RECADD . REXW )@@G@@CORD BUFFER ADDR TO X3 @D@@@@ LA,T1 A0,1,X3 . REXX )@@G@@CORD CODE @A@@@@ TNE A0,CURREC .@A@@@@ J XY )@@G@@ $+2 .@E@@@@ SA A0,CURREC . $P MAXZ )@@G@@KE RECORD CURRENT @]@@@@ . @]@@@@ . @E@@@@ LXYA )@@G@@ X9,CURADD . $P ADDR OF CURRENT PAGE@A@@@@ TE,H2 YB )@@G@@ A2,1,X9 .@A@@@@ SLJ RER084 .@E@@@@ YC )@@G@@ L,H1 X8,2,X9 . $P PAGE LENGTH TO X8 @ @@@@ A YD )@@G@@ X8,X9 @^@@@@ AN,U X8,1@G@@@@ AN,H1 YE )@@G@@ X8,6,X9 . $P X8 POINTS PAST THE CALC HEADERS @G@@@@ SXYF )@@G@@,H2 X8,FSLTVA . $P SAVE POINTER TO 1ST SLOT ON PAGE@E@@@@ YG )@@G@@ L,T3 A3,1,X3 . $P RECORD LENGTH TO A3 @F@@@@ LAYH )@@G@@ A2,Z2ENT . $P Z2 RECORD ENTRY TO A2 @F@@@@ LAYI )@@G@@,U A4,100 . $P 100 LOAD FACTOR ASSUMED @G@@@@ LMYJ )@@G@@J X11,RSPACE . $W RSPACE ANY SPACE AVAILABLE @G@@@@ YK )@@G@@ SA A2,SPACSW . SAVE ERROR CODE FROM RSPACE ROUTINE@E@@@@YL )@@G@@ TZ A2 . $T ANY SPACE AVAILABLE @E@@@@ YM )@@G@@ SLJ RER083 . $A NO,RER083 YES @]@@@@ . YN )@@G@@@E@@@@ . CHECK IF RECORD CODE IS DUPLICATED ON PAGE @]@@@@YO )@@G@@ . @G@@@@ LA,H2 A3,DIRCNTL . $P RECORD NUMBER YP )@@G@@FROM DIR CNTL INF @G@@@@ LX X8,FSLTVA . $P ADDRESS YQ )@@G@@OF FIRST SLOT ON PAGE @E@@@@ LX X9,CURADD . $P ADYR )@@G@@DRESS OF PAGE @G@@@@ TNZ A3 . MAKE SURYS )@@G@@E RECORD NUMBER NOT ZERO@B@@@@ SLJ RER046 . YT )@@G@@@F@@@@ TNZ,H1 3,X9 . $T ANY SLOTS ALLOCATED YU )@@G@@@E@@@@ J DIRNDUP . $A NO,DIRNDUP YES @C@@@@YV )@@G@@ LMJ X11,RECDUP . $W RECDUP @G@@@@ YW )@@G@@ . UPON RETURN, A2 HAS RETURN CODE @G@@@@ YX )@@G@@ . X8 POINTS ONE LOCATION AHEAD OF DUP@C@@@@ YY )@@G@@ . IF ANY @E@@@@ JNZ A2,DYZ )@@G@@IRNDUP . $T FOUND DUPLICATE @E@@@@ LXI,U X8,0 ZA )@@G@@ . $A NO,DIRNDUP YES @A@@@@ AX,U X8,1 .ZB )@@G@@@G@@@@ LR R3,X8 . $P SAVE ADDR OF DUPLICATE SLOZC )@@G@@T (R3)@G@@@@ LA A0,FSLTVA . DUPLICATE RECORD NUMZD )@@G@@BER FOUND @G@@@@ AA,U A0,1 . ON PAGE. SAVE ZE )@@G@@SLOT NUMBER (R4) @G@@@@ AN A0,X8 . WARN USEZF )@@G@@R, THEN CHANGE OLD @E@@@@ A,H1 A0,6,X9 . REZG )@@G@@CORD NUMBER @A@@@@ LR R4,A0 .@E@@@@ ZH )@@G@@ LA A9,0,X8 . $P SLOT VALUE TO A9 @F@@@@ ANZI )@@G@@D A9,SIUMSK . $P MASK SLOT DESCRIPTION @D@@@@ JZZJ )@@G@@ A10,DIRGT2 . $T SLOT IN USE @E@@@@ ZK )@@G@@ . $A NO,DIRNUS YES,DIRGT1@F@@@@DIRNUS . SLOT WITH DUPLICATE RZL )@@G@@ECORD NUMBER AS DIRECT WAS FOUND. @C@@@@ . THIS SLOT HAD AN INDIZM )@@G@@CATOR OF NOT USED @C@@@@ . REUSE THIS SLOT FOR THE DIRECT RECORD ZN )@@G@@@C@@@@ . ADDRESS OF DUPLICATE SLOT IS KEPT IN R3@]@@@@ . ZO )@@G@@@E@@@@ LX X9,CURADD . X9 POINTS TO PAGE @G@@@@ZP )@@G@@ LA A1,FSLTVA . $P ADDR OF FIRST SLOT ON PAGE ZQ )@@G@@@A@@@@ AA,U A1,1 .@A@@@@ AN A1,RZR )@@G@@3 .@G@@@@ A,H1 A1,6,X9 . $P ADD ADDITIONALZS )@@G@@ # OF CALC CHAINS @D@@@@ . $P SLOT # TZT )@@G@@O A1 @G@@@@ SZ A2 . $P A2=0 WILL INDICATE SZU )@@G@@LOT REUSED @E@@@@ LX X8,R3 . $P SLOT ADDRESS TZV )@@G@@O X8 @ @@@@ J DIRSTR @]@@@@DIRGT2 @A@@@@ ZW )@@G@@ LA,U A0,1 .@A@@@@ AND A9,RFPMSK ZX )@@G@@@ @@@@ JZ A10,$+2 @ @@@@ SLJ RER085 ZY )@@G@@@A@@@@ AND A9,SHPMSK @ @@@@ JZ A10,ZZ )@@G@@$+2 @ @@@@ SLJ RER085 @F@@@@ SA A0,DAA )@@G@@IRWAR . $P SET DIRWAR TO WARN USER @G@@@@ SA A0,RAB )@@G@@ELWAR . $P SET RELWAR FOR GENERAL WARNING @F@@@@ LX AC )@@G@@ X8,FSLTVA . ADDRESS OF 1ST SLOT ON PAGE @D@@@@ LX AD )@@G@@ X9,CURADD . ADDRESS OF PAGE @G@@@@ LMJ X11,RNUSLTAE )@@G@@ . $W RNUSLT GET NEW RECORD NUMBER @G@@@@ AF )@@G@@ . $ UPON RETURN, A3 HAS RECORD NUM @G@@@@ AG )@@G@@ . IGNORE OTHER INFORMATION RETURND@A@@@@ SAAH )@@G@@ A3,NEWRNU @E@@@@ LA A0,R3 . $P ADAI )@@G@@DR OF OLD SLOT @E@@@@ LA,S1 A2,0,A0 . SAVE S1 OAJ )@@G@@F SLOT @G@@@@ SA,H1 A3,0,A0 . STORE NEW RECORAK )@@G@@D NUMBER IN SLOT @E@@@@ SA,S1 A2,0,A0 . RESTORE SAL )@@G@@1 TO SLOT @]@@@@DIRNDUP @E@@@@ LX X9,CURADD .AM )@@G@@ X9 POINTS TO PAGE @G@@@@ LX X8,FSLTVA . X8AN )@@G@@ POINTS TO FIRST SLOT ON PAGE @G@@@@ LMJ X11,RNUSLT .AO )@@G@@ $W RNUSLT ASSIGN NEW SLOT FOR REC @G@@@@ AP )@@G@@ . UPON RETURN, A2=0 IMPLIES A SLOT@G@@@@ AQ )@@G@@ . IS REUSED @G@@@@ AR )@@G@@ . A1 HAS SLOT NUMBER @G@@@@DIRSTR . NEEAS )@@G@@D TO ASSIGN NEW SLOT BUT MUST USE DIRECT RECORD NUMBER @G@@@@ AT )@@G@@ LA,H2 A3,DIRCNTL . $P REPLACE RECORD NUMBER ASSIGNED @G@@@@AU )@@G@@ . BY RECORD NUMBER FROM DIRECT AV )@@G@@@E@@@@ . CONTROL RECORD @G@@@@AW )@@G@@ SA A1,NEWSLT . $P SAVE NEW SLOT NUMBER IN NEWSLT AX )@@G@@@F@@@@ LA A0,RECADD . $P ADDRESS OF RECORD BUFFER AY )@@G@@@F@@@@ LX X1,A0 . $P ADDRESS OF RECORD BUFFER AZ )@@G@@@E@@@@ AX,U X1,1 . $P ADDRESS OF RECORD @E@@@@BA )@@G@@ LA,T3 A1,1,A0 . $P RECORD LENGTH TO A1 @E@@@@ BB )@@G@@ LMJ X11,RSTORE . $P STORE RECORD ON PAGE@A@@@@ BC )@@G@@ .@A@@@@ LA A1,CURPGE @A@@@@BD )@@G@@ SA A1,NEWPGE @E@@@@ DL A1,NEWARE BE )@@G@@ . $P NEW AREA, NEW PAGE @C@@@@ L A3,NEWSLT .BF )@@G@@ $P NEW SLOT@G@@@@ SLJ APS$DBP . $W APS$DBP FORM NBG )@@G@@EW DATA BASE PTR @^@@@@ TNZ A0 @ @@@@ SLJ BH )@@G@@ RER024 @G@@@@ SA A0,NEWDBP . $P NEW DATA BASE BI )@@G@@POINTER SAVED @A@@@@ .@G@@@@ BJ )@@G@@ . $ CALL KEY FILE ACCESS METHOD @F@@@@BK )@@G@@ . TO INSERT NEW POINTER @A@@@@BL )@@G@@ .@G@@@@ SA A0,KFAPKT+BM )@@G@@4 . $P NEW DBP TO KEY FILE PKT + 4 @F@@@@ LA A0,RBN )@@G@@ECADD . $P ADDR OF RECORD BUFFER @E@@@@ LA A0,0BO )@@G@@,A0 . $P OLD DBP TO A0 @G@@@@ SA A0,KFAPKT+BP )@@G@@3 . $P OLD DBP TO KEY FILE PKT + 3 @A@@@@ LX,U X10,BQ )@@G@@KFAPKT .@G@@@@ LMJ X11,KF$AMW . $W KF$AMW WRITE NBR )@@G@@EW POINTER TO @C@@@@ . KEY FILEBS )@@G@@@A@@@@ TZ KFAPKT+5 .@ @@@@ SLJ RER0BT )@@G@@25 @[@@@@ . @B@@@@ . CHECK IF WARNING TO USER IS NEEDED @[@@@@BU )@@G@@ . @E@@@@ TNZ DIRWAR . $T IS WARNING NEEDED BV )@@G@@@E@@@@ J DIRGT3 . $A NO,DIRGT3 YES @F@@@@BW )@@G@@ . ISSUE WARNING TO USER @A@@@@BX )@@G@@ E$DIT EDPKT .@A@@@@ E$COPY 30,MSGDR1 BY )@@G@@ .@A@@@@ LA,H2 A11,DIRCNTL .@A@@@@ E$DECV BZ )@@G@@ A11 .@A@@@@ E$COPY 17,MSGDR2 .@A@@@@ CA )@@G@@ E$DECV NEWARE .@A@@@@ E$COPY 7,MSGDR3 .CB )@@G@@@A@@@@ E$DECV NEWPGE .@A@@@@ P$RINT (PF1CC )@@G@@ 1,14,PRINT)@A@@@@ E$DIT EDPKT .@A@@@@ E$CD )@@G@@COPY 22,MSGDR4 .@A@@@@ E$DECV R4 .@A@@@@CE )@@G@@ E$COPY 17,MSGDR5 .@A@@@@ CF )@@G@@ .@D@@@@ . GET RECORD CODE @A@@@@CG )@@G@@ .@E@@@@ LX X8,R3 CH )@@G@@ . $P ADDR OF DUP SLOT @A@@@@ LX X9,CURADD .CI )@@G@@@E@@@@ AX,H2 X9,0,X8 . $P X9 POINTS TO RECORD @E@@@@CJ )@@G@@ LA,T1 A12,0,X9 . $P RECORD CODE TO A12 @A@@@@ CK )@@G@@ E$DECV A12 .@A@@@@ E$COPY 14,MSGDR6 .CL )@@G@@@G@@@@ LA,H2 A13,DIRCNTL . $P DUPLICATED DIRECT RECORN NCM )@@G@@UMBER @A@@@@ E$DECV A13 .@E@@@@ E$COPY CN )@@G@@ 4,MSGDR7 . $P NEW RECORD NUMBER @A@@@@ E$DECV NEWRCO )@@G@@NU .@A@@@@ P$RINT (PF1 1,14,PRINT)@B@@@@DIRGT3 LACP )@@G@@ A0,RELDNUM . $P @G@@@@ AA,U A0,1 .CQ )@@G@@ $P INCREMENT NUMBER OF DIRECT RECS @A@@@@ SA A0,RELDNUMCR )@@G@@ .@A@@@@ LA A0,RELNUM .@G@@@@ AA,U CS )@@G@@ A0,1 . $P INCREMENT # OF RELOADED RECORDS @A@@@@ SACT )@@G@@ A0,RELNUM .@ @@@@ SZ DIRCNTL @ @@@@ CU )@@G@@ SZ DIRSW @C@@@@ J MLOOP1 . $J MLCV )@@G@@OOP1 @[@@@@/ @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@CW )@@G@@ . @[@@@@ . @[@@@@ . @[@@@@ . @]@@@@DFEOF . @[@@@@ . CX )@@G@@@B@@@@ . FLUSH CORE BUFFER AND KEY FILE OUT @[@@@@ . @G@@@@ CY )@@G@@ L,U X10,BUFPKT . $P ADDRESS OF BUFFER PACKET TO X10 @G@@@@CZ )@@G@@ L,U A1,8 . $P FUNCTION CODE 8 TO BUFFER PACKET DA )@@G@@@A@@@@ S,H2 A1,0,X10 . $ @A@@@@ DB )@@G@@ . $ @G@@@@ LMJ X11,BUFROU . $W BUFROU FLUSH CORE DC )@@G@@BUFFERS OUT @D@@@@ TZ,H1 BUFPKT . $ SUCCESSFUL RETDD )@@G@@URN @ @@@@ SLJ RER039 @G@@@@ L,U X10,DE )@@G@@KFAPKT . $ ADDRESS OF KEY FILE PACKET TO X10 @C@@@@ LMJ DF )@@G@@ X11,KF$AMF . $ KF$AMF @E@@@@ TZ KFAPKT+5 . $ CHDG )@@G@@ECK STATUS OF CALL @ @@@@ SLJ RER040 @[@@@@ . DH )@@G@@@[@@@@ . @[@@@@ . @B@@@@ . PROCEED TO WRITE OUT THE Z2 TABLE. DI )@@G@@@[@@@@ . @[@@@@ . @B@@@@ LX,U X10,Z2CPAR . DJ )@@G@@@C@@@@ LMJ X11,CF$AM . $W CF$AM@[@@@@ . @[@@@@DK )@@G@@ . @[@@@@ . @[@@@@ . @A@@@@ . PROCEDE TO CREATE C4 TABLE DL )@@G@@@[@@@@ . @[@@@@ . @G@@@@ SZ A6 . $PDM )@@G@@ ZERO TO A6 FOR #OF WRDS @G@@@@ L,H2 X5,Z2 DN )@@G@@ . $P ADDRESS OF Z2 TABLE TO X5 @G@@@@ L X8,C4ADD DO )@@G@@ . $P ADDRESS OF C4 TABLE TO X8 @G@@@@ S,H2 X8,CDP )@@G@@4 . $ADDRESS OF C4 TABLE TO C4 @]@@@@C4BLD3 . @ @@@@DQ )@@G@@ L X6,X5 @G@@@@ A,T2 X6,1,X5 DR )@@G@@ . X6 POINTS TO FIRST AREA ENTRY @B@@@@ L X7,X6 DS )@@G@@ . @C@@@@ AN,U X7,1 . @G@@@@DT )@@G@@ L,H2 A3,0,X7 . $P #OF AREA ENTRIES TO A3 DU )@@G@@@F@@@@ AN,U A3,1 . $P A3 TO CONTROL LOOP DV )@@G@@@]@@@@C4BLP1 . @I@@@@ TZ 3,X6 . $T C4 TADW )@@G@@B TO BE CONSTRUCTED FOR THIS ENT @E@@@@ DX )@@G@@ . $A YES,C4BLD1 NO @ @@@@ J C4BLD1 @F@@@@DY )@@G@@C4BLD2 A,S1 X6,0,X6 . $P POINT TO NEXT ENTRY @E@@@@DZ )@@G@@ JGD A3,C4BLP1 . $T ARE WE DONE YET @E@@@@ EA )@@G@@ . $A NO,C4BLP1 YES @E@@@@ TNEB )@@G@@Z,T3 0,X5 . $T ANY LINK IN Z2 @E@@@@ EC )@@G@@ . $A NO,C4DONE YES @ @@@@ J C4DOED )@@G@@NE @G@@@@ A,T3 X5,0,X5 . $P POINT TO NEXT ENTEE )@@G@@ IN Z2 @D@@@@ J C4BLD3 . $J C4BLD3 EF )@@G@@@]@@@@C4BLD1 . @[@@@@ . @B@@@@ . WE WANT TO BUILD A C4 ENTRY FOR TEG )@@G@@HIS @G@@@@ SZ 3,X6 . ZERO OUT REL PGE INDEH )@@G@@ICATOR @G@@@@ SZ MRGARE . ZERO OUT MERGEEI )@@G@@ TABLE INDICATOR @E@@@@ L,T3 A1,0,X6 . $P AREA EJ )@@G@@CODE TO A1 @F@@@@ S,T1 A1,0,X8 . $P AREA CODE TEK )@@G@@O C4 ENTRY @ @@@@ L,U X10,C3 @G@@@@ LMJ EL )@@G@@ X11,TABSE1 . $P SEARCH C3 FOR AREA ENTRY @B@@@@ . A0 WILL PEM )@@G@@OINT TO ENTRY UPON RETURN @^@@@@ TZ A2 @ @@@@ EN )@@G@@ SLJ RER041 @E@@@@ DL A7,1,A0 . $AEO )@@G@@REA NAME TO A7,A8 @F@@@@ DS A7,1,X8 . $P AREA EP )@@G@@NAME TO C4 ENTRY @ @@@@ L X9,X8 @^@@@@ LXEQ )@@G@@I,U X9,1@H@@@@ A,U X9,3 . $P X9 WILL POIER )@@G@@NT TO 1ST RANGE IN C4 @A@@@@ . POINTER TO AREA ENTRY IN X6 @^@@@@ES )@@G@@ TNZ 1,X6@ @@@@ SLJ RER042 @G@@@@ ET )@@G@@ S,T1 A1,MRGARE . $P SAVE AREA CODE IN MRGARE HEADER @F@@@@EU )@@G@@ L X4,MRGADD . $P ADDRESS OF MERGE TABLE TO X4 @^@@@@EV )@@G@@ LXI,U X4,2@F@@@@ DL A9,1,X6 . $P RANGE OEW )@@G@@F PAGES TO A9 AND A10 @F@@@@ DS A9,0,*X4 . $P RANGE OEX )@@G@@F PAGES TO C4 ENTRY @A@@@@ L,H2 A0,MRGNUM @B@@@@EY )@@G@@ TLE,U A0,MRGENT . @B@@@@ J $+2 EZ )@@G@@ . @F@@@@ SLJ RER057 . OVERFLOWFA )@@G@@ OF MERGE TABLE @E@@@@ A,U A0,1 . $P UPDATE # OF EFB )@@G@@NTRIES IN A0@G@@@@ S,H2 A0,MRGNUM . $P STORE # OF ENTRIES FC )@@G@@IN H2 OF MRGNUM @A@@@@ . X5 POINTS TO Z2 ENTRY CONSIDERED @E@@@@ FD )@@G@@ TNZ,T3 0,X5 . $T ANY LINK IN Z2 ENTRY @C@@@@ J FE )@@G@@ C4OVFL . $A NO,C4OVFL YES@E@@@@ . SEARCH REST OF Z2 ENTRY LOOFF )@@G@@KING FOR DUPLICATE AREA @E@@@@ L X2,X5 . $P AFG )@@G@@DDRESS OF Z2 ENTRY TO X2@G@@@@ A,T3 X2,0,X2 . $P X2 POINFH )@@G@@TS TO NEXT Z ENTRY IF ANY @]@@@@MERGE3 . @A@@@@ L FI )@@G@@ X3,X2 . @F@@@@ A,T2 X3,1,X2 . $P X3 POINTS TO FJ )@@G@@FIRST AREA ENTRY @ @@@@ L X7,X3 @^@@@@ ANFK )@@G@@,U X7,1@E@@@@ L,H2 A15,0,X7 . $P # OF AREA ENTRIES TFL )@@G@@O A15 @E@@@@ AN,U A15,1 . $P A15 WILL CONTROL LOOP FM )@@G@@@]@@@@C4LP11 . @D@@@@ TNE,T3 A1,0,X3 . $T AREA CODES EQFN )@@G@@UAL @C@@@@ J MERGE1 . $A YES,MERGE1 NO@]@@@@MERGE2FO )@@G@@ . @G@@@@ A,S1 X3,0,X3 . $P POINT TO NEXT AREA ENTRY FP )@@G@@WITHIN Z2 @D@@@@ JGD A15,C4LP11 . $T ANY MORE AREAS FQ )@@G@@@C@@@@ . $A YES,C4LP11 NO@E@@@@ TNFR )@@G@@Z,T3 0,X2 . $T ANY LINK IN Z2 ENTRY @C@@@@ J FS )@@G@@ C4OVFL . $A NO,CLOVFL YES@E@@@@ A,T3 X2,0,X2 . $P PFT )@@G@@OINT TO NEXT Z2 ENTRY @C@@@@ J MERGE3 . $J MERGE3 FU )@@G@@ @G@@@@MERGE1 TNZ 3,X3 . $T ANY PAGE RELOADED IN THISFV )@@G@@ AREA @C@@@@ J MERGE2 . $A NO,MERGE2 YES@G@@@@FW )@@G@@ . FOUND AN AREA ENTRY, PUT RANGE IN MERGE TABLE AND ZERO ENTRY FX )@@G@@@F@@@@ DL A9,1,X3 . $P RANGE OF PAGES TO A9 AND A10 FY )@@G@@@F@@@@ DS A9,0,*X4 . $P RANGE OF PAGES TO MERGE TABLE FZ )@@G@@@A@@@@ L,H2 A0,MRGNUM @B@@@@ TLE,U A0,MGA )@@G@@RGENT . @B@@@@ J $+2 . @F@@@@GB )@@G@@ SLJ RER057 . OVERFLOW OF MERGE TABLE @E@@@@GC )@@G@@ A,U A0,1 . $P UPDATE # OF ENTRIES IN A0@G@@@@ GD )@@G@@ S,H2 A0,MRGNUM . $P STORE # OF ENTRIES IN H2 OF MRGNUM @E@@@@GE )@@G@@ SZ 3,X3 . $P ZERO PAGE CURRENCY @C@@@@ GF )@@G@@ J MERGE2 . $J MERGE2 @E@@@@ . **** DETERMINE HERE IGG )@@G@@F ANY OVERFLOW RANGES ARE NEEDED @C@@@@ . ****IF NEEDED STORE RANGES GH )@@G@@BEFORE LINK @[@@@@ . @F@@@@C4OVFL TNZ C4TBNM GI )@@G@@ . ANY ENTRIES IN OVF TBL @B@@@@ J C4CON3 GJ )@@G@@ . @B@@@@ L A7,C4TBNM . @E@@@@ ANGK )@@G@@,U A7,1 . A7 TO CONTROL LOOP @A@@@@ . SEARCH TABLE OFGL )@@G@@ OVERFLOW RANGES @[@@@@ . @G@@@@ L X1,RNGADD GM )@@G@@ . ADDRESS OF RANGE TABLE TO X1 @B@@@@C4BLP2 TNE,T3 A1,0,X1 GN )@@G@@ . @G@@@@ J C4BLD5 . AREA CODES EQUGO )@@G@@AL, BUILD ENTRY @^@@@@C4CON2 A,U X1,2@B@@@@ JGD GP )@@G@@ A7,C4BLP2 . @]@@@@C4CON3 . @[@@@@ . @C@@@@ . BUILD A CGQ )@@G@@4 TABLE ENTRY FROM MERGE TABLE @E@@@@ . X8 POINTS TO C4 ENTRY, X9 PGR )@@G@@OINTS TO RANGE ENTRY WITHIN C4@C@@@@ . GET SMALLEST LOWER RANGE FROM MERGS )@@G@@GE TABLE @D@@@@ SZ A5 . $P ZERO # OF RANGES GT )@@G@@@G@@@@ SLJ MRGSML . $W MRGSML FIND SMALLEST LOWER RANGGU )@@G@@E IN; @G@@@@ . MERGE TABLE, A0 POINTS TOGV )@@G@@ ENTRY @E@@@@ TZ A2 . $T ANY SMALLEST ENTRY GW )@@G@@FOUND @G@@@@ SLJ RER043 . $E EXIT NO THERE MUST BE AT GX )@@G@@LEAST ONE @E@@@@ L,H2 A9,0,A0 . $P LOWER RANGE TO A9 GY )@@G@@ @E@@@@ S,H1 A9,0,X9 . $P LOWER RANGE TO C4 ENTRY GZ )@@G@@@E@@@@ L,H2 A10,1,A0 . $P UPPER RANGE TO A10 @[@@@@HA )@@G@@ . @]@@@@MRGLP2 . @G@@@@ SLJ MRGSML . $W MRGSML HB )@@G@@GET NEXT SMALLEST LOWER RANGE @E@@@@ TZ A2 . $T AHC )@@G@@NY SMALLEST ENTRY @C@@@@ J C4ENT1 . $A NO,C4ENHD )@@G@@T1 @G@@@@ TLE,H2 A10,0,A0 . $T IS NEW LOWER RGE LESS OR HE )@@G@@EQU TO PREV @C@@@@ J MERGE4 . $A NO,MERGE4 YES@B@@@@HF )@@G@@ TG,H2 A10,1,A0 . @B@@@@ J $+2 HG )@@G@@ . @G@@@@ L,H2 A10,1,A0 . $P YES NEWLY FOUHH )@@G@@ND UPPER RANGE TO A10 @C@@@@ J MRGLP2 . $J MRGLP2 HI )@@G@@ @G@@@@MERGE4 . CALCULATE # OF PAGES FOR RANGE AND STORE IN C4 RANGHJ )@@G@@E ENTRY @ @@@@ AN A10,A9 @F@@@@ A,U HK )@@G@@ A10,1 . $P # OF PAGES IN RANGE TO A10 @E@@@@ S,H2 HL )@@G@@ A10,0,*X9 . $P # OF PAGES TO C4 ENTRY @G@@@@ A,U A5,1HM )@@G@@ . $P INCREMENT # OF RANGES IN C4 ENTRY @E@@@@ L,H2 HN )@@G@@ A9,0,A0 . $P NEW LOWER RANGE TO A9 @F@@@@ S,H1 A9,0HO )@@G@@,X9 . $P NEW LOWER RANGE TO C4 ENTRY @E@@@@ L,H2 A10,HP )@@G@@1,A0 . $P NEW UPPER RANGE TO A10 @C@@@@ J MRGLP2 HQ )@@G@@. $J MRGLP2 @[@@@@ . @[@@@@ . @]@@@@C4ENT1 . @ @@@@ HR )@@G@@ AN A10,A9 @F@@@@ A,U A10,1 . $P # OF PAHS )@@G@@GES IN RANGE TO A10 @E@@@@ S,H2 A10,0,*X9 . $P # OF PHT )@@G@@AGES TO C4 ENTRY @G@@@@ A,U A5,1 . $P INCREMENT # OHU )@@G@@F RANGES IN C4 ENTRY @F@@@@ S,T2 A5,0,X8 . # HV )@@G@@OF RANGES TO C4 ENTRY @ @@@@ LXM A0,X9 @^@@@@ HW )@@G@@ LXI,U X8,0@F@@@@ S X8,C4ENT . $P SAVE HX )@@G@@C4 ENTRY ADDRESS @E@@@@ AN A0,X8 . CALCULATHY )@@G@@E LINK @G@@@@ S,T3 A0,0,X8 . $P STORE LINK HZ )@@G@@IN C4 ENTRY @G@@@@ A A6,A0 . $P INCREIA )@@G@@MENT ## OF WRDS IN C4 @B@@@@ TLE,U A6,C4SIZE . IB )@@G@@@B@@@@ J $+2 . @ @@@@ SLJ IC )@@G@@ RER067 @E@@@@ A,T3 X8,0,X8 . POINT TO NEXT ID )@@G@@ENTRY @D@@@@ J C4BLD2 . $J C4BLD2 @[@@@@IE )@@G@@ . @[@@@@ . @]@@@@C4BLD5 . @B@@@@ L,H1 A9,1,X1 IF )@@G@@ . @G@@@@ S A9,0,X4 . LOWER RNGE TO IG )@@G@@MERGE TAB ENT @E@@@@ L,H2 A10,1,X1 . $P UPPERIH )@@G@@ RNGE TO A10@F@@@@ S A10,1,*X4 . $P UPPER RNGE II )@@G@@TO MRG TAB @B@@@@ L,H2 A0,MRGARE . @B@@@@ IJ )@@G@@ A,U A0,1 . @H@@@@ S,H2 A0,MRGARE IK )@@G@@ . $P UPDATE # OF ENTRIES IN MRG TAB @B@@@@ J IL )@@G@@ C4CON2 . @]@@@@C4DONE . @B@@@@ LA A0,CIM )@@G@@4ENT . @F@@@@ SZ,T3 0,A0 . STORE ZEIN )@@G@@RO IN LAST LINK @G@@@@ S,H1 A6,C4 . $P STOREIO )@@G@@ # OF WRDS IN C4 IN C4 @H@@@@ . SEIP )@@G@@ND OUT WARNING IF RELWAR NOT = 0 @B@@@@ TNZ RELWAR IQ )@@G@@ . @B@@@@ J NOWARN . @B@@@@ IR )@@G@@ E$DIT EDPKT . @A@@@@ E$COPY 42,MSGAST IS )@@G@@. @A@@@@ P$RINT (PF1 1,14,PRINT)@B@@@@ E$DIT IT )@@G@@ EDPKT . @A@@@@ E$COPY 42,MSGRWA . @A@@@@IU )@@G@@ P$RINT (PF1 1,14,PRINT)@B@@@@ E$DIT EDPKT IV )@@G@@ . @A@@@@ E$COPY 42,MSGAST . @A@@@@ P$IW )@@G@@RINT (PF1 1,14,PRINT)@]@@@@NOWARN @B@@@@ E$DIT EDPKIX )@@G@@T . @B@@@@ E$DECV RELNUM . @B@@@@IY )@@G@@ E$COPY 17,MSGNUM . @#@@@@ E$DITX @A@@@@IZ )@@G@@ P$RINT (PF1 1,14,PRINT)@B@@@@ E$DIT EDPKT JA )@@G@@ . @G@@@@ E$DECV RELSNUM . # OF VIA SET RJB )@@G@@ECORDS RELOADED @B@@@@ E$COPY 10,MSGVIA . @G@@@@JC )@@G@@ E$DECV RELCNUM . # OF CALC RECORDS RELOADED JD )@@G@@@B@@@@ E$COPY 10,MSGCAL . @B@@@@ E$DECV JE )@@G@@ RELDNUM . @B@@@@ E$COPY 7,MSGDIR . JF )@@G@@@B@@@@ E$COPY 17,MSGNUM . @B@@@@ P$RINT JG )@@G@@ (PF1 1,14,PRINT) . @ @@@@ J *RETURN @]@@@@NPGMSGJH )@@G@@ . @B@@@@ E$DIT EDPKT . @B@@@@ E$JI )@@G@@COPY 22,MSGNPG . @F@@@@ LA A2,RECADD JJ )@@G@@ . ADDR OF RECORD BUFFER @B@@@@ LA,T1 A2,1,A2 JK )@@G@@ . @B@@@@ SA A2,CURREC . @ @@@@ E$JL )@@G@@DECV CURREC @^@@@@ E$CHAR '(' @B@@@@ E$OCTV JM )@@G@@ CURREC . @B@@@@ E$CHAR ')' . JN )@@G@@@B@@@@ E$COPY 6,MSGARE . @B@@@@ E$DECV JO )@@G@@ DESARE . @B@@@@ E$CHAR '(' . JP )@@G@@@B@@@@ E$OCTV DESARE . @B@@@@ E$CHAR JQ )@@G@@ ')' . @A@@@@ P$RINT (PF1 1,14,PRINT)@ @@@@JR )@@G@@ SLJ RER044 @]@@@@CLCMSG . @B@@@@ E$DIT JS )@@G@@ EDPKT . @B@@@@ E$COPY 44,MSGCLC . JT )@@G@@@F@@@@ LA A2,RECADD . ADDR OF RECORD BUFFER JU )@@G@@@B@@@@ LA,T1 A2,1,A2 . @A@@@@ SA JV )@@G@@ A2,CURREC . @B@@@@ E$DECV CURREC . @^@@@@JW )@@G@@ E$CHAR '(' @ @@@@ E$OCTV CURREC @^@@@@ JX )@@G@@ E$CHAR ')' @A@@@@ P$RINT (PF1 1,14,PRINT)@ @@@@ JY )@@G@@ SLJ RER045 @[@@@@/ @[@@@@ . @[@@@@ . @D@@@@ . ROUJZ )@@G@@TINE TO SEARCH Z2 TABLE RECORD ENTRY FOR AN @A@@@@ . AREA CODE WHICHKA )@@G@@ IS PASSED IN A1 @A@@@@ . REGISTERS USED ARE X1, X6 AND A0 @[@@@@ . KB )@@G@@@[@@@@ . @C@@@@FZ2AENT + 0 . $H @E@@@@KC )@@G@@ L X6,Z2ENT . $P ADDRESS OF Z2 ENTRY TO X6@E@@@@ KD )@@G@@ A,T2 X6,1,X6 . $P POINT TO AREA ENTRY @ @@@@ L KE )@@G@@ X1,X6 @^@@@@ AN,U X1,1@F@@@@ L,H2 KF )@@G@@ A0,0,X1 . $P # OF AREA ENTRIES IN Z2 TO A0 @D@@@@ AN,U KG )@@G@@ A0,1 . $P A0 WILL CONTROL @D@@@@RELLP2 TNE,T3 A1,0,X6 KH )@@G@@. $T AREA CODES EQUAL @C@@@@ J Z2AEX0 . $A YES,Z2AKI )@@G@@FND NO@G@@@@ A,S1 X6,0,X6 . $P POINT TO NEXT AREA ENTRY KJ )@@G@@IN Z2 @E@@@@ JGD A0,RELLP2 . $T ANY MORE AREA ENTRIKK )@@G@@ES @E@@@@ LA,U A0,1 . $P RETURN ERROR CODEKL )@@G@@@C@@@@Z2AEX J *FZ2AENT . $E EXIT @G@@@@Z2AEX0 SZKM )@@G@@ A0 . $P RETURN SUCCESSFULL ERROR CODE@C@@@@ KN )@@G@@ J Z2AEX . $J Z2AEX@[@@@@ . @[@@@@ . @[@@@@KO )@@G@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@. @C@@@@KP )@@G@@ . ROUTINE TO SEARCH A VARIABLE LENGTH TABLE. @G@@@@ . UPON ENTRY X10KQ )@@G@@ POINTS TO THE FIXED WORD IDENTIFYING THE TABLE. @E@@@@ . KR )@@G@@ THIS WORD HAS # OF WRDS IN TABLE IN H1 @F@@@@ . KS )@@G@@ STARTING ADDRESS OF TABLE IN H2 @G@@@@ . A1 KT )@@G@@ CONTAINS SEARCH KEY WHICH IS T1 OF 1ST WORD OF ENTRY @D@@@@ . UPON RETUKU )@@G@@RN A2 HAS RETURN CODE. 0= SUCCESSFUL @E@@@@ . KV )@@G@@ 1= ENTRY NOT FOUND @D@@@@ . KW )@@G@@ 2= TABLE EMPTY @D@@@@ . A0 WILL POINT TO ENTRY FOUKX )@@G@@ND IF ANY @[@@@@ . @C@@@@TABSE1 S,H2 X11,RET7 . $H TABSE1 KY )@@G@@ @E@@@@ TNZ,H1 0,X10 . $T ANY WORDS IN TABLE KZ )@@G@@@C@@@@ J TABN2 . $A NO,TABN2 YES @F@@@@ L,LA )@@G@@H2 A0,0,X10 . $P ADDRESS OF FIRST ENTRY TO A0 @E@@@@TALOP1 TNLB )@@G@@E,T1 A1,0,A0 . $T ARE RECORD CODES EQUAL @C@@@@ J LC )@@G@@ TABYES . $A YES,TABYES NO@E@@@@ TNZ,T3 0,A0 . $T ILD )@@G@@S THIS LAST ENTRY @C@@@@ J TABN1 . $A YES,TABLE )@@G@@N1 NO @E@@@@ A,T3 A0,0,A0 . $P POINT TO NEXT ENTRY LF )@@G@@@ @@@@ J TALOP1 @E@@@@TABN1 L,U A2,1 LG )@@G@@. $P ITEM NOT FOUND CODE @C@@@@ J TABEXT . $J TLH )@@G@@ABEXT @C@@@@TABN2 L,U A2,2 . $P TABLE EMPTY @C@@@@LI )@@G@@ J TABEXT . $J TABEXT @F@@@@TABYES L,U LJ )@@G@@ A2,0 . $P SET SUCCESSFUL RETURN CODE @B@@@@TABEXT J LK )@@G@@ *RET7 . $E EXIT @[@@@@ . @[@@@@ . @G@@@@ . SUBROUTINE WHICLL )@@G@@H DETERMINES IF THERE IS SPACE ON A CERTAIN PAGE @^@@@@ . TO STORE LM )@@G@@A RECORD @C@@@@ . UPON ENTRY A3 HAS RECORD LENGTH IN WORDS @B@@@@LN )@@G@@ . X9 POINTS TO DATA PAGE @E@@@@ . UPON RETURN A2 HAS RELO )@@G@@TURN CODE: 0=FOUND SPACE, 1=NO SPACE@A@@@@ . OTHER REGISTERS USED A1,A2LP )@@G@@, @ @@@@RSPACE S,H2 X11,RET6 @B@@@@ DS A0,SLQ )@@G@@AVER1+1 . @B@@@@ S X1,XSAVE1 . @B@@@@LR )@@G@@ S X2,XSAVE1+1 . @B@@@@ S X3,SLS )@@G@@AVER1 . @G@@@@ LMJ X11,PACKPG . PACK PAGLT )@@G@@E IF NOT ALREADY PACKED @A@@@@ DL A0,SAVER1+1 @B@@@@LU )@@G@@ L X1,XSAVE1 . @B@@@@ L X2,XLV )@@G@@SAVE1+1 . @B@@@@ L X3,SAVER1 . @E@@@@LW )@@G@@ L,H2 A1,2,X9 . $P # OF FREE WRDS TO A1 @C@@@@ LX )@@G@@ TNZ A1 . $T ANY FREE WRDS @C@@@@ J NOSPALY )@@G@@C . $A NO,NOSPAC YES @^@@@@ L,U A0,100@^@@@@ AN LZ )@@G@@ A0,A4 @E@@@@ L A4,A0 . COMPLEMENT OF PAGE FILL TMA )@@G@@O A4 @C@@@@ L,H1 A1,2,X9 . PAGE SIZE TO A1 @D@@@@ . IT MB )@@G@@WAS DECIDED NOT TO SUBTRACT ADDITIONAL # OF @B@@@@ . CALC CHAINS TO MC )@@G@@BE CONSISTENT WITH DMR @D@@@@ AN,U A1,10 . SUBTRACT PAGEMD )@@G@@ HEADER @A@@@@ MSI A1,A4 . @G@@@@ . ME )@@G@@ A4 HAS COMPLEMENT OF PERCENTAGE FILL FOR THAT PAGE @ @@@@ MF )@@G@@ DSL A1,36 . @G@@@@ DI,U A1,100 . $P AVAILABLMG )@@G@@E SPACE WITH FILL FAC TO A1 @E@@@@ TNZ A2 MH )@@G@@ . $ ROUND NUMBER UP @B@@@@ J $+2 . MI )@@G@@@B@@@@ AA,U A1,1 . @F@@@@ L,H2 MJ )@@G@@A0,2,X9 . NUMBER OF FREE WORDS ON PAGE TO A0 @E@@@@ AN MK )@@G@@A0,A1 . NUMBER OF NEW AVAILABLE @C@@@@ L A1,A0 ML )@@G@@ . TRANSFER TO A1 @C@@@@ TLE,U A1,1 . ANY AVAILABLMM )@@G@@E @C@@@@ J NOSPAC . NO SPACE ON PAGE @ @@@@ MN )@@G@@ DS A3,RSPSA2 @ @@@@ S A1,RSPSA1 @E@@@@ MO )@@G@@ LMJ X11,SLTFND . $W ANY AVAILABLE SLOT @ @@@@ DL MP )@@G@@ A3,RSPSA2 @ @@@@ L A1,RSPSA1 @F@@@@ TNMQ )@@G@@Z A2 . $T FOUND ANY SLOT TO USE @E@@@@ J MR )@@G@@ SPNGT1 . $A YES,SPNGT1 NO @F@@@@SPNSLT A,U MS )@@G@@ A3,1 . $P INCREMENT RECORD LNGTH BY SLOT @G@@@@SPNGT1 TLE MT )@@G@@ A1,A3 . $T REC LENGTH <= AVAILABLE @E@@@@ J MU )@@G@@ NOSPAC . $A YES,NOSPAC NO,RSCON1 @F@@@@RSCON1 L,U MV )@@G@@ A2,0 . $P SET SUCCESSFUL CONDITION CODE @B@@@@ J MW )@@G@@ RSPEXT . $J RSPEXT @E@@@@NOSPAC L,U A2,1 . $P SET CONDMX )@@G@@ CODE UNSUCCESSFUL@^@@@@RSPEXT J *RET6@[@@@@ . @G@@@@ . SUBMY )@@G@@ROUTINE WHICH ALLOCATES A SLOT ON A DATA PAGE AND ASSIGNS AN @E@@@@MZ )@@G@@ . APPROPRIATE RECORD NUMBER ASSOCIATED WITH THAT SLOT @B@@@@ . UPONA )@@G@@N ENTRY X9 POINTS TO THE DATA PAGE @E@@@@ . X8 POINTS TO THENB )@@G@@ FIRST SLOT ON THE DATA PAGE @[@@@@ . @E@@@@ . UPON EXIT A0 CONTAINNC )@@G@@S THE VALUE OF THE SLOT ALLOCATED @C@@@@ . A2 CONTAINS THE ND )@@G@@RETURN CODE; @D@@@@ . RET CODE=0 SLOT HAS BEEN RENE )@@G@@USED @E@@@@ . RET CODE=1 NEW SLOT HAS BEEN ASSIGNED NF )@@G@@@B@@@@ . A1 CONTAINS SLOT NUMBER @C@@@@ . A3 CNG )@@G@@ONTAINS RECORD NUMBER ASSIGNED@B@@@@ . X8 POINTS TO SLOT ASSINH )@@G@@GNED @ @@@@ . OTHER REGISTERS USED: X7 @[@@@@ . @C@@@@RNUSLT S,HNI )@@G@@2 X11,RET1 . $H RNUSLT @E@@@@ TNZ,H1 3,X9 NJ )@@G@@. $T ANY SLOTS ALLOCATED @C@@@@ J FIRSLT . $A NNK )@@G@@O,FIRSLT YES@A@@@@ L X8,FSLTVA . S @E@@@@ LMJNL )@@G@@ X11,SLTFND . $W FIND 1ST UNUSED SLOT @E@@@@ NM )@@G@@ . X8 WILL POINT TO SLOT FOUND @D@@@@ TNZ A2 NN )@@G@@ . $T ANY UNUSED SLOTS @C@@@@ J RNRUSE . $A YNO )@@G@@ES,RNRUSE NO@G@@@@ . X8 MUST POINT TO NENP )@@G@@XT HIGHER SLOT @E@@@@ L,U A2,1 . $P RETURN CODE, NQ )@@G@@NEW SLOT @G@@@@ . SEARCH FOR HIGHEST NR )@@G@@RECORD NUMBER @A@@@@RNUG06 L X7,FSLTVA . @G@@@@ NS )@@G@@ LXI,U X7,-1 . X7 WILL BE USED TO INDEX THROUGH SLOTS @F@@@@NT )@@G@@ SZ RNLARG . $P RESET LARGEST RECORD NUMBER @G@@@@NU )@@G@@ L,H1 A1,3,X9 . $P #OF SLOTS TO A1 FOR LOOP CONTROL NV )@@G@@@^@@@@ AN,U A1,1 @E@@@@RNULP1 L,H1 A3,0,*X7 . $P FIRNW )@@G@@ST HALF OF SLOT TO A3 @^@@@@ LSSL A3,24@F@@@@ SSLNX )@@G@@ A3,24 . $P POSITION RECORD # CORRECTLY @G@@@@ TG NY )@@G@@ A3,RNLARG . $T LARGEST NUMBER LARGER THAN REC # FOUND@C@@@@ NZ )@@G@@ J RNG01 . $A NO,RNG01 YES @C@@@@RNG02 JGD A1,RNOA )@@G@@ULP1 . $P CONTINUE @E@@@@ TZ,S1 0,X9 . $T REC NUM OB )@@G@@SEARCH SWITCH SET @G@@@@ J RNG04 . $A YES,RNG04 NO OC )@@G@@ NO LOWER REC # @E@@@@ L,H1 A1,3,X9 . $P # OF SLOOD )@@G@@TS ALLOCATED TO A1@G@@@@ TLE A1,RNLARG . $T # OF SLOTS ALLOE )@@G@@OCATED LESS OR EQUAL ; @E@@@@ . $ TO LARGESOF )@@G@@T RECORD NUMBER @C@@@@ J RNG06 . $A NO,RNG06 YES OG )@@G@@@G@@@@ J RNG04 . $J RNG04 NO SEARCH FOR LOWER REC OH )@@G@@# @E@@@@RNG06 L A3,RNLARG . $P GET LARGEST RECORD NUMBER OI )@@G@@@F@@@@ AN,U A1,1 . A1 WILL ASSURE AGAINST INF SEARCH OJ )@@G@@@E@@@@RNULP2 AN,U A3,1 . $P GET LOWER REC # TO A3 @C@@@@OK )@@G@@ S A1,RNUSA1 . SAVE LOOP CONTROL@D@@@@ TNE,U OL )@@G@@ A3,1 . $T RECORD # EQUAL 1 @C@@@@ J RNG03 .OM )@@G@@ $A YES,RNG03 NO @G@@@@RNG05 LMJ X11,RECDUP . $W RECDUP SEARCH ON )@@G@@FOR DUPLICATE REC # @A@@@@ . L$SNAP 'RECDUP',6,12,RET1 @D@@@@OO )@@G@@ TZ A2 . $T FOUND DUPLICATE @G@@@@ J OP )@@G@@ RNFND1 . $A NO,RNFND1 YES HAVE PROPER REC # @D@@@@ OQ )@@G@@ L A1,RNUSA1 . RESTORE LOOP CONTROL @G@@@@ JGD OR )@@G@@ A1,RNULP2 . $J RNULP2 CHECK FOR INF LOOP BEFORE @ @@@@ SLJOS )@@G@@ RER047 @G@@@@RNG01 S A3,RNLARG . $P REPLACE LARGESOT )@@G@@T RECORD NUM BY NEW @B@@@@ J RNG02 . $J RNG02 OU )@@G@@@^@@@@RNG03 L,U A0,1 @G@@@@ S,S1 A0,0,X9 . $P SEOV )@@G@@T SWITCH TO INDICATE NO SEARCH @E@@@@ J RNG05 .OW )@@G@@ $J RNG05 FIND ANY DUPLICATE @ @@@@RNG04 L A3,RNLARG @E@@@@OX )@@G@@ A,U A3,1 . $P INCREMENT RECORD NUMBER @ @@@@ OY )@@G@@ S A3,RNLARG @B@@@@ J RNFND1 . $J RNFND1 OZ )@@G@@@F@@@@RNRUSE L,U A2,0 . $P RET CODE = SLOT BEEN REUSED PA )@@G@@@F@@@@ L,H1 A3,0,X8 . $P GET FIRST HALF OF SLOT TO A3 PB )@@G@@@E@@@@ LSSL A3,24 . $P GET RID OF EXTRA BITS @E@@@@PC )@@G@@ SSL A3,24 . $P POSITION RECORD # PROPERLY@F@@@@ PD )@@G@@ TNZ A3 . $T DOES SLOT HAVE RECORD NUMBER @C@@@@ PE )@@G@@ J RNUG06 . $A NO,RNUG06 YES @F@@@@ J RNFNDPF )@@G@@1 . $J RNFND1 RECORD # FOUND IN SLOT @ @@@@FIRSLT . NO SLOTS ASSIPG )@@G@@GNED @G@@@@ L,U A2,1 . $P INDICATE NEW SLOT HAS BEEN APH )@@G@@SSIGNED @G@@@@ L,U A3,1 . $P ASSIGN RECORD NUMBER 1PI )@@G@@ SINCE PAGE EMPT @G@@@@ . SLOT ASSIGNED IS FIRST ONE POINTED TOPJ )@@G@@ BY X8 AT THIS TIME @E@@@@ S,S1 A3,0,X9 . $P SET NO SEAPK )@@G@@RCH SWITCH ON PAGE@B@@@@ J RNFND1 . $J RNFND1 @E@@@@PL )@@G@@RNFND1 TG,U A3,1 . $T RECORD NUMBER POSITIVE @C@@@@ PM )@@G@@ J RNUEXT . $A NO,RNUEXT YES @B@@@@ SLJ RER04PN )@@G@@8 . $P ERROR @B@@@@RNUEXT . STANDARD EXIT FROM PROGRAM @E@@@@PO )@@G@@ L A0,0,X8 . $P SLOT VALUE TO A0 FOR CHECK@A@@@@ PP )@@G@@ LXI,U X8,0 @A@@@@ L A1,FSLTVA . PQ )@@G@@@A@@@@ LXI,U A1,0 @^@@@@ A,U A1,1 PR )@@G@@@D@@@@ AN A1,X8 . $P SLOT NUMBER TO A1 @E@@@@ PS )@@G@@ A,H1 A1,6,X9 . ADD NUMBER OF ADDITIONAL CALC @B@@@@ J PT )@@G@@ *RET1 . $E RETURN @[@@@@ . @F@@@@ . SUBROUTINE WHICH SCANPU )@@G@@S THE ALLOCATED SLOTS ON A DATA PAGE AND @C@@@@ . DETERMINES IF THERE IPV )@@G@@S AN UNUSED SLOT. @C@@@@ . UPON ENTRY X9 POINTS TO THE DATA PAGE PW )@@G@@ @D@@@@ . X8 POINTS TO FIRST SLOT ON THE PAGE @[@@@@PX )@@G@@ . @F@@@@ . UPON RETURN A2 HAS RETURN CODE; O=SUCCESSFUL, 1=UNSUCCESSPY )@@G@@FUL @C@@@@ . A3 HAS SLOT VALUE IF FOUND @[@@@@ . PZ )@@G@@@B@@@@ . X8 POINTS TO SLOT FOUND @^@@@@ . OTHER REGISTERSQA )@@G@@ USED:@[@@@@ . @B@@@@SLTFND S,H2 X11,RET2 . $H SLTFND @E@@@@QB )@@G@@ TZ,S2 0,X9 . $T PAGE SEARCHED BEFORE @C@@@@ QC )@@G@@ J SLNFND . $A YES,SLNFND NO @E@@@@ LXI,U X8,-1QD )@@G@@ . $P X8 TO INDEX THROUGH SLOTS @E@@@@ L,H1 A1,3,X9 .QE )@@G@@ $P # OF SLOTS ALLOCATED TO A1@E@@@@ TNZ A1 . $T ANQF )@@G@@Y SLOTS ALLOCATED @C@@@@ J SLTEND . $A NO,SLTENQG )@@G@@D YES @E@@@@ AN,U A1,1 . $P A1 WILL CONTROL LOOP QH )@@G@@@D@@@@SLLOOP L A3,0,*X8 . $P SLOT VALUE TO A3 @G@@@@ QI )@@G@@ AND A3,SIUMSK . $P MASK SLOT DESCRIPTION TO SEE IF IN USE@C@@@@QJ )@@G@@ TZ A4 . $T SLOT IN USE @C@@@@ J QK )@@G@@ SLTYES . $A NO,SLTYES YES @G@@@@ JGD A1,SLLOOP . $P DEQL )@@G@@CREMENT LOOP CNT AND CHECK FOR ZERO @B@@@@ . .QM )@@G@@ $J SLLOOP @E@@@@SLTEND L,U A2,1 . $P NO UNUSED SLOT FOUNDQN )@@G@@ @G@@@@ S,S2 A0,0,X9 . $P MARK 2ND SIXTH OF CHECKSUMQO )@@G@@ FOR LATER @B@@@@ J SLTEXT . $J SLTEXT @C@@@@SLNFNDQP )@@G@@ L,U A2,1 . $P NO SLOT FOUND @E@@@@ L X8,FSQQ )@@G@@LTVA . $P GET NEXT SLOT ASSIGNED @ @@@@ AN,H1 X8,3,X9 QR )@@G@@@B@@@@ J SLTEXT . $J SLTEXT @D@@@@SLTYES L,U QS )@@G@@ A2,0 . $P UNUSED SLOT FOUND @E@@@@ A,U X8,1 .QT )@@G@@ $P X8 POINTS TO SLOT FOUND @B@@@@SLTEXT J *RET2 . $E EXQU )@@G@@IT @[@@@@ . @G@@@@ . SUBROUTINE WHICH CHECKS IF A RECORD CODE IS DQV )@@G@@UPLICATED IN A SLOT @^@@@@ . ON A DATA PAGE @B@@@@ . UPON ENTRQW )@@G@@Y X9 POINTS TO DATA PAGE @C@@@@ . X8 POINTS TO FIRST SLQX )@@G@@OT ON PAGE @D@@@@ . A3 HAS RECORD NUMBER TO BE CHECKED QY )@@G@@@[@@@@ . @F@@@@ . UPON RETURN A2 HAS RETURN CODE; 0=SUCCESSFUL, 1=UNSQZ )@@G@@UCCESSFUL @[@@@@ . @B@@@@RECDUP S,H2 X11,RET3 . $H DUPNUM RA )@@G@@@E@@@@ L X8,FSLTVA . POINT TO FIRST SLOT @G@@@@RB )@@G@@ LXI,U X8,-1 . $P X8 WILL INDEX AUTOMATICALLY (SLOTS) RC )@@G@@@E@@@@ L,H1 A1,3,X9 . $P # OF SLOTS ALLOCATED TO A1@E@@@@RD )@@G@@ TNZ A1 . $T ANY SLOTS ALLOCATED @C@@@@ RE )@@G@@ J ERR . $A NO,ERR YES @E@@@@ AN,U A1,1 RF )@@G@@ . $P A1 WILL CONTROL THE LOOP @E@@@@DUPLOP L,H1 A0,0,*X8 .RG )@@G@@ $P FIRST HALF OF SLOT TO A0 @^@@@@ LSSL A0,24@F@@@@ RH )@@G@@ SSL A0,24 . $P POSITION RECORD NUMBER PROPERLY @E@@@@ RI )@@G@@ TNE A3,A0 . $T RECORD NUMBERS EQUAL @C@@@@ J RJ )@@G@@ DUPFND . $A YES,DUPFND NO @D@@@@ JGD A1,DUPLOP .RK )@@G@@ $P DECREMENT LOOP CNT @D@@@@ L,U A2,1 . $T EXHAUSTERL )@@G@@D SLOTS @E@@@@ J DUPEXT . $A NO,DUPLOP YES DUPEXTRM )@@G@@ @E@@@@DUPFND L,U A2,0 . $P SET SUCCESSFUL RETURN CODERN )@@G@@@B@@@@DUPEXT J *RET3 . $E EXIT @B@@@@ERR SLJ RO )@@G@@ RER049 . $W ERR @[@@@@ . @G@@@@ . SUBROUTINE WHICH STORES A RRP )@@G@@ECORD ON A DATA PAGE. IT ASSUMES ENOUGH @A@@@@ . SPACE IS AVAILABLE FORQ )@@G@@R RECORD @F@@@@ . UPON ENTRY A1 HAS RECORD LENGTH IN WORDS INCLUDINGRR )@@G@@ HEADER @G@@@@ . A2 HAS FLAG WHETHER A SLOT HAS BEEN REURS )@@G@@SED (0) OR NEW @C@@@@ . A3 HAS NEW RECORD NUMBER ASSIGND RT )@@G@@@E@@@@ . X1 POINTS TO RECORD LOCATION BEFORE STORING @F@@@@RU )@@G@@ . X8 POINTS TO SLOT THAT HAS BEEN ALLOCATED ON PAGE @B@@@@RV )@@G@@ . X9 POINTS TO DATA PAGE @[@@@@ . @A@@@@ . OTHER REGRW )@@G@@ISTERS USED A4,X2,X3 @[@@@@ . @B@@@@RSTORE S,H2 X11,RET4 .RX )@@G@@ $H RSTORE @E@@@@ L,H2 A4,2,X9 . $P # OF FREE WRDS TO A4RY )@@G@@ @G@@@@ TNZ A2 . $T IS SLOT NEWLY ASSIGNED OR RZ )@@G@@REUSED @D@@@@ J RSTG01 . $A REUSED,RSTG01 NEW SA )@@G@@@E@@@@ L,H1 A0,3,X9 . $P TOTAL # OF SLOTS TO A0 @G@@@@SB )@@G@@ A,U A0,1 . $P UPDATE TOTAL # OF SLOTS ON PAGE SC )@@G@@@F@@@@ S,H1 A0,3,X9 . $P STORE BACK TOTAL # OF SLOTS SD )@@G@@@E@@@@ AN,U A4,1 . $P DECREMENT # OF FREE WORDS @E@@@@SE )@@G@@RSTG01 S,H1 A3,0,X8 . $P RECORD # TO H1 OF SLOT @G@@@@ SF )@@G@@ L,H2 X3,3,X9 . $P RELATIVE LOCATION OF RECORD ON PAGE @F@@@@SG )@@G@@ S,H2 X3,0,X8 . $P STORE RELATIVE LOCATION IN SLOT @A@@@@SH )@@G@@ L X2,X3 . @G@@@@ A X2,X9 .SI )@@G@@ $P X2 POINTS TO NEW RECORD LOCATION @E@@@@ L R1,A1SJ )@@G@@ . PREPARE TO TRANSFER RECORD @F@@@@ LMJ X11,PTRANS .SK )@@G@@ $W TRANSFER ENTIRE RECORD TO PAGE @^@@@@ L,U A0,1 @G@@@@SL )@@G@@ S,S3 A0,0,X9 . $P MARK CHECKSUM (PAGE WRITTEN ONTO) SM )@@G@@@E@@@@ AN A4,A1 . $P UPDATE # OF FREE WORDS @F@@@@SN )@@G@@ TNZ A4 . $T # OF FREE WRDS ZERO @D@@@@SO )@@G@@ J RSTGT1 . $J RSTGT1 @G@@@@ S,HSP )@@G@@2 A4,2,X9 . $P STORE NEW # OF FREE WRDS ON PAGE @E@@@@ SQ )@@G@@ A X3,A1 . $P UPDATE RELATIVE POINTER @E@@@@ S,HSR )@@G@@2 X3,3,X9 . $P STORE NEW FREE POINTER @G@@@@ A SS )@@G@@ X3,X9 . $P POINT TO FIRST WRD OF FREE SPACE @E@@@@ S ST )@@G@@ A4,0,X3 . $P STORE NEW # OF FREE WRDS @^@@@@ J SU )@@G@@ *RET4@]@@@@RSTGT1 . @G@@@@ SZ,H2 2,X9 . $PSV )@@G@@ ZERO NUMBER OF FREE WRDS @E@@@@ SZ,H2 3,X9 SW )@@G@@ . $P ZERO RELATIVE PTR@C@@@@ J *RET4 . $ESX )@@G@@ EXIT @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @D@@@@ . SUBROUTINSY )@@G@@E TO FIND NEXT CALC POINTER IN A CHAIN @G@@@@ . UPON ENTRY A3 HAS SLOSZ )@@G@@T NUMBER FOR RECORD POINTED TO; SLOT IS ON SAME @G@@@@ . PTA )@@G@@AGE WHOSE ADDRESS IS IN LOCATION CURADD AND PAGE NUMBR@A@@@@ . TB )@@G@@ IS IN CURPGE. @[@@@@ . @[@@@@ . @F@@@@ . UPON RETURN A0 TC )@@G@@CONTAINS THE VALUE OF THE NEXT CALC POINTER @G@@@@ . FORTD )@@G@@RSW IS NON ZERO IF THE RECORD POINTED TO IS FOREIGN @G@@@@ . TE )@@G@@ FORPGE CONTAINS NUMBER OF PAGE WHERE FOREIGN REC RESIDES @E@@@@ . TF )@@G@@ IF ANY [CASE WHEN FORRSW IS NON ZERO] @F@@@@ . TG )@@G@@ FORREC CONTAINS THE FOREIGN RECORD NUMBER IF ANY @[@@@@ . @C@@@@TH )@@G@@ . LSRADD CONTAINS REC ADDRESS @G@@@@ . LSRTI )@@G@@REL CONTAINS RELATIVE LOCATION OF CALC POINTER WITHIN @ @@@@ . TJ )@@G@@ RECORD @E@@@@ . CLCSLT CONTAINS CALC RECORD SLOT TK )@@G@@NUMBER @[@@@@ . @^@@@@FNXTCL + 0 @F@@@@ SZTL )@@G@@ FORRSW . $P ZERO FOREIGN RECORD SWITCH @E@@@@ L TM )@@G@@ X9,CURADD . $P PAGE ADDRESS TO X9 @E@@@@ L TN )@@G@@ X8,X9 . $P PAGE ADDRESS TO X8 @F@@@@ A,H1 X8,2TO )@@G@@,X9 . $P POINT PAST THE PAGE BY X8 @G@@@@ AN X8,ATP )@@G@@3 . $P POINT TO SLOT GIVEN BY POINTER BY X8@G@@@@ L TQ )@@G@@ A1,0,X8 . $P VALUE OF SLOT POINTED TO TO A1 @G@@@@ ANTR )@@G@@D A1,SIUMSK . $P MASK SLOT DESCRIPTION TO SEE IF USED@C@@@@ TS )@@G@@ TZ A2 . $T SLOT USED @C@@@@ SLJ RER0TT )@@G@@50 . $A NO,EXIT YES @G@@@@ AND A1,SHPMSK . $P MASK STU )@@G@@LOT DESCRIPTION TO SEE IF; @G@@@@ . $ TV )@@G@@SECOND HALF OF SLOT IS PAGE # @F@@@@ TZ A2 TW )@@G@@ . $T SLOT SECOND HALF IS PAGE # @D@@@@ J ROAPGE TX )@@G@@ . $A YES,ROAPGE NO @ @@@@ . RECORD IS ON THIS PAGE @E@@@@ TY )@@G@@ L X7,X9 . $P X7 POINTS TO TOP OF PAGE@F@@@@ A,TZ )@@G@@H2 X7,0,X8 . $P X7 POINTS TO RECORD ON PAGE @D@@@@ L,UA )@@G@@T1 A1,0,X7 . $P RECORD CODE TO A1 @G@@@@ SLJ CLPFUB )@@G@@ND . $W CLPFND GET RELATIVE LOCATION OF CALC @E@@@@ TZ UC )@@G@@ A2 . X1 WILL CONTAIN RELATIVE @A@@@@ SLJ RER0UD )@@G@@51 . @A@@@@ L A0,CURPGE @E@@@@ S UE )@@G@@ A0,LSTPGE . $P SAVE PAGE FOR LATER @E@@@@ S UF )@@G@@ X7,LSRADD . $P SAVE RECORD ADDRESS @G@@@@ S X1,LUG )@@G@@SRREL . $P SAVE CALC PTR REL LOC IN RECORD @E@@@@ L UH )@@G@@ A0,CLCSLT . $P SAVE CALC RECORD SLOT @E@@@@ S A0,LUI )@@G@@SRSLT . $P SAVE CALC RECORD SLOT @E@@@@ A X7,X1 UJ )@@G@@. $P X7 POINTS TO CALC PTR @D@@@@ L A0,0,X7 . $P CUK )@@G@@ALC PTR TO A0 @F@@@@ S A0,CLNXTP . $P SAVE CALC POIUL )@@G@@NTER IN CLSAVP @G@@@@ J *FNXTCL . $J CCHNE1 SEE IFUM )@@G@@ WE POINT TO ANOTHER PGE@G@@@@ROAPGE . RECORD HAS BEEN DISCOVERED TO BE UN )@@G@@ON A FOREIGN PAGE IN THE @C@@@@ . PROCESS OF SCANNING THE CALUO )@@G@@C CHAIN @A@@@@ . X8 POINTS TO SLOT OF RECORD@E@@@@ S,UP )@@G@@H2 A1,FORPGE . $P SAVE FOREIGN PAGE NUMBER @E@@@@ L UQ )@@G@@ A0,CLCSLT . $P SLOTBCONSIDERED TO A0 @G@@@@ S A0,LUR )@@G@@SRSLT . $P SAVE SLOT CONSIDERED IN LSRSLT @^@@@@ LSSL US )@@G@@ A1,6@ @@@@ SSL A1,24 @F@@@@ S,H2 A1,FUT )@@G@@ORREC . $P SAVE FOREIGN RECORD NUMBER @C@@@@ L,H2 A7,0UU )@@G@@,X8 . $P PAGE # TO A7 @D@@@@ L A8,CURARE . $P AREA COUV )@@G@@DE TO A8 @[@@@@ . @B@@@@ . CHECK IF PAGE IS ALREADY IN BUFFER UW )@@G@@@[@@@@ . @G@@@@ L A15,BUFENT . $P # OF ENTRIES IN BUUX )@@G@@FFER TO A15 @G@@@@ AN,U A15,1 . $P A15 WILL CONUY )@@G@@TROL LOOP FOR BLOCKS @G@@@@ L X4,BFIADD . $P ADDRESUZ )@@G@@S OF BUFFER TABLE TO X4 @D@@@@CLFLP1 TNE,T1 A8,0,X4 . $T VA )@@G@@AREA CODES EQUAL @D@@@@ J CLAEQU . $A YES,CLAEQU NVB )@@G@@O @^@@@@CLFLP2 A,U X4,2@G@@@@ JGD A15,CLFLP1VC )@@G@@ . $T ARE WE DONE WITH ALL ENTRIES IN BUF @D@@@@ VD )@@G@@ . $A NO,CLFLP1 YES @ @@@@ J CLNIBF @G@@@@VE )@@G@@CLAEQU . AREA CODES EQUAL, CHECK IF PAGE IS IN PROPER RANGE IN BUFFER VF )@@G@@@^@@@@ . PAGE # IN A7 @G@@@@ TLE,H1 A7,1,X4 . $T VG )@@G@@IS LOWER LIMIT LESS OR EQUAL PAGE # @G@@@@ J CLFLP2 VH )@@G@@ . $A NO,CLFLP2 YES CHECK OTHER RANGE @E@@@@ L,H2 A10,VI )@@G@@1,X4 . $P HIGHER LIMIT TO A10 @G@@@@ TG A10,A7 VJ )@@G@@ . $T IS PAGE # GREATER THAN UPPER LIMIT @G@@@@ J CLPGVK )@@G@@FD . $J CLPGND YES PAGE REQUIRED IS IN @G@@@@ J VL )@@G@@ CLFLP2 . $J CLFLP2 NO GO LOOK AT OTHER BLOCKS @[@@@@ . @G@@@@VM )@@G@@CLPGFD . PAGE OF FOREIGN RECORD FOUND IN BUFFER, GET ADDRESS OF PGE TOX7VN )@@G@@@C@@@@ L A0,A7 . $P PAGE # TO A0@G@@@@ ANVO )@@G@@,H1 A0,1,X4 . $P SUBTRACT FIRST PAGE # IN BLOCK @E@@@@ VP )@@G@@ L,H2 A1,0,X4 . $P ADDRESS OF BLOCK TO A1 @F@@@@ MSVQ )@@G@@I,H1 A0,2,A1 . MULTIPLY BY PAGE SIZE @E@@@@ A VR )@@G@@ A1,A0 . $P PAGE ADDRESS TO A7 @A@@@@ L VS )@@G@@ X7,A1 . @C@@@@ J CLCGT1 . $J CLCGT1 VT )@@G@@@A@@@@ . READ PAGE WHERE FOREIGN RECORD IS@]@@@@CLNIBF . @G@@@@ VU )@@G@@ L A0,NEWC3A . $P ADDRESS OF C3 AREA ENTRY TO A0 @E@@@@VV )@@G@@ DL A1,1,A0 . $P AREA NAME TO A1,A2 @E@@@@ VW )@@G@@ L A3,020 . $P FUNCTION CODE TO A3 @F@@@@ L,VX )@@G@@U X10,DBPPKT . $P ADDRESS OF PACKET TO X10 @G@@@@ S,VY )@@G@@S2 A3,3,X10 . $P FUNCTION CODE TO PACKET (READ) @E@@@@ VZ )@@G@@ DS A1,DBPPKT . $P AREA NAME TO PACKET @E@@@@ L,WA )@@G@@U A4,1 . $P PAGE COUNT 1 TO A4 @E@@@@ S,H1 WB )@@G@@ A4,7,X10 . $P PAGE COUNT 1 TO PACKET @B@@@@ LA,T1 A5,3WC )@@G@@,A0 . @E@@@@ S,H1 A5,8,X10 . $P BUFFER LENGTWD )@@G@@H TO PACKET @E@@@@ LA A3,FORBFAD . $P BUFFER ADDRESS TO WE )@@G@@A3 @B@@@@ JNZ A3,$+2 . @B@@@@ SLWF )@@G@@J FORMCORE . @E@@@@ S,H2 A3,7,X10 . $P WG )@@G@@BUFFER ADDRESS TO PACKET@E@@@@ S,H2 A7,8,X10 . $P PAGE NWH )@@G@@UMBER TO PACKET @H@@@@ LMJ X11,DB$AM . $W DB$AM ISSUE WI )@@G@@THE READ FOR FOREIGN PAGE @E@@@@ TZ,S1 DBPPKT+3 . $T WJ )@@G@@SUCCESSFUL IN THE READ @D@@@@ J BRSTAT . $A NO,BRSWK )@@G@@TAT YES @[@@@@ . @G@@@@ . PAGE HAS BEEN READ INTO FOREIGN BUF PROWL )@@G@@CEED TO FIND RECORD ON PAGE @A@@@@ L X7,FORBFAD WM )@@G@@@[@@@@ . @G@@@@CLCGT1 . FOR PAGE ADDRESS IN X7, SEA CH FOR RECO D+WN )@@G@@CODE WHICH CAN BE @G@@@@ . FOUND IN LOCATION FORREC. X6 WILL BE USEWO )@@G@@D TO INDEX THROUGH SLOTS@E@@@@ L X6,X7 . $P PAGE AWP )@@G@@DDRESS TO X6 @E@@@@ A,H1 X6,2,X7 . $P X6 POINTS PAWQ )@@G@@ST THE PAGE @G@@@@ AN,U X6,1 . $P X6 POINTS TO LAST WR )@@G@@WORD IN PAGE @G@@@@ AN,H1 X6,6,X7 . $P X6 POINTS TOWS )@@G@@ FIRST SLOT IN PAGE @G@@@@ . $P X6 WILWT )@@G@@L BE USED TO INDEX THROUGH SLT@F@@@@ L,H1 A15,3,X7 . $P WU )@@G@@# OF SLOTS ALLOCATED TO A15 @E@@@@ TNZ A15 . $T WV )@@G@@ANY SLOTS ALLOCATED @C@@@@ SLJ RER052 . $A NO,EXIWW )@@G@@T YES @E@@@@ AN,U A15,1 . $P A15 WILL CONTROL LOOP WX )@@G@@@[@@@@ . @]@@@@CFRLP1 . @D@@@@ L A3,0,X6 . $P WY )@@G@@SLOT VALUE TO A3 @G@@@@ AND A3,SIUMSK . $P MASK SLOT DEWZ )@@G@@SCRIPTION TO SEE IF USED@C@@@@ TNZ A4 . $T SLOT IXA )@@G@@N USE @D@@@@ J CLSLIU . $A YES,CLSLIU NO @E@@@@XB )@@G@@CFRLP2 AN,U X6,1 . $P POINT TO NEXT SLOT @D@@@@ XC )@@G@@ JGD A15,CFRLP1 . $T ANY MORE SLOTS @E@@@@ SLJ XD )@@G@@ RER053 . $A YES,CFRLP1 NO,EXIT ERROR@C@@@@CLSLIU . SLOT FOUND SEARXE )@@G@@CHING FOR FOREIGN RECORD@G@@@@ . CHECK IF SLOT BELONGS TO FOREIGN XF )@@G@@RECORD, SLOT POINTED TO BY X6 @E@@@@ . FIRST FIND OUT IF RECORD NUXG )@@G@@MBERS ARE THE SAME @D@@@@ L A0,0,X6 . $P SLOT VXH )@@G@@ALUE TO A0 @D@@@@ AND A0,RFPMSK . $T IS RECORD FOREIGN XI )@@G@@@C@@@@ TNZ A1 . $A NO,CLCGT2 YES@A@@@@ J XJ )@@G@@ CLCGT2 . $ @A@@@@CLCGT2 LSSL A0,6 . @G@@@@XK )@@G@@ SSL A0,24 . $P RECORD # POSITIONED IN LOWER HALF A0XL )@@G@@@G@@@@ TE A0,FORREC . $T IS RECORD CODE SAME AS FOREIGNXM )@@G@@ REC @D@@@@ J CFRLP2 . $A NO,CFRLP2 YES @E@@@@XN )@@G@@ L X2,X7 . $P PAGE ADDRESS TO X2 @F@@@@ XO )@@G@@ A,H2 X2,0,X6 . $P X2 POINTS TO FOREIGN RECORD @E@@@@ XP )@@G@@ L A0,0,X2 . $P RECORD HEADER TO A0 @G@@@@ ANXQ )@@G@@D A0,PPTMSK . $P MASK TO SEE IF PRIME PAGE SYSTEM PTR@F@@@@ XR )@@G@@ TNZ A1 . $ IS THERE A FOREIGN POINTER @A@@@@ XS )@@G@@ SLJ RER054 . @ @@@@ L X3,X2 @ @@@@XT )@@G@@ A,T3 X3,0,X2 @G@@@@ AN,U X3,1 . $P XU )@@G@@X3 POINTS TO PRIME PAGE POINTER @E@@@@ L A0,0,X3 XV )@@G@@. $P PRIME PAGE POINTER TO A0 @G@@@@ TE A0,CLNXTP . $T DXW )@@G@@OES IT POINT BACK TO PRIMARY PGE SLT@G@@@@ J CFRLP2 XX )@@G@@. $A NO,CFRLP2 YES FOUND FOREIGN RECORD @[@@@@ . @E@@@@ . FOUND FOXY )@@G@@REIGN RECORD ON PAGE, X2 POINTS TO RECORD @D@@@@ L,T1 XZ )@@G@@ A1,0,X2 . $P RECORD CODE TO A1 @E@@@@ L X4,X2 YA )@@G@@. SAVE POINTER TO RECORD @G@@@@ SLJ CLPFND . $W CYB )@@G@@LPFND FIND CALC POINTER,(X1 REL) @^@@@@ TNZ A2 @ @@@@YC )@@G@@ SLJ RER055 @F@@@@ S X1,LSRREL . $P YD )@@G@@SAVE REL LOCATION WITHIN REC @A@@@@ L A0,FORBFAD YE )@@G@@@E@@@@ A,H1 A0,2,A0 . $ POINT PAST LAST WRD @A@@@@YF )@@G@@ AN A0,X6 . @A@@@@ S A0,FORSLT YG )@@G@@ @^@@@@ L,U A0,1@G@@@@ S A0,FORRSW YH )@@G@@. $P SET FOREIGN RECORD OCCURRENCE SWITCH @E@@@@ A X4,XYI )@@G@@1 . $P X4 POINTS TO CALC PTR @E@@@@ L A0,0,X4 YJ )@@G@@. $P CALC POINTER TO A0 @F@@@@ S A0,CLNXTP . $P SYK )@@G@@AVE CALC POINTER IN CLSAVP @ @@@@ J *FNXTCL @[@@@@YL )@@G@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @H@@@@YM )@@G@@ . ROUTINE WHICH SEARCHES TABLE C6 FOR ENTRY CORRESPONDING TO CALC RECORYN )@@G@@D @A@@@@ . THE RECORD CODE IS IN REGISTER A1@C@@@@ . UPON RETURN A2 YO )@@G@@HAS RETURN CODE 0(SUCCESSFUL) @G@@@@ . X1 HAS RELATIVE LOCATYP )@@G@@ION OF CALC POINTER WITHIN RECORD @[@@@@ . @C@@@@CLPFND . YQ )@@G@@ . $H CLPFND @^@@@@ + 0 @F@@@@ YR )@@G@@ L,H1 R1,C6 . $P # OF ENTRIES FROM C6 TO R1 @F@@@@ YS )@@G@@ L X2,(1,0) . $P X2 WILL BE INDEX TO C6 TABLE @F@@@@ YT )@@G@@ LXM,H2 X2,C6 . $P X2 POINTS TO C6 TBL @E@@@@ YU )@@G@@ SE,T1 A1,0,*X2 . $T SEARCH TABLE FOR AREA CODE@C@@@@ J YV )@@G@@ ACNFND . $A NO,ACNFND YES@G@@@@ AN,U X2,1 YW )@@G@@. $P FOUND A MATCH, BACK UP INDEX REGISTER@F@@@@ SZ A2 YX )@@G@@ . $P CONDITION CODE SET TO ZERO @G@@@@ L,T3 X1,0YY )@@G@@,X2 . $P DISP OF FRST DATA WRD TO X1 @G@@@@ AN,U YZ )@@G@@ X1,1 . $P X1 POINTS TO FRST CALC PTR @C@@@@ J ZA )@@G@@ CLPEXT . $J CLPEXT @E@@@@ACNFND L,U A2,1 ZB )@@G@@. $P SET CONDITION CODE TO 1 @B@@@@CLPEXT J *CLPFND . $E EZC )@@G@@XIT @[@@@@ . @[@@@@ . @G@@@@ . SUBROUTINE TO INSERT AN ENTRY IN ZD )@@G@@TABLE CURANG FOR THE PURPOSE OF @G@@@@ . BUILDING C4 TABLE. THE ENTRZE )@@G@@Y CONSISTS OF A RANGE OF OVERFLOW PAGES @G@@@@ . WHEN CALLED, THE PAGEZF )@@G@@ NUMBER IS IN CURPGE AND THE AREA CODE IN ARECUR@[@@@@ . @C@@@@C4INSTZG )@@G@@ + 0 . $H+C4INST @C@@@@ L A7,CZH )@@G@@URPGE . $P PAGE # TO A7 @D@@@@ L A8,CURARE . $P AREA COZI )@@G@@DE TO A8 @F@@@@ SLJ CHKPGE . $W CHKPGE SEE WHAT TYPZJ )@@G@@E OF PAGE @F@@@@ TNE,U A2,2 . $T PAGE IS INTERSPERSEZK )@@G@@D OVERFLOW @C@@@@ J C4IOVF . $A YES,C4IOVF NO@E@@@@ZL )@@G@@ TNE,U A2,3 . $T PAGE IS GLOBAL OVERFLOW @C@@@@ ZM )@@G@@ J C4GOVF . $A YES,C4GOVF NO@B@@@@ LA,U A0,DZN )@@G@@MSLEV5 . @B@@@@ JNZ A0,$+2 . @ @@@@ZO )@@G@@ SLJ RER056 @I@@@@ TE,U A2,1 ZP )@@G@@ . CAN ALLOW DATA PAGE IF LEVEL 5 SW IS SET @B@@@@ SLJ ZQ )@@G@@ RER056 . @D@@@@ J C4REXT . $JZR )@@G@@ C4REXT @E@@@@ . CHKPGE WILL RETURN SUM IN A5, X8 POINTING TO C3 ENTZS )@@G@@RY @]@@@@C4IOVF . @D@@@@ L A6,A5 . $P UPPER RZT )@@G@@ANGE TO A6 @G@@@@ AN,H1 A5,5,X8 . $P SUBTRACT INTERSPERSZU )@@G@@ED OVERFLOW @F@@@@ A,U A5,1 . $+ A5 WILL CONTAZV )@@G@@IN LOWER RANGE @C@@@@ J C4RSRC . $J C4RSRC ZW )@@G@@@C@@@@ . CHKPGE WILL RETURN TOTAL PGES IN A3, M IN A4 @F@@@@C4GOVF L ZX )@@G@@ A6,A3 . $P TOTAL PAGES ALLOCATED TO A3 @G@@@@ L ZY )@@G@@ A5,A4 . $P TOTAL ALLOCATED-AT END = M TO A5 @D@@@@ ZZ )@@G@@ A,U A5,1 . $+ LOWER RANGE TO A5 @ @@@@ . SEARCH C4 RANGEAA )@@G@@ TABLE @[@@@@ . @E@@@@C4RSRC L A1,C4TBNM . $+ # OF ENAB )@@G@@TRIES TO A1 @B@@@@ TNZ A1 . $T A1=0 @C@@@@AC )@@G@@ J C4RIN1 . $A YES,C4RINS NO@E@@@@ AN,U AD )@@G@@ A1,1 . $P A1 WILL CONTROL LOOP @D@@@@ L X4,RAE )@@G@@NGADD . $P POINTS TO TABLE @D@@@@C4LP1 TNE,T3 A8,0,X4 . $T AAF )@@G@@REA CODES EQUAL @C@@@@ J C4TRNG . $A YES,C4TRNG NOAG )@@G@@@E@@@@C4CON1 A,U X4,2 . $P POINT TO NEXT ENTRY @ @@@@AH )@@G@@ JGD A1,C4LP1 @^@@@@ . INSERT ENTRY IN TABLE@F@@@@C4RINSAI )@@G@@ S,T3 A8,0,X4 . $P AREA CODE TO OVF RANGE ENTRY @E@@@@ AJ )@@G@@ S,H2 A6,1,X4 . $P UPPER RANGE TO ENTRY @E@@@@ S,AK )@@G@@H1 A5,1,X4 . $P LOWER RANGE TO ENTRY @A@@@@ L AL )@@G@@ A0,C4TBNM @B@@@@ TLE,U A0,C4OVEN . @B@@@@AM )@@G@@ J $+2 . @B@@@@ SLJ RER0AN )@@G@@57 . @^@@@@ A,U A0,1@G@@@@ S AO )@@G@@ A0,C4TBNM . $P INCREMENT # OF ENTRIES IN TABLE @B@@@@ J AP )@@G@@ C4REXT . $E EXIT @B@@@@C4RIN1 L X4,RNGADD AQ )@@G@@ . @D@@@@ J C4RINS . $J C4RINS @D@@@@AR )@@G@@C4TRNG TE,H2 A6,1,X4 . $T EQUAL UPPER RANGE @A@@@@ J AS )@@G@@ C4CON1 . @B@@@@C4REXT J *C4INST . $E EXIT AT )@@G@@@[@@@@/ @[@@@@ . @G@@@@ . ROUTINE THAT HANDLES ALL INTERFACE BETWAU )@@G@@EEN THE RELOAD FUNCTION AND @^@@@@ . THE DATA BASE. @G@@@@ . UPOAV )@@G@@N CALLING THE ROUTINE, X10 POINTS TO A PACKET (BUFPKT) WITH A @A@@@@AW )@@G@@ . FUNCTION CODE IN H2 OF WORD 0 @C@@@@ . THE FUNCTION CODES ARE DEFIAX )@@G@@NED AS FOLLOWS. @G@@@@ . FUNCTION = 1 GET PAGE # SPECIFIED IN PACKETAY )@@G@@ FROM PROPER AREA @C@@@@ . WITH PAGE RANGE CHECKAZ )@@G@@ @G@@@@ . = 2 GET OVERFLOW PAGE NEXT TO ONE SPECIFIED INBA )@@G@@ PACKET. @G@@@@ . IF END OF OVERFLOW RANGE IS REACHED,BB )@@G@@ WRAP AROUND AND @G@@@@ . RETURN PAGES FROM THE BEGINNINBC )@@G@@G OF THE RANGE UNTIL @G@@@@ . ALL PAGES OF THE RANGE HBD )@@G@@AVE BEEN EXHAUSTED. IN THAT @F@@@@ . CASE START AT THE BE )@@G@@BEGINNING OF THE NEXT RANGE @G@@@@ . = 3 GET THE FIRST OVERBF )@@G@@FLOW PAGE FROM THE RANGE IMMEDIATELY@E@@@@ . FOLLOWING THBG )@@G@@E PAGE SPECIFIED IN THE PACKET@C@@@@ . = 5 GET PAGE WITHOUT RBH )@@G@@ANGE CHECK @G@@@@ . = 6 GET THE FIRST DATA PAGE ALLOWABLE FOBI )@@G@@R THIS RECORD TYPE@G@@@@ . THIRD WRD OF PACKET POINTS TO BJ )@@G@@AREA ENTRY IN Z2. THIS @G@@@@ . CALL WILL STORE THE PAGEBK )@@G@@ # RETURNED IN H2 OF THE @C@@@@ . FOURTH WRD OF Z2 ABL )@@G@@REA ENTRY @F@@@@ . = 7 GET NEXT DATA PAGE TO THAT SPECIFIEDBM )@@G@@ IN PACKET @E@@@@ . = 8 DONE WITH PROCESSING, CLEAR ALL BUFFBN )@@G@@ERS @H@@@@ . RETURN CODE = 0 PAGE OBTAINED SUCCESSFULLY, ALL CURRENCYBO )@@G@@ INFO UPDATED @E@@@@ . 1 PAGE SPECIFIED NOT WITHIN PRBP )@@G@@OPER RANGE @G@@@@ . 2 PAGE CANNOT BE RETURNED SINCE NO MBQ )@@G@@ORE PAGES QUALIFY @C@@@@ . = 3 ILLEGAL FUNCTION CODE BR )@@G@@@[@@@@ . @[@@@@ . @C@@@@BUFROU . . $H BUFROUBS )@@G@@ @E@@@@ S,H2 X11,BUFRET . $P SAVE RETURN ADDRESS BT )@@G@@@ @@@@ . SAVE REGISTERS R1, X1-A15 @C@@@@ S R1,RSAVE1 BU )@@G@@ . $P SAVE R1 @C@@@@ S X1,XSAVE1 . $P SAVE X1 BV )@@G@@@C@@@@ S X2,XSAVE1+1 . $P SAVE X2 @A@@@@ LRBW )@@G@@,U R1,25 . @ @@@@ LX X1,(1,3) @A@@@@ BX )@@G@@ LX X2,(1,SAVER1) @C@@@@ BT X2,0,*X1 . $P SBY )@@G@@AVE X3-A15 @[@@@@ . @E@@@@ L,H2 A6,0,X10 . $P FUNCTIOBZ )@@G@@N CODE TO A6 @G@@@@ TNE,U A6,1 . $T IS FUNCTION CCA )@@G@@ODE EQUAL 1 (DIRECT PGE)@C@@@@ J BUFRF1 . $A YES,BUFCB )@@G@@RF1 NO@G@@@@ TNE,U A6,6 . $T IS FUNCTION CODE EQUAL 6 CC )@@G@@(FIRST DATA)@C@@@@ J BUFRF6 . $A YES,BUFRF6 NO@G@@@@CD )@@G@@ TNE,U A6,7 . $T IS FUNCTION CODE EQUAL 7 (NEXT DATA) CE )@@G@@@C@@@@ J BUFRF7 . $A YES,BUFRF7 NO@G@@@@ TNCF )@@G@@E,U A6,3 . $T IS FUNCTION CODE EQUAL 3 (1ST OVERFL)@C@@@@ CG )@@G@@ J BUFRF3 . $A YES,BUFRF3 NO@H@@@@ TNE,U A6,2CH )@@G@@ . $T IS FUNCTION CODE EQUAL 2 (NEXT OVERFL) @C@@@@ J CI )@@G@@ BUFRF2 . $A YES,BUFRF2 NO@D@@@@ TNE,U A6,5 CJ )@@G@@ . $T FN CODE 5 @E@@@@ J BUFRF5 . $ACK )@@G@@ YES,BUFRF5 NO @G@@@@ TNE,U A6,8 . $T IS FUNCTION CCL )@@G@@ODE EQUAL 8 ( FLUSH BUF)@C@@@@ J BUFRF8 . $A YES,BUFCM )@@G@@RF8 NO@G@@@@ J BUFEX3 . $J BUFEX3 RETURN ERROR CODECN )@@G@@ 3 (INVALID @E@@@@ . FUNCTION COCO )@@G@@DE) @[@@@@ . @]@@@@BUFRF1 . @C@@@@ L,H2 A7,1,X10 CP )@@G@@. $P PAGE # TO A7 @D@@@@BUFR11 L,T1 A8,1,X10 . $P AREA CODE TO CQ )@@G@@A8 @G@@@@ . CHECK IF PAGE NUMBER IS WITHIN SPECIFIED RANGE IN Z2 AREACR )@@G@@ ENTRY @G@@@@ L,H2 X3,2,X10 . $P POINTER TO AREA ENTRCS )@@G@@Y IN Z2 TO X3 @E@@@@ TNZ 1,X3 . $T IS LOWER BOUNCT )@@G@@D EQUAL 0 @E@@@@ J NPGMSG . $A YES,NPGMSG CU )@@G@@NO @[@@@@ . @G@@@@ TLE A7,1,X3 . $T IS LOWER RANGCV )@@G@@E LESS OR EQUAL PAGE # @C@@@@ J BUFGT1 . $A NO,BUFEXCW )@@G@@1 YES @D@@@@ L A9,2,X3 . $P UPPER RANGE TO A9 @G@@@@CX )@@G@@ TG A9,A7 . $T IS PAGE # GREATER THAN UPPER BOUND CY )@@G@@@E@@@@ J PWRNGE . $A NO,PWRNGE YES,BUFGT1 @ @@@@CZ )@@G@@ J BUFGT1 @]@@@@BUFGT1 . @]@@@@LEV5GT1 . @]@@@@DA )@@G@@ . @]@@@@ . @D@@@@ . ON A FN CODE 1,6, OR 7 CDB )@@G@@ALL TO BUFROU, @G@@@@ . THE PAGE # WANTED WAS FOUND TO BE OUDC )@@G@@TSIDE THE PAGE RANGE @E@@@@ . SPECIFIED FOR THE RECORD WITHIDD )@@G@@N THE AREA WANTED @B@@@@ . X10 HAS ADDRESS OF BUFPKT @E@@@@DE )@@G@@ . X3 POINTS TO AREA ENTRY IN Z2 RECORD ENTRY @E@@@@ DF )@@G@@ L,H2 A0,BUFPKT . $P FN CODE TO A0 @E@@@@ TEDG )@@G@@,U A0,07 . $T FN CODE = 7 @E@@@@ J DH )@@G@@ BUFEX1 . $A NO,BUFEX1 YES @G@@@@ LA A0,2DI )@@G@@,X3 . UPPER PAGE ALLOWED FOR REC @B@@@@ AA,U DJ )@@G@@ A0,1 . @E@@@@ TE A0,A7 . $TDK )@@G@@ UPPER RANGE + 1 =@E@@@@ . PAGE # WDL )@@G@@ANTED @E@@@@ J BUFEX1 . $A NO,BUFEX1 YDM )@@G@@ES @E@@@@ TZ ST7RAP . $T STNRSW SET DN )@@G@@@E@@@@ J BUFEX2 . $A YES,BUFEX2 NO @F@@@@DO )@@G@@ LA,H2 A0,1,X10 . $P PAGE # FROM BUFPKT @F@@@@DP )@@G@@ SA A0,ST7RAP . $P SET ST7RAP TO PAGE # @H@@@@DQ )@@G@@ . CANNOT SET IT TO 1ST PAGE IN RANDR )@@G@@GE @H@@@@ . SINCE THAT MAY NOT BDS )@@G@@E A DATA PAGE. @G@@@@ LA,U A0,06 . $P FN CODT )@@G@@DE 6 ( 1ST DATA PAGE) @E@@@@ SA,H2 A0,0,X10 . $PDU )@@G@@ FN CODE TO BUFPKT@B@@@@ LA,H2 A0,1,X10 . @G@@@@DV )@@G@@ SA,H1 A0,3,X10 . $P MARK BUFPKT FOR 2ND CALL DW )@@G@@@H@@@@ . L$SNAP 'LV5GT1',0,8,BUFPKT DX )@@G@@ . @H@@@@ J BUFRF6 . $J BUFRF6 GET DY )@@G@@FIRST PAGE IN RANGE @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . DZ )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . EA )@@G@@@[@@@@ . @[@@@@ . @C@@@@PWRNGE . PAGE SPECIFIED WITHIN PROPER RANGEB )@@G@@E @]@@@@ .@B@@@@ . CHECK IF PAGE SPECIFIED IS OVERFLOW EC )@@G@@@[@@@@ . @G@@@@ SLJ CHKPGE . $W CHECK IF PAED )@@G@@GE IS OVERFLOW @E@@@@ TNE,U A2,1 . $ IS IT EE )@@G@@DATA PAGE @E@@@@ J DATPG1 . $ YES,GETPGE NEF )@@G@@O @G@@@@ TNE,U A2,2 . $ IS PAGE INTERSPERSEG )@@G@@ED OVERFLOW @E@@@@ J IOVFPG . $ YES,IOVOPG NOEH )@@G@@ @G@@@@ TNE,U A2,3 . $ IS PAGE GLOBAL OVEEI )@@G@@RFLOW @E@@@@ J GOVFPG . $YES,GOVFPG NOEJ )@@G@@ @G@@@@ SLJ RER058 . PAGE MUST BE OUT OF EK )@@G@@RANGE @]@@@@IOVFPG . @I@@@@ L,U X10,BUFPKT EL )@@G@@ . $P ESTABLISH ADDRESSABILITY OVER BUFPKT @E@@@@ L,H2 EM )@@G@@ A6,0,X10 . FUNCTION CODE TO A6 @D@@@@ TNE,U A6,1EN )@@G@@ . $ WAS IT = 1 @ @@@@ J DATPG1 @[@@@@EO )@@G@@ . @[@@@@ . @C@@@@ . GET NEXT DATA PAGE AFTER INTER OVERFLOW EP )@@G@@@[@@@@ . @A@@@@ . A4 HAS M UPON RETURN FROM CHKPGE @B@@@@ . A5 HAS SUEQ )@@G@@M UPON RETURN FROM CHKPGE @E@@@@ A,U A5,1 ER )@@G@@ . $ ADD 1 TO SUM @E@@@@ TG A4,A5 . ISES )@@G@@ GREATER THAN M @^@@@@ J $+2 @ @@@@ SLJ ET )@@G@@ RER059 @D@@@@ L A7,A5 . $ RETURN SUM EU )@@G@@@ @@@@ J BUFR11 @]@@@@DATPG1 . @E@@@@ LAEV )@@G@@,H2 A0,BUFPKT . $T FN CODE WAS 7 @B@@@@ TE,U EW )@@G@@ A0,07 . @D@@@@ J GETPGE . $JEX )@@G@@ GETPGE @E@@@@ TNE A7,STDWRAP . $T PAGE # = STEY )@@G@@DWRAP @F@@@@ J BUFEX2 . $A YES,BUFEX2 NO,GETEZ )@@G@@PGE @B@@@@ J GETPGE . @G@@@@GOVFPG SLFA )@@G@@J RER060 . $ PAGE IS GLOBAL OVERFLOW @[@@@@ . FB )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . FC )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @]@@@@GETPGEFD )@@G@@ . @A@@@@ . CHECK IF PAGE IS IN BUFFER @E@@@@ TNZ FE )@@G@@ BUFENT . $T ANYTHING IN BUFFER @C@@@@ J BEMPFF )@@G@@T1 . $A NO,BEMPT1 YES@G@@@@ L A15,BUFENT . $P # OF EFG )@@G@@NTRIES IN BUFFER TO A15 @G@@@@ AN,U A15,1 . $P FH )@@G@@A15 WILL CONTROL LOOP FOR BLOCKS @F@@@@ L X4,BFIADD FI )@@G@@. $P ADDRESS OF BUFFER TABLE TO X4 @D@@@@BUFLP1 TNE,T1 A8,0,X4 FJ )@@G@@. $T AREA CODES EQUAL @D@@@@ J BFAEQU . $A YES,BFAFK )@@G@@EQU NO @^@@@@BUFLP2 A,U X4,2@F@@@@ JGD A15,FL )@@G@@BUFLP1 . $T ARE WE DONE WITH ALL ENTRIES @D@@@@ FM )@@G@@ . $A NO,BUFLP1 YES @G@@@@ J BPNIBF . $J FN )@@G@@BPNIBF PAGE REQUIRED NOT IN BUFFER @E@@@@BFAEQU . AREA CODES EQUAL, CHEFO )@@G@@CK IF PAGE IN PROPER RANGE @^@@@@ . PAGE # IN A7 @G@@@@ FP )@@G@@ TLE,H1 A7,1,X4 . $T IS LOWER LIMIT LESS OR EQUAL PAGE # @G@@@@FQ )@@G@@ J BUFLP2 . $A NO,BUFLP2 YES CHECK THE OTHER RANGE FR )@@G@@@E@@@@ L,H2 A10,1,X4 . $P HIGHER LIMIT TO A10 @G@@@@FS )@@G@@ TG A10,A7 . $T IS PAGE # GREATER THAN UPPER LIMIT FT )@@G@@@G@@@@ J BUPFND . $J BUPFND YES PAGE REQUIRED IS IFU )@@G@@N @G@@@@ J BUFLP2 . $J BUFLP2 NO GO LOOK AT OTFV )@@G@@HER BLOCKS @[@@@@ . @G@@@@BPNIBF . PAGE NOT FOUND IN BUFFER, DETERMIFW )@@G@@NE WHICH BLOCK TO READ IN @]@@@@ . @C@@@@ L FX )@@G@@ A11,A7 . $P PAGE # TO A11@D@@@@ DSL A11,36 . $P PFY )@@G@@REPARE TO DIVIDE @F@@@@ DI,U A11,BLSIZE . $P DIVID PAGE # FZ )@@G@@BY BLOCK SIZE @G@@@@ . QUOTIENT TO AGA )@@G@@11, REMAINDER TO A12 @E@@@@ TNZ A11 . QUGB )@@G@@OTIENT ZERO @ @@@@ J QUZERO @A@@@@ MSGC )@@G@@I,U A11,BLSIZE @^@@@@ TZ A12 @B@@@@ J GD )@@G@@ QNZGT1 . @B@@@@ AN,U A11,BLSIZE GE )@@G@@ . @B@@@@QNZGT1 A,U A11,1 . @B@@@@ J GF )@@G@@ GOTBBL . @B@@@@QUZERO L,U A11,1 GG )@@G@@ . @]@@@@GOTBBL . @[@@@@ . @E@@@@ . DETERMINE WHICH BLOCK TO REGH )@@G@@PLACE (FIRST IN FIRST OUT) @C@@@@ . IF NECESSARY WRITE BLOCK OUT BEFOGI )@@G@@RE REPLACING@[@@@@ . @F@@@@ L X5,BFIADD . $P ADDRESSGJ )@@G@@ OF BUF TABLE TO X5 @G@@@@ A X5,BUFPT1 . $P X5 POINGK )@@G@@TS TO NEXT ENTRY IN BUFFER TAB@C@@@@ TNZ,T1 0,X5 . $T IGL )@@G@@S ENTRY FREE@C@@@@ J BFNBLK . $A YES,BFNBLK NO@E@@@@GM )@@G@@ . MAY WANT TO CHECK IF ANY OF THE PAGES HAS BEEN MODIFIED @E@@@@ GN )@@G@@ . PREPARE TO WRITE BLOCK OUT @G@@@@ L,GO )@@G@@H2 X6,0,X5 . $P ADDRESS OF FIRST WORD IN BLOCK TO X6 @F@@@@ GP )@@G@@ LXI,H1 X6,2,X6 . $P X6 WILL INDEX THROUGH PAGES @D@@@@ GQ )@@G@@ L,U A0,BLSIZE . $P BLOCK SIZE TO A0 @E@@@@ AN,U GR )@@G@@ A0,1 . $P A0 WILL CONTROL LOOP @F@@@@BUFLP3 SZ 0,*XGS )@@G@@6 . $P ZERO CHECKSUM WORD @G@@@@ JGD A0,BGT )@@G@@UFLP3 . $T ALL PAGES IN BLOCK HANDLED @F@@@@ GU )@@G@@ . $A NO,BUFLP3 YES @G@@@@ . WRITE BLOCK TO GV )@@G@@BE REPLACED OUT, X5 POINTS TO BLOCK ENTRY IN TABLE @D@@@@ L,GW )@@G@@T1 A1,0,X5 . $P AREA CODE TO A1 @E@@@@ L,U X10,GX )@@G@@C3 . $P ADDRESS OF C3 TO X10 @E@@@@ LMJ X11,TABSE1GY )@@G@@ . $W SEARCH C3 FOR AREA ENTRY@B@@@@ TZ A2 GZ )@@G@@ . @B@@@@ SLJ RER061 . @E@@@@ DLHA )@@G@@ A1,1,A0 . $P AREA NAME TO A1,A2 @E@@@@ L,U HB )@@G@@ A3,010 . $P FUNCTION CODE TO A3 @G@@@@ L,U X10,HC )@@G@@DBPPKT . $P ADDRESS OF DATA BASE PACKET TO X10 @G@@@@ S,S2 HD )@@G@@ A3,3,X10 . $P FUNCTION CODE TO DATA BASE PACKET @E@@@@ DSHE )@@G@@ A1,DBPPKT . $P AREA NAME TO PACKET @E@@@@ L,H2 HF )@@G@@ A4,1,X5 . $P UPPER PAGE NUMBR TO A4 @E@@@@ AN,H1 A4,1HG )@@G@@,X5 . $P SUBTRACT LOWER PAGE LIMIT@D@@@@ A,U A4,1 HH )@@G@@. $P PAGE COUNT TO A4 @E@@@@ S,H1 A4,7,X10 . $P PAGE COHI )@@G@@UNT TO PACKET @E@@@@ L,H2 A0,0,X5 . $P BUFFER ADDRESHJ )@@G@@S TO A0 @E@@@@ S,H2 A0,7,X10 . $P BUFFER ADDRESS TO PHK )@@G@@ACKET @H@@@@ MSI,H1 A4,2,A0 . $P BUFFER SIZE = PGEHL )@@G@@ CNT*PAGE SIZE @E@@@@ S,H1 A4,8,X10 . $P BUFFER LENGTHHM )@@G@@ TO PACKET @E@@@@ L,H1 A5,1,X5 . $P LOWER PAGE # TO A5 HN )@@G@@ @E@@@@ S,H2 A5,8,X10 . $P STARTING PAGE TO PACKET HO )@@G@@@E@@@@ LMJ X11,DB$AM . $W ISSUE WRITE OF BLOCK @D@@@@HP )@@G@@ TZ,S1 DBPPKT+3 . $T SUCCESSFUL RETURN @C@@@@ J HQ )@@G@@ BWSTAT . $A NO,BWSTAT YES@D@@@@ . READ NEW BLOCK IN, X5 POINHR )@@G@@TS TO NEW BUFFER TABLE @D@@@@ . BUFPT1 HAS BLOCK ENHS )@@G@@TRY NUMBER @[@@@@ . @]@@@@BFNBLK . @G@@@@ L A0,NHT )@@G@@EWC3A . $P ADDRESS OF C3 AREA ENTRY TO A0 @E@@@@ DL HU )@@G@@ A1,1,A0 . $P AREA NAME TO A1,A2 @E@@@@ L,U A3,0HV )@@G@@20 . $P FUNCTION CODE TO A3 @E@@@@ L,U X10,DBPPKTHW )@@G@@ . $P ADDRESS OF PACKET TO X10@G@@@@ S,S2 A3,3,X10 . $P FHX )@@G@@UNCTION CODE TO PACKET (READ) @E@@@@ DS A1,DBPPKT HY )@@G@@ . $P AREA NAME TO PACKET @F@@@@ L,U A4,BLSIZE .HZ )@@G@@ $P PAGE CNT =BLSIZE TO A4 @E@@@@ S,H1 A4,7,X10 . $P PIA )@@G@@AGE CNT TO PACKET @D@@@@ LA,T1 A3,3,A0 . $PIB )@@G@@ PAGE SIZE @I@@@@ MSI A4,A3 . $P BUFFER LENGIC )@@G@@TH = PGE CNT * PAGE SIZE @E@@@@ S,H1 A4,8,X10 . $P BID )@@G@@UFFER LENGTH TO PACKET @E@@@@ L,H2 A3,0,X5 . $P BUFFER IE )@@G@@ADDRESS TO A3 @E@@@@ S,H2 A3,7,X10 . $P BUFFER ADDRESIF )@@G@@S TO PACKET @G@@@@ S A3,CURBLK . $P BUFFER ADDRESS TO CIG )@@G@@URRENT BLK ADDR @E@@@@ S,H2 A11,8,X10 . $P STARTING PAGEIH )@@G@@ TO PACKET @F@@@@ S,H1 A11,1,X5 . $P STARTING PAGE TO BUII )@@G@@FFER TABLE @E@@@@ L A12,A7 . PAGE WANTED TOIJ )@@G@@ A12 @G@@@@ AN A12,A11 . $P REL PGE WITHIN BLIK )@@G@@OCK TO A12 @G@@@@ LMJ X11,DB$AM . $W ISSUE THE READ TO CIL )@@G@@URRENT BLK ADDR @E@@@@ L,S1 A0,DBPPKT+3 . $P STATUS CODEIM )@@G@@ TO A0 @F@@@@ JZ A0,BLREOK . $T SUCCESSFUL RETURNIN )@@G@@ ON READ @D@@@@ . $A YES,BLREOK NO IO )@@G@@@G@@@@ TE,U A0,052 . $T STATUS =052 (GOT LESS PAGES )IP )@@G@@ @E@@@@ J BRSTAT . $J BRSTAT ERROR RETURN IQ )@@G@@@G@@@@BLREOK . BLOCK HAS BEEN READ SUCCESSFULLY, UPDATE CURRENCY INDICATIR )@@G@@ORS @A@@@@ . AND BLOCK ENTRY INFORMATION@G@@@@ L IS )@@G@@ A1,CURBLK . $P ADDR OF FIRST WRD IN BLOCK @F@@@@ LXIT )@@G@@I,H1 A1,2,A1 . $P A1 WILL INDEX THROUGH PAGES @D@@@@ L,IU )@@G@@U A0,BLSIZE . $P BLOCK SIZE TO A0 @E@@@@ AN,U A0,1IV )@@G@@ . $P A0 WILL CONTROL LOOP @F@@@@BUFLP5 SZ 0,*A1 IW )@@G@@ . $P ZERO CHECKSUM WORD @G@@@@ JGD A0,BUFLP5 IX )@@G@@ . $T ALL PAGES IN BLOCK HANDLED @A@@@@ L A0,NIY )@@G@@EWARE @G@@@@ S,T1 A0,0,X5 . $P AREA CODE TO BLOCIZ )@@G@@K TABLE ENTRY @F@@@@ S A0,CURARE . $P AREA CODE TJA )@@G@@O CURRENT A/C @ @@@@ . CALCULATE # OF PAGES READ @E@@@@ L,JB )@@G@@H2 A1,DBPPKT+3 . $P FINAL WORD CNT TO A1 @E@@@@ DSL JC )@@G@@ A1,36 . $P PREPARE TO DIVIDE @E@@@@ DI,H2 A1,DJD )@@G@@BPPKT+6 . $P # OF PAGES READ TO A1 @E@@@@ TZ A2 JE )@@G@@ . $ REMAINDER SHOULD BE ZERO@A@@@@ SLJ RER062 . $ JF )@@G@@@E@@@@ A A11,A1 . $P UPPER PAGE READ TO A11 @ @@@@JG )@@G@@ AN,U A11,1 @G@@@@ S,H2 A11,1,X5 . $P UJH )@@G@@PPER PAGE READ TO BLOCK ENTRY @E@@@@ S A7,CURPGE JI )@@G@@. $P PAGE # TO CURRENT PAGE @I@@@@ L A3,Z2AREA JJ )@@G@@ . ESTABLISH ADDRESSABILITY OVER Z2 AREA EN @F@@@@ TZ JK )@@G@@ STNRSW . $T STORE NEAR SWITCH SET @E@@@@ J JL )@@G@@ BLGT2 . $A YES,BLGT2 NO @G@@@@ S,H2 A7,3JM )@@G@@,A3 . $P CURRENT PAGE TO Z2AREA @E@@@@BLCON1 L,H2 JN )@@G@@ A3,0,X5 . $P BUFFER ADDRESS TO A3 @E@@@@ MSI,H1 A12,JO )@@G@@2,A3 . $P REL POS OF PAGE TO A12 @G@@@@ A A3,A12 JP )@@G@@ . $P A3 POINTS TO ADDRESS OF NEW PAGE @F@@@@ S A3,CJQ )@@G@@URADD . $P UPDATE CURRENT PAGE ADDRESS @E@@@@ . INCREMENT BUFPT1 TO PJR )@@G@@OINT TO PROPER ENTRY FOR NEXT BLOCK @G@@@@ L A4,BUFPT1 JS )@@G@@. $P POINTER WITHIN BUFFER TABLE TO A4 @E@@@@ A,U A4,2JT )@@G@@ . $P INCREMENT POINTER BY 2@G@@@@ TE,U A4,BFISIZ JU )@@G@@ . $T END OF BUFFER CONDITION DETECTED @D@@@@ J BUTSJV )@@G@@TO . $A NO,BPTSTO YES @F@@@@ SZ A4 . $P RJW )@@G@@ESET POINTER TO ZERO IN A4 @G@@@@BUTSTO S A4,BUFPT1 . $P SJX )@@G@@TORE PROPER POINTER VALUE IN BUFPT1 @A@@@@ L A0,BUFENT JY )@@G@@. @B@@@@ TNE,U A0,NUMBLK . @B@@@@ J JZ )@@G@@ BLFIX1 . @^@@@@ A,U A0,1@G@@@@ KA )@@G@@ S A0,BUFENT . $P INCREMENT BLOCK COUNT IN BUFFER @C@@@@KB )@@G@@ . ALL DONE, RETURN TO CALLER WITH ZERO STATUS@]@@@@BLFIX1 . @C@@@@KC )@@G@@ J BUFEX0 . $J BUFEX0 @]@@@@BLGT2 . @G@@@@KD )@@G@@ S,H1 A7,3,A3 . $P UPDATE STORE NEAR PAGE KE )@@G@@@D@@@@ J BLCON1 . $J BLCON1 @[@@@@ . KF )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . KG )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @]@@@@BUFRF2 . @[@@@@ . @G@@@@KH )@@G@@ . FUNCTION CODE EQUAL 2, GET NEXT OVERFLOW PAGE TO THAT SPECIFIED IN KI )@@G@@@^@@@@ . PACKET TO BUFROU @[@@@@ . @C@@@@ L,H2 A7,1KJ )@@G@@,X10 . $P PAGE # TO A7@D@@@@ L,T1 A8,1,X10 . $P AREA CKK )@@G@@ODE TO A8 @G@@@@ L,H2 X3,2,X10 . $P POINTER TO AREA ENKL )@@G@@TRY IN Z2 TO X3 @G@@@@ SLJ CHKPGE . $W CHKPGE FIND KM )@@G@@OUT IF PAGE IS OVERFLOW @G@@@@ . $ X8 POIKN )@@G@@NTS TO AREA ENTRY IN C3 @A@@@@ TNE,U A2,1 . KO )@@G@@@D@@@@ J LEV5GT2 . PAGE IS DATA PAGE @G@@@@ KP )@@G@@ . GO TRY TO GET NEXT DATA PAGE @G@@@@KQ )@@G@@ . GET NEXT DATA PAGE IF LEVEL 5 KR )@@G@@@A@@@@ TNE,U A2,4 . @F@@@@ SLJ RER0KS )@@G@@64 . PAGE IS OUT OF RANGE OF AREA @E@@@@ TNE,U A2,3KT )@@G@@ . $T IS PAGE GLOBAL OVERFLOW @D@@@@ J GLOBAL KU )@@G@@ . $A YES,GLOBAL NO @[@@@@ . @H@@@@ TNE A7,STOWRAPKV )@@G@@ . $T HAVE WE REACHED THE OVF WRAP PAGE @E@@@@ J KW )@@G@@ BF2GT5 . $A YES,BF2GT5 NO @^@@@@BF2GT6 . KX )@@G@@@G@@@@ TNE A7,A5 . $T IS PAGE NUMBER EQUAL SUM AS DEKY )@@G@@FINED;@E@@@@ . $ IN SUBROUTINE CHKPGE KZ )@@G@@@C@@@@ J BF2RAP . $A YS,BF2RAP NO@H@@@@ TZLA )@@G@@ STOWRAP . $P SET STOWRAP IF NOT ALREADY SET @B@@@@LB )@@G@@ J $+2 . @B@@@@ SA A7,SLC )@@G@@TOWRAP . @G@@@@ A,U A7,1 . $P INCREMENT PALD )@@G@@GE NUMBER BY 1 TO NEXT @D@@@@ . PROCEED TO GET PAGE WHOSE NUMBER APPEARLE )@@G@@S IN A7 @E@@@@ J GETPGE . $J GETPGE GO GET PAGELF )@@G@@ @[@@@@ . @[@@@@ . @]@@@@BF2GT5 . @B@@@@ . L$SNAP LG )@@G@@ 'STDOGI',0,4,STDWRAP @B@@@@ LA A0,A5 . LH )@@G@@@E@@@@ AN,H1 A0,5,X8 . SUBTRACT INTER OVF @H@@@@LI )@@G@@ AA,U A0,1 . $P 1ST INTERSPERSED PAGE IN RANGLJ )@@G@@E @H@@@@ TNE A0,A7 . $T PAGE # = 1ST INTELK )@@G@@RSPERSED PAGE # @E@@@@ J BF2GT6 . $T YES,BLL )@@G@@F2GT4 NO @D@@@@ J BF2CN1 . $J BF2CN1 LM )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @G@@@@BF2RAP . PAGE NUMBER WAS FOUNDLN )@@G@@ TO BE EQUAL TO SUM FROM SUB CHKPGE @E@@@@ TZ STIWLO )@@G@@RAP . $T STIWRAP SET @E@@@@ J BF2GT2 LP )@@G@@ . $A YES,BF2GT2 NO @D@@@@ LA A0,A5 LQ )@@G@@ . $P SUM TO A0 @G@@@@ AN,H1 A0,5,X8 . $P SUBTRLR )@@G@@ACT INTERSPERSED OVF @B@@@@ AA,U A0,1 . LS )@@G@@@G@@@@ SA A0,STIWRAP . $P STIWRAP = 1ST INTER PAGLT )@@G@@E @H@@@@ TNE A7,A0 $T PAGE # = # OF 1ST ILU )@@G@@NTERSPERSED PAGE @E@@@@ J BF2CN1 . $T YES,BLV )@@G@@F2CN1 NO @G@@@@ TNZ STOWRAP . $P SET STOWRAPLW )@@G@@ IF NOT SET @E@@@@BF2GT1 SA A7,STOWRAP . $P PGE #LX )@@G@@ TO STOWRAP @]@@@@BF2GT2 . @E@@@@ TZ ARSCAN . $TLY )@@G@@ ARSCAN SWITCH SET @D@@@@ J BF2SCN . $A YS,BFLZ )@@G@@2SCN YES @G@@@@ AN,H1 A5,5,X8 . $P SUBTRACT INTERSPEMA )@@G@@RSED OVF FROM SUM @E@@@@ A,U A5,1 . $P ADD ONE TO MB )@@G@@ RESULT @F@@@@ TNE A5,STOWRAP . $T NEW PAGE # EQUAL MC )@@G@@TO STOWRAP @ @@@@ J BF2CN1 @D@@@@ L MD )@@G@@ A7,A5 . $P PAGE # TO A7 @E@@@@ J GETPGE ME )@@G@@ . $J GETPGE GO GET THAT PAGE@[@@@@ . @B@@@@BF2CN1 . GET READY TO SCMF )@@G@@AN REST OF AREA @B@@@@ . L$SNAP 'F2DOGI',0,4,STDWRAP @B@@@@MG )@@G@@ LA A0,STIWRAP . @F@@@@ SA A0,SMH )@@G@@TOWRAP . $P STIWRAP TO STOWRAP @^@@@@ L,U A0,1MI )@@G@@@G@@@@ S A0,ARSCAN . $P SET AREA SCAN SWITCH (ARSCAN)MJ )@@G@@ @E@@@@ L A5,OLDSUM . $P GET OLD SUM TO A5 MK )@@G@@@G@@@@BF2SCN TE A5,A4 . $T IS OLD SUM EQUAL M FROM CHEKPML )@@G@@G @D@@@@ J BF2CN2 . $A NO,BF2CN2 YES @^@@@@MM )@@G@@ SZ A5 @F@@@@ A,H2 A5,4,X8 . $P ADD EMN )@@G@@VER DATA PAGES TO SUM @^@@@@ A,U A5,1@G@@@@BF2CN4 TNMO )@@G@@E A5,STOWRAP . $T HAVE WE REACHED START OF WRAP YET @G@@@@ MP )@@G@@ J LEV5GT3 . ERROR NO MORE INTERSPERSED OVF AVAIL @E@@@@MQ )@@G@@ L A7,A5 . $P PAGE NUMBER TO A7 @E@@@@ MR )@@G@@ J GETPGE . $J GETPGE GO GET PAGE @A@@@@BF2CN2 . OLDMS )@@G@@ SUM WAS NOT EQUAL TO M @[@@@@ . @^@@@@ A,U A5,1@F@@@@MT )@@G@@ A,H2 A5,4,X8 . $P ADD EVERY DATA PAGES TO SUM @E@@@@MU )@@G@@ TG A4,A5 . $T SUM GREATER THAN M @ @@@@ MV )@@G@@ J BF2CN5 @ @@@@ SLJ RER066 @]@@@@BF2CN5MW )@@G@@ . @ @@@@ L A7,A5 @F@@@@ SLJ CHKPMX )@@G@@GE . $W CHKPGE CHECK PAGE DELIVERED @E@@@@ TE,U A2,2MY )@@G@@ . $ PAGE BETTER BE OVERFLOW@A@@@@ SLJ RER072 MZ )@@G@@ . @D@@@@ L A5,A7 . $ PAGE # TO A5 @C@@@@NA )@@G@@ J BF2CN4 . $J BF2CN4 @[@@@@ . @]@@@@GLOBALNB )@@G@@ . @G@@@@ TNZ STOWRAP . $P SET STOWRAP IF NONC )@@G@@T SET @B@@@@ SA A7,STOWRAP . @G@@@@ ND )@@G@@ TE A7,A3 . $T PAGE NUMBER EQUAL TOTAL ALLOCATED @C@@@@NE )@@G@@ J BF2CN6 . $J BF2CN6 @G@@@@ L NF )@@G@@ A7,A4 . $P TOTAL ALLOCATED - AT END OVF TO A7 @E@@@@ TZNG )@@G@@ STGWRAP . $T STGWRAP SET @E@@@@ J NH )@@G@@ BF2GT3 . $A YES,BF2GT3 NO @B@@@@ LA A0,ANI )@@G@@7 . @B@@@@ AA,U A0,1 . @G@@@@NJ )@@G@@ SA A0,STGWRAP . $P SET STGWRAP TO 1ST GLOBAL PGENK )@@G@@@D@@@@ J BF2CN6 . $J BF2CN6 @]@@@@BF2SNPNL )@@G@@ @B@@@@ . L$SNAP 'S2DOGI',0,4,STDWRAP @]@@@@BF2GT3 . NM )@@G@@@E@@@@ LA A0,CLPGE . $P PRIMARY PAGE @G@@@@NN )@@G@@ SA,H2 A0,BUFPKT+1 . $P PRIMARY PAGE TO BUFPKT NO )@@G@@@D@@@@ J LEV5GT2 . $J LEV5GT2 @D@@@@BF2CN6NP )@@G@@ A,U A7,1 . $P INCREMENT A7 BY 1 @F@@@@ TNE NQ )@@G@@ A7,STOWRAP . $T PAGE NUM = STOWRAP @E@@@@ J NR )@@G@@ BF2SNP . $A YES,BF2GT3 NO @E@@@@ J GETPNS )@@G@@GE . $J GETPGE GO GET PAGE @[@@@@ . @[@@@@ . @[@@@@ . NT )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @]@@@@LEV5GTNU )@@G@@3 @]@@@@ . @]@@@@ . @F@@@@ . HAVE ALREADYNV )@@G@@ SCANNED ALL INTER OVF WITHOUT FINDING @A@@@@ . SPACE TO STONW )@@G@@RE RECORD @]@@@@ . @B@@@@ . L$SNAP 'G3DOGI',0,4,STDNX )@@G@@WRAP @E@@@@ . X8 POINTS TO C3 ENTRY FOR AREA ENCOUNTERED NY )@@G@@@]@@@@ . @E@@@@ LA,U A0,DMSLEV5 . DMS LEVENZ )@@G@@L 5 SWITCH @E@@@@ TNZ A0 . $T DMSLEV5 SETOA )@@G@@ @E@@@@ SLJ RER065 . $A NO,RER065 YES OB )@@G@@@F@@@@ TNZ,H2 5,X8 .$T ANY GLOBAL OVF DEFINED OC )@@G@@@E@@@@ J L5NGLB . $A NO,L5NGLB YES @E@@@@OD )@@G@@ LA,H1 A7,4,X8 . ALLOCATED PAGES @G@@@@ OE )@@G@@ AN,H2 A7,5,X8 . $P ALLOCATED PAGES - AT END OVF @E@@@@OF )@@G@@ AA,U A7,1 . $P PAGE # = M + 1 @F@@@@ OG )@@G@@ SA A7,STOWRAP . SAVE PAGE # IN STGWRAP @D@@@@ OH )@@G@@ J GETPGE . $J GETPGE @]@@@@L5NGLB @E@@@@OI )@@G@@ LX,U X10,BUFPKT . $P ADDR OF BUFPKT @D@@@@ OJ )@@G@@ LA,H2 A0,1,X10 . OLD PAGE # @G@@@@ SA,H1 OK )@@G@@ A0,3,X10 . SET SW FOR 2ND CALL TO OLD # @E@@@@ LAOL )@@G@@ A0,CLPGE . PRIMARY PAGE TO A0 @G@@@@ SA,H2 OM )@@G@@ A0,1,X10 . PRIMARY PAGE TO BUFPKT,1,H2 @D@@@@ LAON )@@G@@,U A0,7 . $P FN CODE 7 @E@@@@ SA,H2 A0,0OO )@@G@@,X10 . FN CODE 7 TO BUFPKT @E@@@@ OP )@@G@@ . GET NEXT DATA PAGE @G@@@@ SA,H2 A0,3,X10 OQ )@@G@@ . $P SET BFERSW( H2 OF 3RD WRD) @H@@@@ . L$SNAP 'LV5GT3',0OR )@@G@@,8,BUFPKT . @D@@@@ J OS )@@G@@ BUFRF7 . $J BUFRF7 @]@@@@BUFRF3 . @[@@@@ . @[@@@@OT )@@G@@ . @G@@@@ . FUNCTION CODE EQUAL 3, GET FIRST OVERFLOW PAGE AFTER DATAOU )@@G@@ PAGE WHICH @#@@@@ . IS IN PACKET @[@@@@ . @D@@@@ L,H2 OV )@@G@@ A7,1,X10 . $P PAGE # TO A7 @D@@@@ L,T1 A8,1,X10 OW )@@G@@ . $P AREA CODE TO A8 @G@@@@ L,H2 X3,2,X10 . $P POINTOX )@@G@@ER TO AREA ENTRY IN Z2 TO X3 @G@@@@ SLJ CHKPGE . $WOY )@@G@@ CHKPGE FIND OUT IF PAGE IS OVERFLOW@G@@@@ OZ )@@G@@ . $ X8 POINTS TO AREA ENTRY IN C3 @E@@@@ TE,U A2,1PA )@@G@@ . $T IS PAGE A DATA PAGE @C@@@@ SLJ RER070 PB )@@G@@ . $A NO,EXIT YES@F@@@@ TNZ,H2 4,X8 . $T ANY INTERSPPC )@@G@@ERSED OVERFLOW @D@@@@ J BF3CN2 . $A NO,BF3CN2 YPD )@@G@@ES @D@@@@ A,U A5,1 . $P ADD 1 TO SUM @H@@@@PE )@@G@@ TZ STOWRAP . $P SET STOWRAP IF NOT ALREADY SEPF )@@G@@T @B@@@@ J $+2 . @B@@@@ SAPG )@@G@@ A5,STOWRAP . @E@@@@ TG A4,A5 . $TPH )@@G@@ IS SUM GREATER THAN M @^@@@@ J $+2 @ @@@@ SLPI )@@G@@J RER071 @E@@@@ . ERROR ISPJ )@@G@@ VALID SINCE@F@@@@ . THERE SHOULD BPK )@@G@@E AT LEAST @G@@@@ . ONE INTER RANGPL )@@G@@E AFTER DATA @ @@@@ L A7,A5 @G@@@@ SLPM )@@G@@J CHKPGE . $W CHKPGE CHECK IF PAGE IS INTERSP OVF@G@@@@ PN )@@G@@ TE,U A2,2 . $ IS PAGE INTERSPERSED OVERFLOW @ @@@@PO )@@G@@ SLJ RER072 @ @@@@ J GETPGE @[@@@@PP )@@G@@ . @[@@@@ . @[@@@@ . @D@@@@BF3CN2 . NO INTERSPERSED OVERFLOW DEPQ )@@G@@FINED FOR AREA @E@@@@ TNZ,H2 5,X8 . $T ANY AT END PR )@@G@@OVERFLOW @E@@@@ J LEV5GT2 . $A NO,LEV5GT2 PS )@@G@@ @C@@@@ L A7,A4 . $P GET M @D@@@@ PT )@@G@@ A,U A7,1 . $P INCREMENT BY 1 @H@@@@ TZ PU )@@G@@ STOWRAP . $P SET STOWRAP IF NOT ALREADY SET @B@@@@ PV )@@G@@ J $+2 . @B@@@@ SA A7,STOWRAPPW )@@G@@ . @E@@@@ J GETPGE . $J GETPGE GO GET PAGPX )@@G@@E @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @]@@@@LEV5GT2 . PY )@@G@@@F@@@@ . ON A FN CALL OF 3 TO BUFROU (1ST OVF PAGE), IT WAS PZ )@@G@@@G@@@@ . DISCVERED THAT NO INTERSPERSED OR GLOBAL OVERFLOW WAS QA )@@G@@ @ @@@@ . DEFINED. OR: @F@@@@ . ON A FN CALLQB )@@G@@ OF 2 TO BUFROU (NEXT OVF PAGE), IT WAS @F@@@@ . DISCOVERED TQC )@@G@@HAT THE STARTING PAGE WAS A DATA PAGE @C@@@@ . OR NO MORE OQD )@@G@@VERFLOW PAGES TO RETURN.@[@@@@ . @[@@@@ . @E@@@@ LA,U QE )@@G@@ A0,DMSLEV5 . LEVEL 5 SWITCH TO A0@E@@@@ TNZ A0 QF )@@G@@ . $T DMSLEV5 SET @E@@@@ SLJ RER073 QG )@@G@@ . $A NO,RER073 YES @E@@@@ LX,U X10,BUFPKT QH )@@G@@ . ADDR OF BUFPKT @E@@@@ LA,H2 A0,0,X10 . $PQI )@@G@@ OLD FN CODE @G@@@@ SA,H1 A0,3,X10 . $P SET 2QJ )@@G@@ND PACKET CALL SWITCH @G@@@@ LA,U A0,7 . $PQK )@@G@@ FN CODE 7 (NEXT DATA PAGE) @E@@@@ SA,H2 A0,0,X10 QL )@@G@@ . FN CODE TO BUFPKT @G@@@@ SA,H2 A0,3,X10 . $PQM )@@G@@ SET BFERSW( H2 OF 3RD WRD) @H@@@@ . L$SNAP 'LV5GT2',0,8,BUFQN )@@G@@PKT . @D@@@@ J BUFRQO )@@G@@F7 . $J BUFRF7 @[@@@@ . @[@@@@ . @[@@@@ . @A@@@@QP )@@G@@BUFRF5 . FUNCTION CODE 5 FOR BUFROU @[@@@@ . @[@@@@ . @E@@@@ QQ )@@G@@ L,H2 A7,1,X10 . $P PAGE NUMBER TO A7@E@@@@ L,QR )@@G@@T1 A8,1,X10 . $P AREA CODE TO A8 @G@@@@ L,H2 QS )@@G@@ X3,2,X10 . $P POINTER TO ARE ENT IN Z2 @ @@@@ J QT )@@G@@ GETPGE @[@@@@ . @[@@@@ . @]@@@@BUFRF8 . @[@@@@ . QU )@@G@@@[@@@@ . @B@@@@ . FUNCTION CODE IS 8, FLUSH BUFFERS OUT @[@@@@ . QV )@@G@@@F@@@@ L X5,BFIADD . $P ADDRESS OF BUFFER TABLE TO X5 QW )@@G@@@E@@@@ L,U A15,NUMBLK . $P # OF BLOCKS TO A15 @E@@@@QX )@@G@@ AN,U A15,1 . $P A15 WILL CONTROL LOOP @ @@@@ QY )@@G@@ TG,U A15,0 @^@@@@ J $+2 @ @@@@ SLQZ )@@G@@J RER074 @]@@@@FLSHL1 . @E@@@@ TNZ,T1 0,X5 RA )@@G@@. $ IS BLOCK ENTRY FREE @C@@@@ J FLSGT1 . $ YERB )@@G@@S IGNORE IT @C@@@@ . WRITE BLOCK OUT , X5 POINTS TO BLOCK ENTRY @E@@@@RC )@@G@@ . MAY WANT TO CHECK IF ANY OF THE PAGES HAS BEEN MODIFIED @E@@@@ RD )@@G@@ . PREPARE TO WRITE BLOCK OUT @G@@@@ L,RE )@@G@@H2 X6,0,X5 . $P ADDRESS OF FIRST WORD IN BLOCK TO X6 @F@@@@ RF )@@G@@ LXI,H1 X6,2,X6 . $P X6 WILL INDEX THROUGH PAGES @D@@@@ RG )@@G@@ L,U A0,BLSIZE . $P BLOCK SIZE TO A0 @E@@@@ AN,U RH )@@G@@ A0,1 . $P A0 WILL CONTROL LOOP @F@@@@FLSHL2 SZ 0,*XRI )@@G@@6 . $P ZERO CHECKSUM WORD @G@@@@ JGD A0,FRJ )@@G@@LSHL2 . $T ALL PAGES IN BLOCK HANDLED @E@@@@ RK )@@G@@ . $A NO,FLSHL2 YES @D@@@@ L,T1 A1,0RL )@@G@@,X5 . $P AREA CODE TO A1 @E@@@@ L,U X10,C3 . $P ARM )@@G@@DDRESS OF C3 TO X10 @E@@@@ LMJ X11,TABSE1 . $W SEARCHRN )@@G@@ C3 FOR AREA ENTRY@^@@@@ TZ A2 @ @@@@ SLJ RO )@@G@@ RER075 @E@@@@ DL A1,1,A0 . $P AREA NAME TO A1,A2 RP )@@G@@ @E@@@@ L,U A3,010 . $P FUNCTION CODE TO A3 RQ )@@G@@@G@@@@ L,U X10,DBPPKT . $P ADDRESS OF DATA BASE PACKET TORR )@@G@@ X10 @G@@@@ S,S2 A3,3,X10 . $P FUNCTION CODE TO DATA BASRS )@@G@@E PACKET @E@@@@ DS A1,DBPPKT . $P AREA NAME TO PACKETRT )@@G@@ @E@@@@ L,H2 A4,1,X5 . $P UPPER PAGE NUMBR TO A4 RU )@@G@@@E@@@@ AN,H1 A4,1,X5 . $P SUBTRACT LOWER PAGE LIMIT@D@@@@RV )@@G@@ A,U A4,1 . $P PAGE COUNT TO A4 @E@@@@ S,RW )@@G@@H1 A4,7,X10 . $P PAGE COUNT TO PACKET @E@@@@ L,H2 RX )@@G@@ A0,0,X5 . $P BUFFER ADDRESS TO A0 @E@@@@ S,H2 A0,7RY )@@G@@,X10 . $P BUFFER ADDRESS TO PACKET @E@@@@ MSI,H1 A4,2,A0 RZ )@@G@@ . $P BUFFER SIZE TO A4@E@@@@ S,H1 A4,8,X10 . $P BSA )@@G@@UFFER LENGTH TO PACKET @E@@@@ L,H1 A5,1,X5 . $P LOWER PSB )@@G@@AGE # TO A5 @E@@@@ S,H2 A5,8,X10 . $P STARTING PAGESC )@@G@@ TO PACKET @E@@@@ LMJ X11,DB$AM . $W ISSUE WRITE OF BLOCSD )@@G@@K @D@@@@ TZ,S1 DBPPKT+3 . $T SUCCESSFUL RETURN @C@@@@SE )@@G@@ J BWSTAT . $A NO,BWSTAT YES@E@@@@FLSGT1 A,U SF )@@G@@ X5,2 . $P POINT TO NEXT BLOCK @C@@@@ JGD A15,SG )@@G@@FLSHL1 . $T ARE WE DONE @C@@@@ . $A NO,FLSHSH )@@G@@L1 YES@E@@@@ J BUFEX0 . $E EXIT SUCCESSFUL RETURN SI )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @C@@@@BUFRF7 . FUNCTION CODE 7, GET SJ )@@G@@NEXT DATA PAGE @C@@@@ L,H2 A7,1,X10 . $P PAGE # TO A7 SK )@@G@@@H@@@@ TZ STDWRAP . $P SET STDWRAP TO PGE # IFSL )@@G@@ NOT SET @^@@@@ J $+2 @B@@@@ SA A7,SSM )@@G@@TDWRAP . @G@@@@ A,U A7,1 . $P INCREMENT PAGSN )@@G@@E SPECIFIED IN PACKET @C@@@@ J BUFR11 . $J BUFR11 SO )@@G@@ @G@@@@BUFRF6 . FUNCTION CODE 6, GET FIRST DATA PAGE WITHIN RANGE SSP )@@G@@PACIFIED @G@@@@ L,H2 X3,2,X10 . $P POINTER TO AREA ENTSQ )@@G@@RY IN Z2 TO X3 @E@@@@ L A7,1,X3 . $P FIRST PAGE INSR )@@G@@ RANGE TO A7@C@@@@ J BUFR11 . $J BUFR11 @D@@@@SS )@@G@@BEMPT1 . BUFFER IS EMPTY, INITIALIZE BUFFER TABLE @A@@@@ . THEST )@@G@@N READ FIRST BLOCK IN @F@@@@ L X8,BUFADD . $P ADDRESSSU )@@G@@ OF DATA BUFFER TO X8 @F@@@@ L X9,BFIADD . $P ADDRESSSV )@@G@@ OF BUFFER TABLE TO X9 @G@@@@ L,U A0,NUMBLK . $P # OF BLSW )@@G@@OCKS IN BUFFER TO A0 (FIXED) @E@@@@ AN,U A0,1 . $P ASX )@@G@@0 WILL CONTROL LOOP @^@@@@ LXI,U X9,2@G@@@@BUFLP4 S,SY )@@G@@H2 X8,0,*X9 . $P ADDRESS OF BUFFER TO BLOCK ENTRY @B@@@@ SZ )@@G@@ LA A11,MAXPSIZE . @G@@@@ MSI,U A11,BLSIZETA )@@G@@ . MULTIPLY MAXPSIZE BY BLOCK SIZE @E@@@@ AX X8,ATB )@@G@@11 . POINT TO NEXT BLOCK @G@@@@ JGD A0,BUFLP4 TC )@@G@@. $T ARE WE DONE WITH ALL BUFFER ENTRIES @D@@@@ TD )@@G@@ . $A NO,BUFLP4 YES @E@@@@ J BPNIBF . $J BTE )@@G@@PNIBF GO GET BLOCK IN @C@@@@BWSTAT . STATUS ON WRITE DIFFERENT THAN ZETF )@@G@@RO @ @@@@ SLJ RER076 @C@@@@BRSTAT . STATUS ON READ TG )@@G@@DIFFERENT THAN ZERO @ @@@@ SLJ RER077 @[@@@@ . TH )@@G@@@C@@@@BUPFND . PAGE REQUIRED IS WITHIN BUFFER LIMIT @B@@@@ . UTI )@@G@@PDATE CURRENCY INDICATORS @G@@@@ S A7,CURPGE . $P STJ )@@G@@TORE PAGE # IN CURRENT PAGE # @G@@@@ S A8,CURARE TK )@@G@@. $P STORE AREA # IN CURRENT AREA # @G@@@@ L A1,ZTL )@@G@@2AREA . ADDRESS OF Z2AREA ENTRY TO A1 @F@@@@ TZ TM )@@G@@ STNRSW . $T STORE NEAR SWITCH SET @D@@@@ J TN )@@G@@ BLGT1 . $J BLGT1 @I@@@@ S,H2 A7,3,A1 TO )@@G@@ . $P STORE CURRENT PAGE IN Z2 AREA ENTRY @C@@@@BLCON2 L TP )@@G@@ A0,A7 . $P PAGE # TO A0 @F@@@@ AN,H1 A0,1,X4 TQ )@@G@@$P SUBTRACT FIRST PAGE # IN BLOCK @G@@@@ S A0,RELPGE TR )@@G@@. $P MAKE RELATIVE PAGE # CURRENT (RELPGE)@E@@@@ L,H2 A1,0TS )@@G@@,X4 . $P ADDRESS OF BLOCK TO A1 @H@@@@ S A1,CURBLK TT )@@G@@ . $P MAKE ADDRESS OF BLOCK CURRENT (CURBLK) @F@@@@ MSI,H1 TU )@@G@@ A0,2,A1 . MULTIPLY BY PAGE SIZE @E@@@@ A TV )@@G@@ A1,A0 . $P PAGE ADDRESS TO A1 @E@@@@ S A1,CTW )@@G@@URADD . $P MAKE PAGE ADDRESS CURRENT@C@@@@ J BUFEX0 TX )@@G@@. $J BUFEX0 @]@@@@BLGT1 . @G@@@@ S,H1 A7,3,A1 TY )@@G@@ . $P UPDATE STORE NEAR PAGE IN Z2@D@@@@ J BLCOTZ )@@G@@N2 . $J BLCON2 @[@@@@ . @D@@@@BUFEX0 . EXIT WITH STATUA )@@G@@US EQUAL 0 (NORMAL RETURN) @^@@@@ L,U A0,0@A@@@@ UB )@@G@@ S,H1 A0,BUFPKT @ @@@@ J BUFEXT @E@@@@UC )@@G@@BUFEX1 . EXIT WITH STATUS=1, X10 POINTS TO PACKET @^@@@@ UD )@@G@@ L,U A0,1@A@@@@ S,H1 A0,BUFPKT @ @@@@ UE )@@G@@ J BUFEXT @A@@@@BUFEX2 . EXIT WITH STATUS ERROR = 2@^@@@@UF )@@G@@ L,U A0,2@A@@@@ S,H1 A0,BUFPKT @B@@@@UG )@@G@@ E$DIT EDPKT . @B@@@@ E$COPY 36,MUH )@@G@@SGSPCE . @B@@@@ E$DECV CURREC . @A@@@@UI )@@G@@ P$RINT (PF1 1,14,PRINT)@ @@@@ J BUFEXT UJ )@@G@@@A@@@@BUFEX3 . EXIT WITH STATUS ERROR = 3@^@@@@ L,U A0,3UK )@@G@@@A@@@@ S,H1 A0,BUFPKT @ @@@@ J BUFEUL )@@G@@XT @[@@@@ . @A@@@@BUFEX4 . EXIT WITH STATUS ERROR = 4@B@@@@ UM )@@G@@ L,U A0,4 . @B@@@@ S,H1 A0,BUFPKT UN )@@G@@ . @B@@@@ J BUFEXT . @]@@@@BUFEXTUO )@@G@@ . @[@@@@ . @^@@@@ . RESTORE REGISTERS @ @@@@ LR,U UP )@@G@@ R1,25 @A@@@@ LX X1,(1,SAVER1) @ @@@@ LXUQ )@@G@@ X2,(1,3) @E@@@@ BT X2,0,*X1 . $P RESTORE REGISUR )@@G@@TERS X3-A15 @C@@@@ LR R1,RSAVE1 . $P RESTORE R1 @C@@@@US )@@G@@ L X1,XSAVE1 . $P RESTORE X1 @C@@@@ L UT )@@G@@ X2,XSAVE1+1 . $P RESTORE X2 @B@@@@ J *BUFRET . $E EUU )@@G@@XIT @[@@@@ . @[@@@@ . @F@@@@ . SUBROUTINE TO SEARCH MERGE TABLE UV )@@G@@TABLE FOR SMALLEST PGE NUM @F@@@@ . UPON FINDING AN ENTRY, A0 WILL POUW )@@G@@INT TO ABS LOCATION OF ENT @F@@@@ . AND S1 OF FIRST WORD WILL BE MARKUX )@@G@@ED BY 07 TO INDICATE THAT @F@@@@ . ONCE AN ENTRY HAS BEEN FOUND, IT UY )@@G@@WILL NOT BE CHOSEN AGAIN. @D@@@@ . UPON RETURN, A2 HAS RETURN CODE 0UZ )@@G@@ IF SUCCESSFUL. @B@@@@ . REGISTERS USED: A0, A2, A11, A12, A13 @[@@@@VA )@@G@@ . @[@@@@ . @B@@@@MRGSML + 0 . @B@@@@VB )@@G@@ L,U A11,0377777 . @H@@@@ L,H2 A2,MVC )@@G@@RGNUM . $P # OF ENTRIES IN MERGE TAB TO A2 @E@@@@ ANVD )@@G@@,U A2,1 . $P A2 TO CONTROL LOOP@G@@@@ L VE )@@G@@ A0,MRGADD . $P A0 TO INDEX THROUGH MERGE TAB@B@@@@ SZVF )@@G@@ A13 . @B@@@@MRGLP5 L,S1 A12,0,A0 VG )@@G@@ . @E@@@@ TE,U A12,07 . $T ENTRY MARKED VH )@@G@@@E@@@@ J MRGSM1 . $A NO,MRGSM1 YES @B@@@@VI )@@G@@MRCON1 A,U A0,2 . @E@@@@ JGD A2,MVJ )@@G@@RGLP5 . $T ANY MORE ENTRIES @G@@@@ TNZ A13 VK )@@G@@ . $T WERE THERE NON-MARKED ENTRIES@E@@@@ J MRCOVL )@@G@@N2 . $A NO,MRCON2 YES @B@@@@ L,U A12,07 VM )@@G@@ . @B@@@@ L A0,A13 . @G@@@@ VN )@@G@@ S,S1 A12,0,A0 . $P MARK RANGE ENT RETURNED @^@@@@VO )@@G@@ SZ A2 @ @@@@ J MRGEX1 @B@@@@MRCON2VP )@@G@@ L,U A2,1 . @]@@@@MRGEX1 . @A@@@@ J VQ )@@G@@*MRGSML . $E EXIT @]@@@@MRGSM1 . @F@@@@ TLE,H2 A11,VR )@@G@@0,A0 . $T NEW LOW RANGE L=(A11) @B@@@@ J MRCON1 . $AVS )@@G@@ NO,MRCON1 YES @F@@@@ L,H2 A11,0,A0 . $P LOWERVT )@@G@@ RANGE TO A11 @F@@@@ L A13,A0 . $P A13 PVU )@@G@@OINTS TO ENTRY @D@@@@ J MRCON1 . $J MRCONVV )@@G@@1 @[@@@@ . @G@@@@ . ROUTINE TO DECIDE WHETHER A PAGE IS DATA, OVEVW )@@G@@RFLOW OR GLOBAL OVERFLOW@ @@@@ . UPON ENTRY A7 HAS PAGE # @A@@@@ . VX )@@G@@ A8 HAS AREA CODE @E@@@@ . X3 HAS POINTER TO AREVY )@@G@@A ENTRY FROM Z2 TABLE @C@@@@ . UPON RETURN A2 HAS RETURN CODE 1= DATAVZ )@@G@@ PAGE @D@@@@ . 2= OVERFLOW PAGE @E@@@@WA )@@G@@ . 3= GLOBAL OVERFLOW @G@@@@ . WB )@@G@@ 4= PAGE OUT OUT OF RANGE OF AREA @D@@@@WC )@@G@@ . A3 HAS TOTAL ALLOCATED PAGES FOR AREA @F@@@@ . WD )@@G@@ A4 HAS HAS PAGES ALLOCATED MINUS GLOBAL OVRFLOW M @D@@@@ . WE )@@G@@ A5 HAS HAS SUM AS DEFINED FOR ROUTINE @]@@@@CHKPGE . @^@@@@ WF )@@G@@ + 0 @D@@@@ L A1,A8 . $P AREA CODE TO WG )@@G@@A1 @E@@@@ L,U X10,C3 . $P ADDRESS OF C3 TO X10 WH )@@G@@@E@@@@ LMJ X11,TABSE1 . $W SEARCH C3 FOR AREA ENTRY@H@@@@WI )@@G@@ . A0 WILL HAVE ADDRESS OF ENTRY UPON RETUWJ )@@G@@RN @E@@@@ TZ A2 . $T NORMAL RETURN FROM SEARCH WK )@@G@@@B@@@@ SLJ RER078 . $E EXIT @F@@@@ L WL )@@G@@ X8,A0 . $P X8 POINTS TO AREA ENTRY IN C3 @E@@@@ L,H1 WM )@@G@@ A3,4,X8 . $P ALLOCATED PAGES TO A3 @ @@@@ L,H1 A4,4WN )@@G@@,X8 @G@@@@ AN,H2 A4,5,X8 . $P ALLOC PGS MINUS AT END TOWO )@@G@@ A4 = M @D@@@@ SZ A5 . $P ZERO SUM IN A5 WP )@@G@@@E@@@@ TNZ,H2 4,X8 . $T IS THERE INTERSPERSED? @C@@@@WQ )@@G@@ J NIOVFL . $J NIOVFL @F@@@@CPGLP1 A,H2 WR )@@G@@ A5,4,X8 . $P ADD EVERY DATA PGES TO SUM @D@@@@ TNE WS )@@G@@ A4,A5 . $T IS SUM EQUAL M @C@@@@ J LSTDPG WT )@@G@@. $A YES,LSTDPG NO@E@@@@ TLE A4,A5 . $T SUM GREATER TWU )@@G@@HAN M @C@@@@ SLJ RER079 . $A YES,ERR NO @F@@@@WV )@@G@@ TLE A5,A7 . $T PAGE # LESS OR EQUAL TO SUM @^@@@@WW )@@G@@ J $+2 @C@@@@ J CHPEX1 . $A YES,CHPWX )@@G@@EX1 NO@G@@@@ A,H1 A5,5,X8 . $P ADD INTERSPERSED OVERFLOWWY )@@G@@ TO SUM INA5@D@@@@ TNE A5,A4 . $T IS SUM EQUAL M WZ )@@G@@@C@@@@ J LSTOVF . $A YES,LSTOVF NO@E@@@@ TLXA )@@G@@E A4,A5 . $T SUM GREATER THAN M @C@@@@ SLJ XB )@@G@@ RER080 . $A YES,ERR NO @F@@@@ TLE A5,A7 . $T PXC )@@G@@AGE # LESS OR EQUAL TO SUM @^@@@@ J $+2 @G@@@@ XD )@@G@@ J CHPEX2 . $J CHPEX2 PAGE IS AN OVERFLOW PAGE @C@@@@XE )@@G@@ J CPGLP1 . $J CPGLP1 @E@@@@NIOVFL TLE XF )@@G@@ A4,A7 . $T PAGE LESS OR EQUAL TO M @C@@@@ J $+2 XG )@@G@@ . $J NIOVF1 @F@@@@ J CHPEX1 . $J CHPEX1 XH )@@G@@PAGE IS A DATA PAGE @]@@@@NIOVF1 . @G@@@@ TLE A3,AXI )@@G@@7 . $T PAGE # LESS OR EQUAL ALLOCATED @G@@@@ J XJ )@@G@@ CHPEX4 . $J CHPEX4 PAGE OUT OF RANGE OF AREA @G@@@@ J XK )@@G@@ CHPEX3 . $J CHPEX3 PAGE IS GLOBAL OVERFLOW @]@@@@LSTDPGXL )@@G@@ . @F@@@@ TLE A5,A7 . $T PAGE # LESS OR EQUAL TO SXM )@@G@@UM @C@@@@ J NIOVF1 . $J NIOVF1 @F@@@@ XN )@@G@@ J CHPEX1 . $J CHPEX1 PAGE IS A DATA PAGE @]@@@@LSTOVFXO )@@G@@ . @F@@@@ TLE A5,A7 . $T PAGE # LESS OR EQUAL TO SXP )@@G@@UM @C@@@@ J NIOVF1 . $J NIOVF1 @G@@@@ XQ )@@G@@ J CHPEX2 . $J CHPEX2 PAGE IS AN OVERFLOW PAGE @[@@@@XR )@@G@@ . @E@@@@CHPEX1 L,U A2,1 . $P RETURN CODE 1 TO A2 XS )@@G@@@C@@@@ J CHPEXT . $J CHPEXT @E@@@@CHPEX2 L,XT )@@G@@U A2,2 . $P RETURN CODE 2 TO A2 @C@@@@ J XU )@@G@@ CHPEXT . $J CHPEXT @E@@@@CHPEX3 L,U A2,3 . $P RXV )@@G@@ETURN CODE 3 TO A2 @C@@@@ J CHPEXT . $J CHPEXT XW )@@G@@ @E@@@@CHPEX4 L,U A2,4 . $P RETURN CODE 4 TO A2 XX )@@G@@@C@@@@ J CHPEXT . $J CHPEXT @^@@@@CHPEXT XY )@@G@@ . @F@@@@ SA A5,OLDSUM . SAVE SUM FOR WXZ )@@G@@RAP AROUND @B@@@@ J *CHKPGE . $E EXIT @[@@@@ . YA )@@G@@@[@@@@ . @[@@@@ . @G@@@@ . SUBROUTINE TO TRANSFER A BLOCK FRDM LOCYB )@@G@@ATION POINTED TO BY X1 TO @E@@@@ . A LOCATION POINTED TO BY X2. LENGYC )@@G@@TH OF THE BLOCK IS IN R1@[@@@@ . @[@@@@ . @[@@@@ . @B@@@@PTRANSYD )@@G@@ S,H2 X11,RET5 . $H PTRANS @^@@@@ LXI,U X1,1 @D@@@@YE )@@G@@ LXI,U X2,1 . $P SET UP INDEXING @D@@@@ BT YF )@@G@@ X2,0,*X1 . $P PERFORM TRANSFER @B@@@@ J *RET5YG )@@G@@ . $E EXIT @[@@@@ . @[@@@@ . @[@@@@ . @E@@@@ . SUBROUTINYH )@@G@@E TO FIND THE MAXIMUM PAGE SIZE FOR AREAS @A@@@@ . SPECIFIED IN THYI )@@G@@E AREA COMMANDS. @ @@@@ . A0 WILL TRAVERSE C3 TABLE @A@@@@ . A1 WILL HYJ )@@G@@AVE MAXIMUM PAGE SIZE @ @@@@ . A2 USED FOR COMPARISON @[@@@@ . YK )@@G@@@[@@@@ . @C@@@@MXPGET + 0 . $H @H@@@@YL )@@G@@ TNZ,H1 C3 . MAKE SURE THAT C3 TABLE IS NOT EYM )@@G@@MPTY @B@@@@ SLJ RER078 . @G@@@@ SZYN )@@G@@ A1 . $P ZERO OUT MAX PAGE INITIALLY @E@@@@ YO )@@G@@ LA,H2 A0,C3 . $P C3 ADDRESS TO A0 @B@@@@ LAYP )@@G@@,H2 A4,C3 . @E@@@@ AA,H1 A4,C3 YQ )@@G@@ . # OF WORDS TO A4 @[@@@@ . @[@@@@ . @G@@@@MXPGLP1 LA,T1 YR )@@G@@ A2,3,A0 . $P PAGE SIZE OF FIRST AREA ENTRY@G@@@@ TGYS )@@G@@ A1,A2 . COMPARE PAGE SIZE WITH MAXIMUM @H@@@@ YT )@@G@@ J $+2 . $P IF BIGGER, MOVE CURRENT TO MAX YU )@@G@@@B@@@@ LA A1,A2 . @E@@@@ TNZ,T3 YV )@@G@@ 0,A0 . $T ARE WE DONE @E@@@@ J MXPGYW )@@G@@DON . $A YES,MXPGDON NO @F@@@@ AA,T3 A0,0,A0 YX )@@G@@ . $P POINT TO NEXT ENTRY @B@@@@ TG A0,A4 YY )@@G@@ . @B@@@@ SLJ RER068 . @D@@@@ YZ )@@G@@ J MXPGLP1 . $J MXPGLP1 @[@@@@ . @]@@@@MXPGDOZA )@@G@@N . @E@@@@ . SCANNED ALL AREAS ZB )@@G@@@I@@@@ TNZ A1 . MAKE SURE THAT MAX PAGE SIZC )@@G@@ZE NOT ZERO @B@@@@ SLJ RER068 . @F@@@@ZD )@@G@@ SA A1,MAXPSIZE . $P SAVE MAX PAGE SIZE @C@@@@ZE )@@G@@ J *MXPGET . $E EXIT @[@@@@ . @[@@@@ . ZF )@@G@@@[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @[@@@@ . @F@@@@ . SUBZG )@@G@@ROUTINE TO MCORE A BUFFER TO CONTAIN THE FOREIGN PAGE IN @D@@@@ . THEZH )@@G@@ CASE WHERE A FOREIGN RECORD IS ENCOUNTERED. @D@@@@ . THE BUFFER SIZEZI )@@G@@ WILL BE DETERMINED BY MAXPSIZE. @D@@@@ . WILL RETURN ADDRESS OF FOREZJ )@@G@@IGN PAGE BUFFER IN A3 @[@@@@ . @[@@@@ . @C@@@@FORMCORE + ZK )@@G@@ 0 . $H @D@@@@ DS A0,FORRSAVE ZL )@@G@@ .$P SAVE A0,A1 @B@@@@ P$RINT (PF1 1,9,MSGFOR) . @F@@@@ZM )@@G@@ LA A0,MAXPSIZE . $P # OF WORDS TO MCORE @B@@@@ZN )@@G@@ LA A1,LAST$D . @B@@@@ AA,U A1,1ZO )@@G@@ . @G@@@@ SA A1,FORBFAD . $P ADDR ZP )@@G@@OF NEW BUFFER TO FORBFAD@F@@@@ LA A3,A1 . $PZQ )@@G@@ ADDR OF NEW BUFFER @B@@@@ AA A0,LAST$D . ZR )@@G@@@E@@@@ SA A0,LAST$D . $P UPDATE LAST$D @B@@@@ZS )@@G@@ ER MCORE$ . @B@@@@ DL A0,FZT )@@G@@ORRSAVE . @C@@@@ J *FORMCORE . $E EXIT ZU )@@G@@@[@@@@$(2) @^@@@@Z2* + 0,0 @E@@@@MRGADD + 0 ZV )@@G@@ . ADDR OF MERGE TABLE @E@@@@RNGADD + 0 ZW )@@G@@ . ADDR OF RANGE TABLE @F@@@@RECADD + 0 ZX )@@G@@ . ADDR OF RECORD BUFFER @G@@@@BFIADD + 0 . TABLZY )@@G@@E FOR INDEXING INTO DATA BUFFER @G@@@@BUFADD RES 1 ZZ )@@G@@. ADDR OF DATA BUFFER TO STORE PAGES @E@@@@C4ADD + 0 AA )@@G@@ . ADDRESS OF C4 TABLE @F@@@@C4TBNM + 0 AB )@@G@@ . # OF ENTRIES IN OVERFLOW @D@@@@ AC )@@G@@ . RANGE TABLE @]@@@@MRGNUM . @E@@@@MRGARE RES 1 AD )@@G@@ . T1 IS AREA CODE @G@@@@ AE )@@G@@ . H2 IS # OF ENTRIES IN MERGE TAB @F@@@@OLDARE + 0 AF )@@G@@ . AREA CODE FROM DECOMPOSING DBP @E@@@@OLDPGE + 0 AG )@@G@@ . PAGE # FROM DECOMPOSING DBP @E@@@@OLDSLT + 0 AH )@@G@@. SLOT # FROM DECOMPOSING DBP @E@@@@OLDC3A + 0 . ADDRAI )@@G@@ OF AREA ENTRY IN C3 @G@@@@NEWARE + 0 . AREA CODE AJ )@@G@@WHERE RECORD IS TO BE LOADED @G@@@@NEWPGE + 0 . PAGEAK )@@G@@ # WHERE RECORD WILL BE RELOADED @E@@@@NEWSLT + 0 AL )@@G@@. SLOT # ASSIGNED TO RECORD @E@@@@NEWC3A + 0 . POINAM )@@G@@TER TO C3 ENTRY FOR AREA@G@@@@Z2ENT + 0 . POINTER TOAN )@@G@@ Z2 ENTRY FOR RECORD BEING REL@G@@@@Z2AREA + 0 . POINAO )@@G@@TER TO AREA ENTRY WITHIN Z2 ENTRY @[@@@@ . @G@@@@RELNUM* + AP )@@G@@ 0 . NUMBER OF RECORDS RELOADED @G@@@@RELSNUM* + AQ )@@G@@ 0 . # OF VIA SET RECS RELOADED @F@@@@RELCNUAR )@@G@@M* + 0 . # OF CALC RECS RELOADED @G@@@@RELDNUAS )@@G@@M* + 0 . # OF DIRECT RECS RELOADED @E@@@@AT )@@G@@CURARE + 0 . CURRENT AREA OF RELOAD @F@@@@CURRECAU )@@G@@ + 0 . CURRENT RECORD BEING RELOADED @G@@@@CURPGEAV )@@G@@ + 0 . CURRENT PAGE NUMBER BEING RELOADED @G@@@@AW )@@G@@CURBLK + 0 . ADDRESS OF BLOCK WHERE CURRENT PGE IS AX )@@G@@@E@@@@CURADD + 0 . ADDRESS OF CURRENT PAGE @G@@@@AY )@@G@@DESARE + 0 . DESTINATION AREA FOR RECORD AZ )@@G@@@G@@@@RELPGE + 0 . RELATIVE LOCATION OF PAGE WITHIN BBA )@@G@@LOCK @^@@@@NEWDBP + 0 @I@@@@FROMSW + 0 BB )@@G@@ . TO INDICATE IF FROM AREA WAS SPECIFIED @F@@@@STNARE + BC )@@G@@ 0 . STORE NEAR LOGIC AREA @F@@@@STNPGE + BD )@@G@@ 0 . STORE NEAR LOGIC PAGE @F@@@@STNRSW + BE )@@G@@ 0 . SW FOR STORE NEAR LOGIC @G@@@@ST7RAP + BF )@@G@@ 0 . STORE NEAR LOGIC FOR WRAP AROUND@^@@@@SPACSWBG )@@G@@ + 0 @G@@@@MAXPSIZE + 0 . WILL CONBH )@@G@@TAIN MAXIMUM PAGE SIZE @I@@@@MAXRSIZE + MXRSIZ . MABI )@@G@@XIMUM RECORD SIZE FOR REORGANIZATION @E@@@@BUFENT + 0 BJ )@@G@@ . # OF BLOCK ENTRIES IN BUFFER@H@@@@BUFPT1 + 0 BK )@@G@@. POINTER TO ENTRIES OF BUF INX TAB,INC BY 2 @I@@@@C4ENT + BL )@@G@@ 0 . WILL STORE THE ADDRESS OF LAST C4 ENTRY @H@@@@BM )@@G@@Z2AENT + 0 . SAVES LAST AREA ENTRY ADDRESS INBN )@@G@@ Z2 @E@@@@OWNARE + 0 . AREA OF OWNER BO )@@G@@@E@@@@OWNPGE + 0 . PAGE OF SET OWNER @F@@@@BP )@@G@@OWNRSW + 0 . SW FOR SET OWNER RECORD @F@@@@BQ )@@G@@ . BASE BUFFER (2 WRDS PER ENTRY) @G@@@@BR )@@G@@ . A0 WILL POINT TO AREA ENTRY IN C3 BS )@@G@@@F@@@@BUFPKT RES 4 . PKT FOR THE BUFFERING ROUTINE BT )@@G@@@G@@@@ . H1 IS STATUS, H2 IS FN CODBU )@@G@@E @H@@@@ . T1 IS AREA CODE, H2 BV )@@G@@IS PAGE NUMBER @G@@@@ . H2 IS Z2BW )@@G@@ AREA ENTRY ADDRESS @I@@@@ . H1BX )@@G@@ INDICATE 2ND CALL, INDICATE PGE TYPE @G@@@@BPKTSV RES 4 BY )@@G@@ . TO SAVE BUFPKT FOR EVERY RECORD @G@@@@DBPPKT RES BZ )@@G@@ 9 . PKT FOR THE DATA BASE ACCESS METHOD @H@@@@KFAPKT RECA )@@G@@S 46 . PACKET FOR KEY FILE ACCESS METHOD @[@@@@CB )@@G@@$(4) @D@@@@RSAVE1 RES 1 . TO SAVE R1 REGISTER @E@@@@CC )@@G@@XSAVE1 RES 2 . TO SAVE X1 AND X2 REGISTERS @E@@@@SAVER1CD )@@G@@ RES 25 . TO SAVE X3-A15 REGISTERS @G@@@@FORRSAVE RECE )@@G@@S 2 . TO SAVE REGISTERS FOR FORMCORE @G@@@@DFIEOFCF )@@G@@ + 0777777777777 . END OF FILE RETURN CODE FROM D-FILE @G@@@@CG )@@G@@CALMSK + 040 . MASK FOR RECORD DESCRIPTION TO TELL IF CH )@@G@@@C@@@@ . RECORD IS CALC @^@@@@CALPR2 RECI )@@G@@S 3 @[@@@@$(8) @[@@@@ . @G@@@@CLPGE* + 0 CJ )@@G@@. $ PAGE # RETURNED BY CALC ROUTINE @G@@@@CLCHNE* + 0 CK )@@G@@ . CALC CHAIN # RETURNED BY CALC ROUTINE @G@@@@CLCHDR* + CL )@@G@@ 0 . POINTER TO CALC CHAIN HEADER CONSIDERED @E@@@@RLRCAD* + CM )@@G@@ 0 . ADDRESS OF RELOADED REC @G@@@@CHDREL* + CN )@@G@@ 0 . RELATIVE LOC OF CALC HDR WITHIN PGE @G@@@@CLCHAD* + CO )@@G@@ 0 . ADDRESS OF CALC CHAIN HEADER RETURNED @G@@@@RELATVCP )@@G@@* + 0 . RELATIVE LOCATION OF CALC PTR JUST RELOA@G@@@@CQ )@@G@@PPGADD* + 0 . ADDRESS TO PRIMARY PAGE IN CASE OF CALC CR )@@G@@@G@@@@PPGNUM* + 0 . PRIMARY PAGE NUMBER IN CASE OF CALCS )@@G@@C @F@@@@FORPGE* + 0 . # OF PAGE WHERE FOREIGN REC CT )@@G@@IS @E@@@@FORREC* + 0 . FOREIGN RECORD NUMBER CU )@@G@@@D@@@@FORSLT* + 0 . SLOT ON FOREIGN PGE @D@@@@CLSAVPCV )@@G@@* + 0 . TO SAVE CALC POINTER @F@@@@CLNXTP* + CW )@@G@@ 0 . NEXT POINTER FOUND ON CALC CHAIN @F@@@@CLCARE* + CX )@@G@@ 0 . AREA POINTED TO BY CALC POINTER @F@@@@CLCPGE* + CY )@@G@@ 0 . PAGE POINTED TO BY CALC POINTER @F@@@@CLCSLT* + CZ )@@G@@ 0 . SLOT POINTED TO BY CALC POINTER @C@@@@CLCC3A* + DA )@@G@@ 0 . C3 TABLE ENTRY @G@@@@FORRSW* + 0 . SWITDB )@@G@@CH WILL INDICATE THAT A FOREIGN REC @G@@@@ DC )@@G@@. HAS BEEN ENCOUNTERED, CLSAVP UPDATED @E@@@@CENDSW* + 0 DD )@@G@@ . END OF CALC CHAIN SWITCH @E@@@@HEZRSW* + 0 DE )@@G@@. HEADER EQUAL ZERO SWITCH @G@@@@CHOVSW + 0 DF )@@G@@ . CLC HDR POINTS DIRECTLY TO OV @D@@@@WRAPSW* + 0 DG )@@G@@. WRAP AROUND SWITCH @C@@@@ARSCAN* + 0 . AREA SCAN DH )@@G@@SWITCH@F@@@@OLDSUM* + 0 . SUM SAVED HERE FOR WRAP AROUDI )@@G@@ND @D@@@@LSTPGE* + 0 . NUMBER OF LAST PGE @G@@@@DJ )@@G@@LSRADD* + 0 . ADDRESS OF LAST CALC RECORD ON CHAIN DK )@@G@@@G@@@@LSRREL* + 0 . RELATIVE LOC OF PTR IN LAST CALC RDL )@@G@@ECORD @G@@@@LSRSLT* + 0 . SLOT OF LAST CALC RECORD IN DM )@@G@@CHAIN @F@@@@STDWRAP + 0 . FOR DATA PAGE DN )@@G@@WRAPAROUND @G@@@@STOWRAP + 0 . FOR OVERFLOW PDO )@@G@@AGE WRAPAROUND @G@@@@STGWRAP + 0 . FOR GLOBDP )@@G@@AL OVERFLOW WRAPAROUND @H@@@@STIWRAP + 0 . FODQ )@@G@@R INTERSPERSED OVERFLOW WRAPAROUND @G@@@@RELWAR + 0 DR )@@G@@ . TO INDICATE ERROR POSSIBILITY @G@@@@FORBFAD + 0 DS )@@G@@ . ADDR OF FOREIGN PAGE BUFFER @E@@@@PPTMSK* + 000DT )@@G@@0010000000 . PRIMARY PAGE INDICATOR MASK @F@@@@RFPMSK* + 02000000DU )@@G@@00000 . RECORD IS FOREIGN TO THIS PAGE @G@@@@SHPMSK* + 01000000DV )@@G@@00000 . SECOND HALF OF SLOT IS PAGE NUMBER @]@@@@$(10) @B@@@@DW )@@G@@MSGNUM ' RECORDS RELOADED' . @^@@@@MSGVIA ' VIA SET, ' DX )@@G@@@^@@@@MSGCAL ' CALC AND ' @^@@@@MSGDIR ' DIRECT' @A@@@@MSGNPGDY )@@G@@ 'NO PAGE RANGE, RECORD ' @^@@@@MSGARE ' AREA ' @E@@@@MSGCLCDZ )@@G@@ ' PGE# RETURNED BY CALC IS 0, RECORD CODE ' @E@@@@MSGCL1 'CEA )@@G@@ANNOT RELOAD IN AREA RETURNED BY CALC, RECORD' @C@@@@MSGSPCE 'NO MOREEB )@@G@@ SPACE AVAILABLE, RECORD: ' @F@@@@MSGFOR 'FOREIGN RECORD ON CALC CHEC )@@G@@AIN, WILL MCORE FOR BUFFER' @C@@@@MSGSRCH 'C TABLE SEARCH FAILURE FOED )@@G@@R CODE: ' @^@@@@MSGC11 ' AREA ' @C@@@@MSGDR1 'WARNING: DIREEE )@@G@@CT RECORD NUMBER ' @A@@@@MSGDR2 ' COLLISION, AREA ' @^@@@@EF )@@G@@MSGDR3 ', PAGE ' @A@@@@MSGDR4 'RECORD NUMBER OF SLOT ' @A@@@@EG )@@G@@MSGDR5 ' FOR RECORD CODE ' @ @@@@MSGDR6 ' CHANGED FROM ' EH )@@G@@@#@@@@MSGDR7 ' TO ' @E@@@@MSGAST '*******************************EI )@@G@@***********' @E@@@@MSGRWA '* WARNING: POSSIBLE RELOAD PROCESS EREJ )@@G@@ROR *' @]@@@@ . @]@@@@ . @]@@@@$(6) @G@@@@EK )@@G@@DIRSW + 0 . SEE EQUF BELOW, RESET AFTER REL RECEL )@@G@@@G@@@@DIRSW1 EQUF DIRSW,,S1 . TO INDICATE THAT RECORD IS DIEM )@@G@@RECT @G@@@@DIRSW2 EQUF DIRSW,,S2 . TO INDICATE DIRECT CONTEN )@@G@@ROL RECORD @G@@@@DIRWAR EQUF DIRSW,,S3 . TO INDICATE THAT EO )@@G@@WARNING MUST BE @I@@@@ . ISSUED TO UEP )@@G@@SER ON RECORD # COLLISION @G@@@@DIRCNTL + 0 EQ )@@G@@ . HOLD INFO FROM DIRECT CONTROL REC @E@@@@ ER )@@G@@ . H1 WILL HAVE PAGE NUM @G@@@@ ES )@@G@@ . H2 WILL HAVE RECORD NUMBER @G@@@@ ET )@@G@@ . RESET AFTER RELOADING DIRECT RECORD@G@@@@NEWRNU + EU )@@G@@ 0 . NEW RECORD NUMBER FOR OLD SLOT @]@@@@ . EV )@@G@@@]@@@@ . @G@@@@Z1ENSW + 0 . TO STORE RET CODEW )@@G@@E UPON SEARCH OF Z1 @E@@@@RET1 + 0 . RETURN ADDEX )@@G@@RESS OF RNUSLT @^@@@@RET2 + 0 @^@@@@RET3 + EY )@@G@@ 0 @^@@@@RET4 + 0 @^@@@@RET5 + 0 @^@@@@EZ )@@G@@RET6 + 0 @^@@@@RET7 + 0 @^@@@@BUFRET + FA )@@G@@ 0 @E@@@@FSLTVA + 0 . POINTER TO FIRST SLOT OFB )@@G@@N PAGE@E@@@@RNLARG + 0 . LARGEST RECORD NUMBER FOUND FC )@@G@@@E@@@@RSPSA1 RES 1 . SAVE FOR FREE WRDS IN RSPACE @G@@@@FD )@@G@@RSPSA2 RES 2 . SAVE FOR REC LNGTH, FILL IN RSPACE FE )@@G@@@^@@@@RNUSA1 RES 1 @A@@@@SIUMSK + 0400000000000 FF )@@G@@@G@@@@Z1CPAR + 0231000000000 . PARAMETER FOR WRITING Z1 TFG )@@G@@ABLE @G@@@@Z2CPAR + 0241000000000 . PARAMETER FOR WRITINFH )@@G@@G Z2 TABLE @E@@@@RETURN + 0 . RETURN TO MAINFI )@@G@@ PROG @]@@@@ END___ 0 . RETURN TO MAIN PROG FJ )@@G@@@]@@@@ END___ *[@@@@*SDFF*@#@@@@ AXR$ @#@@@@$(4) FK )@@G@@ LIT @]@@@@$(1). @[@@@@. @^@@@@. * COMPACT * FL )@@G@@@[@@@@. @E@@@@. THISROUTINE COMPACTS PAGES AS THEY ARE LISTEFM )@@G@@D @F@@@@. IN DPGCNT* & DPGTBL*AND WRITE THEM BACK TO THE DFN )@@G@@. B. @F@@@@. IN OVFCNT* & OVFTBL*AND WRITE THEM BACK TO THE DFO )@@G@@. B. @[@@@@. @^@@@@. ENTERED: @A@@@@. FP )@@G@@ SLJ COMPACT @C@@@@COMPACT* +0 . $H FQ )@@G@@@E@@@@ LA,H1 A0,DPGCNT . $P GET PAGE COUNT @B@@@@FR )@@G@@ SA A0,COUNT . @B@@@@COMPLP1. FS )@@G@@ $H @F@@@@ LA A0,COUNT . $P GET PFT )@@G@@AGE COUNT LEFT @D@@@@ JZ A0,COMPOVF . $J NONE FU )@@G@@LEFT @C@@@@ ANA,U A0,1 . $P -1 @D@@@@ FV )@@G@@ SA A0,COUNT . $P SAVE IT @E@@@@ LX,H2 FW )@@G@@ X9,DPGTBL,A0 . $P GET PAGE ADDR @D@@@@ LMJ X11,FX )@@G@@PACKPG . $W PACK IT @C@@@@ J COMPLP1 FY )@@G@@ . $J NEXT @B@@@@COMPOVF. $H @E@@@@ FZ )@@G@@ LA,H1 A0,OVFCNT . $P GET PAGE COUNT @B@@@@ SAGA )@@G@@ A0,COUNT . @B@@@@COMPLP2. GB )@@G@@ $H @F@@@@ LA A0,COUNT . $P GET PAGE COUNT LEGC )@@G@@FT @D@@@@ JZ A0,WRTPGE . $J NONE LEFT @C@@@@GD )@@G@@ ANA,U A0,1 . $P -1 @D@@@@ SA GE )@@G@@ A0,COUNT . $P SAVE IT @E@@@@ MSI,U A0,2 GF )@@G@@ . $P COMPUTE TBL ADDR @E@@@@ LX,H2 X9,OVFTBL+1,A0 GG )@@G@@ . $P GET PAGE ADDR @D@@@@ LMJ X11,PACKPG . $WGH )@@G@@ PACK IT @C@@@@ J COMPLP2 . $J NEXT @B@@@@GI )@@G@@WRTPGE. $H @[@@@@. @F@@@@. * GJ )@@G@@WRTPGE * A SUBROUTINE TO WRITE ALL PAGES WHICH ARE @B@@@@. GK )@@G@@ DELETED & COMPACTED @[@@@@. @[@@@@. @E@@@@ LAGL )@@G@@,U A0,010 . $P SET TO WRITE @B@@@@ SA,S2 GM )@@G@@ A0,DPKT1 . @G@@@@ LX,U X10,DLTPKT . $PGN )@@G@@ WRITE FIRST CONTIGOUT PGE'S @B@@@@ LMJ X11,DB$AM GO )@@G@@ . @ @@@@ TZ,S1 DPKT1 @A@@@@ LMJ X11,GP )@@G@@IOERR @E@@@@ LA,U A0,010 . $P SET TO WRITGQ )@@G@@E @B@@@@ SA,S2 A0,OVFPKT1 . @E@@@@ LAGR )@@G@@ A0,OVFCNT . $P GET OVF CNT @D@@@@ SA GS )@@G@@ A0,COUNT . $P SAVE IT @B@@@@WRTOVFLP. GT )@@G@@ $H @E@@@@ LA A0,COUNT . $P GET PAGES LGU )@@G@@EFT @D@@@@ JZ A0,*COMPACT . $J RETURN @C@@@@GV )@@G@@ ANA,U A0,1 . -1 @B@@@@ SA GW )@@G@@ A0,COUNT . @E@@@@ MSI,U A0,2 . $PGX )@@G@@ COMPUTE TBL ADDR @E@@@@ LA,H2 A1,OVFTBL,A0 . $P GET PGY )@@G@@AGE NUMBER @B@@@@ SA,H2 A1,OVFPKT3 . @E@@@@ GZ )@@G@@ LA A1,OVFTBL+1,A0 . $P GET BUF ADDR @B@@@@ SAHA )@@G@@,H2 A1,OVFPKT2 . @E@@@@ LA,H1 A0,OVFTBL,A0 HB )@@G@@ . $P GET AREA CODE @F@@@@ SLJ GETASIZE . $PHC )@@G@@ GET PAGE SIZE,NAME @C@@@@ TNZ A0 . $THD )@@G@@ OK @B@@@@ ER ERR$ . @C@@@@ SAHE )@@G@@,H1 A0,OVFPKT3 . $P @E@@@@ DS A1,OVFPKT HF )@@G@@ . $P SAVE AREA NAME @E@@@@ LX,U X10,OVFPKT HG )@@G@@ . $P GET I/O PKT @B@@@@ LMJ X11,DB$AM . HH )@@G@@@C@@@@ TZ,S1 OVFPKT1 . $T OK @B@@@@ LMHI )@@G@@J X11,IOERR . @ @@@@ J WRTOVFLP @]@@@@HJ )@@G@@$(4). @]@@@@COUNT +0@#@@@@ END ___^@)^@)^@)^@)^@)HK )@@G@@^@) 0) *1^@)@E@@_@^@)^@)^@)^@)^@)ET[^@)^@)^@)^@)CC0 -#D9PD1O^@)^@)^@)^@)HL )@@G@@*[@@@@*SDFF*@#@@@@ AXR$ @#@@@@$(4) LIT. @]@@@@$(1). HM )@@G@@ @[@@@@. @G@@@@. * DECALC * TO REMOVE A CALC RECORD HN )@@G@@FROM ITS CALC BUCKET @[@@@@. @A@@@@. ENTERED: SLJ DECALHO )@@G@@C @E@@@@. (IN) DBP1* = CURRENT SLOT BEEN DELETED HP )@@G@@@F@@@@. DBP2* = CALC CHAIN LINK TO NXT CALC RECORD HQ )@@G@@@C@@@@. X8 POINT TO CURRENT PAGE @ @@@@PGSIZE EQHR )@@G@@UF 2,X8,H1 @ @@@@UNUSED EQUF 2,X8,H2 @ @@@@SLOTS EQHS )@@G@@UF 3,X8,H1 @ @@@@LASTVAC EQUF 3,X8,H2 @ @@@@PGTYPE EQHT )@@G@@UF 1,X8,S2 @ @@@@CALCNUM EQUF 6,X8,H1 @ @@@@PGNUM EQHU )@@G@@UF 1,X8,H2 @ @@@@ACODE EQUF 1,X8,T1 @ @@@@RCDTYPE EQHV )@@G@@UF 0,X7,T1 @ @@@@RCDDESC EQUF 0,X7,S3 @ @@@@RCDLENG EQHW )@@G@@UF 0,X7,H2 @ @@@@SLTDESC EQUF 0,X6,S1 @ @@@@DISP EQHX )@@G@@UF 0,X6,H2 @C@@@@DECALC* +0 . $H HY )@@G@@@B@@@@ LA A0,(1,X6) . @E@@@@ SA HZ )@@G@@ A0,CALCSW . $P SET CALC SW @B@@@@ LA A1,(IA )@@G@@1,SAVEX) . @E@@@@ LR,U R1,6 . $P SAVE IB )@@G@@X6 - X11 @B@@@@ BT A1,0,*A0 . @G@@@@ IC )@@G@@ SZ SWCCH . $P RESET CALC CHAIN HEADER SW @B@@@@ID )@@G@@ LA A0,DBP2 . @]@@@@DECLP1. @F@@@@ IE )@@G@@ SA A0,PKTKEY . $P SAVE IT IN KF$AM PKT @F@@@@ IF )@@G@@ SLJ CHASE . $P CHASE NXT CALC RECORD @D@@@@ IG )@@G@@ TNZ X7 . $T IS IT CCH @E@@@@ J IH )@@G@@ NODLT1 . $A YES,NODLT1 NO @I@@@@ LR,T1 R1,DII )@@G@@LTC10 . $T CHK IF RECORD TYPE SHOULD BE DELETED @G@@@@ IJ )@@G@@ LX X1,(1,DLTC10) . $P DELETED RECORD TYPES TBL @B@@@@IK )@@G@@ LA A0,RCDTYPE . @G@@@@ SE,T3 A0,0IL )@@G@@,*X1 . $T SHOULD THIS RECORD BE DELETED@E@@@@ J IM )@@G@@ NODLT2 . $A YES NO,NODLT2 @D@@@@ LA A0,PIN )@@G@@KTKEY . $P GET DBP @E@@@@ SLJ CHKEY IO )@@G@@ . $P CHK DBP IN K$FILE@D@@@@ TZ KEYOK . $TIP )@@G@@ STATUS OK @E@@@@ J NODLT2 . $A YES NO,NODLIQ )@@G@@T2 @G@@@@ LA,U A0,1 . $P COMPUTE DLT RECORIR )@@G@@D CNT @B@@@@ AA A0,DLTCNT . @B@@@@ IS )@@G@@ SA A0,DLTCNT . @E@@@@ LA A0,(077776IT )@@G@@7777777). $P MARKING PROCESS @ @@@@ AND A0,0,X7 @ @@@@IU )@@G@@ SA A1,0,X7 @F@@@@ LA A0,RCDLENG IV )@@G@@ . $P UPDATE UNUSED WRDS @B@@@@ AA A0,UNUSED IW )@@G@@ . @D@@@@ SA A0,UNUSED . $P SAVE IT @B@@@@IX )@@G@@ LA A0,(0400000000000) @ @@@@ OR A0,0IY )@@G@@,X6 @B@@@@ LA A0,(0477777000000) @ @@@@ ANIZ )@@G@@D A0,A1 @ @@@@ SA A1,0,X6 @G@@@@ TNJA )@@G@@Z X5 . $T AN FOREIGN PAGE INVOLED @E@@@@ JB )@@G@@ J STEP01 . $A YES NO,STEP01 @I@@@@ LAJC )@@G@@ A0,(0400000000000). $P MARKI JD )@@G@@@ @@@@ OR A0,0,X5 @B@@@@ LA A0,(047777JE )@@G@@7000000) @ @@@@ AND A0,A1 @ @@@@ SA JF )@@G@@ A1,0,X5 @]@@@@STEP01. @I@@@@ SLJ GETCCL JG )@@G@@ . $W GET RELATIVE ADDR OF CALC CHAIN WD @G@@@@ TZ JH )@@G@@ SWCCH . $T PREVIOUS A CALC CHAIN HEADER @E@@@@ J JI )@@G@@ CHGPRI . $A YES NO,CHGPRI @G@@@@ LA JJ )@@G@@ A0,0,X1 . $P GET LINK NEXT CALC POINTER @D@@@@ SAJK )@@G@@ A0,DBP2 . $P SAVE IT @ @@@@ J DECLJL )@@G@@P1 @C@@@@NODLT1 . $H @F@@@@ JM )@@G@@ SX X9,SWCCH . $P JUST RESET A SWITCH @F@@@@ JN )@@G@@ SX X9,DBPF1 . $P SAVE THE NEW DBP PAIR @B@@@@ JO )@@G@@ LA A0,0,X6 . @B@@@@ SA A0,DBPF2 JP )@@G@@ . @E@@@@ LX X1,X6 . $P SET X1 TO SJQ )@@G@@LOT @B@@@@ J CHKPTR . @C@@@@NODLT2 JR )@@G@@ . $H @E@@@@ SX X9,SWCCH JS )@@G@@ . $P RESET SWITCH @F@@@@ SX X9,DBPF1 JT )@@G@@ . $P SAVE THE NEW DBP PAIR @ @@@@ SLJ GETCCL @ @@@@JU )@@G@@ LA A0,0,X1 @ @@@@ SA A0,DBPF2 @ @@@@JV )@@G@@ J CHKPTR @C@@@@CHASE +0 JW )@@G@@ . $H @[@@@@. @^@@@@. (IN) A0 = DBP@F@@@@. (OUJX )@@G@@T) X5 = PRIME PAGE SLOT ADDR IF DBP IN A0 POINTS @C@@@@. JY )@@G@@ TO A FOREIGN PAGE, 0 IF NONE@^@@@@. X6 = SLOT ADDR@A@@@@JZ )@@G@@. X7 = RECORD ADDR, 0 IF CCH@A@@@@. X8 = PAGE(TOP) ADDR KA )@@G@@ @C@@@@. X9 = ORIGINAL CONTENT OF A0 @D@@@@ KB )@@G@@ SZ X5 . $P RESET X5 @E@@@@ LX KC )@@G@@ X9,A0 . $P SAVE DBP IN X9 @D@@@@ SLJ DBP$KD )@@G@@APS . $P PARSE DBP @D@@@@ TNZ A1 KE )@@G@@ . $T GOOD DBP @B@@@@ ER ERR$ . @D@@@@KF )@@G@@ SLJ GETPG . $W GET PG @G@@@@ LAKG )@@G@@ A0,CALCNUM . $P GET CALC BUCKET NUMBER @E@@@@ KH )@@G@@ TG A0,A3 . $T SEE IF HIT CCH @ @@@@ J KI )@@G@@ HITCCH @ @@@@ LX X6,X8 @E@@@@ AXKJ )@@G@@ X6,PGSIZE . $A YES,HITCCH NO @ @@@@ ANX KK )@@G@@ X6,A3 @B@@@@ TP 0,X6 . @B@@@@ KL )@@G@@ LMJ X11,BADCCL . @F@@@@ LA A0,(010000KM )@@G@@0000000). $T CHECK IF FOREIGN PG @B@@@@ AND A0,0,X6 KN )@@G@@ . @E@@@@ JZ A1,NOTFRG . $A YES NO,NOTKO )@@G@@FRG @B@@@@ LX X5,X6 . @B@@@@ LAKP )@@G@@,H2 A2,0,X6 . @E@@@@ LA A1,1,X8 KQ )@@G@@ . $P GET AREA CODE @D@@@@ SSL A1,24 . $PKR )@@G@@ GET PAGE @B@@@@ SLJ GETPG . @B@@@@ KS )@@G@@ LX X6,X8 . @B@@@@ AX X6,PGSIZE KT )@@G@@ . @B@@@@ ANX,U X6,1 . @B@@@@ KU )@@G@@ ANX X6,CALCNUM . @B@@@@ LXI,U X6,-1 KV )@@G@@ . @B@@@@ LR R1,SLOTS . @B@@@@ KW )@@G@@ LA A0,0,X5 . @B@@@@ LR R2,(000777KX )@@G@@7000000). @]@@@@MSELOP. @B@@@@ MSE A0,0,*X6 KY )@@G@@ . @B@@@@ LMJ X11,BADCCL . @F@@@@ LAKZ )@@G@@ A10,(0200000000000). $T AN FOREIGN RECORD @B@@@@ ANLA )@@G@@D A10,1,X6 . @E@@@@ JZ A11,MSELOP LB )@@G@@ . $A YES NO,MSELOP @G@@@@ LX X7,X8 . $TLC )@@G@@ CHECK PRIME PAGE POINTER @B@@@@ AX,H2 X7,1,X6 LD )@@G@@ . @G@@@@ LA A10,RCDLENG . $P COMPUTE ADDR OF PLE )@@G@@RIME POINTER@ @@@@ ANA,U A10,1 @B@@@@ AX LF )@@G@@ X7,A10 . @B@@@@ LA A10,0,X7 . LG )@@G@@@E@@@@ TE A10,X9 . $A YES NO,MSELOP @B@@@@LH )@@G@@ J MSELOP . @B@@@@ AX X6,(LI )@@G@@1,1) . @]@@@@NOTFRG. @B@@@@ LX X7,X8 LJ )@@G@@ . @B@@@@ AX,H2 X7,0,X6 . @B@@@@ LK )@@G@@ J *CHASE . @B@@@@HITCCH. LL )@@G@@ . @B@@@@ SZ X7 . @B@@@@ LM )@@G@@ LX X6,X8 . @B@@@@ JZ A3,CCH0 LN )@@G@@ . @B@@@@ AX X6,PGSIZE . @B@@@@ LO )@@G@@ ANX X6,A3 . @B@@@@ J *CHASE LP )@@G@@ . @B@@@@CCH0. . @B@@@@ LQ )@@G@@ AX,U X6,7 . @B@@@@ J *CHASE LR )@@G@@ . @]@@@@BADCCL. @ @@@@ E$DIT EDPKT @A@@@@LS )@@G@@ E$COPY 18,CALCMSG1 @ @@@@ E$OCTF 12,DBP1 LT )@@G@@@^@@@@ E$CHAR ')' @A@@@@ E$COPY 34,CALCMSG2 LU )@@G@@@#@@@@ E$DITX @ @@@@PF FORM 12,6,18 @A@@@@ LV )@@G@@ P$RINT (PF 1,14,PRINT) @]@@@@$(4). @A@@@@CALCMSG1 'A CALC LW )@@G@@RECORD(DBP=' @C@@@@CALCMSG2 ' PARTICIPATING IN A BAD CALC CHAIN' LX )@@G@@@]@@@@$(1). @^@@@@ ER ERR$@]@@@@GETCCL +0@[@@@@LY )@@G@@. @A@@@@. (IN) X7 = RECORD ADDR @A@@@@. (OUT) X1LZ )@@G@@ = CCL WORD ADDR @A@@@@ LA A0,RCDTYPE @ @@@@ MA )@@G@@ LX X1,C6 @^@@@@ LXI,U X1,1@ @@@@ LRMB )@@G@@,H1 R1,C6 @ @@@@ SE,T1 A0,0,*X1 @A@@@@ LMMC )@@G@@J X11,BADCCL @ @@@@ ANX X1,(1,1) @ @@@@ MD )@@G@@ LA,T3 A0,0,X1 @ @@@@ LX X1,A0 @ @@@@ ME )@@G@@ AX X1,X7 @^@@@@ ANX,U X1,1@ @@@@ J MF )@@G@@ *GETCCL @[@@@@$(1) @C@@@@CHGPRI MG )@@G@@ . $H @B@@@@ LA A0,0,X1 . @B@@@@ MH )@@G@@ SA A0,DBPF2 . @F@@@@ LA A0,DBPF1 MI )@@G@@ . $P GET PRIOR RECORD SLOT @B@@@@ SLJ CHASE MJ )@@G@@ . @F@@@@ TNZ X7 . $T A CALC CHAIMK )@@G@@N HEADER @B@@@@ J CHGCCH . @B@@@@ ML )@@G@@ SLJ GETCCL . @B@@@@ LA A0,DBPF2 MM )@@G@@ . @B@@@@ SA A0,0,X1 . @B@@@@ MN )@@G@@ J CHKPTR . @B@@@@CHGCCH LX X1,X6 MO )@@G@@ . @B@@@@ LA A0,DBPF2 . @B@@@@ MP )@@G@@ SA A0,0,X1 . @]@@@@CHKPTR. @B@@@@ TEMQ )@@G@@ A0,DBP1 . @B@@@@ J DECLP1 MR )@@G@@ . @B@@@@ LA A0,DBP2 . @B@@@@ SAMS )@@G@@ A0,0,X1 . @B@@@@ TNE A0,DBPF1 MT )@@G@@ . @B@@@@ SZ 0,X1 . @B@@@@ LAMU )@@G@@ A0,(1,X6) . @B@@@@ LA A1,(1,SAVEX) MV )@@G@@ . @B@@@@ LR,U R1,6 . @B@@@@ BTMW )@@G@@ A0,0,*A1 . @B@@@@ J *DECALC MX )@@G@@ . @]@@@@$(4). @]@@@@DBPF1 +0@]@@@@DBPF2 +0@H@@@@SWCCH MY )@@G@@ +0 . SW TO INDICATE A CALC CHAIN HEADER MZ )@@G@@@^@@@@SAVEX RES 6 @#@@@@ END ___ . $P PARSENA )@@G@@ DBP @D@@@@ TNZ A1 . $T GOOD DBP @B@@@@NB )@@G@@ ER ERR$ . @D@@@@ SLJ GETPNC )@@G@@*[@@@@*SDFF*@#@@@@ AXR$ @[@@@@. @[@@@@. @^@@@@. ND )@@G@@ * DLTPGE * @[@@@@. @G@@@@. THIS ROUTINE WILL MARK A DELNE )@@G@@ETE BIT ON BOTH SLOT & RECORD HEADER@H@@@@. ON THE DATA BASE PAGNF )@@G@@ES SUPPLIED AND THE RECORDS(CODES) SPECIFIED. @[@@@@. @ @@@@. NG )@@G@@ SLJ DLTPGE @F@@@@. DEFINED: DPGCNT +M,N M=N NH )@@G@@CONT PAGES IN BUFFER @B@@@@. DPGTBL +PGN,ADDR NI )@@G@@@B@@@@. . @B@@@@. NJ )@@G@@ . @[@@@@. @[@@@@. @#@@@@$(4) LIT. NK )@@G@@@]@@@@$(1). @C@@@@DLTPGE* +0 . $H NL )@@G@@@B@@@@ LA,H1 A0,DPGCNT . @E@@@@ SA NM )@@G@@ A0,PGCNT . $P GET PAGE COUNT @B@@@@ LA,H2 A0,DNN )@@G@@PGTBL . @E@@@@ SA A0,PGADDR . $P GET PNO )@@G@@AGES ADDR @F@@@@DLTLOP1 LX X8,PGADDR . $P SET PAGE ADNP )@@G@@DR IN X8 @E@@@@ TNZ PGCNT . $T ANY PAGE LENQ )@@G@@FT @D@@@@ J *DLTPGE . $J RETURN @ @@@@NR )@@G@@ LX X6,X8 @G@@@@ AX X6,PGSIZE NS )@@G@@ . $P SET X6 = BOTTOM OF THE PAGE @B@@@@ ANX X6,CALCNUMNT )@@G@@ . @E@@@@ ANX,U X6,1 . $P SKIP CALC BNU )@@G@@KTS @B@@@@ LX X9,SLOTS . @E@@@@ TNNV )@@G@@Z X9 . $P X9 = SLOTS @E@@@@ J NW )@@G@@ NXTPG . $T PAGE EMPTY @E@@@@ NX )@@G@@ . $A YES,NXTPG NO @B@@@@ JGD X9,$+1 NY )@@G@@ . @]@@@@DLTLOP2. @H@@@@ SZ CALCSW NZ )@@G@@ . $P RESET CALCSW FOR CHKEY ROUTINE @E@@@@ TP 0,X6OA )@@G@@ . $T SLOT IN USE @E@@@@ J NXTSLT OB )@@G@@ . $A YES NO,NXTSLT @E@@@@ LA A0,(010000000000OC )@@G@@0). $T A FOREIGN SLOT @ @@@@ AND A0,0,X6 @E@@@@ OD )@@G@@ JNZ A1,NXTSLT . $A YES,NXTSLT NO @B@@@@ LXOE )@@G@@ X7,DISP . @E@@@@ AX X7,X8 OF )@@G@@ . $P GET RECORD ADDR @E@@@@ LA A0,RCDTYPE . $POG )@@G@@ GET RECORD CODE @B@@@@ LA A1,(1,DLTC10) . @B@@@@OH )@@G@@ . @B@@@@ OI )@@G@@ . @G@@@@ LR,T1 R1,DLTC10 . $T CHECKOJ )@@G@@ IF THIS RECORD TYPE @E@@@@ SE,T3 A0,0,*A1 . $ OK )@@G@@ SHOULD BE DELETED@E@@@@ J NXTSLT . $A YES NOL )@@G@@O,NXTSLT @E@@@@ ANA A1,(1,1) . $P BACK UP INDOM )@@G@@EX @G@@@@ SZ CCSW . $T CHECK IF A CALC RON )@@G@@ECORD @E@@@@ TZ,T2 0,A1 . $P RESET SWITCOO )@@G@@H @D@@@@ SA A0,CCSW . $P SET SWICH @G@@@@OP )@@G@@ LA A0,(020000000) . $T CHK IF A FOREIGN RECORD OQ )@@G@@@C@@@@ AND A0,0,X7 . $ @E@@@@ SAOR )@@G@@ A1,FORGSW . $P SET FORGSW ACCORD@F@@@@ JZ OS )@@G@@ A1,NONFORG . $J JUMP IF NON FOREIGN @E@@@@ LA OT )@@G@@ A0,X7 . $P GET RECORD ADDR @G@@@@ AA A0,ROU )@@G@@CDLENG . $P COMPUTE SYSTEM PTR ADDR @C@@@@ ANA,U OV )@@G@@ A0,1 . -1 @E@@@@ LA A0,,A0 OW )@@G@@ . $P GET PRIMARY DBP @]@@@@NONFORG. @G@@@@ SLJ CHKEOX )@@G@@Y . $P CHK IF RECORD UNLOADED @C@@@@ TZ OY )@@G@@ KEYOK . $T IS IT@E@@@@ J NXTSLT OZ )@@G@@ . $A YES NO,NXTSLT @E@@@@ LA,U A0,1 . $PPA )@@G@@ UP DELETE COUNT @B@@@@ AA A0,DLTCNT . @B@@@@PB )@@G@@ SA A0,DLTCNT . @F@@@@ LA A2,(PC )@@G@@0777767777777). $P MARK RECORD VACANT @B@@@@ AND A2,0PD )@@G@@,X7 . @B@@@@ SA A3,0,X7 . @F@@@@PE )@@G@@ LA A2,RCDLENG . $P UPDATE UNUSED WORDS @B@@@@PF )@@G@@ AA A2,UNUSED . @D@@@@ SA A2,UPG )@@G@@NUSED . $P SAVE IT @F@@@@ LA A2,(040000000000PH )@@G@@0). $P MARK SLOT NOT IN USE @B@@@@ OR A2,0,X6 PI )@@G@@ . @B@@@@ LA A2,(0777777000000). @B@@@@ ANPJ )@@G@@D A2,A3 . @B@@@@ SA A3,0,X6 PK )@@G@@ . @E@@@@ SZ FRGDBP . $A YES,FIXFPG NO PL )@@G@@@G@@@@ TZ FORGSW . $T CHK IF A FOREIGN RECORDPM )@@G@@ @E@@@@ SLJ FIXFPG .$A YES,FIXFPG NO PN )@@G@@@E@@@@ SZ FORGSW . $P RESET FORGSW @E@@@@PO )@@G@@ LA A0,CCSW . $T CALC RECORD @E@@@@ PP )@@G@@ JZ A0,NXTSLT . $A YES NO,NXTSLT @B@@@@ LAPQ )@@G@@ A0,FRGDBP . @E@@@@ JNZ A0,DLTCALC PR )@@G@@ . $T A FOREIGN RECORD @E@@@@ LA A1,ACODE . $APS )@@G@@ YES,DLTCALC NO @B@@@@ LA A2,PGNUM . @E@@@@PT )@@G@@ LA A3,PGSIZE . $P CONSTRUCT DBP @B@@@@ PU )@@G@@ LA A4,X6 . @B@@@@ ANA A4,X8 PV )@@G@@ . @B@@@@ ANA A3,A4 . @B@@@@ PW )@@G@@ SLJ APS$DBP . @B@@@@ TNZ A0 PX )@@G@@ . @B@@@@ ER ERR$ . @C@@@@DLTCALPY )@@G@@C LX,H2 X1,C6 . $H @B@@@@ LXI,U X1,1PZ )@@G@@ . @F@@@@ LA A5,RCDTYPE . $P GET CQA )@@G@@ALC LINK WORD @B@@@@ LR,H1 R1,C6 . @B@@@@QB )@@G@@ SE,T1 A5,0,*X1 . @B@@@@ ER ERR$QC )@@G@@ . @B@@@@ ANX X1,(1,1) . @B@@@@QD )@@G@@ LX,T3 X2,0,X1 . @B@@@@ AX X2,XQE )@@G@@7 . @B@@@@ ANX,U X2,1 . @B@@@@QF )@@G@@ LA A1,0,X2 . @C@@@@ DS A0,DQG )@@G@@BP1 . $P @C@@@@ SLJ DECALC . $WQH )@@G@@ @C@@@@NXTSLT. . $H @D@@@@ QI )@@G@@ ANX,U X6,1 . $P NXT SLOT @E@@@@ JGD QJ )@@G@@ X9,DLTLOP2 . $T ANY MORE SLOT @]@@@@NXTPG. @E@@@@ QK )@@G@@ AX X8,PGSIZE . $A YES,DLTLOP2 NO @E@@@@ SXQL )@@G@@ X8,PGADDR . $P NXT PAGE ADDR @E@@@@ LA QM )@@G@@ A0,PGCNT . $P UPDATE PAGE COUNT@B@@@@ ANA,U A0,1QN )@@G@@ . @B@@@@ SA A0,PGCNT . @D@@@@QO )@@G@@ J DLTLOP1 . $J DLTLOP1 @[@@@@. @G@@@@QP )@@G@@. THIS SUBROUTINE WILL TRY TO GO TO A FOREIGN PAGE TO MARK QQ )@@G@@@C@@@@. A PARTICULAR SLOT BEEN DELETED @[@@@@. @A@@@@QR )@@G@@. ENTERED: SLJ FIXFPG @[@@@@. @B@@@@. QS )@@G@@ X7 = RECORD ADDRESS @[@@@@. @]@@@@$(1). @C@@@@FIXFPG* +0QT )@@G@@ . $H @E@@@@ LA A0,(1,X6) QU )@@G@@ . $P SAVE X6 - X11 @B@@@@ LA A1,(1,SAVEX) QV )@@G@@ . @B@@@@ LR,U R1,6 . @B@@@@ BTQW )@@G@@ A1,0,*A0 . @G@@@@ LA A0,X7 QX )@@G@@ . $P GET PRIME PAGE POINTER @B@@@@ AA A0,RCDLENGQY )@@G@@ . @B@@@@ ANA,U A0,1 . @B@@@@ QZ )@@G@@ LA A0,0,A0 . @B@@@@ SA A0,FRGDBP RA )@@G@@ . @E@@@@ SLJ DBP$APS . $W DBP TO A,P,RB )@@G@@S @F@@@@ SA A1,HIGHBITS . $P GET SIGN EXTENSIORC )@@G@@N @B@@@@ LA,T3 A1,HIGHBITS . @E@@@@ JZRD )@@G@@ A1,FIXERR . $T CHECK AREA CODE @E@@@@ TE,T1 RE )@@G@@ A1,1,X8 . $A YES NO,FIXERR @H@@@@ J FIXERF )@@G@@RR . $J FOREIGN PAGE MUST BE IN SAME AREA @E@@@@ SLRG )@@G@@J GETPG . $W GET THE PAGE @B@@@@ AX RH )@@G@@ X8,PGSIZE . @E@@@@ ANX X8,A3 . $PRI )@@G@@ LOCATE THE SLOT @B@@@@ LA A0,(0400000000000) @ @@@@RJ )@@G@@ OR A0,0,X8 @B@@@@ LA A0,(047777700000RK )@@G@@0). @B@@@@ AND A0,A1 . @B@@@@ SARL )@@G@@ A1,0,X8 . @B@@@@ RM )@@G@@ . @B@@@@ . @B@@@@ RN )@@G@@ . @B@@@@ RO )@@G@@ . @B@@@@ . @E@@@@RETURN LARP )@@G@@ A0,(1,X6) . $P RESTORE X6 -X11 @B@@@@ LA RQ )@@G@@ A1,(1,SAVEX) . @B@@@@ LR,U R1,6 . RR )@@G@@@B@@@@ BT A0,0,*A1 . @C@@@@ J RS )@@G@@ *FIXFPG . $E @C@@@@FIXERR RT )@@G@@ . $H @B@@@@ SA A0,FPTRX . @B@@@@ RU )@@G@@ LA A0,SLOTS . @B@@@@ ANA A0,X9 RV )@@G@@ . @B@@@@ SA A0,SLTX . @B@@@@ RW )@@G@@ LA A0,PGNUM . @B@@@@ SA A0,PGX RX )@@G@@ . @B@@@@ LA A0,ACODE . @H@@@@ RY )@@G@@ SA,T3 A0,ACODEX . $P SAVE IT WITHOUT SIGN EXTENSION RZ )@@G@@@ @@@@ E$DIT EDPKT @ @@@@ E$COPY 21,FMSG1 SA )@@G@@@ @@@@ E$DECV ACODEX @ @@@@ E$COPY 7,FMSG2 SB )@@G@@@^@@@@ E$DECV PGX @ @@@@ E$COPY 7,FMSG3 @^@@@@SC )@@G@@ E$DECV SLTX@#@@@@ E$DITX @ @@@@PF FORM SD )@@G@@ 12,6,18 @A@@@@ P$RINT (PF 2,10,SEPAR) @A@@@@ P$SE )@@G@@RINT (PF 1,14,PRINT) @ @@@@ E$DIT EDPKT @ @@@@ SF )@@G@@ E$COPY 18,FMSG4 @ @@@@ E$OCTF 12,FPTRX @ @@@@ SG )@@G@@ E$COPY 33,FMSG5 @#@@@@ E$DITX @A@@@@ P$RINT SH )@@G@@ (PF 1,14,PRINT) @A@@@@ P$RINT (PF 1,10,SEPAR) @ @@@@ SI )@@G@@ J RETURN @]@@@@$(1). @C@@@@GETPG* +0 SJ )@@G@@ . $H @F@@@@ TE,T3 A1,DLTAREA . $TSK )@@G@@ PAGE IN PRIMARY AREA @C@@@@ J GETPG1 . $JSL )@@G@@ NO @G@@@@ LR,H1 R1,DPGCNT . $T CHECK IF PAGE IS SM )@@G@@IN CORE @B@@@@ LX X1,(1,DPGTBL-1) . @F@@@@ SN )@@G@@ SE,H1 A2,1,*X1 . $T SEARCH PRIMARY TBL @D@@@@ SO )@@G@@ J GETPG1 . $A NO FIND @E@@@@ LX,H2 SP )@@G@@ X8,0,X1 . $P SET BUFADDR IN X8@ @@@@ J *GETSQ )@@G@@PG @C@@@@GETPG1 . $H @E@@@@ SR )@@G@@ LSSL A2,18 . $P COMPOSE ACODE,PG#@B@@@@ DSSS )@@G@@L A1,18 . @F@@@@ LR R1,OVFCNT ST )@@G@@ . $P SEARCH OVER FLOW TBL @E@@@@ LX X1,(2,OVFTBL-2) SU )@@G@@ . $P TBL ADDR-2 @C@@@@ SE A2,2,*X1 . $TSV )@@G@@ @D@@@@ J GETPG2 . $J NO FIND @E@@@@SW )@@G@@ LX,H2 X8,1,X1 . $P GET BUF ADDR @D@@@@ SX )@@G@@ J *GETPG . $J RETURN @]@@@@GETPG2. @E@@@@SY )@@G@@ LA A0,(1,X6) . $P SAVE X6 - X11 @B@@@@ SZ )@@G@@ LA A1,(1,SAVEXX) . @B@@@@ LR,U R1,6 TA )@@G@@ . @B@@@@ BT A1,0,*A0 . @D@@@@ TB )@@G@@ SA A3,SAVEA3 . $P SAVE A3 @F@@@@ LA TC )@@G@@ A0,OVFCNT . $P UPDATTE OVER FLOW CNT @C@@@@ AA,U TD )@@G@@ A0,1 . +1 @D@@@@ SA A0,OVFCNT TE )@@G@@ .$P SAVE IT @E@@@@ MSI,U A0,2 . $P COMPUTF )@@G@@TE TBL ADDR @B@@@@ ANA,U A0,2 . @E@@@@ TG )@@G@@ LX X8,A0 . $P TBL ADDR IN X8 @E@@@@ SATH )@@G@@ A2,OVFTBL,X8 . $P SAVE AREA,PG# @E@@@@ LA,H2 TI )@@G@@ A0,OVFTBL,X8 . $P GET PAGE NUMBER @E@@@@ SA,H2 A0,OTJ )@@G@@VFPKT3 . $P SAVE IT IN PKT @E@@@@ LA,H1 A0,OVFTBL,TK )@@G@@X8 . $P GET AREA CODE @F@@@@ SLJ GETASIZE TL )@@G@@ . $P GET PAGE SIZE,NAME @C@@@@ TNZ A0 TM )@@G@@ . $T OK @B@@@@ ER ERR$ . @E@@@@ TN )@@G@@ SA,H1 A0,OVFPKT3 . $P SAVE PAGE SIZE @E@@@@ DSTO )@@G@@ A1,OVFPKT . $P SAVE AREA NAME @E@@@@ LA TP )@@G@@ A1,OVFTBL+1,X8 . $P GET BUF ADDR @I@@@@ TQ )@@G@@ . THIS SHOULD BE SET UP BY PREVIOUS REQ @B@@@@ TR )@@G@@ SA,H2 A1,OVFPKT2 . @G@@@@ A A0,A1 TS )@@G@@ . $P COMPUTE NEXT BUFFER ADDR @B@@@@ ER MCORTT )@@G@@E$ . @F@@@@ SA A0,OVFTBL+3,X8 . $P SAVE TU )@@G@@IT FOR NXT REQ @E@@@@ LA,U A0,020 . $P SET TTV )@@G@@O READ @B@@@@ SA,S2 A0,OVFPKT1 . @E@@@@ TW )@@G@@ LX,U X10,OVFPKT . $P GET PKT ADDR @B@@@@ LMTX )@@G@@J X11,DB$AM . @B@@@@ TZ,S1 OVFPKT1 TY )@@G@@ . @B@@@@ LMJ X11,IOERR . @B@@@@ LATZ )@@G@@ A3,SAVEA3 . @E@@@@ LA A0,(1,X6) UA )@@G@@ . $P RESTORE X6 - X11 @B@@@@ LA A1,(1,SAVEXX) . UB )@@G@@@B@@@@ LR,U R1,6 . @B@@@@ BT UC )@@G@@ A0,0,*A1 . @B@@@@ LX,H2 X8,OVFPKT2 . UD )@@G@@@B@@@@ J *GETPG . @[@@@@. @C@@@@. UE )@@G@@ ROUTINE TO CHK IF A DBP IS IN K$FILE @[@@@@. @C@@@@CHKEY* +0UF )@@G@@ . $H @G@@@@ TZ FORGSW UG )@@G@@ . $T CHK IF A FOREIGN RECORD @E@@@@ J GOKFUH )@@G@@AM . $A YES,GOKFAM NO @F@@@@ TZ CALCSW UI )@@G@@ . $T CHK IF A CALC CHASE @E@@@@ J GOKFAM UJ )@@G@@ .$A YES,GOKFAM NO @F@@@@ LA A0,X6 UK )@@G@@ . $P COMPUTE THE ALOT NUM @B@@@@ ANA A0,X8 UL )@@G@@ . @E@@@@ LA A3,PGSIZE . $P GET PAGE SZ UM )@@G@@@E@@@@ ANA A3,A0 . $P A3=SLOT NUM @E@@@@UN )@@G@@ LA A2,PGNUM . $P A2=PAGE NUM @E@@@@ UO )@@G@@ LA,T3 A1,DLTAREA . $P A1=AREA CODE @E@@@@ SLUP )@@G@@J APS$DBP . $P CONVERT TO A DBP @D@@@@ TNZ UQ )@@G@@ A0 . $T GOT A DBP @E@@@@ ER ERR$ UR )@@G@@ . $A YES NO,ERR$ @]@@@@GOKFAM. @F@@@@ SA US )@@G@@ A0,PKTKEY . $P SAVE THE DBP IN PKY @E@@@@ SZ UT )@@G@@ KEYOK .$P RESET STATUS @D@@@@ LX,U X10,UU )@@G@@KFPKT . $P PKT ADDR @E@@@@ LMJ X11,KF$AMR UV )@@G@@ . $P CALL KF$AM @D@@@@ J *CHKEY . $PUW )@@G@@ RETURN @]@@@@$(4). @B@@@@HIGHBITS +0 UX )@@G@@ . @E@@@@OVFCNT* +0 . OVER FLOW PAGE CNT UY )@@G@@@C@@@@OVFTBL* +0 . PAGE TBL@D@@@@ UZ )@@G@@ . 1. ACODE,PG# @D@@@@ VA )@@G@@ . 2. BUFFADDR @]@@@@OVFADDR* +0@E@@@@ RES VB )@@G@@ 200 . TOTAL ENTRY=201 @C@@@@OVFPKT* RES 3 VC )@@G@@ . I/O PKT @^@@@@OVFPKT1* RES 4 @D@@@@OVFPKT2* +1VD )@@G@@,0 . #PG,BUFADDR @C@@@@OVFPKT3* +0,0 VE )@@G@@ . LNG,1 PG@A@@@@KFPKT* +0 . KF$SM PKT @]@@@@VF )@@G@@ +0@]@@@@ +0@]@@@@PKTKEY* +0@]@@@@ +0@]@@@@VG )@@G@@KEYOK* +0@^@@@@ RES 100 @]@@@@DLTCNT* +0@]@@@@CALCSWVH )@@G@@* +0@]@@@@FORGSW* +0@]@@@@SAVEA3 +0@]@@@@$(4). @A@@@@FMSG1 VI )@@G@@ '** WARNNING: ON AREA ' @^@@@@FMSG2 ', PAGE ' @^@@@@FMSG3 VJ )@@G@@ ', SLOT ' @A@@@@FMSG4 'A FOREIGN POINTER(' @C@@@@FMSG5 VK )@@G@@ ') IN THE RECORD CAN NOT BE TRACED' @^@@@@SAVEXX RES 6 VL )@@G@@@^@@@@SEPAR '* * * * * * '@^@@@@ '* * * * * * '@^@@@@ VM )@@G@@ '* * * * * * '@^@@@@ '* * * * * * '@^@@@@ '* * * *VN )@@G@@ * * '@^@@@@SAVEX RES 10 @]@@@@FPTRX +0@]@@@@ACODEX +0VO )@@G@@@]@@@@PGX +0@]@@@@SLTX +0@]@@@@$(4). @]@@@@PARAM1 +0VP )@@G@@@A@@@@PGCNT EQUF PARAM1,,H1 @A@@@@PGADDR EQUF PARAVQ )@@G@@M1,,H2 @ @@@@PGSIZE EQUF 2,X8,H1 @ @@@@UNUSED EQUF VR )@@G@@ 2,X8,H2 @ @@@@SLOTS EQUF 3,X8,H1 @ @@@@LASTVAC EQUF VS )@@G@@ 3,X8,H2 @ @@@@PGTYPE EQUF 1,X8,S2 @ @@@@CALCNUM EQUF VT )@@G@@ 6,X8,H1 @ @@@@PGNUM EQUF 1,X8,H2 @ @@@@ACODE EQUF VU )@@G@@ 1,X8,T1 @ @@@@RCDTYPE EQUF 0,X7,T1 @ @@@@RCDDESC EQUF VV )@@G@@ 0,X7,S3 @ @@@@RCDLENG EQUF 0,X7,H2 @ @@@@SLTDESC EQUF VW )@@G@@ 0,X6,S1 @ @@@@DISP EQUF 0,X6,H2 @]@@@@CCSW +0@]@@@@VX )@@G@@DBP1* +0@]@@@@DBP2* +0@]@@@@FRGDBP* +0@#@@@@ END VY )@@G@@___ . $P SAVE A3 @F@@@@ LA A0,OVFCNT . $PVZ )@@G@@*[@@@@*SDFF*@#@@@@ AXR$ @#@@@@$(4) LIT @]@@@@$(1). WA )@@G@@ @[@@@@. @A@@@@. SUBROUTINE 'REORDLT' @[@@@@. WB )@@G@@@[@@@@. @G@@@@DLTPGS EQU 10 . NUMBER OF PAGEWC )@@G@@S PER DELETE @C@@@@REORDLT* . $H WD )@@G@@@E@@@@ TZ TOPT . $T DEBUG REQ'D @B@@@@WE )@@G@@ SLJ DEBUG$ . @C@@@@ SX X11,WF )@@G@@SAVEX11 . $H @E@@@@ LX,U X10,KFPKT . $PWG )@@G@@ INITIALIZE KF$AM @B@@@@ LMJ X11,KF$AMR . @G@@@@WH )@@G@@ SLJ DLTRCD . $P BUILD DELETE RECORDS TBL WI )@@G@@@F@@@@ LA A0,LAST$D . $P COMPUTE BUFFER ADDR WJ )@@G@@@B@@@@ AA,U A0,1 . @D@@@@ SA,H2 WK )@@G@@ A0,DPKT2 . $P SAVE IT @ @@@@ LA,H2 A0,C4 WL )@@G@@@ @@@@ SA A0,C4P1 @ @@@@ SZ C4ENT WM )@@G@@@]@@@@AREALP. @B@@@@. SCAN THROUGH C4 AREA BY AREA @F@@@@WN )@@G@@ LA,H2 A1,C4P1 . $P GET AREA ENTRY ADDR @I@@@@WO )@@G@@ LA A0,C4ENT . $P GET NO OF ENTRY PROCESSED FORWP )@@G@@ THE ARE @D@@@@ TG,T2 A0,0,A1 . $T DONE ALL WQ )@@G@@@E@@@@ J NXTAREA . $A YES,NEXTAREA NO @E@@@@WR )@@G@@ AA,U A0,1 . $P UP COUNT BY 1 @ @@@@ WS )@@G@@ SA A0,C4ENT @F@@@@ AA,U A0,2 . $PWT )@@G@@ COMPUTE ENTRY ADDR @F@@@@ AA A0,A1 . $PWU )@@G@@ GET THE PAGE RANGE @ @@@@ LA A3,0,A0 @ @@@@ WV )@@G@@ SA A3,PGRNG @E@@@@ LA,T1 A3,0,A1 . $PWW )@@G@@ GET AREA CODE @D@@@@ SA,T3 A3,DLTAREA . $P SAVE WX )@@G@@IT @E@@@@ DL A3,1,A1 . $P GET AREA NAME WY )@@G@@@A@@@@ DS A3,DLTPKT @]@@@@PAGELP. @A@@@@. WZ )@@G@@ DELETE DLTPGS PAGES A TIME@E@@@@ LA,U A0,020 XA )@@G@@ . $P SET TO READ @ @@@@ SA,S2 A0,DPKT1 @E@@@@ XB )@@G@@ LA,H1 A0,PGRNG . $P GET STARTING PAGE@ @@@@ SAXC )@@G@@,H2 A0,DPKT3 @E@@@@ AA,U A0,DLTPGS . $P UP BYXD )@@G@@ DLTPGS @ @@@@ SA,H1 A0,PGRNG @E@@@@ LA,H2 XE )@@G@@ A0,PGRNG . $P GET TOTAL PAGES @D@@@@ TLE,U A0,DXF )@@G@@LTPGS . $T > LIMIT @E@@@@ J LASTPG XG )@@G@@ . $A Y NO,LASTPG @D@@@@ ANA,U A0,DLTPGS . $PXH )@@G@@ -LIMIT @ @@@@ SA,H2 A0,PGRNG @A@@@@ LA,U XI )@@G@@ A0,DLTPGS @^@@@@ J $+2 @]@@@@LASTPG. @ @@@@XJ )@@G@@ SZ,H2 PGRNG @ @@@@ SA,H1 A0,DPKT2 @E@@@@XK )@@G@@ LA A0,DLTAREA . $P GET AREA CODE @G@@@@ XL )@@G@@ SLJ GETASIZE . $W GET AREA PAGE SIZE/NAME @C@@@@XM )@@G@@ TNZ A0 . $T OK @B@@@@ ER XN )@@G@@ ERR$ . @D@@@@ SA A0,DPGSIZE . $PXO )@@G@@ SAVE IT @G@@@@ MSI,H1 A0,DPKT2 . $P COMPUTE TOTXP )@@G@@AL BUFF SIZE @D@@@@ SA,H1 A0,DPKT3 . $P SAVE XQ )@@G@@IT @G@@@@ AA,H2 A0,DPKT2 . $P COMPUTE OVER FLOWXR )@@G@@ BUFF ADDR @D@@@@ SA A0,OVFADDR . $P SAVE IT XS )@@G@@@G@@@@ SZ OVFCNT . $P RESET OVER FLOW PAGE CNXT )@@G@@T @B@@@@ ER MCORE$ . @A@@@@ LXXU )@@G@@,U X10,DLTPKT @A@@@@ LMJ X11,DB$AM @ @@@@XV )@@G@@ TZ,S1 DPKT1 @A@@@@ LMJ X11,IOERR XW )@@G@@@ @@@@ LR,H1 R1,DPKT2 @ @@@@ JGD R1,$+1 XX )@@G@@@ @@@@ LA,H2 A0,DPKT3 @F@@@@ LA,H2 A1,DPKT2 XY )@@G@@ . $P STARTING BUFFER ADDR @A@@@@ LX X1,(1,DPGTXZ )@@G@@BL) @]@@@@PGLOP1. @G@@@@ SA,H2 A1,0,X1 . $PYA )@@G@@ SETUP BUFF ADDR IN TBL @ @@@@ SA,H1 A0,0,*X1 @^@@@@YB )@@G@@ AA,U A0,1@E@@@@ AA A1,DPGSIZE . $PYC )@@G@@ UP NEXT BUF ADDR @A@@@@ JGD R1,PGLOP1 @ @@@@ YD )@@G@@ LA,H1 A0,DPKT2 @A@@@@ SA,H1 A0,DPGCNT @A@@@@YE )@@G@@ SA,H2 A0,DPGCNT @G@@@@ SLJ DLTPGE YF )@@G@@ . $W PERFORM DELETE RECORDS @G@@@@ SLJ COMPYG )@@G@@ACT . $W COMPACT AND WRITE BACK PGS @ @@@@ SZ YH )@@G@@ DPGCNT @A@@@@ LX X1,(1,DPGTBL) @A@@@@ LXYI )@@G@@,U X2,DPGCNT @D@@@@ LR,U R1,DLTPGS . $PYJ )@@G@@ RESET TBL @ @@@@ BT,H1 X1,0,*X2 @ @@@@ TZ,H2 YK )@@G@@ PGRNG @ @@@@ J PAGELP @ @@@@ J YL )@@G@@ AREALP @]@@@@NXTAREA. @E@@@@ LA,T3 A0,0,A1 YM )@@G@@ . $P GET TBL LINK @D@@@@ TNZ A0 . $JYN )@@G@@ END C4 @ @@@@ J RETURN @ @@@@ AA YO )@@G@@ A1,A0 @ @@@@ SA A1,C4P1 @ @@@@ SZ YP )@@G@@ C4ENT @ @@@@ J AREALP @C@@@@DLTRCD +0 YQ )@@G@@ . $H @G@@@@ YR )@@G@@ . THIS ROUTINE SCANS C5 TBL @G@@@@ SZ DLTC10 YS )@@G@@ . AND BUILD A TABLE WHICH @G@@@@ LX,H2 X1,CYT )@@G@@5 . CONSISTS OF ALL RECORD CODES @E@@@@ LX YU )@@G@@ X2,(1,DLTC10) . BEING DELETED @]@@@@DRCDLP. @B@@@@ YV )@@G@@ LA,T1 A0,0,X1 . @B@@@@ SA,T3 A0,0,X2 YW )@@G@@ . @B@@@@ LA,S3 A0,0,X1 . @B@@@@ YX )@@G@@ SA,T2 A0,0,*X2 . @B@@@@ LA,T1 A0,DLTC10 YY )@@G@@ . @B@@@@ AA,U A0,1 . @B@@@@ YZ )@@G@@ SA,T1 A0,DLTC10 . @E@@@@ TG,U A0,DLTTYPEZA )@@G@@S . $P TBL SIZE OVER @B@@@@ ER ERR$ ZB )@@G@@ . @B@@@@ LA,T3 A0,0,X1 . @B@@@@ JZZC )@@G@@ A0,*DLTRCD . @B@@@@ AX X1,A0 ZD )@@G@@ . @B@@@@ J DRCDLP . @]@@@@RETURN. ZE )@@G@@@B@@@@ LX,U X10,KFPKT . @E@@@@ LMJ ZF )@@G@@ X11,KF$AMF . $P FLUSH KF$AM BUG'S@ @@@@ E$DIT EDPKZG )@@G@@T @ @@@@ E$DECV DLTCNT @^@@@@ E$SKIP 1 ZH )@@G@@@A@@@@ E$FD2 ('RECORDS') @^@@@@ E$SKIP 1 ZI )@@G@@@A@@@@ E$FD2 ('DELETED') @#@@@@ E$DITX @ @@@@ZJ )@@G@@PF FORM 12,6,18 @A@@@@ P$RINT (PF 1,14,PRINT) ZK )@@G@@@A@@@@ LX X11,SAVEX11 @ @@@@ J 0,X1ZL )@@G@@1 @^@@@@GETASIZE* +0 . $H@E@@@@ SA A0,HIGHBITZM )@@G@@ . $P REFETCH A0 @B@@@@ LA,T3 A0,HIGHBIT ZN )@@G@@ . @E@@@@ LA,H1 A1,C3 . $P GET AREA TBL ZO )@@G@@@G@@@@ DSL A1,36 . $P COMPUTE NUMBER OF ENTRYZP )@@G@@ @B@@@@ DI,U A1,9 . @B@@@@ LRZQ )@@G@@ R1,A1 . @B@@@@ LA,H2 A1,C3 ZR )@@G@@ . @B@@@@ LXI,U A1,9 . @E@@@@ SEZS )@@G@@,T1 A0,0,*A1 . $T SEARCH AREA TBL @ @@@@ J ZT )@@G@@ NOAREA @E@@@@ ANA,U A1,9 . $P BACK UP POIZU )@@G@@NTER @E@@@@ LA,T1 A0,3,A1 . $P GET PAGE SIZE ZV )@@G@@@E@@@@ DL A1,1,A1 . $P GET AREA NAME @B@@@@ZW )@@G@@ J *GETASIZE . @]@@@@NOAREA. @B@@@@ ZX )@@G@@ SZ A0 . @B@@@@ J *GETASIZE ZY )@@G@@ . @]@@@@$(4). @]@@@@DPGSIZE +0@]@@@@HIGHBIT +0@]@@@@ZZ )@@G@@DLTAREA* +0@]@@@@SAVEX11 +0@G@@@@DPGCNT* +0,0 AA )@@G@@ . TOTAL NUMBER OF PAGES IN CORE @E@@@@DPGTBL* RES DLTPGS AB )@@G@@ . PAGE-NUM,BUFFER-ADDR@]@@@@C4P1 +0@ @@@@C4ENT EQUF AC )@@G@@ C4P1,,H1 @I@@@@DLTTYPES EQU 500 . MAX NUM OF RECAD )@@G@@ORD TYPES CAB BE DELETED @E@@@@DLTC10* RES DLTTYPES AE )@@G@@ . DELETING RECORDS TBL@G@@@@ . AF )@@G@@1ST ENTRY CNT,SW,CODE @G@@@@DLTPKT* +0 AG )@@G@@ . 0,SW,CODE @E@@@@ +0 AH )@@G@@ . . @E@@@@ +0 AI )@@G@@ . SW=0, NON-CALC . @]@@@@DPKT1* +0@]@@@@ +0@]@@@@ AJ )@@G@@ +0@]@@@@ +0@A@@@@DPKT2* +0,0 . #PGS,BUFFADR @A@@@@AK )@@G@@DPKT3* +0,0 . BUFLEN,ST-PG @E@@@@PGRNG +0,0 AL )@@G@@ . STARTING-PG, PGCNT @#@@@@ END ___IZE @D@@@@AM )@@G@@ SA,H1 A0,DPKT3 . $P SAVE IT @G@@@@ AAAN )@@G@@,H2 A0,DPKT2 . $P COMPUTE OVER FLOW BUFF ADDR @D@@@@ AO )@@G@@*[@@@@*SDFF*@#@@@@ AXR$ @[@@@@. @^@@@@. * DBP$APS AP )@@G@@* @C@@@@. ENTER: SLJ DBP$APS @E@@@@. AQ )@@G@@ R1,R8, A0 - A5 ARE USED BY THE ROUTINES @[@@@@. @C@@@@AR )@@G@@. (IN) A0 = DBP @I@@@@. AS )@@G@@ (OUT) A1 = ARE CODE, 0 IF AREA NOT IN AREA COMMAND @D@@@@AT )@@G@@. (OUT) A2 = PAGE NUMBER @D@@@@. AU )@@G@@ A3 = SLOT NUMBER @F@@@@. AV )@@G@@ A4 = ADDR OF AREA TABLE IN C3 @[@@@@. @^@@@@. * APAW )@@G@@S$DBP * @C@@@@. ENTER: SLJ APS$DBP @[@@@@AX )@@G@@. @C@@@@. (IN) A1 = AREA CODE@D@@@@. AY )@@G@@ A2 = PAGE NUMBER @D@@@@. AZ )@@G@@ A3 = SLOT NUMBER @H@@@@. (OBA )@@G@@UT) A0 = DBP, 0 IF AREA NOT IN AREA COMMAND @F@@@@. BB )@@G@@ A4 = ADDR OF AREA TABLE IN C3 @[@@@@. @#@@@@$(4) BC )@@G@@ LIT @]@@@@$(1). @ @@@@PGBIT EQUF 0,X8,S3 @ @@@@BD )@@G@@RCDBIT EQUF 0,X8,S4 @C@@@@DBP$APS* BE )@@G@@ . $H @]@@@@ +0@D@@@@ LR R8,X8 BF )@@G@@ . $P SAVE X8 @E@@@@ LX X8,C3 . $P GET ABG )@@G@@REA TABLES @B@@@@ LXI,U X8,9 . @E@@@@ BH )@@G@@ LA,H1 A4,C3 . $P GET C3 TBL LENGTH@B@@@@ DSBI )@@G@@L A4,36 . @G@@@@ DI,U A4,9 BJ )@@G@@ . $P COMPUTE THE ENTRY COUNT @B@@@@ LR R1,A4 BK )@@G@@ . @D@@@@ LA A1,A0 . $P A1 = DBP BL )@@G@@@E@@@@ LA A5,A0 . $P SAVE DBP IN A5 @E@@@@BM )@@G@@ LA A0,PGBIT . $P GET PG BITS @E@@@@ BN )@@G@@ AA A0,RCDBIT . $P ADD RCD BITS @G@@@@ DSBO )@@G@@L A1,0,A0 . $P SHIFT BY PG + RCD BITS @F@@@@ BP )@@G@@ SE,T1 A1,0,*X8 . $T SEARCH FOR AREA ENTRY @E@@@@ BQ )@@G@@ J NOAREA . $A YES NO,NOAREA @B@@@@ ANBR )@@G@@X X8,(9,9) . @E@@@@ DSL A2,36 BS )@@G@@ . $P SHIFT PAGE TO A2 @B@@@@ LA A0,PGBIT . BT )@@G@@@B@@@@ LDSL A2,0,A0 . @B@@@@ DSL BU )@@G@@ A3,36 . @E@@@@ LA A0,RCDBIT . $PBV )@@G@@ SHIFT SLOT TO A3 @ @@@@ LDSL A3,0,A0 @E@@@@ LABW )@@G@@ A4,X8 . $P A4 = AREA ENTRY @D@@@@ LA BX )@@G@@ A0,A5 . $P A0 = DBP @E@@@@ LX X8,R8 BY )@@G@@ . $P RESTORE X8 @C@@@@ J *DBP$APS BZ )@@G@@ . $E @]@@@@NOAREA. @ @@@@ LX X8,R8 @ @@@@CA )@@G@@ LA A0,A5 @^@@@@ SZ A1 @ @@@@ CB )@@G@@ J *DBP$APS @C@@@@APS$DBP* . $HCC )@@G@@ @]@@@@ +0@F@@@@ SA A1,HIGHBITS . $PCD )@@G@@ GET SIGN EXTENSION @B@@@@ LA,T3 A1,HIGHBITS . CE )@@G@@@E@@@@ LR R8,X8 . $P SAVE X8 IN R8 @E@@@@CF )@@G@@ LX X8,C3 . $P GET AREA TABLES @B@@@@ CG )@@G@@ LXI,U X8,9 . @E@@@@ LA,H1 A4,C3 CH )@@G@@ . $P GET C3 TBL LENGTH@B@@@@ DSL A4,36 CI )@@G@@ . @G@@@@ DI,U A4,9 . $P COMPUTE THE ENTRYCJ )@@G@@ COUNT @B@@@@ LR R1,A4 . @F@@@@ CK )@@G@@ SE,T1 A1,0,*X8 . $P SEARCH FOR AREA ENTRY @E@@@@ CL )@@G@@ J NOAREA1 . $T ENTRY FOUND @E@@@@ ANCM )@@G@@X X8,(9,9) . $A YES NO,NOAREA1 @E@@@@ LA CN )@@G@@ A0,PGBIT . $P GET PAGE BITS @E@@@@ LA A4,ACO )@@G@@1 . $P MOVE ACODE TO A4 @H@@@@ LSSL A4,0,A0 CP )@@G@@ . $P LEFT SHIFT BY NUMBER OF PG BITS @E@@@@ LA CQ )@@G@@ A5,A2 . $P MOVE PG NUM TO A5@E@@@@ OR A4,ACR )@@G@@5 . $P OR A4 TO A5 @E@@@@ LA A0,RCDBIT CS )@@G@@ . $P GET RECORD BITS @H@@@@ LSSL A5,0,A0 CT )@@G@@ . $P SHIFT A5 BY NUMBER OF RED BITS @F@@@@ LA A4,ACU )@@G@@3 . $P MOVE RCD NUM TO A4 @E@@@@ OR A4,ACV )@@G@@5 . $P OR A4 TO A5 @E@@@@ LA A0,A5 CW )@@G@@ . $P MOVE DBP TO A0 @E@@@@ LA A4,X8 CX )@@G@@ . $P RESTORE X8 @E@@@@ LX X8,R8 . $PCY )@@G@@ A4 = AREA ENTRY @C@@@@ J *APS$DBP . $E CZ )@@G@@@]@@@@NOAREA1. @B@@@@ SZ A0 . @B@@@@DA )@@G@@ LX X8,R8 . @B@@@@ J *APSDB )@@G@@$DBP . @]@@@@$(4). @]@@@@HIGHBITS +0@#@@@@ ENDC )@@G@@D ___AC)^@)^@)CC1 )0 )%F@8^@)^@)^@)^@)^@) 0)^-K^[NC([EL#D@)C1JEK)CDMDD )@@G@@C([^[ D1OELT@I@@_@^@)^@)^@)^@)^@)DK)^@)^@)^@)^@)*[@@@@*SDFF*@#@@@@ DE )@@G@@ AXR$ @#@@@@$(4) LIT. @]@@@@$(1). @[@@@@. @^@@@@DF )@@G@@. INPUT ROUTINE @^@@@@. INTERFACE: @C@@@@. DG )@@G@@ LX,U X10,INPKT @C@@@@. LMJ DH )@@G@@ X11,INPUT @[@@@@. @G@@@@. INPKT DI )@@G@@ +LINE-SPACE,WRD-CNT,OUT-MESG @E@@@@. DJ )@@G@@ +EOF-ADDR,INPUT-BUFFER@[@@@@. @E@@@@. IF WRD-CNT IS DK )@@G@@NOT 0, TREAD$ WILL BE PERFORMED @D@@@@. IF LAST NON-BLANK CHDL )@@G@@ARACTER IS A SEMICOLON @A@@@@. LINE IS CINTINUED. @[@@@@DM )@@G@@. @C@@@@INPUT* . $H @E@@@@ DN )@@G@@ LA,H1 A0,1,X10 . $P GET EOF JUMP ADDR@D@@@@ TZDO )@@G@@ EOFSW . $T IS IT EOF @E@@@@ J 0,A0DP )@@G@@ . $A YES,0,A0 NO @D@@@@ DL A0,,X10 DQ )@@G@@ . $P GET INPKT @D@@@@ DS A0,TRDPKT . $PDR )@@G@@ SOTORE @F@@@@ LX X8,INBUF . $P GET INPUT BDS )@@G@@UFFER ADDR @G@@@@ SZ 0,X8 . $P SET CHARACTDT )@@G@@ER COUNT TO 0 @F@@@@ LA A0,X8 . $P UPDATDU )@@G@@E IN BUF ADDR @B@@@@ AA,U A0,1 . @B@@@@DV )@@G@@ SA A0,INBUF . @E@@@@ LA,U A0,1DW )@@G@@ . $P PRESET EOF SW @B@@@@ SA A0,EOFSW DX )@@G@@ . @E@@@@ TNZ WRDCNT . $T IS WORD COUDY )@@G@@NT 0 @E@@@@ J DOREAD . $A YES,PRINT NO DZ )@@G@@@E@@@@ LA,U A0,TRDPKT . $P GET TREAD$ PKT @B@@@@EA )@@G@@ ER TREAD$ . @E@@@@ SA A0,SEB )@@G@@AVEA0 . $P TEMP SAVE A0 @E@@@@ J CHK1STLN EC )@@G@@ . $J CHECK FIRST LINE @[@@@@. @^@@@@. DO READ$ ONLY ED )@@G@@@[@@@@. @C@@@@DOREAD . $H @E@@@@EE )@@G@@ LA A0,TRDPKT+1 . $P GET READ$ PKT @B@@@@ EF )@@G@@ ER READ$ . @E@@@@ SA A0,SAVEA0 EG )@@G@@ . $P TEMP SAVE A0 @B@@@@ J CHK1STLN EH )@@G@@ . @]@@@@$(4). @^@@@@TRDPKT RES 2 @A@@@@WRDCNT EQEI )@@G@@UF TRDPKT,,S3 @A@@@@INBUF EQUF TRDPKT+1,,H2 @]@@@@EJ )@@G@@$(1). @[@@@@. @A@@@@. CHECK FIRST LINE INPUT @[@@@@EK )@@G@@. @C@@@@CHK1STLN . $H @E@@@@ EL )@@G@@ SZ EOFSW . $P RESET EOF SW @E@@@@ LSEM )@@G@@SL A0,18 . $P GET WORD IN COUNT@B@@@@ SSL EN )@@G@@ A0,18 . @F@@@@ JZ A0,RETRN . $JEO )@@G@@ RETURN IF NO INPUT @G@@@@ LA A1,A0 . $PEP )@@G@@ CHECK IF LAST WORD IS ALL BLK@F@@@@ AA A1,X8 EQ )@@G@@ . $P GET LAST WORD ADDR @E@@@@ LA A1,0,A1 ER )@@G@@ . $P GET THE LAST WORD@D@@@@ TNE A1,(' ') . $TES )@@G@@ ALL BLANK @C@@@@ ANA,U A0,1 . $A A0 -1@B@@@@ET )@@G@@ JZ A0,RETRN . @E@@@@ LR R3,AEU )@@G@@0 . $P SAVE IT IN R3 @G@@@@ AA A0,X8 EV )@@G@@ . $P COMPUTE LAST WORD ADDR @E@@@@ LA A0,0EW )@@G@@,A0 . $P GET THE LAST WORD@F@@@@ SLJ SCAN EX )@@G@@ . $W EXAMINE THE LAST WORD @H@@@@ LA A0,R3 EY )@@G@@ . $P COMPUTE TOTAL NUM OF CHARACTER IN @B@@@@ ANA,U EZ )@@G@@ A0,1 . @B@@@@ MSI,U A0,6 . FA )@@G@@@B@@@@ AA A0,R1 . @D@@@@ SA,H2 FB )@@G@@ A0,,X8 . $P SAVE IT @E@@@@ TZ CNTNUSW FC )@@G@@ . $T CONTINUE SW SET @E@@@@ J GETNXTLN FD )@@G@@ . $A YES NO,GETNXTLN @D@@@@ J RETRN . $JFE )@@G@@ RETURN @[@@@@. @A@@@@. GET NXT CONTINUED LINE @[@@@@FF )@@G@@. @C@@@@GETNXTLN . $H @A@@@@ FG )@@G@@ R$EAD (SETEOF,BUFFER) @F@@@@ LSSL A0,18 FH )@@G@@ . $P GET NUM. OF WORDS IN @B@@@@ SSL A0,18 FI )@@G@@ . @F@@@@ JZ A0,RETRN . $J RETURN IF NO INPUFJ )@@G@@T @G@@@@ LA A1,A0 . $P CHECK IF LAST WORFK )@@G@@D IS ALL BLK@F@@@@ ANA,U A1,1 . $P GET LAST WOFL )@@G@@RD ADDR @E@@@@ LA A1,BUFFER,A1 . $P GET THE LASFM )@@G@@T WORD@D@@@@ TNE A1,(' ') . $T ALL BLANK @C@@@@FN )@@G@@ ANA,U A0,1 . $A A0 -1@B@@@@ JZ FO )@@G@@ A0,RETRN . @E@@@@ LR R3,A0 . SAFP )@@G@@VE IT IN R3 @B@@@@ ANA,U A0,1 . @E@@@@FQ )@@G@@ LA A0,BUFFER,A0 . $P GET LASR WORD IN @F@@@@ FR )@@G@@ SLJ SCAN . $W EXAMINE THE LAST WORD @G@@@@ FS )@@G@@ LA A0,R3 . $P COMPUTE NUM OF CHARACTER IN @B@@@@FT )@@G@@ ANA,U A0,1 . @^@@@@ MSI,U A0,6FU )@@G@@@B@@@@ AA A0,R1 . @E@@@@ LR FV )@@G@@ R3,A0 . SAVE IT IN R3 @H@@@@ SLJ MOVEFW )@@G@@IT . $P MOVE LAST LINE TO INPUT BUFFER @D@@@@ TZFX )@@G@@ CNTNUSW . $P CONTINUED @B@@@@ J GETNFY )@@G@@XTLN . @B@@@@ J RETRN . @[@@@@FZ )@@G@@. @B@@@@. EXAMINE THE LAST INPUT WORD @H@@@@ . GA )@@G@@ SKIP BLANKS, CHECK FOR ' ' @[@@@@GB )@@G@@. @C@@@@SCAN +0 . $H @E@@@@ GC )@@G@@ LR,U R1,6 . $P SET CHAR COUNT @C@@@@BLKLOP GD )@@G@@ . $H @E@@@@ DSL A0,6 GE )@@G@@ . $P GET 1 CHAR @B@@@@ SSL A1,30 GF )@@G@@ . @E@@@@ TE,U A1,5 $T IS IT A BLANK GG )@@G@@@E@@@@ J NONBLK . $A YES NO,NONBLK @D@@@@GH )@@G@@ JGD R1,BLKLOP . $J TRY NXT @B@@@@ ERGI )@@G@@ ERR$ . @[@@@@. @C@@@@NONBLK GJ )@@G@@ . $H @E@@@@ SZ CNTNUSW . $PGK )@@G@@ RESET CONTINUE SW@E@@@@ TE,U A1,073 . $T A CONGL )@@G@@TINUED CHAR @E@@@@ J *SCAN . $A YES NO,*SCAGM )@@G@@N @F@@@@ SA A1,CNTNUSW . $P SET THE CONTINUEDGN )@@G@@ SW @C@@@@ JGD R1,$+2 . -1 @B@@@@ GO )@@G@@ ER ERR$ . @D@@@@ J *SCAN GP )@@G@@ . $J RETURN @[@@@@. @E@@@@. MOVE THE 2ND LINE ANGQ )@@G@@D UP TO THE INPUT BUFFER @[@@@@. @A@@@@. R3=NUM. OF CHAGR )@@G@@R TO MOVE @B@@@@. FROM BUFFER TO X8+(0,X8,H2)/6 @[@@@@. GS )@@G@@@C@@@@MOVEIT +0 . $H @F@@@@ LAGT )@@G@@,H2 A4,0,X8 . $P GET CHAR POS IN INPUT @E@@@@ AUGU )@@G@@ A4,R3 . $P + CURRENT LENGTH @D@@@@ SA,H2 GV )@@G@@ A5,,X8 . $P SAVE IT @H@@@@ LA,U A5,1 GW )@@G@@ . $P START FROM 1ST CHAR FROM BUFFER @G@@@@ SZ GX )@@G@@ A3 . $P COMPUTE INPUT BUFFER ADDR @B@@@@ DIGY )@@G@@,U A3,6 . @B@@@@ AA A3,X8 GZ )@@G@@ . @B@@@@ AA,U A3,1 . @B@@@@ LXHA )@@G@@ X9,A3 . @F@@@@ LXI,U X9,1 HB )@@G@@ . $P SET UP X9 FOR MOVE @B@@@@ AA,U A4,1 HC )@@G@@ . @]@@@@MVELOP. @E@@@@ JGD R3,$+2 . $PHD )@@G@@ LOOP FOR ALL CHAR@D@@@@ J *MOVEIT . $J RETURHE )@@G@@N @G@@@@ LA A0,A5 . $P COMPUTE CHAR FROMHF )@@G@@ BUFFER @B@@@@ AA,U A5,1 . @B@@@@ HG )@@G@@ ANA,U A0,1 . @B@@@@ DSL A0,36 HH )@@G@@ . @B@@@@ DI,U A0,6 . @E@@@@ HI )@@G@@ EX GETONE,A1 . $P GET A CHAR @G@@@@ LAHJ )@@G@@ A0,A4 . $P COMPUTE INPUT CHAR POS @^@@@@ HK )@@G@@ AA,U A4,1@B@@@@ ANA,U A0,1 . @B@@@@HL )@@G@@ DSL A0,36 . @B@@@@ DI,U A0,6HM )@@G@@ . @F@@@@ EX PUTONE,A1 . $P SAVE HN )@@G@@IN INPUT BUFFER @B@@@@ J MVELOP . @[@@@@HO )@@G@@. @B@@@@GETONE LA,S1 A3,BUFFER,A0 . @A@@@@ LAHP )@@G@@,S2 A3,BUFFER,A0 @A@@@@ LA,S3 A3,BUFFER,A0 @A@@@@HQ )@@G@@ LA,S4 A3,BUFFER,A0 @A@@@@ LA,S5 A3,BUFFER,HR )@@G@@A0 @A@@@@ LA,S6 A3,BUFFER,A0 @ @@@@PUTONE SA,S1 HS )@@G@@ A3,,X9 @ @@@@ SA,S2 A3,,X9 @ @@@@ SA,S3 HT )@@G@@ A3,,X9 @ @@@@ SA,S4 A3,,X9 @ @@@@ SA,S5 HU )@@G@@ A3,,X9 @ @@@@ SA,S6 A3,,*X9 @[@@@@. @D@@@@RETRN.HV )@@G@@ . $H RETURN @E@@@@ LA HW )@@G@@ A0,SAVEA0 . $P GET 1ST A0 @D@@@@ J 0,X1HX )@@G@@1 . $J RETURN @C@@@@SETEOF HY )@@G@@ . $H @B@@@@ LA,U A0,1 . @B@@@@ HZ )@@G@@ SA A0,EOFSW . @ @@@@ J RETRN IA )@@G@@@]@@@@$(4). @F@@@@SAVEA0 +0 . $ TEMP AIB )@@G@@0(FIRST READ$) @E@@@@. . $ TO SAVIC )@@G@@E INPUT MOSE@]@@@@EOFSW +0@^@@@@BUFFER RES 14 @]@@@@CNTNUSID )@@G@@W +0@#@@@@ END ___0,18 . $P GET NUM. OF WORDSIE )@@G@@ IN @B@@@@ SS*[@@@@*SDFF*@#@@@@ AXR$ @A@@@@. IF )@@G@@ *RESTORE PROCESSOR* @]@@@@. @E@@@@. THIS PROIG )@@G@@CESSOR WILL RESTORE THE D. B. RECORDS FROM@F@@@@. D$FILE'S BACK IH )@@G@@TO THEIR ORIGINAL AREA, PAGE AND SLOT. @F@@@@. NO DELETE COMMII )@@G@@AND SHOULD PROCEED THE RESTORE COMMAND. @F@@@@. NO PATCH COMMAIJ )@@G@@ND SHOULD BE ISSUED AFTERWARD EITHER. @G@@@@. LIST FOLLOWED IK )@@G@@WILL BE CHECKED AGAINST EACH RECORD RESTORED: @]@@@@. @F@@@@IL )@@G@@. 1. RECORD LENGTH SHOULD NOT BE CHANGED.(FATAL ERROR) @D@@@@IM )@@G@@. 2. RECORD CODE MAY BE CHANGED BY THE TYPE. @H@@@@. 3.IN )@@G@@ SET POINTERS AND CALC POINTER(IF ANY) SHOULD NOT BE CHANGED. @]@@@@IO )@@G@@. @#@@@@$(4) LIT. @]@@@@$(1). @C@@@@RESTORE* IP )@@G@@ . $H @D@@@@ TZ TOPT IQ )@@G@@ . $T TEST MODE @E@@@@ SLJ DEBUG$ . $AIR )@@G@@ YES,*DEBUG$ @F@@@@ SX,H2 X11,SAVEX11 . $P SAVE IS )@@G@@RETURN ADDRESS @E@@@@ LX,H2 X1,C3 . $P DO SOIT )@@G@@ME INIT @G@@@@ LA,U A0,0 . $P COMPUTE LARIU )@@G@@GEST PAGE SIZE @]@@@@PGSZLP. @G@@@@ TLE,T1 A0,3,X1 IV )@@G@@ . $P SIZE BIGGER THAN PREVIOUS @D@@@@ LA,T1 A0,3IW )@@G@@,X1 . $A YES,* NO @D@@@@ TNZ,T3 0,X1 IX )@@G@@ . $T END OF C3 @E@@@@ J GETPGSZ . $A YES,GIY )@@G@@ETPGSZ NO @E@@@@ AX,T3 X1,0,X1 . $P GET NXT TBLIZ )@@G@@ ADDR @B@@@@ J PGSZLP . @]@@@@GETPGSZ. JA )@@G@@@E@@@@ SZ BUFPTR . $P RESET POINTER @E@@@@JB )@@G@@ SA A0,PGSIZE . $P SAVE PGE SIZE @G@@@@ JC )@@G@@ MSI,U A0,BUFCNT . $P COMPUTE TOTAL BUFFER SIZE @E@@@@JD )@@G@@ LA A1,LAST$D . $P COMPUTE CORE ADDR@B@@@@ JE )@@G@@ AA,U A1,1 . @E@@@@ SA A1,BASEADRJF )@@G@@ . $P SAVE BASE ADDR @E@@@@ AA A0,A1 JG )@@G@@ . $P MCORE$ ADDR @B@@@@ ER MCORE$ . JH )@@G@@@E@@@@ SA A0,LAST$D . $P RESET DBANK ADDR @E@@@@JI )@@G@@ LR,U R1,BUFCNT . $P INIT TBL ENTRIES @B@@@@ JJ )@@G@@ SZ A0 . @B@@@@ LX,U X1,A0 JK )@@G@@ . @B@@@@ LX X2,(1,BUFTBL) . @B@@@@ JL )@@G@@ BT X2,,*X1 . @E@@@@GETNXT. JM )@@G@@ . $H GET NEXT LINE @E@@@@ SLJ GET1RCD JN )@@G@@ . $W GET A RECORD @D@@@@ SLJ CHKDBP . $WJO )@@G@@ CHK DBP @G@@@@ SLJ GETPG . $W FETCH THE PJP )@@G@@AGE REFERENCED @F@@@@ SLJ RSTOR . $W RESTOJQ )@@G@@RE THE RECORD @B@@@@ J GETNXT . @]@@@@JR )@@G@@. @A@@@@. GET A RECORD FROM D$FILE @]@@@@. JS )@@G@@@C@@@@GET1RCD +0 . $H @E@@@@ LXJT )@@G@@,U X10,RCDBUF . $P GET BUFFER ADDR @E@@@@ LMJ JU )@@G@@ X11,DF$AMR . $W GET A LINE @E@@@@ LA A0,(JV )@@G@@+0777777777777). $P END OF F CHECKER@C@@@@ TNE A0,RCDBUF JW )@@G@@ . $T EOF @B@@@@ J RSTEND . @F@@@@JX )@@G@@ TNZ RCDBUF . $T CHK IF CONTROL RECORD @C@@@@JY )@@G@@ J GET1RCD+1 . $ @F@@@@ LA JZ )@@G@@ A0,RESTCNT . $P UPDATE RESTORE COUNT @B@@@@ AA,U KA )@@G@@ A0,1 . @C@@@@ SA A0,RESTCNT . $ KB )@@G@@ @D@@@@ J *GET1RCD . $J RETURN @]@@@@KC )@@G@@$(4). @F@@@@RCDBUF RES 1000 . 1K BUFFER FOR KD )@@G@@RECORD!!! @]@@@@$(1). @]@@@@. @B@@@@. MAKE SURKE )@@G@@E DBP IS A LEGAL ONE @]@@@@. @C@@@@CHKDBP +0 KF )@@G@@ . $H @E@@@@ LA A0,RCDBUF . $PKG )@@G@@ GET THE DBP @C@@@@ SLJ DBP$APS . $W KH )@@G@@@D@@@@ TNZ A1 . $T GOOD DBP @C@@@@ KI )@@G@@ J ERR1 . $J @E@@@@ SA A1,AKJ )@@G@@REANUM . $P SAVE AREA CODE @E@@@@ SA A2,PAGENUMKK )@@G@@ . $P SAVE PAGE NUM @E@@@@ SA A3,SLOTNUM KL )@@G@@ . $P SAVE SLOT NUM @D@@@@ J *CHKDBP . $JKM )@@G@@ RETURN @]@@@@$(4). @]@@@@AREANUM +0@]@@@@PAGENUM +0@]@@@@KN )@@G@@SLOTNUM +0@]@@@@RESTCNT* +0@]@@@@$(1). @]@@@@. @C@@@@KO )@@G@@. GET A DATA BASE PAGE IF NOT IN CORE @]@@@@. @C@@@@KP )@@G@@GETPG +0 . $H @E@@@@ LA KQ )@@G@@ A0,AREANUM . $P GET AREA CODE @D@@@@ LA A1,PKR )@@G@@AGENUM . $P PAGE NUM @E@@@@ LSSL A1,18 KS )@@G@@ . $P PACK BOTH IN A0 @B@@@@ LDSL A0,18 . KT )@@G@@@C@@@@ LR,U R1,BUFCNT . $P @D@@@@ LXKU )@@G@@ X1,(1,BUFTBL) . $P TBL ADDR @E@@@@ SE A0,,KV )@@G@@*X1 . $T SEARCH TBL ENTRY @E@@@@ J GETPG1 KW )@@G@@ . $A YES NO,GETPG1 @F@@@@ LA,U A0,BUFCNT KX )@@G@@ . $P COMPUTE PAGE BUF ADDR @B@@@@ ANA A0,R1 KY )@@G@@ . @D@@@@ ANA,U A0,1 . $P ENTRY NUM @D@@@@KZ )@@G@@ MSI A0,PGSIZE . $P UNIT SIZE @D@@@@ AALA )@@G@@ A0,BASEADR . $P + OFF-SET @E@@@@ LX X8,ALB )@@G@@0 . $P PUT IT IN X8 @D@@@@ J *GETPG LC )@@G@@ . $J RETURN @C@@@@GETPG1. . $HLD )@@G@@ @F@@@@ LA A0,BUFPTR . $P GET NXT AVAI ENTRLE )@@G@@Y @E@@@@ TZ BUFTBL,A0 . $T ENTRY IN USE LF )@@G@@@E@@@@ SLJ WRTPG . $A YES,WRTPG NO @E@@@@LG )@@G@@ LA,T3 A0,AREANUM . $P GET AREA CODE @E@@@@ LH )@@G@@ SLJ GTASZ . $P GET AREA INFO @D@@@@ TNLI )@@G@@Z A0 . $T GOOD AREA @C@@@@ ER ERR$LJ )@@G@@ . $E NOP @E@@@@ DS A1,RDPKT . $PLK )@@G@@ SAVE AREA NAME @E@@@@ SA,H1 A0,RDBUF+1 . $P SAVE LL )@@G@@PAGE SIZE @D@@@@ LA A0,PAGENUM . $P PAGE NUM LM )@@G@@@C@@@@ SA,H2 A0,RDBUF+1 . $P @D@@@@ LALN )@@G@@ A0,BUFPTR . $P ENTRY PTR @E@@@@ MSI A0,PLO )@@G@@GSIZE . $P *UNIT SIZE @F@@@@ AA A0,BASEADRLP )@@G@@ . $P COMPUTE BUFFER ADDR @B@@@@ SA,H2 A0,RDBUF LQ )@@G@@ . @D@@@@ LX,U X10,RDPKT . $P DB$AM PKT LR )@@G@@@D@@@@ LMJ X11,DB$AM . $W DO DB$AM @E@@@@ LS )@@G@@ TZ,S1 RDPKT+3 . $T CHK STATUS @D@@@@ ERLT )@@G@@ ERR$ . $E BOMBED @G@@@@ LA A0,BLU )@@G@@UFPTR . $P COMPUTE & SET TBL ENTRY @D@@@@ LA LV )@@G@@ A1,AREANUM . $P AREA CODE @C@@@@ SA,H1 A1,BUFTBL,LW )@@G@@A0 . $P @D@@@@ LA A1,PAGENUM . $P PAGE LX )@@G@@NUM @B@@@@ SA,H2 A1,BUFTBL,A0 . @E@@@@ AALY )@@G@@,U A0,1 . $P UP BUFPTR BY 1 @G@@@@ DSL LZ )@@G@@ A0,36 . $P COMPUTE NXT ENTRY POINT @B@@@@ DIMA )@@G@@,U A0,BUFCNT . @B@@@@ SA A1,BUFPTR MB )@@G@@ . @D@@@@ J GETPG+1 . $J RETURN @]@@@@MC )@@G@@. @B@@@@. WRITE A PAGE BACK TO DATA BASE @]@@@@. MD )@@G@@ @C@@@@WRTPG +0 . $H @E@@@@ ME )@@G@@ LX X1,BUFPTR . $P GET TBL ENTRY @E@@@@ LAMF )@@G@@,H1 A0,BUFTBL,X1 . $P GET AREA CODE @E@@@@ SLJ MG )@@G@@ GTASZ . $W GET AREA INFO @D@@@@ TNZ A0 MH )@@G@@ . $T GOOD AREA @B@@@@ ER ERR$ MI )@@G@@ . @E@@@@ DS A1,WRTPKT . $P SAVE AREA NAME MJ )@@G@@@D@@@@ SA,H1 A0,WRTBUF+1 . $P PAGE SIZE @E@@@@ MK )@@G@@ LX X1,BUFPTR . $P GET TBL ENTRY @E@@@@ LAML )@@G@@,H2 A0,BUFTBL,X1 . $P GET PAGE NUM @E@@@@ SA,H2 MM )@@G@@ A0,WRTBUF+1 . $P START PGE NUM @E@@@@ LA A0,XMN )@@G@@1 . $P COMPUTE BUF ADDR @E@@@@ MSI A0,PGSIZE MO )@@G@@ . $P SKIP UNITS @E@@@@ AA A0,BASEADR MP )@@G@@ . $P ACTUAL ADDR @D@@@@ SA,H2 A0,WRTBUF . $PMQ )@@G@@ SAVE IT @D@@@@ LX,U X10,WRTPKT . $P DB$AM PKT MR )@@G@@@D@@@@ LMJ X11,DB$AM . $DO DB$AM @D@@@@ MS )@@G@@ TZ,S1 WRTPKT+3 . $T STATUS OK @^@@@@ ER MT )@@G@@ ERR$@B@@@@ LX X1,BUFPTR . @E@@@@ SZMU )@@G@@ BUFTBL,X1 . $P RESET TBL ENTRY @D@@@@ J MV )@@G@@ *WRTPG . $J RETURN @]@@@@. @E@@@@. GEMW )@@G@@T AREA INFORMATION, PAGE SIZE AND AREA NAME @]@@@@. @C@@@@MX )@@G@@GTASZ +0 . $H @E@@@@ LA,H1 MY )@@G@@ A1,C3 . $P GET AREA TBL(C3) @F@@@@ DSL A1,3MZ )@@G@@6 . $P COMPUTE NUM OF ENTRY @E@@@@ DI,U A1,9NA )@@G@@ . $P 9 WORDS PER ENTRY@B@@@@ LR R1,A1 NB )@@G@@ . @D@@@@ LA,H2 A1,C3 . $P TBL ADDR NC )@@G@@@B@@@@ LXI,U A1,9 . @E@@@@ SE,T1 ND )@@G@@ A0,,*A1 . $T SEARCH TBL @D@@@@ J NOARNE )@@G@@EA .$J BAD AREA @E@@@@ ANA,U A1,9 NF )@@G@@ . $P BACK UP PTR @E@@@@ LA,T1 A0,3,A1 . $PNG )@@G@@ GET PAGE SZ @E@@@@ DL A1,1,A1 . $P GET ANH )@@G@@REA NAME @D@@@@ J *GTASZ . $J RETURN NI )@@G@@@]@@@@NOAREA. @C@@@@ SZ A0 . $ NJ )@@G@@@D@@@@ J GTASZ . $J RETURN @]@@@@. NK )@@G@@ @ @@@@. RESTORE THE RECORD @]@@@@. @C@@@@RSTOR NL )@@G@@ +0 . $H @G@@@@ LA A0,SNM )@@G@@LOTS . $P GET NUM OF SLOTS IN THE PAGE @E@@@@ AA NN )@@G@@ A0,CALCNUM . $P + CALC SLOTS @G@@@@ TLE A0,SNO )@@G@@LOTNUM . $T POINT TO A UNUSED SLOT @E@@@@ J NP )@@G@@ ERR2 . $A YES,ERR2 NO @E@@@@ LX X6,XNQ )@@G@@8 . $P COMPUTE SLOT ADDR@C@@@@ AX X6,PGLEN NR )@@G@@ . $ @B@@@@ ANX X6,SLOTNUM . @E@@@@NS )@@G@@ TNZ 0,X6 . $T A GOOD SLOT @E@@@@ NT )@@G@@ J ERR2 . $A YES NO,ERR2 @E@@@@ TPNU )@@G@@ 0,X6 . $T SLOT IN USE @B@@@@ J NV )@@G@@ ERR2 . @E@@@@ LA A0,SLTDESC . $PNW )@@G@@ GET SLOT DESC @E@@@@ AND,U A0,010 . $T CHK FNX )@@G@@OREIGN BIT @E@@@@ TZ A1 . $T A FOREIGN SNY )@@G@@LOT @E@@@@ J FORGN . $A YES,FORGN NO NZ )@@G@@@E@@@@ LX X7,X8 . $P GET RECORD ADDR @C@@@@OA )@@G@@ AX X7,DISP . $P @C@@@@RSTOR1. OB )@@G@@ . $H @E@@@@ LA A0,RCDCODE OC )@@G@@ . $P GET RECORD CODE @E@@@@ TE,T1 A0,RCDBUF+1 . $TOD )@@G@@ CODE CHANGED @F@@@@ J ERR6 . $J RECOROE )@@G@@D CODE MODIFIED @F@@@@ SLJ RCDTBL . $P GET ROF )@@G@@ECORD CODE MOD @E@@@@ LA,H2 A0,RCDBUF+1 . $P GET ROG )@@G@@ECORD LENG @D@@@@ TE A0,RCDLEN . $T MATCHED OH )@@G@@@B@@@@ J ERR3 . @F@@@@ SLJ OI )@@G@@ CHKPTR . $W CHK SET PTRS ANS CALC @E@@@@ LR OJ )@@G@@ R1,RCDLEN . $P TRANSFER RECORD @B@@@@ LXI,U X7,1OK )@@G@@ . @B@@@@ LX X1,(1,RCDBUF+1) . @B@@@@OL )@@G@@ BT X7,,*X1 . @D@@@@ J *RSTOM )@@G@@OR . $J RETURN @]@@@@. @B@@@@. RECORD SON )@@G@@TORED IN FOREIGN PAGE @]@@@@. @C@@@@FORGN. OO )@@G@@ . $H @I@@@@ LA,H2 A0,RCDBUF+1 . $POP )@@G@@ MODIFY RECORD FOR THE FOREIGN PAGE @B@@@@ AA,U A0,1OQ )@@G@@ . @E@@@@ SA,H2 A0,RCDBUF+1 . $P UP LEOR )@@G@@NGTH BY 1 @G@@@@ LA A1,RCDBUF . $P PUT DBP AT OS )@@G@@END OF RECORD @B@@@@ SA A1,RCDBUF,A0 . @E@@@@OT )@@G@@ LA,S3 A0,RCDBUF+1 . $P RECORD DESC @E@@@@ OU )@@G@@ OR,U A0,020 . $P SET FOREIGN BIT @B@@@@ SAOV )@@G@@,S3 A0,RCDBUF+1 . @E@@@@ LA A0,RCDNUM OW )@@G@@ . $GET RECORD NUM @C@@@@ AND,U A0,07777 . $POX )@@G@@ @D@@@@ SA A1,RCDNUMG . $P SAVE IT @F@@@@OY )@@G@@ LA A0,DISP . $P GET FOREIGN PAGE NUM @B@@@@OZ )@@G@@ SA A0,PAGENUM . @D@@@@ LA A0,APA )@@G@@CODE . $P AREA CODE @B@@@@ SA A0,AREANUM PB )@@G@@ . @D@@@@ SLJ GETPG . $P GET PG @E@@@@PC )@@G@@ LX X6,X8 . $P COMPUTE SLOT ADDR@B@@@@ PD )@@G@@ AX X6,PGLEN . @E@@@@ ANX X6,CALCNUMPE )@@G@@ . $P SKIP CALC SLOTS @E@@@@ LR R1,SLOTS PF )@@G@@ . $P NUM OF SLOTS @C@@@@CKNUMLP. . $HPG )@@G@@ @E@@@@ ANX,U X6,1 . $P POINT TO NXT SLOTPH )@@G@@@E@@@@ JGD R1,$+2 . $T END OF SLOTS @B@@@@PI )@@G@@ J ERR4 . @E@@@@ TP 0,X6PJ )@@G@@ . $T SLOT IN USE @B@@@@ J CKNUMLP PK )@@G@@ . @E@@@@ LA,U A0,020 . $P CHK FOREIGNPL )@@G@@ BIT @B@@@@ AND A0,SLTDESC . @B@@@@ JZPM )@@G@@ A1,CKNUMLP . @E@@@@ LA A0,RCDNUM PN )@@G@@ . $P GET RECORD NUM @C@@@@ AND,U A0,07777 . $ PO )@@G@@ @D@@@@ TE A1,RCDNUMG . $T RIGHT ONE @B@@@@PP )@@G@@ J CKNUMLP . @F@@@@ LX X7,XPQ )@@G@@8 . $P COMPUTE RECORD ADDRR @B@@@@ AX X7,DPR )@@G@@ISP . @E@@@@ LA,U A0,020 . $P CHK RPS )@@G@@ECORD DESC @B@@@@ AND A0,RCDDESC . @B@@@@ PT )@@G@@ JZ A1,CKNUMLP . @E@@@@ LA A0,RCDLEN PU )@@G@@ . $P CHK SYS POINTER @B@@@@ ANA,U A0,1 PV )@@G@@ . @B@@@@ AA A0,X7 . @F@@@@ LAPW )@@G@@ A0,,A0 . $P GET THE SYS POINTER @D@@@@ TEPX )@@G@@ A0,RCDBUF . $T MATCHED @B@@@@ J CKNUPY )@@G@@MLP . @F@@@@ J RSTOR1 . $J RETURPZ )@@G@@N NORMAL PROCESS @ @@@@PGLEN EQUF 2,X8,H1 @ @@@@PGNUM EQQA )@@G@@UF 1,X8,H2 @ @@@@CALCNUM EQUF 6,X8,H1 @ @@@@SLOTS EQQB )@@G@@UF 3,X8,H1 @ @@@@ACODE EQUF 1,X8,T1 @ @@@@RCDCODE EQQC )@@G@@UF 0,X7,T1 @ @@@@RCDLEN EQUF 0,X7,H2 @ @@@@RCDDESC EQQD )@@G@@UF 0,X7,S3 @ @@@@SLTDESC EQUF 0,X6,S1 @ @@@@DISP EQQE )@@G@@UF 0,X6,H2 @ @@@@RCDNUM EQUF 0,X6,H1 @]@@@@. QF )@@G@@@C@@@@. ROUTINE TO GET RECORD INFOMATION @]@@@@. QG )@@G@@@C@@@@RCDTBL +0 . $H @F@@@@ LXQH )@@G@@,H2 X9,C5 . $P GET RECORD TBL ADDR @]@@@@RCDLP. QI )@@G@@@G@@@@ TNE,T1 A0,,X9 . $T SEE IF MATCH THE ENTRY QJ )@@G@@ @D@@@@ J FINDRCD . $J FOUND IT @E@@@@QK )@@G@@ TNZ,T3 0,X9 . $T END OF TBL @F@@@@ QL )@@G@@ J ERR5 . $E RECORD NOT FOUND(C5) @E@@@@ QM )@@G@@ AX,T3 X9,,X9 . $P NEXT ENTRY @B@@@@ J QN )@@G@@ RCDLP . @C@@@@FINDRCD. QO )@@G@@ . $H @F@@@@ TNZ NEWCODE . $T RECORD CODEQP )@@G@@ MODIFIED @E@@@@ J *RCDTBL . $A YES NO,*RCDQQ )@@G@@TBL @F@@@@ LA A0,NEWCODE . $P GET NEW RECORD COQR )@@G@@DE @F@@@@ SA,T1 A0,RCDBUF+1 . $P CHANGE RECORD CODQS )@@G@@E @D@@@@ J *RCDTBL . $J RETURN @ @@@@QT )@@G@@NEWSW EQUF 0,X9,S4 @ @@@@NEWCODE EQUF 1,X9,T1 @ @@@@QU )@@G@@FIRSTWD EQUF 1,X9,T3 @ @@@@OLDCODE EQUF 0,X9,T1 @]@@@@QV )@@G@@. @C@@@@. CHECK SET PTR'S AND CALC PTR(IF ANY) @]@@@@QW )@@G@@. @C@@@@CHKPTR +0 . $H @E@@@@QX )@@G@@ LA A0,FIRSTWD . $P GET NUM OF PTRS @B@@@@ QY )@@G@@ ANA,U A0,1 . @F@@@@ SA A0,PTRCNT QZ )@@G@@ . $P SAVE NUM OF POINTERS @F@@@@ LR R1,A0 RA )@@G@@ . $P SAVE IT IN REPEATER @E@@@@ LX X1,X7 RB )@@G@@ . $P GET RECORD ADDR @F@@@@ AX,U X1,1 RC )@@G@@ . $P SKIP RECORD HEADER @B@@@@ LXI,U X1,1 RD )@@G@@ . @C@@@@ LX X2,(1,RCDBUF+2) . $P @]@@@@PRTLP.RE )@@G@@ @D@@@@ JGD R1,$+2 . $T DONE ALL @D@@@@RF )@@G@@ J *CHKPTR . $J RETURN @D@@@@ LARG )@@G@@ A0,,*X1 . $P GET A PTR @C@@@@ TNE A0,,RH )@@G@@*X2 . $T OK @E@@@@ J PRTLP . $ARI )@@G@@ YES,PRTLP NO @F@@@@ J ERR7 . $E SET/CRJ )@@G@@ALC PTR GOOF! @]@@@@. @C@@@@. END OF RESTORE, FLUSRK )@@G@@H ALL BUFFERS @]@@@@. @C@@@@RSTEND. RL )@@G@@ . $H @D@@@@ SZ BUFPTR . $P RESETRM )@@G@@ PTR @C@@@@FLUSHLP. . $H @E@@@@ RN )@@G@@ LX X1,BUFPTR . $P GET BUF PTR @F@@@@ TZRO )@@G@@ BUFTBL,X1 . $T CHK IF AN EMPTY ENTRY @E@@@@ SLRP )@@G@@J WRTPG . $A YES NO,WRTPG @E@@@@ LA RQ )@@G@@ A0,BUFPTR . $P UPDATE PTR @B@@@@ AA,U A0,1RR )@@G@@ . @B@@@@ SA A0,BUFPTR . @D@@@@RS )@@G@@ TE,U A0,BUFCNT . $T DONE ALL @E@@@@ J RT )@@G@@ FLUSHLP . $A YES NO,FLUSHLP @ @@@@ E$DIT RU )@@G@@ EDPKT @ @@@@ E$DECV RESTCNT @^@@@@ E$SKIP RV )@@G@@ 1 @A@@@@ E$FD2 ('RECORDS') @^@@@@ E$SKIP RW )@@G@@ 1 @A@@@@ E$FD2 ('RESTORED') @#@@@@ E$DITX RX )@@G@@@A@@@@ P$RINT (PF 1,12,PRINT) @D@@@@ J *SAVRY )@@G@@EX11 . $J RETURN @C@@@@RCDID +0 RZ )@@G@@ . $H @ @@@@ E$DIT EDPKT @A@@@@ E$FD2 SA )@@G@@ ('NEW-ID:') @ @@@@ E$FD1 ('DBP-') @A@@@@ E$SB )@@G@@OCTF 12,RCDBUF @A@@@@ E$FD2 (',HEADER-') @A@@@@SC )@@G@@ E$OCTF 12,RCDBUF+1 @#@@@@ E$DITX @A@@@@ SD )@@G@@ P$RINT (PF 1,12,PRINT) @ @@@@ J *RCDID @C@@@@SE )@@G@@ORCDID +0 . $H @ @@@@ E$DIT SF )@@G@@ EDPKT @A@@@@ E$FD2 ('OLD-ID:') @ @@@@ E$SG )@@G@@FD1 ('DBP-') @A@@@@ E$OCTF 12,RCDBUF @A@@@@ SH )@@G@@ E$FD2 (',HEADER-') @ @@@@ E$OCTF 12,0,X7 @#@@@@SI )@@G@@ E$DITX @A@@@@ P$RINT (PF 1,12,PRINT) @ @@@@ SJ )@@G@@ J *ORCDID @]@@@@. @^@@@@. ERROR ROUTINESSK )@@G@@@]@@@@. @C@@@@ERR1. . $H SL )@@G@@@A@@@@ P$RINT (PF 1,ML1,MSG1) @ @@@@ SLJ RCDISM )@@G@@D @ @@@@ J ERROR @C@@@@ERR2. SN )@@G@@ . $H @A@@@@ P$RINT (PF 1,ML2,MSG2) @ @@@@SO )@@G@@ SLJ RCDID @ @@@@ J ERROR @C@@@@SP )@@G@@ERR3. . $H @A@@@@ P$RINT SQ )@@G@@ (PF 1,ML3,MSG3) @ @@@@ SLJ RCDID @ @@@@ SLSR )@@G@@J ORCDID @ @@@@ J ERROR @C@@@@ERR4. SS )@@G@@ . $H @A@@@@ P$RINT (PF 1,ML4,ST )@@G@@MSG4) @ @@@@ SLJ RCDID @ @@@@ J ERROSU )@@G@@R @C@@@@ERR5. . $H @A@@@@ SV )@@G@@ P$RINT (PF 1,ML5,MSG5) @ @@@@ SLJ RCDID @ @@@@SW )@@G@@ J ERROR @C@@@@ERR6. SX )@@G@@ . $H @A@@@@ P$RINT (PF 1,ML6,MSG6) @ @@@@ SLSY )@@G@@J RCDID @ @@@@ J ERROR @C@@@@ERR7. SZ )@@G@@ . $H @A@@@@ P$RINT (PF 1,ML7,TA )@@G@@MSG7) @ @@@@ SLJ RCDID @F@@@@ LA A0,PTB )@@G@@TRCNT . $P GET NUM OF POINTERS @F@@@@ SA,H1 A0,NTC )@@G@@EWPTR+5 . $P SAVE IT IN SNAP PKT @C@@@@NEWPTR L$SNAP 'NEWTD )@@G@@PTR',0,10,RCDBUF+2 @ @@@@ SLJ ORCDID @F@@@@ TE )@@G@@ LA A0,PTRCNT . $P GET POINTERS COUNT @E@@@@ TF )@@G@@ SA,H1 A0,OLDPTR+5 . $P SAVE IT IN PKT @E@@@@ LATG )@@G@@ A0,X7 . $P COMPUTE DUMP ADDR@E@@@@ A,U TH )@@G@@ A0,1 . $P SKIP HEADER @F@@@@ SA,H2 A0,OTI )@@G@@LDPTR+5 . $P PUT IT IN SNAP PKT @B@@@@OLDPTR L$SNAP 'OLDTJ )@@G@@PTR',0,10,RCDBUF @ @@@@ J ERROR @C@@@@ERROR. TK )@@G@@ . $H @^@@@@ ER ERR$@]@@@@TL )@@G@@$(4). @]@@@@PTRCNT +0@A@@@@MSG1 '** RECORD DBP NOT VALID' TM )@@G@@@ @@@@ML1 EQU $-MSG1 @D@@@@MSG2 '** RECORD DBP POINTTN )@@G@@S TO AN UNUSED SLOT' @ @@@@ML2 EQU $-MSG2 @B@@@@MSG3 TO )@@G@@ '** RECORD LENGTH NOT MATCHED' @ @@@@ML3 EQU $-MSG3 TP )@@G@@@D@@@@MSG4 '** SLOT IN FOREIGN PAGE CANNOT BE FOUND' @ @@@@ML4 TQ )@@G@@ EQU $-MSG4 @C@@@@MSG5 '** RECORD CODE CANNOT BE IDENTITR )@@G@@FIED' @ @@@@ML5 EQU $-MSG5 @G@@@@MSG6 '** RECORD CODTS )@@G@@E MUST BE MODIFIED BY RESTORE SUBCOMMAND.' @ @@@@ML6 EQU TT )@@G@@ $-MSG6 @D@@@@MSG7 '** SET/CALC POINTERS CANNOT BE CHANGED' TU )@@G@@@ @@@@ML7 EQU $-MSG7 @F@@@@BUFCNT EQUF 10 TV )@@G@@ . INDICATE NUM OF BUFFERS @]@@@@BASEADR +0@]@@@@BUFPTR +0TW )@@G@@@ @@@@BUFTBL RES BUFCNT @]@@@@SAVEX11 +0@]@@@@RCDNUMG +0TX )@@G@@@]@@@@PGSIZE +0@^@@@@RDPKT RES 2 @]@@@@ +0@^@@@@TY )@@G@@ 020,0,0 @^@@@@ RES 3 @#@@@@RDBUF +1TZ )@@G@@,0 @#@@@@ +0,0 @^@@@@WRTPKT RES 2 @]@@@@ UA )@@G@@ +0@^@@@@ +010,0,0 @^@@@@ RES 3 @#@@@@UB )@@G@@WRTBUF +1,0 @#@@@@ +0,0 @ @@@@PF FORM 12,6UC )@@G@@,18 @#@@@@ END ___@@@ LA*[@@@@*SDFF*@[@@@@. UD )@@G@@@E@@@@. AUTOMATIC RECORD TRANSFORMATION PROCESSOR (ART) @[@@@@UE )@@G@@. @B@@@@. ENTERED: LX,U X10,PARAM @A@@@@. UF )@@G@@ SLJ ART @^@@@@. WHERE: @A@@@@. UG )@@G@@ PARAM = 0, DBP@D@@@@. PARAM+1 = ADDR OF THUH )@@G@@E RECORD @^@@@@. RETURNED: @C@@@@. R3 UI )@@G@@= FINAL RECORD LENGTH @[@@@@. @ @@@@PF FORM 12,6,18 UJ )@@G@@@#@@@@ AXR$ @#@@@@$(4) LIT. @]@@@@$(1). @C@@@@UK )@@G@@ART* +0 . $H @E@@@@ LX,H2 UL )@@G@@ X9,1,X10 . $P GET RECORD ADDR @E@@@@ LR,H2 R3,0UM )@@G@@,X9 . $P GET RECORD LENGTH@D@@@@ TNZ 0,X10 UN )@@G@@ . $T PARAM = 0 @E@@@@ J *ART . $AUO )@@G@@ YES,*ART NO @E@@@@ LA A0,0,X9 . $P GET RUP )@@G@@ECORD HEADER@[@@@@. @A@@@@. CHECK FOR FOREIGN BIT @[@@@@UQ )@@G@@. @F@@@@ AND A0,(020000000) . $T TEST THE FOREIGN UR )@@G@@BIT @E@@@@ JZ A1,NFOREIGN . $A YES NO,NFOREIGN US )@@G@@@F@@@@ LA,H2 A0,0,X9 . $P GET THE RECORD LENGTH UT )@@G@@@C@@@@ ANA,U A0,1 . $P -1 @E@@@@ SAUU )@@G@@,H2 A0,0,X9 . $P RESTORE IT @E@@@@ LR UV )@@G@@ R3,A0 . $P PUT IT IN R3 @F@@@@ LA,U A0,0UW )@@G@@50 . $P RESET THE FOREIGN BIT @B@@@@ AND,S3 A0,0UX )@@G@@,X9 . @E@@@@ SA,S3 A1,0,X9 . $P RESTOUY )@@G@@RE IT @[@@@@. @C@@@@. CHECK IF TRANSFORMATION IS NECESUZ )@@G@@SARY @[@@@@. @C@@@@NFOREIGN . $H VA )@@G@@@E@@@@ TNZ C17 . $T RULE EXIST @E@@@@VB )@@G@@ J *ART . $A YES NO,*ART @E@@@@ VC )@@G@@ LA,T1 A0,0,X9 . $P GET RECORD CODE @I@@@@ SLVD )@@G@@J CHKC17 . $P CHECK IF RULE EXISTS FOR THE RECORD VE )@@G@@@D@@@@ TNZ X8 . $T X8 = 0 @E@@@@ VF )@@G@@ J *ART . $A YES NO,*ART @B@@@@. VG )@@G@@ SAVE REGISTER X1 - A15 @[@@@@. @B@@@@ LX,U A0,XVH )@@G@@1 . @B@@@@ LXI,U A0,1 . @B@@@@VI )@@G@@ LX A1,(1,REGSAVE) . @B@@@@ LR,U R1,2VJ )@@G@@7 . @B@@@@ BT A1,,*A0 . @E@@@@VK )@@G@@ TZ,H2 NBUFADR . $T MCORE$ NEW BUFF @E@@@@ VL )@@G@@ J ARTSTART . $A YES NO,ARTSTART @]@@@@. VM )@@G@@@A@@@@. COMPUTE ART BUFFER SIZE @]@@@@. @E@@@@ VN )@@G@@ LX,H2 X1,C17 . $P GET C17 ADDR @E@@@@ SZVO )@@G@@ A0 . $P SET BUF SZ TO 0 @]@@@@BUFSZLP . @F@@@@VP )@@G@@ LA,T1 A1,1,X1 . $P GET NEW RECORD LENGTH @E@@@@VQ )@@G@@ AA,T2 A1,1,X1 . $P ADD OLD LENGTH @D@@@@ VR )@@G@@ TG A1,A0 . $T A0 > A1 @D@@@@ LA VS )@@G@@ A0,A1 . $A YES NO,* @D@@@@ TNZ,T3 0,X1 VT )@@G@@ . $T LINK=0 @E@@@@ J BUFSZ1 . $AVU )@@G@@ YES,BUGSZ1 NO @E@@@@ AX,T3 X1,,X1 . $P GET NVV )@@G@@EXT ENTRY @B@@@@ J BUFSZLP . @]@@@@BUFSZ1VW )@@G@@. @F@@@@ A,U A0,10 . $P ADD 10 EXTRA WORDVX )@@G@@S @D@@@@ SA A0,NBUFSZ . $P SAVE IT @B@@@@VY )@@G@@ LA A0,LAST$D . @E@@@@ AU,U A0,1VZ )@@G@@ . $P COMPUT BUF ADDR @D@@@@ SA,H2 A1,NBUFADRWA )@@G@@ . $P SAVE IT @E@@@@ AA A0,NBUFSZ . $PWB )@@G@@ GET MCORE$ SIZE @B@@@@ SA A0,LAST$D . @B@@@@WC )@@G@@ ER MCORE$ . @]@@@@$(4). @E@@@@NBUFSZWD )@@G@@ RES 1 . $ ART BUFFER SIZE @D@@@@REGSAVE REWE )@@G@@S 28 . $ X1 - A15 @]@@@@$(1). @]@@@@ARTSTAWF )@@G@@RT. @[@@@@. @B@@@@. PERFORM RECORD TRANSFORMATION @A@@@@WG )@@G@@. X7 = ADDR OF NEW-BUFF @A@@@@. X9 = ADDR OF RECORD WH )@@G@@ @C@@@@. X8 = ADDR OF TRANSFORMATION RULE ENTRY@[@@@@. WI )@@G@@@E@@@@ SZ A0 . $P SET A0 = 0 @E@@@@WJ )@@G@@ LX,U X1,A0 . $P ZEROS OUT NEWBUFF@B@@@@ WK )@@G@@ LX X2,NBUFADR . @B@@@@ LR R1,NBUFSZ WL )@@G@@ . @B@@@@ BT X2,,*X1 . @F@@@@ WM )@@G@@ LX,H2 X7,NBUFADR . $P X7 = ADDR OF NEW-BUFF @G@@@@ WN )@@G@@ LX X1,X9 . $P MOVE ORIGINAL RECORD TO A @D@@@@WO )@@G@@ LXI,U X1,1 . $ NEW BUFF @B@@@@ LXWP )@@G@@ X2,NBUFADR . @B@@@@ LR R1,R3 WQ )@@G@@ . @G@@@@ BT X2,,*X1 . $P MOVE RECORD(OLD) WR )@@G@@TO NEW BUFF @I@@@@ LA,S6 A0,1,X8 . $P GET NEW RECWS )@@G@@ORD TYPE(CALC/NON-CALC) @F@@@@ SA,S3 A0,,X7 WT )@@G@@ . $P SET IT IN NEW RECORD @E@@@@ LA,T1 A0,,X9 WU )@@G@@ . $ GET RECORD CODE @E@@@@ SLJ CHKC1 . $PWV )@@G@@ SEARCH C1 ENTRY @F@@@@ LX X6,X1 . $P SAVE WW )@@G@@ENTRY ADDR IN X6 @[@@@@. @A@@@@. X6 = C1 ENTRY ADDR WX )@@G@@@[@@@@. @E@@@@ LX X1,X6 . $P GET ENTRY AWY )@@G@@DDR @E@@@@ AX,S4 X1,,X1 . $P SKIP O/A SETS WZ )@@G@@@G@@@@ AX,U X1,1 . $P ADDR OF MANUAL CONTROL XA )@@G@@ @E@@@@. LOCATE ALL OF MANUAL SET PTR'S IN OLD RECORD XB )@@G@@@[@@@@. @E@@@@ LA,S2 A15,0,X1 . $P GET MANUAL XC )@@G@@COUNT @E@@@@ JZ A15,MOVESET . $J JUMP IF COUNT = 0XD )@@G@@@G@@@@ LX,S6 X2,0,X1 . $P GET MANUAL CONTROL WRD XE )@@G@@DISP @G@@@@ AX X2,X9 . $P GET ABS. ADDR OF XF )@@G@@ABOVE @D@@@@ LA A1,,X2 . $P GET MFCW XG )@@G@@@B@@@@ JGD A15,$+1 . @G@@@@ AX,U XH )@@G@@ X1,2 . $P X1 POINTS TO FIRST M-SET(C1) @I@@@@ AXXI )@@G@@,U X2,1 . $P X2 POINTS TO FIRST M SET PTR(RECORD) XJ )@@G@@@D@@@@MC1LOOP SZ A0 . $P ZEROS A0 @E@@@@ XK )@@G@@ LDSL A0,1 . $P CHECK A BIT @F@@@@ JZXL )@@G@@ A0,NOTIN1 . $J IF NOT PARTICIPATING @G@@@@ LXXM )@@G@@ X3,X2 . $P COMPUTE SET PTR DISP IN THE @D@@@@ XN )@@G@@ ANX X3,X9 . $ RECORD @C@@@@ SX,S6 XO )@@G@@ X3,,X1 . $ @H@@@@ AX,S2 X2,,X1 XP )@@G@@ . $P SKIP TO NEXT SET (IN THE RECORD) @G@@@@GNXTMAN AX,U X1,1XQ )@@G@@ . $P X1 POINTS TO NXT M-SET(C1) @D@@@@ JGD XR )@@G@@ A15,MC1LOOP . $J TRY NXT @B@@@@ J MOVESET XS )@@G@@ . @]@@@@NOTIN1. @F@@@@ SZ,S6 0,X1 XT )@@G@@ . $P ZEROS OUT DISP IN C1 @B@@@@ J GNXTMAN XU )@@G@@ . @[@@@@. @F@@@@. TRANSFER ALL SETS PTR'S FROM OLD RECORXV )@@G@@D TO NEW-BUFF @[@@@@. @C@@@@MOVESET XW )@@G@@ . $H @E@@@@ LA,T1 A0,,X9 . $P GET RECORD XX )@@G@@CODE @E@@@@ SLJ CHKC9 . $P SEARCH C9 TBL XY )@@G@@@G@@@@ LX X5,X1 . $P SAVE C9 ENTRY ADDR IN XXZ )@@G@@5 @[@@@@. @ @@@@. X5 = C9 ENTRY ADDR @[@@@@. @F@@@@YA )@@G@@ LA,S4 A15,,X5 . $P GET O/A COUNT (A15) @D@@@@YB )@@G@@ AX,U X5,1 . $P UPDATE X5 @E@@@@ JZYC )@@G@@ A15,MOVEMAN . $J JUMP IF A15 = 0 @E@@@@ JGD YD )@@G@@ A15,$+1 . $P A15 = (A15) - 1 @ @@@@. MOVE OWNER SETYE )@@G@@S @[@@@@. @]@@@@MOVEOWN. @E@@@@ LA,S5 A0,,X5 YF )@@G@@ . $P GET OWNER BIT @F@@@@ SSL A0,5 YG )@@G@@ . $P SHIFT OFF XTRA BITS @G@@@@ JZ A0,MOVEAUTO YH )@@G@@ . $J JUMP IF OWNER SETS END @E@@@@ LA,T2 A0,,X5 YI )@@G@@ . $P GET THE SET CODE@I@@@@ SLJ GETSETO YJ )@@G@@ . $P GET SET POINTER(S) ADDR IN OLD(C1) @E@@@@ TNZ YK )@@G@@ X1 . $T A NEW SET @E@@@@ J SETEYL )@@G@@MPTY . $A YES,SETEMPTY NO @E@@@@ LA,S5 A0,,X5 YM )@@G@@ . $P GET SET TYPE @F@@@@ TE,S5 A0,,X1 YN )@@G@@ . $T IDENTICAL TO OLD TYPE @E@@@@ J NEWTYPEO YO )@@G@@ . $A YES NO,NEWTYPE @E@@@@ LA,S6 A0,,X1 . $PYP )@@G@@ GET SET DISP (C1)@G@@@@ TNE,S6 A0,,X5 . $T CHECKYQ )@@G@@ IF SET POSITION CHANGED@E@@@@ J NXTOWN . $AYR )@@G@@ YES,NXTOWN NO @G@@@@ AX A0,X9 . $P GET AYS )@@G@@BS. ADDR OF SET PTR @B@@@@ LXI,U A0,1 . YT )@@G@@@F@@@@ LX,S6 X3,,X5 . $P GET SET DISP IN NEW YU )@@G@@@B@@@@ AX X3,X7 . @B@@@@ LXI,U YV )@@G@@ X3,1 . @F@@@@ LR,S2 R1,,X5 . $PYW )@@G@@ GET NUMBER OF LINKS @F@@@@ BT X3,,*A0 . $PYX )@@G@@ TRANSFER SET PTR'S @E@@@@NXTOWN AX,U X5,1 . $PYY )@@G@@ NXT SET IN C9 @D@@@@ JGD A15,MOVEOWN . $P NXT OYZ )@@G@@WNER @ @@@@ J MOVEMAN @[@@@@. @D@@@@. SEZA )@@G@@T OWNER EMPTY (SET TO POINT TO ITSELF) @[@@@@. @C@@@@SETEMPTY ZB )@@G@@ . $H @D@@@@ LX X2,X10 ZC )@@G@@ . $P GET DBP @B@@@@ LXI,U X2,0 . ZD )@@G@@@F@@@@ LX,S6 X3,,X5 . $P GET SET DISP IN NEW ZE )@@G@@@E@@@@ AX X3,X7 . $P ABS. OF ABOVE @B@@@@ZF )@@G@@ LXI,U X3,1 . @D@@@@ LR,S2 R1,,ZG )@@G@@X5 . $P GET LINKS @E@@@@ BT X3,,*X2 ZH )@@G@@ . $P SET IT EMPTY @B@@@@ J NXTOWN . ZI )@@G@@@[@@@@. @C@@@@. SET LINK TYPE CHANGED (OWNER SET) @[@@@@ZJ )@@G@@. @C@@@@NEWTYPEO . $H @F@@@@ ZK )@@G@@ LX,S6 X2,,X1 . $P GET SET DISP IN OLD @E@@@@ ZL )@@G@@ AX X2,X9 . $P GET ABS. ADDR @F@@@@ LAZM )@@G@@ A10,,X2 . $P GET NXT PTR IN A10 @D@@@@ AXZN )@@G@@,U X2,1 . $P X2 UP 1 @G@@@@ LA,U A0,1ZO )@@G@@ . $P CHECK IF PRIOR PTR EXITS @B@@@@ AND,S5 ZP )@@G@@ A0,,X1 . @C@@@@ LA A11,,X10 . $TZQ )@@G@@ IS IT@B@@@@ TZ A1 . @E@@@@ LAZR )@@G@@ A11,,X2 . $P GET PRIOR PTR @[@@@@. @F@@@@. ZS )@@G@@ PUT OWNER PTR'S (A10 = NXT, A11 = PRIOR) IN NEW BUFF @[@@@@. ZT )@@G@@@G@@@@ LX,S6 X3,,X5 . $P GET SET PTR DISP IN NEWZU )@@G@@-BUFF @G@@@@ AX X3,X7 . $P GET ABS. ADDR OF ZV )@@G@@ABOVE @E@@@@ SA A10,,X3 . $P MOVE NXT PTZW )@@G@@R @E@@@@ AX,U X3,1 . $P UPDATE ADDR ZX )@@G@@@C@@@@ LA,U A0,1 . $P @G@@@@ ANZY )@@G@@D,S5 A0,,X5 . $T SEE IF PRIOR PTR NEEDED @B@@@@ ZZ )@@G@@ TZ A1 . @E@@@@ SA A11,,X3 AA )@@G@@ . $A YES,SAVE-IT NO @B@@@@ J NXTOWN AB )@@G@@ . @[@@@@. @A@@@@. MOVE AUTOMATIC MEMBER SETS@[@@@@. AC )@@G@@@C@@@@MOVEAUTO . $H @E@@@@ LAAD )@@G@@,T2 A0,,X5 . $P GET THE SET CODE @G@@@@ SLJ AE )@@G@@ GETSET . $P GET SET PTR(S) ADDR IN C1 @E@@@@ TNAF )@@G@@Z X1 . $T SEE IF AN OLD SET@E@@@@ J AG )@@G@@ NEWAUTO . $A YES NO,NEWAUTO @H@@@@ TNZ,S6 0,X1AH )@@G@@ . $T SEE IF SET PTR(IF MANUAL) EXITS @E@@@@ J AI )@@G@@ NEWAUTO . $A YES NO,NEWAUTO @E@@@@ LA,S5 AJ )@@G@@ A0,,X5 . $P GET LINK TYPE @F@@@@ TE,S5 A0,,AK )@@G@@X1 . $T ARE THEY SAME TYPE @E@@@@ J NEWTAL )@@G@@YPEA . $A YES NO,NEWTYPEA @F@@@@ LA,S6 A0,,X1 AM )@@G@@ . $P GET SET DISP IN OLD @G@@@@ TNE,S6 A0,,X5 AN )@@G@@ . $T CHECK IF THEY HAVE SAME ADDR @B@@@@ J NXTOAO )@@G@@WN . @G@@@@ AA A0,X9 . $P GET AAP )@@G@@BS. ADDR OF SET PTR'S @B@@@@ LXI,U A0,1 . AQ )@@G@@@F@@@@ LX,S6 X3,,X5 . $P GET SET DISP IN NEW AR )@@G@@@E@@@@ AX X3,X7 . $P GET ABS. OF ABOVE@^@@@@AS )@@G@@ LXI,U X3,1@E@@@@ LR,S2 R1,,X1 . $AT )@@G@@P GET # OF PTR'S @E@@@@ BT X3,,*A0 . $P TRANAU )@@G@@SFER THEM @D@@@@ J NXTOWN . $J NXT ONE AV )@@G@@@[@@@@. @C@@@@. THE RECORD IS A MEMBER OF A NEW SET @A@@@@AW )@@G@@. (SET TO ZERO) @[@@@@. @C@@@@NEWAUTO AX )@@G@@ . $H @C@@@@ SZ A0 AY )@@G@@ . $P @C@@@@ LX,U X3,A0 . $P @E@@@@AZ )@@G@@ LX,S6 X2,,X5 . $P GET SET PTR DISP @E@@@@ BA )@@G@@ AX X2,X7 . $P GET ABS. ADDR @E@@@@ LRBB )@@G@@,S2 R1,,X5 . $P GET LINK NUMBER @B@@@@ BT BC )@@G@@ X2,,*X3 . @B@@@@ J NXTOWN . BD )@@G@@@[@@@@. @D@@@@. SET TYPE(LINK) CHANGED FOR AUTOMATIC SET BE )@@G@@@[@@@@. @C@@@@NEWTYPEA . $H @F@@@@BF )@@G@@ LX,S6 X2,,X1 . $P GET SET DISP IN OLD @E@@@@BG )@@G@@ AX X2,X9 . $P GET ABS.OF ABOVE @E@@@@ BH )@@G@@ LA A10,,X2 . $P UP TO NXT PTR @E@@@@ AXBI )@@G@@,U A0,1 . $P GET NXT POINTER @H@@@@ SZ BJ )@@G@@ A11 . $P PRESET PRIOR AND OWNER TO ZERO @B@@@@ BK )@@G@@ SZ A12 . @G@@@@ TNZ,S5 0,X1 BL )@@G@@ . $T CHECK IF ANY OTHER LINKS @B@@@@ J NEWTBM )@@G@@YPMOV . @G@@@@ LA,U A0,010 . $P SET UBN )@@G@@P TO CHECK FOR OWNER PTR@C@@@@ AND,S5 A0,0,X1 . $ BO )@@G@@ @E@@@@ JZ A1,$+3 . $T OWNER POINTER BP )@@G@@@E@@@@ LA A11,0,X2 . $P GET OWNER PTR @E@@@@BQ )@@G@@ AX,U X2,1 . $P UP SET ADDR 1 @G@@@@ BR )@@G@@ LA,U A0,1 . $P SET UP TO CHK FOR PRIOR PTR @B@@@@BS )@@G@@ AND,S5 A0,0,X1 . @E@@@@ JZ A1,NBT )@@G@@EWTYPMOV . $P JUMP IF NO PRIOR @E@@@@ LA A12,0,X2 BU )@@G@@ . $P GET PRIOR PTR @[@@@@. @C@@@@. PUT AN AUTOMATBV )@@G@@IC SET PTR'S IN NEW BUFF@[@@@@. @C@@@@NEWTYPMOV BW )@@G@@ . $H @G@@@@ LX,S6 X3,,X5 . $P GET SBX )@@G@@ET PTR DISP IN NEW @G@@@@ AX X3,X7 . $PBY )@@G@@ GET ABS. ADDR OF ABOVE @E@@@@ SA A10,,X3 BZ )@@G@@ . $P MOVE NXT PTR @E@@@@ AX,U X3,1 . $PCA )@@G@@ UPDATE ADDR @H@@@@ LA,U A0,010 . $P SET UCB )@@G@@P TO SEE IF OWNER PTR NEEDED @B@@@@ AND,S5 A0,,X5 CC )@@G@@ . @E@@@@ JZ A1,$+3 . $J SKIP OWNER PTR CD )@@G@@@E@@@@ SA A11,,X3 . $P MOVE OWNER PTR @E@@@@CE )@@G@@ AX,U X3,1 . $P UPDATE ADDR @H@@@@ CF )@@G@@ LA,U A0,1 . $P SET UP TO SEE IF PRIOR PTR NEEDED CG )@@G@@@B@@@@ AND,S5 A0,,X5 . @E@@@@ JZ CH )@@G@@ A1,NXTOWN . $J SKIP IF NO PRIOR @E@@@@ SA A12,CI )@@G@@,X3 . $P MOVE PRIOR PTR @D@@@@ J NXTOWN CJ )@@G@@ . $J NXT SET @[@@@@. @B@@@@. MOVE MANUAL SETS TO CK )@@G@@NEW BUFF @[@@@@. @C@@@@MOVEMAN . $HCL )@@G@@ @F@@@@ LA,S2 A15,,X5 . $P GET MANUAL SET COCM )@@G@@UNTS @F@@@@ JZ A15,ENDSET . $J JUMP IF NO MANUALCN )@@G@@ SET @C@@@@ JGD A15,$+1 . $P A15-1@F@@@@ CO )@@G@@ LA,S5 A14,,X5 . $P GET NUMBER OF RESERVE @C@@@@ CP )@@G@@ SX X5,SAVEX5 . $P SAVE @G@@@@ TNZ A14 CQ )@@G@@ . $P MAKE SURE NON-ZERO RESERVE @E@@@@ J CR )@@G@@ NORESV . $ INTERNAL ERROR @F@@@@ AX,U X5,2CS )@@G@@ . $P UPDATE C9 TBL ADDR @]@@@@$(4). @]@@@@SAVEX5CT )@@G@@ +0@]@@@@$(1). @B@@@@ LA A0,SAVEX5 . CU )@@G@@@G@@@@ LA,S6 A0,,A0 . $P GET MANUAL CTL WORD DISCV )@@G@@P @E@@@@ AA A0,X7 . $P GET ABS. OF ABOVECW )@@G@@@G@@@@ SZ 0,A0 . $P SET MANUAL CTL WORD TO CX )@@G@@ZERO @[@@@@. @A@@@@. TRANSFER MANUAL SET @[@@@@. CY )@@G@@@]@@@@MVEMANLP. @E@@@@ LA,T2 A0,,X5 . $P GET ACZ )@@G@@ SET CODE @G@@@@ SLJ GETSET . $P LOOK FOR THDA )@@G@@E SET PTR IN OLD @E@@@@ TNZ X1 . $T FOUNDDB )@@G@@ IT IN OLD @E@@@@ J NXTMAN . $A YES NO,NXTMDC )@@G@@AN @G@@@@ TNZ,S6 0,X1 . $T SEE IF AN EXISTINDD )@@G@@G SET @E@@@@ J NXTMAN . $A YES NO,NXTMDE )@@G@@AN @E@@@@ LX,S6 X2,,X1 . $P GET SET PTR DISP DF )@@G@@@E@@@@ AX X2,X9 . $P GET ABS. OF ABOVE@E@@@@DG )@@G@@ LA A10,,X2 . $P GET NXT PTR @H@@@@ DH )@@G@@ SZ A11 . $P PRESET OWNER/PRIOR PTR'S TO ZERO DI )@@G@@@B@@@@ SZ A12 . @D@@@@ TNZ,S5 DJ )@@G@@ 0,X1 . $T O/P EXIST @B@@@@ J INSERT DK )@@G@@ . @D@@@@ AX,U X2,1 . $P UP ADDR DL )@@G@@@G@@@@ LA,U A0,010 . $P SET UP TO CHECK FOR OWNDM )@@G@@ER PTR@B@@@@ AND,S5 A0,0,X1 . @E@@@@ JZDN )@@G@@ A1,$+3 . $J SKIP OWNER @E@@@@ LA DO )@@G@@ A11,0,X2 . $P GET OWNER PTR @D@@@@ AX,U X2,1DP )@@G@@ . $P UP ADDR @G@@@@ LA,U A0,1 DQ )@@G@@ . $P SET UP TO CHK FOR PRIOR PTR @B@@@@ AND,S5 A0,0,X1 DR )@@G@@ . @E@@@@ JZ A1,INSERT . $J SKIP PRIOR DS )@@G@@ @E@@@@ LA A12,0,X2 . $P GET PRIOR PTR DT )@@G@@@[@@@@. @C@@@@. INSERT A MANUAL SET PTR TO NEW BUFF @[@@@@DU )@@G@@. @C@@@@INSERT . $H @H@@@@ DV )@@G@@ LA A0,X5 . $P COMPUT CURRENT MANUAL SET NUMBER DW )@@G@@@C@@@@ ANA A0,SAVEX5 . $P -BASE@C@@@@ ANDX )@@G@@A,U A0,2 . $P -2 @G@@@@ SLJ MANADDR DY )@@G@@ . $P DETERMINE THE SET PTR ADDR @E@@@@ SA A10,DZ )@@G@@,X1 . $P SAVE NXT PTR @E@@@@ AX,U X1,1 EA )@@G@@ . $P UPDATE ADDR @E@@@@ ANA,U A14,1 EB )@@G@@ . $P -1 OF RESERVE @H@@@@ JN A14,NORESV . $PEC )@@G@@ MAKE SURE RESERVE NOT VIOLATED @G@@@@ LA,U A0,010 ED )@@G@@ . $P SET UP TO CHECK OWNER PTR @B@@@@ AND,S5 A0,,EE )@@G@@X5 . @E@@@@ JZ A1,$+5 . $J SKIP EF )@@G@@OWNER @E@@@@ SA A11,,X1 . $P SAVE OWNER EG )@@G@@PTR @B@@@@ AX,U X1,1 . @B@@@@ ANEH )@@G@@A,U A14,1 . @B@@@@ JN A14,NORESV EI )@@G@@ . @B@@@@ LA,U A0,1 . @B@@@@ ANEJ )@@G@@D,S5 A0,,X5 . @C@@@@ JZ A1,NXTMAN EK )@@G@@ . $J @B@@@@ SA A12,,X1 . @B@@@@ EL )@@G@@ ANA,U A14,1 . @B@@@@ JN A14,NORESVEM )@@G@@ . @[@@@@. @A@@@@. TRANSFER NEXT MANUAL SET @[@@@@EN )@@G@@. @]@@@@NXTMAN. @G@@@@ AX,U X5,1 . $PEO )@@G@@ UPDATE SET ENTRY PTR (C9) @B@@@@ JGD A15,MVEMANLP EP )@@G@@ . @B@@@@ J ENDSET . @[@@@@. @D@@@@EQ )@@G@@. NOT ENOUGH RESERVE WORDS FOR MANUAL SET @[@@@@. @]@@@@ER )@@G@@NORESV. @ @@@@ E$DIT EDPKT @A@@@@ E$FD2 ES )@@G@@ ('RECORD:') @ @@@@ E$DECV 0,X9,T1 @^@@@@ E$ET )@@G@@CHAR '(' @ @@@@ E$OCTV 0,X9,T1 @^@@@@ E$CHAR EU )@@G@@ ')' @^@@@@ E$SKIP 1 @A@@@@ E$COPY 54,RESVMSGEV )@@G@@ @#@@@@ E$DITX @A@@@@ P$RINT (PF 1,14,PRINT) EW )@@G@@@^@@@@ ER ERR$@]@@@@$(4). @G@@@@RESVMSG 'DOES NOEX )@@G@@T HAVE ENOUGH RESERVE WORDS FOR MANUAL SET PTRS' @B@@@@MBITS. EY )@@G@@ MAX. 20 MANUAL SETS @#@@@@ +1*/35 @#@@@@ +1EZ )@@G@@*/34 @#@@@@ +1*/33 @#@@@@ +1*/32 @#@@@@ +1FA )@@G@@*/31 @#@@@@ +1*/30 @#@@@@ +1*/29 @#@@@@ +1FB )@@G@@*/28 @#@@@@ +1*/27 @#@@@@ +1*/26 @#@@@@ +1FC )@@G@@*/25 @#@@@@ +1*/24 @#@@@@ +1*/23 @#@@@@ +1FD )@@G@@*/22 @#@@@@ +1*/21 @#@@@@ +1*/20 @#@@@@ +1FE )@@G@@*/19 @#@@@@ +1*/18 @#@@@@ +1*/17 @#@@@@ +1FF )@@G@@*/16 @#@@@@ +1*/15 @]@@@@$(1). @[@@@@. @G@@@@. FG )@@G@@ ROUTINE TO CALCULATE THE MANUAL SET PTR ADDR IN NEW BUFF @[@@@@FH )@@G@@. @C@@@@MANADDR +0 . $H @B@@@@ FI )@@G@@ LX X1,SAVEX5 . @F@@@@ LX,S6 X1,,X1 FJ )@@G@@ . $P GET MAN. CTL WRD DISP @E@@@@ AX X1,X7 FK )@@G@@ . $P GET ABS. OF ABOVE@G@@@@ LA A4,,X1 FL )@@G@@ . $P GET THE MANUAL CTL WRD @H@@@@ OR A4,MBITS,AFM )@@G@@0 . $P SET THE PROPER BIT FOR CURRT ONE @D@@@@ SA FN )@@G@@ A5,,X1 . $P SAVE IT @E@@@@ AX,U X1,1 FO )@@G@@ . $P UPDATE PTR ADDR @G@@@@ JZ A4,*MANADDR FP )@@G@@ . $J RETURN IF 1ST SET INSERTED @C@@@@ JGD A0,$+1 FQ )@@G@@ . $P A0-1 @]@@@@MADDRLP. @D@@@@ AND A4,MBITS,AFR )@@G@@0 . $P CHECK IF @F@@@@ JZ A5,NXTMSET . $TFS )@@G@@ SEE IF SET PRESENT @G@@@@ LA A1,A0 . $PFT )@@G@@ COMPUTE SET ENTRY IN C9 @E@@@@ AA A1,SAVEX5 FU )@@G@@ . $P GET ABS. OF ABOVE@E@@@@ AX,S2 X1,2,A1 . $PFV )@@G@@ UPDATE PTR ADDR @]@@@@NXTMSET. @E@@@@ JGD A0,MADDRLPFW )@@G@@ . $P TRY NXT ONE @D@@@@ J *MANADDR FX )@@G@@ . $J RETURN @[@@@@. @E@@@@. THIS ROUTINE WILL SEARCH CFY )@@G@@1 ENTRY(POINTED BY X6) @C@@@@. TO LOCATE A PARTICULAR SET FZ )@@G@@PTR(S)@[@@@@. @A@@@@. (IN) A0 = SET CODE @A@@@@. GA )@@G@@ X6 = C1 ENTRY @D@@@@. (OUT) X1 = ADDR OF C1 ENTRGB )@@G@@Y FOR THE SET @A@@@@. = 0, IF NOF FOUND@[@@@@. GC )@@G@@@D@@@@. ENTERED: SLJ GETSETO .FOR SET OWNER @E@@@@. GD )@@G@@ ENTERED: SLJ GETSET .FOR NON SET OWNER @[@@@@. @C@@@@GE )@@G@@GETSETO +0 . $H @E@@@@ LX GF )@@G@@ X1,X6 . $P GET C1 ENTRY ADDR@F@@@@ LA,S4 A10,GG )@@G@@,X1 . $P GET O/A COUNT @E@@@@ JZ A10,GH )@@G@@NOSETO . $J JUMP IF COUNT = 0@C@@@@ AX,U X1,1 GI )@@G@@ . $P UP X1@ @@@@ JGD A10,$+1 @E@@@@GETOLOOP LAGJ )@@G@@,S5 A1,,X1 . $P GET LINK TYPE @E@@@@ SSL GK )@@G@@ A1,5 . $P GET OWNER BIT @G@@@@ JZ A1,$GL )@@G@@+3 . $J TERM SEARCHING IF NOT OWNER @F@@@@ TNE,T2 GM )@@G@@ A0,,X1 . $T CHECK IF RIGHT SET @E@@@@ J GN )@@G@@ *GETSETO . $A YES,*GETSETO NO @D@@@@ AX,U X1,1GO )@@G@@ . $P UP X1 PTR @D@@@@ JGD A10,GETOLOOP GP )@@G@@ . $P TRY NXT @]@@@@NOSETO. @D@@@@ SZ X1 GQ )@@G@@ . $P NOT FOUND @D@@@@ J *GETSETO . $JGR )@@G@@ RETURN @[@@@@. @ @@@@. FOR NON SET OWNER @[@@@@. GS )@@G@@@C@@@@GETSET +0 . $H @E@@@@ LXGT )@@G@@ X1,X6 . $P GET C1 ENTRY ADDR@E@@@@ LA,S4 GU )@@G@@ A10,,X1 . $P GET O/A COUNT @G@@@@ JZ A10,GV )@@G@@GETSETM . $J GOTO GET M-SET IF COUNT = 0 @D@@@@ JGD GW )@@G@@ A10,$+1 . $P COUNT - 1 @C@@@@GETLOOP AX,U X1,1 GX )@@G@@ . $+ UP X1@E@@@@ LA,S5 A1,,X1 . $P GET LGY )@@G@@INK TYPE @E@@@@ SSL A1,5 . $P GET OWNER BGZ )@@G@@IT @D@@@@ JNZ A1,NXTSET . $T OWNER SET @E@@@@HA )@@G@@ . $A YES,NXTSET NO @D@@@@ HB )@@G@@ TNE,T2 A0,,X1 . $T RIGHT SET @E@@@@ J HC )@@G@@ *GETSET . $A YES,*GETSET NO @]@@@@NXTSET. @D@@@@ HD )@@G@@ JGD A10,GETLOOP . $T TRY NXT @]@@@@GETSETM. @F@@@@HE )@@G@@ AX,U X1,1 . $P POINT TO MCNT WORD @D@@@@HF )@@G@@ LA,S2 A10,,X1 . $P GET MCNT @G@@@@ JZHG )@@G@@ A10,NOSET . $J TERM SEARCHING IF MAN CNT = 0@D@@@@ HH )@@G@@ JGD A10,$+1 . $P MCNT - 1 @D@@@@ AX,U HI )@@G@@ X1,1 . $P SKIP MASK @]@@@@GETLOOP2. @D@@@@ AXHJ )@@G@@,U X1,1 . $P NXT SET @E@@@@ TNE,T2 A0,,HK )@@G@@X1 . $T SET CODE MATCH @E@@@@ J *GETSET HL )@@G@@ . $A YES,*GETSET NO @D@@@@ JGD A10,GETLOOP2 HM )@@G@@ . $J TRY NEXT @]@@@@NOSET. @E@@@@ SZ X1 HN )@@G@@ . $P SET NO FOUND @D@@@@ J *GETSET HO )@@G@@ . $J RETURN @[@@@@. @E@@@@. CHECK C17 FOR A SPECIFIED HP )@@G@@RECORD CODE(IN A0) @[@@@@. @C@@@@CHKC17 +0 HQ )@@G@@ . $H @E@@@@ LX,H2 X8,C17 . $P GET CHR )@@G@@17 ADDR @E@@@@C17LOOP TNE,T1 A0,,X8 . $T RECORD CODEHS )@@G@@ MATCH@E@@@@ J *CHKC17 . $A YES,*CHKC17 NO HT )@@G@@@D@@@@ TNZ,T3 0,X8 . $T GET LINK @E@@@@ HU )@@G@@ J NOC17 . $J NOFOUND IF A1=0 @C@@@@ AXHV )@@G@@,T3 X8,,X8 . $P UP X8@B@@@@ J C17LOOP HW )@@G@@ . @]@@@@NOC17. @D@@@@ SZ X8 HX )@@G@@ . $P ZERO X8 @D@@@@ J *CHKC17 . $J RETURHY )@@G@@N @[@@@@. @D@@@@. SEARCH C1 TBL, AND RETURN ENTRY ADDR IHZ )@@G@@N X1 @[@@@@. @]@@@@CHKC1 +0@E@@@@ LX,H2 X1,C1 IA )@@G@@ . $P GET C1 ADDR @]@@@@C1LOOP. @E@@@@ TE,T1 IB )@@G@@ A0,0,X1 . $T RECORD CODE MATCH@E@@@@ J NXTCIC )@@G@@1 . $A YES NO,NXTC1 @ @@@@ J *CHKC1 ID )@@G@@@]@@@@NXTC1. @D@@@@ TNZ,T3 0,X1 . $T LINK IE )@@G@@=0 @E@@@@ ER ERR$ . $A YES,ERR$ NO IF )@@G@@@E@@@@ AX,T3 X1,0,X1 . $P GET NXT ADDR @D@@@@IG )@@G@@ J C1LOOP . $J TRY NXT @[@@@@. @D@@@@IH )@@G@@. SEARCH C9 TBL, AND RETURN ENTRY ADDR IN X1 @[@@@@. @]@@@@II )@@G@@CHKC9 +0@E@@@@ LX,H2 X1,C9 . $P GET C9 ADDRIJ )@@G@@ @]@@@@C9LOOP. @E@@@@ TE,T1 A0,0,X1 . $TIK )@@G@@ RECORD CODE MATCH@E@@@@ J NXTC9 . $A YES NIL )@@G@@O,NXTC9 @ @@@@ J *CHKC9 @]@@@@NXTC9. @D@@@@IM )@@G@@ TNZ,T3 0,X1 . $T LINK =0 @E@@@@ ERIN )@@G@@ ERR$ . $A YES,ERR$ NO @E@@@@ AX,T3 IO )@@G@@ X1,0,X1 . $P GET NXT ADDR @D@@@@ J C9LOIP )@@G@@OP . $J TRY NXT @[@@@@. @D@@@@. TRANSFORM DATAIQ )@@G@@ ACCORDING TO THE RULES(C17) @[@@@@. @C@@@@ENDSET IR )@@G@@ . $H @]@@@@MVEDATA. @[@@@@. @A@@@@. X9IS )@@G@@ = ADDR OF OLD RECORD @C@@@@. X7 = ADDR OF NEW RECORD(NEW-BUFFIT )@@G@@) @E@@@@. X8 = ADDR OF TRANSFORMATION RULES FOR THE RECORD IU )@@G@@@[@@@@. @E@@@@ LA,T2 A15,,X8 . $P GET RULE COIV )@@G@@UNT @E@@@@ JZ A15,ENDART9 . $J END IF NON EXISTSIW )@@G@@@E@@@@ SX X8,SAVEX8 . $P SAVE RULES ADDR @F@@@@IX )@@G@@ LR,T2 R4,1,X8 . $P GET NEW RECORD LENGTH @G@@@@IY )@@G@@ AX,U X8,2 . $P UPDATE RULE ENTRY ADDR IZ )@@G@@@E@@@@ JGD A15,$+1 . $P RULE-CNT - 1 @[@@@@JA )@@G@@. @^@@@@. PROCESS RULES @[@@@@. @]@@@@ARTLOOP. @G@@@@JB )@@G@@ LA,U A0,5 . $P SET UP TO CHECK FOR TYPE 5 JC )@@G@@@F@@@@ TNE,S4 A0,,X8 . $T IS IT TYPE 5(OCCURS) JD )@@G@@@E@@@@ J OCCURS . $A YES,REPEAT NO @F@@@@JE )@@G@@ TNZ,T1 0,X8 . $T CHECK IF A NEW ITEM @E@@@@JF )@@G@@ J NEWITEM . $A YES,NEWITEM1 NO @E@@@@ JG )@@G@@ LA,S4 A0,,X8 . $P GET 1ST TYPE @E@@@@ LAJH )@@G@@,S4 A1,1,X8 . $P GET 2ND TYPE @E@@@@ LSSL JI )@@G@@ A1,18 . $P FORM TYPE WORD @B@@@@ LDSL A0,1JJ )@@G@@8 . @E@@@@ LR R1,TYPECNT . $P GET RJK )@@G@@EPEAT COUNT @B@@@@ LX X4,(2,TYPES) . @G@@@@ JL )@@G@@ SE A0,,*X4 . $P CHECK FOR TYPES COMBINATION @E@@@@JM )@@G@@ ER ERR$ . $S INTERNAL ERROR @G@@@@ JN )@@G@@ ANX X4,(2,1) . $P BACK UP TO ROUTINE ADDR @E@@@@JO )@@G@@ SLJ SETREGS . $P SET UP REGISTERS @E@@@@ JP )@@G@@ LA,H2 A0,,X4 . $P GET ROUTINE ADDR @E@@@@ SLJQ )@@G@@J 0,A0 . $P PERFORM TRANSFORM@D@@@@ J JR )@@G@@ NXTART . $J TRY NEXT @]@@@@$(4). @]@@@@TYPES. JS )@@G@@@#@@@@ +1,1 @^@@@@ +TYPE11 @#@@@@ +2JT )@@G@@,2 @^@@@@ +TYPE22 @#@@@@ +3,3 @^@@@@ JU )@@G@@ +TYPE33 @#@@@@ +4,4 @^@@@@ +TYPE44 JV )@@G@@@#@@@@ +1,4 @^@@@@ +TYPE14 @#@@@@ +4JW )@@G@@,1 @^@@@@ +TYPE41 @#@@@@ +1,2 @^@@@@ JX )@@G@@ +TYPE12 @#@@@@ +1,3 @^@@@@ +TYPE13 JY )@@G@@@#@@@@ +4,2 @^@@@@ +TYPE42 @#@@@@ +4JZ )@@G@@,3 @^@@@@ +TYPE43 @#@@@@ +2,1 @^@@@@ KA )@@G@@ +TYPE21 @#@@@@ +3,1 @^@@@@ +TYPE31 KB )@@G@@@#@@@@ +2,4 @^@@@@ +TYPE24 @#@@@@ +3KC )@@G@@,4 @^@@@@ +TYPE34 @#@@@@ +2,3 @^@@@@ KD )@@G@@ +TYPE23 @#@@@@ +3,2 @^@@@@ +TYPE32 KE )@@G@@@ @@@@TYPECNT +(TYPECNT-TYPES)/2 @]@@@@SAVEX8 +0@]@@@@$(1). KF )@@G@@@[@@@@. @E@@@@. NEW ELEMENTARY ITEMS(SET UP TO INITIALIZE THKG )@@G@@EM) @[@@@@. @C@@@@NEWITEM1 +0 . $H KH )@@G@@@G@@@@ LX,T3 X5,1,X8 . $P SET UP ADDR TO INITILIZKI )@@G@@E @F@@@@ AX X5,X7 . $P ABS. ADDR OF ABOVKJ )@@G@@E @E@@@@ LR,T1 R5,1,X8 . $P GET ITEM LENGTH KK )@@G@@@G@@@@ LA,S3 A0,1,X8 . $P GET START CHARACTER POSKL )@@G@@ @E@@@@ LA,S4 A1,1,X8 . $P GET ITEM TYPE KM )@@G@@@F@@@@ SLJ NEWINIT . $S INITIALIZE THE ITEM KN )@@G@@@D@@@@ J *NEWITEM1 . $J TRY NXT @[@@@@. KO )@@G@@@C@@@@. PROCESS NXT TRANSFORMATION RULE @[@@@@. @C@@@@KP )@@G@@NXTART . $H @E@@@@ AX,U KQ )@@G@@ X8,2 . $P UPDATE ENTRY ADDR@D@@@@ JGD A15,KR )@@G@@ARTLOOP . $P TRY NEXT @E@@@@ J ENDART8 KS )@@G@@ . $J END PROCESS @[@@@@. @C@@@@NEWITEM KT )@@G@@ . $H @B@@@@ SLJ NEWITEM1 . @B@@@@KU )@@G@@ J NXTART . @[@@@@. @D@@@@. THKV )@@G@@E SUBROUTINE WILL INITIALIZE A NEW ITEM @[@@@@. @C@@@@. (IKW )@@G@@N) X5 = ITEM ADDRESS IN NEW BUFF @A@@@@. A1 = ITEM TYPEKX )@@G@@ @C@@@@. A0 = STARTING CHARACTER POSITION@E@@@@. KY )@@G@@ R5 = LENGTH OF AN ITEM (IN CHARACTERS) @[@@@@. @C@@@@KZ )@@G@@NEWINIT +0 . $H @E@@@@ LXI,U LA )@@G@@ X5,1 . $P SET INX INCREMENT@F@@@@ LA,S1 A5,TLB )@@G@@YP0,A1 . $P GET TYPE CHARACTER @ @@@@ JGD R5,$LC )@@G@@+1 @]@@@@INITLOOP. @C@@@@ ANU,U A0,1 . $PLD )@@G@@ LOOP @C@@@@ DSL A1,36 . $ TO@E@@@@ LE )@@G@@ DI,U A1,6 . $ INITIALIZE @D@@@@ EXLF )@@G@@ PUT,A2 . $ THE @E@@@@ AA,U A0,1LG )@@G@@ . $ NEW @E@@@@ JGD R5,INITLOOLH )@@G@@P . $ ITEM @D@@@@ J *NEWINIT LI )@@G@@ . $J RETURN @]@@@@$(4). @]@@@@TYP0. @^@@@@ +0LJ )@@G@@77,,,,,0 @^@@@@ +05,,,,,0 @^@@@@ +060,,,,,0 LK )@@G@@@^@@@@ +0,,,,,0 @^@@@@ +05,,,,,0 @[@@@@PUT. LL )@@G@@@ @@@@ SA,S1 A5,,X5 @ @@@@ SA,S2 A5,,X5 LM )@@G@@@ @@@@ SA,S3 A5,,X5 @ @@@@ SA,S4 A5,,X5 LN )@@G@@@ @@@@ SA,S5 A5,,X5 @ @@@@ SA,S6 A5,,*X5 LO )@@G@@@]@@@@$(1). @[@@@@. @D@@@@. ROUTINE TO SET UP TRANSFORLP )@@G@@MATION REGISTERS @[@@@@. @B@@@@. (IN) X8 = ADDR OF RULE ENTLQ )@@G@@RY @E@@@@. (OUT) X1 = OLD ADDR, A7 = CHAR POS, R7 = LENGTH LR )@@G@@@H@@@@. X2 = NEW ADDR, A8 = CHAR POS, R8 = LENGTH, A1 = NEWLS )@@G@@ TYPE CODE @[@@@@. @C@@@@SETREGS +0 . $HLT )@@G@@ @E@@@@ LA,S4 A1,1,X8 . $P GET NEW TYPE LU )@@G@@@E@@@@ LX,T3 X1,,X8 . $P GET OLD ADDR(REL)@E@@@@LV )@@G@@ AX X1,X9 . $P GET ABS. OF ABOVE@F@@@@ LW )@@G@@ LA,S3 A7,,X8 . $P BEG. CHAR POS.(OLD) @E@@@@ LX )@@G@@ LX,T3 X2,1,X8 . $P GET NEW ADDR(REL)@E@@@@ AXLY )@@G@@ X2,X7 . $P GET ABS. OF ABOVE@F@@@@ LA,S3 LZ )@@G@@ A8,1,X8 . $P BEG. CHAR POS.(NEW) @E@@@@ LR,T1 MA )@@G@@ R8,1,X8 . $P GET LENGTH @ @@@@ LR,T1 R7,0MB )@@G@@,X8 @D@@@@ J *SETREGS . $J RETURN @[@@@@MC )@@G@@. @D@@@@. TRANSFORM ROUTINES (CHAR MOVE FROM TOP) @[@@@@MD )@@G@@. @]@@@@TYPE11. @]@@@@TYPE44. @]@@@@TYPE14. @]@@@@TYPE41ME )@@G@@. @]@@@@TYPE21. @]@@@@TYPE31. @]@@@@TYPE24. @]@@@@TYPE34MF )@@G@@. @[@@@@. @A@@@@. TRANSFORM ITEM FROM TOP @[@@@@. MG )@@G@@@E@@@@. (IN) X1 = OLD ADDR, A7 = CHAR POS R7 = LENGTH @H@@@@MH )@@G@@. X2 = NEW ADDR, A8 = CHAR POS R8 = LENGTH A1 = NEW TYPE CMI )@@G@@ODE @[@@@@. @C@@@@TOPMOVE +0 . $H MJ )@@G@@@F@@@@ LR R5,R8 . $P GET INITIALIZE LENGTH MK )@@G@@@E@@@@ LA A0,R7 . $P GET OLD LENGTH @G@@@@ML )@@G@@ TG A0,R8 . $T SEE IF (NEW-LENGTH)>(OLD) MM )@@G@@@E@@@@ J TMOVE1 . $A YES NO,TMOVE1 @[@@@@MN )@@G@@. @G@@@@. NEW ITEM HAS LONGER FIELD, INTIALIZE IT BEFORE TRAMO )@@G@@NSFER @[@@@@. @D@@@@ LX X5,X2 . $PMP )@@G@@ SET UP X5 @D@@@@ LA A0,A8 . A0 MQ )@@G@@@D@@@@ LR R5,R8 . R5 @H@@@@ MR )@@G@@ SLJ NEWINIT . FOR INITILIZATION ROUTINE MS )@@G@@@B@@@@ LR R5,R7 . @B@@@@. TRANSFERMT )@@G@@ (R5) CHAR'S FROM TOP @[@@@@. @]@@@@TMOVE1. @E@@@@ LXMU )@@G@@I,U X1,1 . $P SET INCRMNT CNT @C@@@@ LXI,U MV )@@G@@ X2,1 . $ @E@@@@ JGD R5,$+1 MW )@@G@@ . $P CHAR-CNT - 1 @]@@@@TMLOOP1. @F@@@@ LA A0,AMX )@@G@@7 . $P SET UP TO GET 1 CHAR @C@@@@ ANA,U A0,1MY )@@G@@ . $ @C@@@@ DSL A0,36 . $ MZ )@@G@@ @C@@@@ DI,U A0,6 . $ @E@@@@ NA )@@G@@ EX GETOP,A1 . $P GET 1 CHAR @G@@@@ AANB )@@G@@,U A7,1 . $P SET UP TO STORE 1 CHAR @C@@@@ NC )@@G@@ LA A0,A8 . $ @C@@@@ ANA,U A0,1ND )@@G@@ . $ @C@@@@ DSL A0,36 . $ NE )@@G@@ @C@@@@ DI,U A0,6 . $ @E@@@@ NF )@@G@@ EX PUTOP,A1 . $P STORE 1 CHAR @C@@@@ AANG )@@G@@,U A8,1 . $ @E@@@@ JGD R5,TMLOOP1NH )@@G@@ . $J TRY NXT CHAR @D@@@@ J *TOPMOVE NI )@@G@@ . $J RETURN @]@@@@$(4). @]@@@@GETOP. @ @@@@ LANJ )@@G@@,S1 A5,,X1 @ @@@@ LA,S2 A5,,X1 @ @@@@ LANK )@@G@@,S3 A5,,X1 @ @@@@ LA,S4 A5,,X1 @ @@@@ LANL )@@G@@,S5 A5,,X1 @ @@@@ LA,S6 A5,,*X1 @]@@@@PUTOP. NM )@@G@@@ @@@@ SA,S1 A5,,X2 @ @@@@ SA,S2 A5,,X2 NN )@@G@@@ @@@@ SA,S3 A5,,X2 @ @@@@ SA,S4 A5,,X2 NO )@@G@@@ @@@@ SA,S5 A5,,X2 @ @@@@ SA,S6 A5,,*X2 NP )@@G@@@]@@@@$(1). @[@@@@. @D@@@@. TRANSFORM ROUTINE ( CHAR MNQ )@@G@@OVE FROM BOTTOM) @[@@@@. @]@@@@TYPE22. @]@@@@TYPE33. @]@@@@NR )@@G@@TYPE12. @]@@@@TYPE13. @]@@@@TYPE42. @]@@@@TYPE43. @[@@@@NS )@@G@@. @A@@@@. TRANSFORM ITEM FROM BOTTOM@[@@@@. @E@@@@. NT )@@G@@ (IN) X1 = OLD ADDR, A7 = CHAR POS, R7 = LENGTH @G@@@@. NU )@@G@@ X2 = NEW ADDR, A8 = CHAR POS, R8 = LENGTH, A1 =NEW TYPE@[@@@@. NV )@@G@@@C@@@@BOTMOVE +0 . $H @F@@@@ LRNW )@@G@@ R5,R8 . $P GET INITIALIZE LENGTH @E@@@@ LANX )@@G@@ A0,R7 . $P GET OLD LENGTH @G@@@@ TG NY )@@G@@ A0,R8 . $T SEE IF NEW-LENGTH > OLD @E@@@@ J NZ )@@G@@ BMOVE1 . $A YES NO,BMOVE1 @[@@@@. @A@@@@. OA )@@G@@ NEW ITEM HAS LONGER FIELD @[@@@@. @D@@@@ LX X5,XOB )@@G@@2 . $P SET UP X5 @D@@@@ LA A0,A8 OC )@@G@@ . A0 @D@@@@ LR R5,R8 . OD )@@G@@ R5 @G@@@@ SLJ NEWINIT . FOR INITILIZAOE )@@G@@TION ROUTINE@B@@@@ LR R5,R7 . @C@@@@. OF )@@G@@ TRANSFER (R5) CHAR'S FROM BOTTOM @[@@@@. @]@@@@BMOVE1. OG )@@G@@@B@@@@ AA A7,R7 . @B@@@@ AA OH )@@G@@ A8,R8 . @^@@@@ ANA,U A7,1@B@@@@ ANOI )@@G@@A,U A8,1 . @B@@@@ LA A0,A7 OJ )@@G@@ . @F@@@@ ANA,U A0,1 . $P COMPUTE NEW WORD OK )@@G@@ADDR @B@@@@ DSL A0,36 . @B@@@@ DIOL )@@G@@,U A0,6 . @B@@@@ AX X1,A0 OM )@@G@@ . @B@@@@ LA A0,A8 . @F@@@@ ANON )@@G@@A,U A0,1 . $P COMPUTE NEW WORD ADDR @B@@@@ DSOO )@@G@@L A0,36 . @B@@@@ DI,U A0,6 OP )@@G@@ . @B@@@@ AX X2,A0 . @B@@@@ LXOQ )@@G@@I,U X1,-1 . @B@@@@ LXI,U X2,-1 OR )@@G@@ . @B@@@@ JGD R5,$+1 . @]@@@@BMLOOP1. OS )@@G@@@B@@@@ LA A0,A7 . @B@@@@ ANA,U OT )@@G@@ A0,1 . @B@@@@ DSL A0,36 . OU )@@G@@@B@@@@ DI,U A0,6 . @B@@@@ EX OV )@@G@@ GETBOT,A1 . @B@@@@ ANA,U A7,1 . OW )@@G@@@B@@@@ LA A0,A8 . @B@@@@ ANA,U OX )@@G@@ A0,1 . @B@@@@ DSL A0,36 . OY )@@G@@@B@@@@ DI,U A0,6 . @B@@@@ EX OZ )@@G@@ PUTBOT,A1 . @B@@@@ ANA,U A8,1 . PA )@@G@@@B@@@@ JGD R5,BMLOOP1 . @B@@@@ J PB )@@G@@ *BOTMOVE . @]@@@@$(4). @]@@@@GETBOT. @ @@@@ PC )@@G@@ LA,S1 A5,,*X1 @ @@@@ LA,S2 A5,,X1 @ @@@@ PD )@@G@@ LA,S3 A5,,X1 @ @@@@ LA,S4 A5,,X1 @ @@@@ PE )@@G@@ LA,S5 A5,,X1 @ @@@@ LA,S6 A5,,X1 @]@@@@PUTBOTPF )@@G@@. @ @@@@ SA,S1 A5,,*X2 @ @@@@ SA,S2 A5,,PG )@@G@@X2 @ @@@@ SA,S3 A5,,X2 @ @@@@ SA,S4 A5,,PH )@@G@@X2 @ @@@@ SA,S5 A5,,X2 @ @@@@ SA,S6 A5,,PI )@@G@@X2 @]@@@@$(1). @[@@@@. @D@@@@. ROUTINE TO TRANSFORMPJ )@@G@@ PIC 9 TO PIC 9 COMP @[@@@@. @C@@@@TYPE23 +0 PK )@@G@@ . $H @D@@@@ LXI,U X1,1 . $P SET IPL )@@G@@NC @B@@@@ SZ A10 . @E@@@@ SZPM )@@G@@ A11 . RESET ACCUMULATORS @B@@@@ SZ PN )@@G@@ A13 . @B@@@@ SZ A12 . PO )@@G@@@B@@@@ SZ A9 . @E@@@@ JGD PP )@@G@@ R7,$+1 . $P LENGTH - 1 @]@@@@T23LOOP1. @F@@@@ PQ )@@G@@ LA A0,A7 . $P SET UP TO GET 1 CHAR @C@@@@ PR )@@G@@ ANA,U A0,1 . $P @F@@@@ AA,U A7,1PS )@@G@@ . $P UPDATE TO NXT CHAR @B@@@@ DSL A0,3PT )@@G@@6 . @B@@@@ DI,U A0,6 . @B@@@@PU )@@G@@ EX GET23,A1 . @F@@@@ AND,U A12,PV )@@G@@017 . $P STRIP OFF HIGH BITS @B@@@@ SZ A12 PW )@@G@@ . @C@@@@ MI,U A10,10 . $ PX )@@G@@@B@@@@ DA A10,A12 . @B@@@@ MSI,U PY )@@G@@ A9,10 . @B@@@@ AA A9,A10 . PZ )@@G@@@B@@@@ LDSL A10,36 . @D@@@@ JGD QA )@@G@@ R7,T23LOOP1 . $J TRY NXT @[@@@@. @C@@@@. PUT A9-QB )@@G@@A10 TO PIC 9 COMP FIELD @[@@@@. @E@@@@ JGD R8,$QC )@@G@@+1 . $P LENGTH - 1 @G@@@@ AA A8,R8 QD )@@G@@ . $P SET TO MOVE FROM BOTTOM @E@@@@ LA A0,AQE )@@G@@8 . $P COMPUTE NEW X2 @B@@@@ ANA,U A0,1 QF )@@G@@ . @B@@@@ DSL A0,36 . @B@@@@ QG )@@G@@ DI,U A0,6 . @B@@@@ AX X2,A0 QH )@@G@@ . @B@@@@ LXI,U X2,-1 . @]@@@@T23LOOQI )@@G@@P2. @F@@@@ LA A0,A8 . $P SET UP TO PUT 1 CQJ )@@G@@HAR @B@@@@ ANA,U A0,1 . @F@@@@ ANQK )@@G@@A,U A8,1 . $P UPDATE FOR NXT CHAR @B@@@@ DSQL )@@G@@L A0,36 . @B@@@@ DI,U A0,6 QM )@@G@@ . @B@@@@ EX PUT23,A1 . @E@@@@ DSQN )@@G@@L A9,6 . $P SHIFT ONE CHAR @B@@@@ JGD QO )@@G@@ R8,T23LOOP2 . @D@@@@ J *TYPE23 . $JQP )@@G@@ RETURN @]@@@@$(4). @]@@@@GET23. @ @@@@ LA,S1 QQ )@@G@@ A12,,X1 @ @@@@ LA,S2 A12,,X1 @ @@@@ LA,S3 QR )@@G@@ A12,,X1 @ @@@@ LA,S4 A12,,X1 @ @@@@ LA,S5 QS )@@G@@ A12,,X1 @ @@@@ LA,S6 A12,,*X1 @]@@@@PUT23. @ @@@@QT )@@G@@ SA,S1 A10,,*X2 @ @@@@ SA,S2 A10,,X2 @ @@@@QU )@@G@@ SA,S3 A10,,X2 @ @@@@ SA,S4 A10,,X2 @ @@@@QV )@@G@@ SA,S5 A10,,X2 @ @@@@ SA,S6 A10,,X2 @]@@@@QW )@@G@@$(1). @[@@@@. @D@@@@. ROUTINE TO TRANSFORM PIC 9 COMPQX )@@G@@ TO PIC 9 @[@@@@. @C@@@@TYPE32 +0 . $HQY )@@G@@ @B@@@@ LXI,U X1,1 . @B@@@@ SZQZ )@@G@@ A9 . @B@@@@ SZ A10 RA )@@G@@ . @B@@@@ SZ A11 . @B@@@@ JGRB )@@G@@D R7,$+1 . @]@@@@T32LOOP1. @B@@@@ LA RC )@@G@@ A0,A7 . @B@@@@ ANA,U A0,1 . RD )@@G@@@B@@@@ AA,U A7,1 . @B@@@@ DSL RE )@@G@@ A0,36 . @B@@@@ DI,U A0,6 . RF )@@G@@@B@@@@ LDSL A9,6 . @B@@@@ EX RG )@@G@@ GET32,A1 . @B@@@@ LA A10,A11 . RH )@@G@@@B@@@@ JGD R7,T32LOOP1 . @E@@@@ DI RI )@@G@@ A9,(+10000000000) . $P SPLIT THE NUMBER @B@@@@ SZ R7 RJ )@@G@@ . @H@@@@ AA A8,R8 . $P SET URK )@@G@@P TO TRANSFER FROM BOTTOM @B@@@@ ANA,U A8,1 RL )@@G@@ . @G@@@@ LA A0,A8 . $P COMPUTE LAST WORDRM )@@G@@ ADDR @B@@@@ ANA,U A0,1 . @B@@@@ RN )@@G@@ DSL A0,36 . @B@@@@ DI,U A0,6 RO )@@G@@ . @ @@@@ AX X2,A0 @B@@@@ LA RP )@@G@@ A0,R8 . @B@@@@ ANA,U A0,10 . RQ )@@G@@@B@@@@ JZ A0,NOSPLT . @B@@@@ JN RR )@@G@@ A0,NOSPLT . @B@@@@ LR,U R8,10 . RS )@@G@@@B@@@@ LR R7,A0 . @]@@@@NOSPLT. @B@@@@RT )@@G@@ LXI,U X2,-1 . @]@@@@T32LOOP2. @B@@@@ RU )@@G@@ JGD R8,$+2 . @B@@@@ J T32END RV )@@G@@ . @B@@@@ LA A0,A8 . @B@@@@ RW )@@G@@ ANA,U A0,1 . @B@@@@ ANA,U A8,1 RX )@@G@@ . @B@@@@ DSL A0,36 . @B@@@@ RY )@@G@@ DI,U A0,6 . @B@@@@ DSL A10,36 RZ )@@G@@ . @B@@@@ DI,U A10,10 . @B@@@@ SA )@@G@@ OR,U A11,060 . @B@@@@ EX PUT32,A1 SB )@@G@@ . @B@@@@ J T32LOOP2 . @]@@@@T32ENDSC )@@G@@. @B@@@@ TNZ R7 . @B@@@@ J SD )@@G@@ *TYPE32 . @B@@@@ LR R8,R7 SE )@@G@@ . @B@@@@ SZ R7 . @B@@@@ LASF )@@G@@ A10,A9 . @B@@@@ J T32LOOP2 SG )@@G@@ . @]@@@@$(4). @]@@@@GET32. @B@@@@ OR,S1 A10,SH )@@G@@,X1 . @B@@@@ OR,S2 A10,,X1 . @B@@@@SI )@@G@@ OR,S3 A10,,X1 . @B@@@@ OR,S4 A10,SJ )@@G@@,X1 . @B@@@@ OR,S5 A10,,X1 . @B@@@@SK )@@G@@ OR,S6 A10,,*X1 . @]@@@@PUT32. @B@@@@ SL )@@G@@ SA,S1 A12,,*X2 . @B@@@@ SA,S2 A12,,X2 SM )@@G@@ . @B@@@@ SA,S3 A12,,X2 . @B@@@@ SN )@@G@@ SA,S4 A12,,X2 . @B@@@@ SA,S5 A12,,X2 SO )@@G@@ . @B@@@@ SA,S6 A12,,X2 . @]@@@@$(1). SP )@@G@@ @[@@@@. @A@@@@. OCCURS TYPE TRANSFORMATION@[@@@@. SQ )@@G@@@C@@@@OCCURS . $H @G@@@@ LXSR )@@G@@ X1,X8 . $P SET UP TO COPY OCCURS RULES @E@@@@ SS )@@G@@ LXI,U X1,1 . $ TO WORK AREA @B@@@@ LXST )@@G@@ X2,(1,OCCRULES) . @F@@@@ LA,S3 A0,,X8 SU )@@G@@ . $P COMPUTE # OF WORDS @B@@@@ MSI,U A0,2 SV )@@G@@ . @C@@@@ AA,U A0,2 . $P +2 @F@@@@ SW )@@G@@ LR R1,A0 . $P SET TRANSFER COUNT @B@@@@ SX )@@G@@ BT X2,,*X1 . @]@@@@$(4). @^@@@@OCCRULES RESY )@@G@@S 100 @]@@@@$(1). @G@@@@ ANA,S3 A15,,X8 SZ )@@G@@ . $P UPDATE MASTER RULE COUNT @B@@@@ LA,S3 A0,,X8 TA )@@G@@ . @B@@@@ MSI,U A0,2 . @D@@@@ TB )@@G@@ AX X8,A0 . $P UPDATE X8 @E@@@@ SA TC )@@G@@ A15,OCCA15 . $P SAVE A15, X8 @B@@@@ SX X8,OTD )@@G@@CCX8 . @]@@@@$(4). @]@@@@OCCA15 +0@]@@@@OCCX8 +0TE )@@G@@@]@@@@$(1). @[@@@@. @D@@@@. SET UP TO PERFORM TRANSFORMATITF )@@G@@ON FROM OCCRULES @[@@@@. @E@@@@ LA,T2 A14,OCCRULES+1 TG )@@G@@ . $P SET OCCURS COUNT @[@@@@. @^@@@@. OCCURS LOOP @[@@@@TH )@@G@@. @]@@@@OCCLOOP. @B@@@@ JGD A14,$+2 . TI )@@G@@@B@@@@ J ENDOCC . @G@@@@ LX TJ )@@G@@ X8,SAVEX8 . $P GET RULE TBL ENTRY ADDR @E@@@@ LATK )@@G@@,T1 A0,OCCRULES . $P GET F-OCC-LENGTH @F@@@@ JZ TL )@@G@@ A0,OCCINIT . $J IF INITIALIZE ONLY @F@@@@ TM )@@G@@ . $P COMPUTE # OF WORDS @B@@@@ AA,T3 TN )@@G@@ A0,OCCRULES . @B@@@@ ANA,U A0,1 . TO )@@G@@@B@@@@ DSL A0,36 . @F@@@@ DI,U TP )@@G@@ A0,6 . $P COMPUTE WORD LENGTH @B@@@@ TZ TQ )@@G@@ A1 . @E@@@@ AA,U A0,1 . $PTR )@@G@@ FINAL LENGTH @F@@@@ LA,H2 A1,0,X9 . $P GET OTS )@@G@@LD RECORD LENGTH @H@@@@ TLE A1,A0 . $T CHECKTT )@@G@@ IF STILL WITHIN THE RECORD @E@@@@ J ENDOCC1 TU )@@G@@ . $A YES NO,OCCEND @]@@@@OCCINIT. @C@@@@ LA,T1 A0,OTV )@@G@@CCRULES+1 . $P DO @D@@@@ AA,T3 A0,OCCRULES+1 . TW )@@G@@ THE @E@@@@ ANA,U A0,1 . SAMETX )@@G@@ @E@@@@ DSL A0,36 . FOR TY )@@G@@@B@@@@ DI,U A0,6 . @G@@@@ TZ TZ )@@G@@ A1 . NEW RECORD @B@@@@ AAUA )@@G@@,U A0,1 . @G@@@@ LA A1,R4 UB )@@G@@ . $P GET RECORD(NEW) LENGTH @B@@@@ TLE A1,A0 UC )@@G@@ . @B@@@@ J ENDOCC1 . @F@@@@ UD )@@G@@ LX,U X8,OCCRULES . $P SET X8 TO FIRST RULE @E@@@@ UE )@@G@@ LA,S3 A15,OCCRULES . $P SET RULE COUNT @[@@@@. @C@@@@UF )@@G@@. PERFORM TRANSFORMATION WITHIN AN OCCURS @[@@@@. @]@@@@ORULELUG )@@G@@OP. @G@@@@ JGD A15,$+2 . $T SEE ZF COMPLETE AUH )@@G@@LL RULES @E@@@@ J ENDRULES . $A YES,ENDRULEUI )@@G@@S NO @E@@@@ AX,U X8,2 . $P UPDATE RULE ADDR UJ )@@G@@@E@@@@ TNZ,T1 0,X8 . $T IS IT A NEW ITEM @E@@@@UK )@@G@@ J OCCNEW . $A YES,OCCNEW NO @E@@@@ UL )@@G@@ LA,S4 A0,,X8 . $P GET 1ST TYPE @E@@@@ LAUM )@@G@@,S4 A1,1,X8 . $P GET 2ND TYPE @E@@@@ LSSL UN )@@G@@ A1,18 . $P FORM TYPE WORD @B@@@@ LDSL A0,1UO )@@G@@8 . @E@@@@ LR R1,TYPECNT . $P GET RUP )@@G@@EPEAT COUNT @B@@@@ LX X4,(2,TYPES) . @E@@@@ UQ )@@G@@ JZ A0,ORULELOP . $$$$$ C17 FIX NEEDED@G@@@@ SEUR )@@G@@ A0,,*X4 . $P CHECK FOR TYPES COMBINATION @E@@@@ US )@@G@@ ER ERR$ . $S INTERNAL ERROR @G@@@@ ANUT )@@G@@X X4,(2,1) . $P BACK UP TO ROUTINE ADDR @E@@@@ UU )@@G@@ SLJ SETREGS . $P SET UP REGISTERS @E@@@@ LAUV )@@G@@,H2 A0,,X4 . $P GET ROUTINE ADDR @E@@@@ SLJ UW )@@G@@ 0,A0 . $P PERFORM TRANSFORM@D@@@@ J ORULUX )@@G@@ELOP . $J TRY NXT @[@@@@. @A@@@@. A NEW ITEM WITUY )@@G@@HIN AN OCCUR@[@@@@. @]@@@@OCCNEW. @B@@@@ SLJ NEWIUZ )@@G@@TEM1 . @D@@@@ J ORULELOP . $J TRY NVA )@@G@@XT @[@@@@. @B@@@@. END OF ALL RULE WITHIN AN OCCUR @A@@@@VB )@@G@@. UPDATE ALL REL WORD ADDR @[@@@@. @C@@@@ENDRULES VC )@@G@@ . $H @H@@@@ LA,T1 A0,OCCRULES VD )@@G@@ . $P GET THE GROUP LENGTH OF AN OCCUR @E@@@@ LA,T1 A3,OVE )@@G@@CCRULES+1 . $P (OLD/NEW) @F@@@@ AU,T3 A0,OCCRULEVF )@@G@@S . $P COMPUTE NXT REL-CHAR @B@@@@ SA,T3 A1,OCCRULEVG )@@G@@S . @E@@@@ AU,T3 A3,OCCRULES+1 . (OLD/NEVH )@@G@@W) @B@@@@ SA,T3 A4,OCCRULES+1 . @E@@@@ LAVI )@@G@@,S3 A15,OCCRULES . $P GET RULE COUNT @B@@@@ LX,U VJ )@@G@@ X8,OCCRULES . @]@@@@ENDRLOOP. @B@@@@ JGD A15,VK )@@G@@$+2 . @B@@@@ J OCCLOOP . @B@@@@VL )@@G@@ AX,U X8,2 . @H@@@@ AU,S3 A0,,VM )@@G@@X8 . $P COMPUTE NEW REL-WORD & CHAR POS @B@@@@ VN )@@G@@ . @B@@@@ VO )@@G@@ . @B@@@@ JZ A1,ENDR1 . @B@@@@ ANVP )@@G@@A,U A1,1 . @B@@@@ DSL A1,36 VQ )@@G@@ . @B@@@@ DI,U A1,6 . @B@@@@ AAVR )@@G@@,U A2,1 . @B@@@@ SA,S3 A2,,X8 VS )@@G@@ . @B@@@@ AA,T3 A1,,X8 . @B@@@@ SAVT )@@G@@,T3 A1,,X8 . @]@@@@ENDR1. @B@@@@ AU,S3 VU )@@G@@ A3,1,X8 . @B@@@@ ANA,U A4,1 . VV )@@G@@@B@@@@ DSL A4,36 . @B@@@@ DI,U VW )@@G@@ A4,6 . @B@@@@ AA,U A5,1 . VX )@@G@@@B@@@@ SA,S3 A5,1,X8 . @B@@@@ AA,T3 VY )@@G@@ A4,1,X8 . @B@@@@ SA,T3 A4,1,X8 . VZ )@@G@@@B@@@@ J ENDRLOOP . @[@@@@. @A@@@@. WA )@@G@@OCCURS DEPENDING ON STOPED @[@@@@. @]@@@@ENDOCC1. @F@@@@ WB )@@G@@ LA,T3 A0,OCCRULES+1 . $P GET FINAL CHAR POS. @G@@@@ WC )@@G@@ ANA,U A0,1 . $P COMPUTE THE ACTUAL LENGTH/NEW@B@@@@WD )@@G@@ DSL A0,36 . @B@@@@ DI,U A0,6WE )@@G@@ . @B@@@@ TZ A1 . @B@@@@WF )@@G@@ AA,U A0,1 . @G@@@@ LR R4,AWG )@@G@@0 . $P SAVE THE NEW LENGTH IN R4 @]@@@@ENDOCC. @E@@@@WH )@@G@@ LA A15,OCCA15 . $P RESTORE A15,X8 @B@@@@ WI )@@G@@ LX X8,OCCX8 . @B@@@@ J NXTART WJ )@@G@@ . @[@@@@. @C@@@@. NO RULES FOR DATA TRANSFORMATIONWK )@@G@@ @[@@@@. @]@@@@ENDART9. @E@@@@ LA,T1 A0,1,X8 WL )@@G@@ . $P GET RECORD LENGTH@H@@@@ ANA A0,R3 WM )@@G@@ . $P COMPUTE DIFFERENCE WITH ACTUAL @E@@@@ LA,T2 A1,1WN )@@G@@,X8 . $P GET NEW LENGTH @B@@@@ ANA A1,A0 WO )@@G@@ . @H@@@@ LR R4,A1 . $P STORE ACTUAWP )@@G@@L LENGTH(NEW) IN R4 @]@@@@ENDART8. @F@@@@ LA A0,RWQ )@@G@@4 . $P GET NEW RECORD LENGTH @B@@@@ SA,H2 A0,,WR )@@G@@X7 . @F@@@@ LR R1,R3 . $P GET OWS )@@G@@LD RECORD LENGTH @B@@@@ . @F@@@@WT )@@G@@ AU A0,R3 . $P COMPUTE TOTAL LENGTH @E@@@@WU )@@G@@ LR R3,A1 . $P SAVE IN R3 @G@@@@ WV )@@G@@ AA A0,X7 . $P ADDR TO SAVE OLD RECORD @B@@@@WW )@@G@@ LXI,U A0,1 . @B@@@@ LA A1,XWX )@@G@@9 . @B@@@@ LXI,U A1,1 . @B@@@@WY )@@G@@ BT A0,,*A1 . @[@@@@. @^@@@@. RESTORWZ )@@G@@E X1 - A15 @[@@@@. @B@@@@ LX,U A0,X1 . XA )@@G@@@B@@@@ LXI,U A0,1 . @B@@@@ LX XB )@@G@@ A1,(1,REGSAVE) . @B@@@@ LR,U R1,27 . XC )@@G@@@B@@@@ BT A0,,*A1 . @B@@@@ LA XD )@@G@@ A0,,X10 . @B@@@@ SA A0,NEWPARAM . XE )@@G@@@B@@@@ LX,U X10,NEWPARAM . @B@@@@ J XF )@@G@@ *ART . @]@@@@$(4). @]@@@@NEWPARAM +0@#@@@@NBUFADXG )@@G@@R +1,0 @]@@@@$(1). @#@@@@ END ___ J OCCNXH )@@G@@*[@@@@*SDFF*@#@@@@ AXR$ @ @@@@PF FORM 12,6,18 XI )@@G@@@#@@@@$(4) LIT @]@@@@$(1). @A@@@@. REORG II KEY IXJ )@@G@@N ACTIVITY @]@@@@ACTII*. @ @@@@ LA,U A0,'II' @E@@@@XK )@@G@@. REGISTER ACTIVITY NAME@ @@@@ XL )@@G@@ ER NAME$ @A@@@@ SA A0,IINAME @C@@@@XM )@@G@@ LA A0,(PF 02000,1,IICONT) @G@@@@. XN )@@G@@ REGISTER INTER ACT INTERRUPT RTN @ @@@@ ERXO )@@G@@ IALL$ @]@@@@IIER. @^@@@@ ER II$ @F@@@@XP )@@G@@. WAIT FOR II KEYIN OR BREAK @ @@@@XQ )@@G@@ SA A0,KEYIN @A@@@@ LA A0,(031,PCT) XR )@@G@@@^@@@@ ER PCT$@ @@@@ E$DIT IIPKT @^@@@@XS )@@G@@ E$SKIP 2 @^@@@@ E$CHAR '%' @^@@@@ E$XT )@@G@@SKIP 1 @E@@@@ LA A0,('NO') . PRESET TO NO CXU )@@G@@OMMAND@ @@@@ TZ CMDLVL @G@@@@ LA A0,CXV )@@G@@MDNAME . SET TO PROPER COMMAND NAME @A@@@@ LMJ XW )@@G@@ X11,EFD1$ @^@@@@ E$SKIP 1 @A@@@@ E$FD2 XX )@@G@@ ('COMMAND') @^@@@@ E$SKIP 1 @ @@@@ E$FD1 XY )@@G@@ ('IN') @^@@@@ E$SKIP 1 @A@@@@ E$FD2 ('PRXZ )@@G@@OGRESS,') @^@@@@ E$SKIP 1 @E@@@@ LA A1,LYA )@@G@@AST$I . GET IBANK ADDR @^@@@@ SZ A0 @F@@@@YB )@@G@@ DI,U A0,512 . COMPUTE CORE BLOCKS USED @^@@@@YC )@@G@@ TZ A1 @B@@@@ AA,U A0,1 . YD )@@G@@@B@@@@ LA A2,LAST$D . @^@@@@ SZ YE )@@G@@ A1 @A@@@@ ANA A2,(+FRSTD$) @ @@@@ DI,U YF )@@G@@ A1,512 @^@@@@ TZ A2 @^@@@@ AA,U A1,1YG )@@G@@@ @@@@ AA A0,A1 @ @@@@ MSI,U A0,512 YH )@@G@@@ @@@@ DSL A0,36 @ @@@@ DI,U A0,1000 YI )@@G@@@^@@@@ TZ A1 @^@@@@ AA,U A0,1@A@@@@ YJ )@@G@@ LMJ X11,EDECV$ @^@@@@ E$CHAR 'K' @^@@@@ YK )@@G@@ E$SKIP 1 @ @@@@ E$FD1 ('IN') @^@@@@ E$YL )@@G@@SKIP 1 @ @@@@ E$FD1 ('CORE') @#@@@@ E$DITX YM )@@G@@@ @@@@ SLJ IIOUT @ @@@@ TNZ CMDLVL YN )@@G@@@^@@@@ J IIER@ @@@@ E$DIT IIPKT @^@@@@YO )@@G@@ E$SKIP 2 @^@@@@ E$CHAR '%' @^@@@@ E$YP )@@G@@SKIP 1 @A@@@@ E$FD2 ('ELAPSED=') @ @@@@ ERYQ )@@G@@ TDATE$ @A@@@@ ANA A0,TIMEST @A@@@@ YR )@@G@@ LMJ X11,ETIME$ @^@@@@ E$CHAR ',' @^@@@@ YS )@@G@@ E$SKIP 1 @ @@@@ E$FD1 ('CPU=') @ @@@@ LAYT )@@G@@ A0,CPU @ @@@@ ANA A0,CPUIN @ @@@@ DSYU )@@G@@L A0,36 @^@@@@ DI,U A0,5@A@@@@ LMJ YV )@@G@@ X11,EDECV$ @^@@@@ E$SKIP 1 @ @@@@ E$FD1 YW )@@G@@ ('MS,') @^@@@@ E$SKIP 1 @ @@@@ E$FD1 ('I/YX )@@G@@O=') @C@@@@ LA A0,IOCNT @ @@@@ YY )@@G@@ ANA A0,IOIN @A@@@@ LMJ X11,EDECV$ @#@@@@YZ )@@G@@ E$DITX @ @@@@ SLJ IIOUT @A@@@@ LAZA )@@G@@ A0,CMDLVL @ @@@@ J JUMP,A0 @]@@@@JUMP. ZB )@@G@@ @^@@@@ J IIER@^@@@@ J IIER@^@@@@ZC )@@G@@ J IIER@ @@@@ J IISCAN @A@@@@ ZD )@@G@@ J IIRESTORE @ @@@@ J IIDLT @ @@@@ZE )@@G@@ J IIRELD @ @@@@ J IIPATCH @]@@@@ZF )@@G@@IISCAN. @ @@@@ E$DIT IIPKT @^@@@@ E$SKIP ZG )@@G@@ 2 @^@@@@ E$CHAR '%' @^@@@@ E$SKIP 1 @A@@@@ZH )@@G@@ E$FD2 ('SCANNING') @^@@@@ E$SKIP 1 @A@@@@ZI )@@G@@ E$FD1 ('AREA:') @ @@@@ E$FD2 SCPKT ZJ )@@G@@@^@@@@ E$CHAR ',' @A@@@@ E$FD1 ('PAGE:') ZK )@@G@@@A@@@@ E$DECV SCPKT+8,,H2 @#@@@@ E$DITX @ @@@@ZL )@@G@@ SLJ IIOUT @^@@@@ J IIER@]@@@@IIRESTZM )@@G@@ORE. @ @@@@ E$DIT IIPKT @^@@@@ E$SKIP 2 ZN )@@G@@@^@@@@ E$CHAR '%' @^@@@@ E$SKIP 1 @A@@@@ ZO )@@G@@ E$FD1 ('NUMBER') @^@@@@ E$SKIP 1 @ @@@@ ZP )@@G@@ E$FD1 ('OF') @^@@@@ E$SKIP 1 @A@@@@ E$ZQ )@@G@@FD2 ('RECORDS') @^@@@@ E$SKIP 1 @A@@@@ E$ZR )@@G@@FD2 ('RESTORED:') @^@@@@ E$SKIP 1 @ @@@@ E$ZS )@@G@@DECV RESTCNT @#@@@@ E$DITX @ @@@@ SLJ IIOUZT )@@G@@T @B@@@@ J IIER . @]@@@@IIDLT. ZU )@@G@@@ @@@@ E$DIT IIPKT @^@@@@ E$SKIP 2 @^@@@@ZV )@@G@@ E$CHAR '%' @^@@@@ E$SKIP 1 @A@@@@ E$ZW )@@G@@FD1 ('NUMBER') @^@@@@ E$SKIP 1 @ @@@@ E$ZX )@@G@@FD1 ('OF') @^@@@@ E$SKIP 1 @A@@@@ E$FD2 ZY )@@G@@ ('RECORDS') @^@@@@ E$SKIP 1 @A@@@@ E$FD2 ZZ )@@G@@ ('DELETED:') @^@@@@ E$SKIP 1 @ @@@@ E$DECV AA )@@G@@ DLTCNT @#@@@@ E$DITX @ @@@@ SLJ IIOUT AB )@@G@@@^@@@@ J IIER@[@@@@. @A@@@@. MESSAGE FOR REAC )@@G@@LOAD PROCESS@[@@@@. @]@@@@IIRELD. @ @@@@ E$DIT IIPKAD )@@G@@T @^@@@@ E$SKIP 2 @^@@@@ E$CHAR '%' @^@@@@AE )@@G@@ E$SKIP 1 @A@@@@ E$FD1 ('NUMBER') @^@@@@AF )@@G@@ E$SKIP 1 @ @@@@ E$FD1 ('OF') @^@@@@ AG )@@G@@ E$SKIP 1 @A@@@@ E$FD2 ('RECORDS') @^@@@@ AH )@@G@@ E$SKIP 1 @A@@@@ E$FD2 ('RELOADED:') @^@@@@ AI )@@G@@ E$SKIP 1 @ @@@@ E$DECV RELNUM @#@@@@ E$AJ )@@G@@DITX @ @@@@ SLJ IIOUT @^@@@@ J IIERAK )@@G@@@[@@@@. @ @@@@. MESSAG FOR PATCH @[@@@@. @]@@@@IIPATCAL )@@G@@H. @ @@@@ E$DIT IIPKT @^@@@@ E$SKIP 2 AM )@@G@@@^@@@@ E$CHAR '%' @^@@@@ E$SKIP 1 @^@@@@ AN )@@G@@ E$DECV PCNT@^@@@@ E$SKIP 1 @ @@@@ E$FD1 AO )@@G@@ ('PTRS') @^@@@@ E$SKIP 1 @A@@@@ E$FD2 ('PAAP )@@G@@TCHED(') @ @@@@ E$FD1 ('PG') @^@@@@ E$SKIP AQ )@@G@@ 1 @A@@@@ E$DECV PDBPKT+8,,H2 @^@@@@ E$CHAR AR )@@G@@ '/' @ @@@@ E$FD2 PDBPKT @^@@@@ E$CHAR ')' AS )@@G@@@#@@@@ E$DITX @ @@@@ SLJ IIOUT @^@@@@ AT )@@G@@ J IIER@[@@@@. @^@@@@. II TERMINATION@[@@@@. AU )@@G@@@]@@@@IICONT. @]@@@@ +0@]@@@@ +0@ @@@@ ERAV )@@G@@ EXIT$ @[@@@@. @[@@@@. @]@@@@IIOUT +0@A@@@@ AW )@@G@@ P$RINT (PF 1,8,IIPRT) @E@@@@ LA,S2 A0,PCT+030 AX )@@G@@ . $P GET PROG TYPE @D@@@@ TNE,U A0,4 . $TAY )@@G@@ DEMAND @E@@@@ J *IIOUT . $J YES,*IIOUT AZ )@@G@@NO @ @@@@ C$OM COMPKT @ @@@@ J *IIOBA )@@G@@UT @]@@@@$(4). @^@@@@PCT RES 031 @ @@@@CPU EQBB )@@G@@UF PCT+026 @ @@@@IOCNT EQUF PCT+8 @ @@@@IIPKT E$BC )@@G@@PKT 8,IIPRT @^@@@@IIPRT RES 8 @ @@@@COMPKT C$OMPK BD )@@G@@ 48,IIPRT @]@@@@KEYIN +0@]@@@@IINAME* +0@]@@@@CMDLVL* +0@#@@@@BE )@@G@@ END ___ DI,U A0,1000 @^@@@@ TZ BF )@@G@@ A1 @^@@@@ AA,U A0,1@A@@@@ *[@@@@*SDFF*@#@@@@ BG )@@G@@ AXR$ @#@@@@$(4) LIT. @]@@@@$(1). @ @@@@ SEBH )@@G@@TMIN 0150000 @C@@@@MAIN. . $H BI )@@G@@@[@@@@. @G@@@@. THIS IS THE MAIN CONTROL PROGRAM OF THE BISCBJ )@@G@@US/FACS DATA BASE @A@@@@. REORGANIZATION SYSTEM. @G@@@@. BK )@@G@@ IT READS COMMANDS FROM THE USER, ANALYZE IT AND CALL A PROPER @E@@@@BL )@@G@@. PROCESS ROUTINE TO PERFORM THE REQUESTED FUNCTION.@^@@@@. BM )@@G@@ COMMANDS ARE: @[@@@@. @C@@@@. RECORD RECORD-NAME [RECOBN )@@G@@RD-NAME] ...@C@@@@. AREA AREA-NAME1 [AREA-NAME2] ... @C@@@@BO )@@G@@. AREAP AREA-NAME1 [AREA-NAME2] ... @#@@@@. SCAN BP )@@G@@@#@@@@. UNLOAD @^@@@@. RESTORE @#@@@@. DEBQ )@@G@@LETE @#@@@@. RELOAD @#@@@@. PATCH @B@@@@. TIBR )@@G@@ME TO TIME EACH COMMAND @[@@@@. @E@@@@. THIS PROGRAM SBS )@@G@@HOULD BE EXECUTED AS A PROCESSOR: @[@@@@. @E@@@@. BT )@@G@@ @REORG [SCHEMA-NAME-1[,SCHEMA-NAME-2]]@[@@@@. @[@@@@. @E@@@@BU )@@G@@ E$DIT EDPKT . $P FORMAT PROGRAM ID@B@@@@ BV )@@G@@ E$COPY 29,PROGID . @E@@@@ E$DAT3 BW )@@G@@ . $P GET TIME STAMP @B@@@@ E$CHAR ',' BX )@@G@@ . @B@@@@ E$TD . @^@@@@ E$BY )@@G@@CHAR '(' @ @@@@ E$FD1 VERSION @^@@@@ E$CHAR BZ )@@G@@ ')' @^@@@@ E$CHAR '-' @B@@@@ E$DITX CA )@@G@@ . @E@@@@ P$RINT (PF 1,14,PRINT) . $P PRINT PROGRCB )@@G@@AM ID @E@@@@ SLJ TIMEIN . $P REGISTER TIME IN CC )@@G@@@E@@@@ DL A0,CPUIN . $P SAVE TIME STAMP @B@@@@CD )@@G@@ DS A0,CPUINX . @F@@@@ LA A0,TCE )@@G@@IMEST . $P SAVE THE START TIME @B@@@@ SA A0,TCF )@@G@@IMESTX . @B@@@@ LA A0,(57,PBUFR) . @F@@@@CG )@@G@@ LMJ X11,RINF$ . $W READ PROCESSOR CARD @E@@@@CH )@@G@@ J EPROC1 . $T PROCESSOR CALL OK@E@@@@ CI )@@G@@ LA A0,(1,ACTII) . GET II ACTIVITY ADDR@B@@@@ ERCJ )@@G@@ FORK$ . @A@@@@. REGISTER CONTI ROUTINE CK )@@G@@@I@@@@ LA A0,(PF 01133,0,BOMB) CL )@@G@@ . $P GET @B@@@@ ER IALL$ . @B@@@@CM )@@G@@ J GETOPTS . @#@@@@BOMB +0D @B@@@@CN )@@G@@ L$SNAP 'BOMB!!',7,2,BOMB @ @@@@ ER EABTCO )@@G@@$ @]@@@@GETOPTS. @[@@@@. @A@@@@. SET UP ALL OPTION WOCP )@@G@@RDS @[@@@@. @E@@@@ ER OPT$ . $P GET OCQ )@@G@@PTION WORD @D@@@@ LA,U A1,1 . $P GET IND CR )@@G@@@B@@@@ LR,U R1,26 . @G@@@@ LSSL CS )@@G@@ A0,9 . $P SHIFT OFF FIRST 9 BITS @F@@@@ LXCT )@@G@@ X1,(1,OPTIONS) . $P GET OPTION WORDS ADDR @C@@@@OPTLOOP CU )@@G@@ . $H @E@@@@ JGD R1,$+2 CV )@@G@@ . $T ALL CHECKED @E@@@@ J ENDOPT CW )@@G@@ . $A YES,ENDOPT NO @G@@@@ LSSL A0,1 . $PCX )@@G@@ SGIFT THE OPTION TO BIT 35 @D@@@@ TP A0 CY )@@G@@ . $T IS IT SET @E@@@@ SA A1,,X1 . $A YES,SECZ )@@G@@TIT NO @D@@@@ AX,U X1,1 . $P UP INX DA )@@G@@@D@@@@ J OPTLOOP . $J NXT ONE @]@@@@$(4). DB )@@G@@ @C@@@@CFAMSW* +0 . SW TO PUT C14 IN D BANK @]@@@@OPTIONDC )@@G@@S. @]@@@@AOPT* +0@]@@@@BOPT* +0@]@@@@COPT* +0@]@@@@DOPT* DD )@@G@@ +0@]@@@@EOPT* +0@]@@@@FOPT* +0@]@@@@GOPT* +0@]@@@@HOPT* DE )@@G@@ +0@]@@@@IOPT* +0@]@@@@JOPT* +0@]@@@@KOPT* +0@]@@@@LOPT* DF )@@G@@ +0@]@@@@MOPT* +0@]@@@@NOPT* +0@]@@@@OOPT* +0@]@@@@POPT* DG )@@G@@ +0@]@@@@QOPT* +0@]@@@@ROPT* +0@]@@@@SOPT* +0@]@@@@TOPT* DH )@@G@@ +0@]@@@@UOPT* +0@]@@@@VOPT* +0@]@@@@WOPT* +0@]@@@@XOPT* DI )@@G@@ +0@]@@@@YOPT* +0@]@@@@ZOPT* +0@]@@@@$(1). @]@@@@ENDOPTDJ )@@G@@. @[@@@@. @C@@@@. GET FIRST SCHEMA NAME AND DO @USE DK )@@G@@@[@@@@. @E@@@@ LA,U A0,1 . $P GET FIRST EDL )@@G@@LT$ @B@@@@ LMJ X11,SELT$ . @E@@@@ J DM )@@G@@ USE2 . $T 1ST NAME IN @E@@@@ SLJ DN )@@G@@ BLDUSE . $A NO, TRY 2ND @[@@@@. @C@@@@. GEDO )@@G@@T SECOND SCHEMA NAME AND DO @USE @[@@@@. @]@@@@USE2. @E@@@@DP )@@G@@ LA,U A0,2 . $P GET 2ND ELT$ @B@@@@ DQ )@@G@@ LMJ X11,SELT$ . @E@@@@ J READIN DR )@@G@@ . $T 2ND NAME IN @D@@@@ SLJ BLDUSE DS )@@G@@ . $A NO,READIN @B@@@@ J READIN . @[@@@@DT )@@G@@. @C@@@@. BUILD @USE COMMAND AND PERFORM CSF$ @[@@@@. DU )@@G@@@C@@@@BLDUSE +0 . $H @E@@@@ E$DV )@@G@@DIT EDPKT . $P SET UP PKT @^@@@@ E$CHAR DW )@@G@@ '@' @ @@@@ E$FD1 ('USE') @^@@@@ E$SKIP 1 DX )@@G@@@G@@@@ LA,U A0,1 . $P INCREMANT NO. OF SCHEMADY )@@G@@ IN @C@@@@ AA A0,NS$FLG . $ BY 1@D@@@@ DZ )@@G@@ SA A0,NS$FLG . $P SAVE IT @E@@@@ MSI,U EA )@@G@@ A0,2 . $P GET USE NAME ADDR@B@@@@ AA,U A0,UEB )@@G@@SENME . @^@@@@ E$FD2 0,A0@^@@@@ E$CHAR EC )@@G@@ ',' @E@@@@ TNZ,S1 ELT$ . $T QUALFIER IN ED )@@G@@@E@@@@ J IMPQUAL . $A YES NO,IMPQUAL @ @@@@EE )@@G@@ E$FD2 ELT$+2 @^@@@@ E$CHAR '*' @B@@@@ EF )@@G@@ J FILENME . @[@@@@. @B@@@@. CHECK IFEG )@@G@@ IMPLIED QUALFIER IN @[@@@@. @C@@@@IMPQUAL EH )@@G@@ . $H @E@@@@ TNZ,S6 ELT$ . $T IMPLIEI )@@G@@ED QUAL @E@@@@ J FILENME . $A YES NO,FILEEJ )@@G@@NME @B@@@@ E$CHAR '*' . @[@@@@. @^@@@@EK )@@G@@. GET FILENAME @[@@@@. @C@@@@FILENME EL )@@G@@ . $H @E@@@@ TNZ,S2 ELT$ . $T FILENEM )@@G@@AME IN @E@@@@ J ELEMENT . $A YES NO,ELEMEN )@@G@@ENT @ @@@@ E$FD2 ELT$+4 @ @@@@ J DOUSEO )@@G@@E @[@@@@. @ @@@@. TRY ELEMENT NAME @[@@@@. @C@@@@EP )@@G@@ELEMENT . $H @E@@@@ TNZ,S1 EQ )@@G@@ ELT$+1 . $T ELEMENT NAME IN @E@@@@ ER ERR$ER )@@G@@ . $ PROC CALL ERR @ @@@@ E$FD2 ELT$+9 ES )@@G@@@[@@@@. @^@@@@. DO @USE @[@@@@. @C@@@@DOUSE ET )@@G@@ . $H @^@@@@ E$SKIP 1 @F@@@@EU )@@G@@ E$CHAR '.' . $P END OF USE STATEMENT @#@@@@EV )@@G@@ E$DITX @D@@@@ LA,U A0,PRINT . $P USE AEW )@@G@@DDR @D@@@@ ER CSF$ . $P DO @USE @D@@@@EX )@@G@@ J *BLDUSE . $J RETURN @]@@@@$(4). EY )@@G@@@^@@@@USENME 'OLDSCHEMA' @^@@@@ 'NEWSCHEMA' @D@@@@NS$FLGEZ )@@G@@* -1 . -1 NO SCHEMA @D@@@@ FA )@@G@@ . 0 1 SCHEMA @D@@@@$(1) FB )@@G@@ . 1 2 SCHEMAS @[@@@@. @ @@@@. READ USER INPUT FC )@@G@@@[@@@@. @C@@@@READIN. . $H @E@@@@FD )@@G@@ SLJ TIMEOUT . $P PRINT TIME STAT @B@@@@ FE )@@G@@ LA,U A0,BLANK . @B@@@@ LA A1,(1,LINEFF )@@G@@) . @B@@@@ LR,U R1,14 . @F@@@@ FG )@@G@@ BT A1,,*A0 . $P CLEAR INPUT BUFFER @F@@@@ FH )@@G@@ P$RINT (PF 2,1,READY) . $P PRINT READY MESSAGE @]@@@@$(4). FI )@@G@@ @]@@@@INPUT1 +0@ @@@@ +ENDREAD,LINELNG @]@@@@$(1). FJ )@@G@@ @E@@@@ LX,U X10,INPUT1 . $P GET INPUT PKT FK )@@G@@@E@@@@ LMJ X11,INPUT . $W CALL INPUT RTN @^@@@@FL )@@G@@ SLJ ECHO@E@@@@ LSSL A0,18 . $TFM )@@G@@ BLANK LINE @E@@@@ JZ A0,READIN+1 . $A YES,RFN )@@G@@EADIN NO @B@@@@ LXM,U A0,LINE . @E@@@@ FO )@@G@@ LMJ X11,PARSE . $W GO PARSE COMMAND @E@@@@ SLFP )@@G@@J TIMEIN . $P CHECK IN TIME @]@@@@ENDIN. @B@@@@FQ )@@G@@ LA A0,PBUFR . @B@@@@ LX X1,(FR )@@G@@2,COMMAND) . @B@@@@ LR R1,CMDCNT . @F@@@@FS )@@G@@ SE A0,0,*X1 . $T IS A LEGAL COMMAND @E@@@@FT )@@G@@ J CMDERR . $A YES NO,CMDERR @G@@@@ FU )@@G@@ ANX X1,(1,1) . $P GET COMMAND ROUTINE ADDR @E@@@@FV )@@G@@ LA,H1 A0,0,X1 . $P GET COMMAND LVL @D@@@@ FW )@@G@@ SA A0,CMDLVL . $P SAVE IT @B@@@@ LA,U FX )@@G@@ A0,1 . @G@@@@ TG,H1 A0,0,X1 . $TFY )@@G@@ IS IT RECORD OR DEBUG CMD @E@@@@ J DOFUNC FZ )@@G@@ . $W DO COMMAND @E@@@@ SLJ CKC1 . $WGA )@@G@@ CHECK C1 TABLE @B@@@@ LA,U A0,2 . @E@@@@GB )@@G@@ TNE,H1 A0,0,X1 . $T IS IT AREA CMD @C@@@@ GC )@@G@@ J DOFUNC . $W DO IT@E@@@@ SLJ CKC3GD )@@G@@ . $W CHECK C3 TABLE @ @@@@ J DOFUNC GE )@@G@@@E@@@@. **************************************************** @[@@@@GF )@@G@@. @^@@@@. RECORD COMMAND@[@@@@. @E@@@@. *************GG )@@G@@*************************************** @C@@@@RECORD GH )@@G@@ . $H @H@@@@ TP NS$FLG . $TGI )@@G@@ CHECK IF SCHEMA FILE SPECIFIED @E@@@@ J NOSCHEMA GJ )@@G@@ . $A YES NO,NOSCHEMA @B@@@@ LA A0,C1SW GK )@@G@@ . @D@@@@ TNE,U A0,2 . $T C1SW = 2 @E@@@@GL )@@G@@ J SEQERR . $A YES,SEQERR NO @B@@@@ GM )@@G@@ LX,U X10,PBUFR . @D@@@@ SX X10,TEMPX1GN )@@G@@0 . $P SAVE X10 @]@@@@RECLOP. @E@@@@ LX X10,GO )@@G@@TEMPX10 . $P GET RECORD NAME @B@@@@ AX,U X10,5 GP )@@G@@ . @B@@@@ SX X10,TEMPX10 . @E@@@@ GQ )@@G@@ LA A0,(' ') . $T CHK IF BLANK @B@@@@ TNGR )@@G@@E A0,,X10 . @E@@@@ J READIN GS )@@G@@ . $A YES,READIN NO @E@@@@ LMJ X11,BLDC1 . $WGT )@@G@@ CALL BLDC1 @E@@@@ LA,U A0,1 . $P SET CGU )@@G@@1SW = 1 @B@@@@ SA A0,C1SW . @D@@@@ GV )@@G@@ J RECLOP . $J RECLOP @C@@@@SEQERR GW )@@G@@ . $H @E@@@@ P$RINT (PF 1,5,SEQMSG) GX )@@G@@ . $P PRINT MESSAGE @B@@@@ ER ABORT$ . GY )@@G@@@C@@@@NOSCHEMA . $H @B@@@@ P$GZ )@@G@@RINT (PF 1,4,SCHEMAMSG) @B@@@@ ER ABORT$ HA )@@G@@ . @]@@@@$(4). @]@@@@TEMPX10 +0@A@@@@SCHEMAMSG 'NO SCHEMA FILHB )@@G@@E SPECIFIED'@]@@@@$(1). @E@@@@. *******************************HC )@@G@@********************* @[@@@@. @^@@@@. AREA COMMAND @[@@@@HD )@@G@@. @E@@@@. **************************************************** HE )@@G@@@C@@@@AREA . $H @E@@@@ SZHF )@@G@@ AREAP . $P RESET AREAP SW @F@@@@ LA HG )@@G@@ A0,('AREAP ') . $P CHK FOR AREAP COMMAND @C@@@@ TNE HH )@@G@@ A0,PBUFR . $T IS IT@D@@@@ SA A0,AREAP HI )@@G@@ . $P SAVE IT @H@@@@ TP NS$FLG . $T CHECKHJ )@@G@@ IF SCHEMA FILE SPECIFIED @E@@@@ J NOSCHEMA HK )@@G@@ . $A YES NO,NOSCHEMA @D@@@@ LA A0,C3SW . $PHL )@@G@@ GET SW @D@@@@ TNE,U A0,2 . $T C3SW = 2 HM )@@G@@@E@@@@ J SEQERR . $A YES,SEQERR NO @D@@@@HN )@@G@@ LX,U X10,(+8,020,,,,0) . $P READ C8 @B@@@@ TNHO )@@G@@Z C8 . @B@@@@ LMJ X11,CF$AM HP )@@G@@ . @D@@@@ TNZ C8 . $T C8 EXISTS @E@@@@HQ )@@G@@ J SEQERR . $A YES NO,SEQERR @C@@@@ HR )@@G@@ LA,U A0,2 . $ @D@@@@ SA A0,CHS )@@G@@1SW . $P SET C1SW @A@@@@ LX,U X10,PBUFR+5 HT )@@G@@@E@@@@ LXI,U X10,5 . $W CALL BLDC3 @A@@@@HU )@@G@@ LMJ X11,BLDC3 @E@@@@ LA,U A0,1 HV )@@G@@ . $P SET C1SW = 1 @ @@@@ SA A0,C3SW @D@@@@HW )@@G@@ J READIN . $J READIN @[@@@@. @E@@@@HX )@@G@@. WRITE C TABES TO C$FILE AFTER RECORD COMMANDS @[@@@@. HY )@@G@@@C@@@@CKC1 +0 . $H @E@@@@ LAHZ )@@G@@ A0,C1SW . $P GET C1 SWITCH @G@@@@ TE,U IA )@@G@@ A0,1 . $T RECORD COMMANDS ENTERED @E@@@@ J IB )@@G@@ *CKC1 . $A YES NO,*CKC1 @[@@@@. @A@@@@. IC )@@G@@ MOVE C TABLES TO C8 @G@@@@. C8 BUFF ADDR WAS SET UP BYID )@@G@@ CF$AM UPON FIRST RECORD COMMAND @[@@@@. @E@@@@ LX IE )@@G@@ X4,C8 . $P GET C8 ADDR @G@@@@ LR,U R1,1IF )@@G@@8 . $P MOVE C TABLES ENTRY TO C8 @B@@@@ LXI,U IG )@@G@@ X4,1 . @B@@@@ LX X2,(1,C1) . IH )@@G@@@B@@@@ BT X4,,*X2 . @[@@@@. @A@@@@. II )@@G@@ LOOP TO WRITE ALL TABLES @[@@@@. @B@@@@ SZ A15 IJ )@@G@@ . @]@@@@C1LOOP. @E@@@@ LX,U X10,WRTC1 IK )@@G@@ . $P GET PARAM ADDR @F@@@@ AX X10,A15 IL )@@G@@ . $P ADJUST TO PROPER ONE @B@@@@ LMJ X11,CF$AM IM )@@G@@ . @E@@@@ AA,U A15,1 . $P UP COUNT BY 1 IN )@@G@@@D@@@@ TNE,U A15,9 . $T DONE ALL @E@@@@ IO )@@G@@ J C1DONE . $A YES,C1DONE NO @D@@@@ TZIP )@@G@@ NS$FLG . $T 1 SCHEMA @E@@@@ J C1LOIQ )@@G@@OP . $A YES NO,C1LOOP @E@@@@ TNE,U A15,5 IR )@@G@@ . $T DONE FOR 1 SCHEMA@E@@@@ J C1DONE IS )@@G@@ . $A YES,C1DONE NO @B@@@@ J C1LOOP . IT )@@G@@@]@@@@C1DONE. @[@@@@. @A@@@@. WRITE C14 IF AVAILABLE IU )@@G@@@[@@@@. @B@@@@ LX,U X10,(+14,010,,,,0) @B@@@@ IV )@@G@@ TZ,H1 C14 . @B@@@@ LMJ X11,CF$AM IW )@@G@@ . @[@@@@. @ @@@@. WRITE C15 IF EXITS @[@@@@. IX )@@G@@@B@@@@ LX,U X10,(+15,010,,,,0) @B@@@@ TZ,H1 IY )@@G@@ C15 . @B@@@@ LMJ X11,CF$AM . IZ )@@G@@@[@@@@. @C@@@@. WRITE C17 (TRANSFORMATION RULES) @[@@@@JA )@@G@@. @C@@@@ LX,U X10,(+17,010,0,0,0,0) @B@@@@ JB )@@G@@ TZ C17 . @C@@@@ LMJ X11,CF$AM JC )@@G@@ . $ @E@@@@ SLJ BANK . $ RESET JD )@@G@@I & D BANK @B@@@@ LA,U A0,2 . @D@@@@ JE )@@G@@ SA A0,C1SW . $ SET C1SW @E@@@@ LMJ JF )@@G@@ X11,DUMMY . $ RESET CONF SEGMENT@ @@@@ J *CKCJG )@@G@@1 @]@@@@$(4). @]@@@@WRTC1. @^@@@@ +1,011,,,,0 JH )@@G@@@^@@@@ +5,010,,,,0 @^@@@@ +6,010,,,,0 @^@@@@ JI )@@G@@ +7,010,,,,0 @^@@@@ +8,010,,,,0 @^@@@@ +9,011,,JJ )@@G@@,,0 @^@@@@ +11,010,,,,0 @^@@@@ +12,010,,,,0 @^@@@@JK )@@G@@ +13,010,,,,0 @]@@@@$(1). @[@@@@. @E@@@@. WRJL )@@G@@ITE C3, C10 TO C$FILE AFTER AREA COMMAND(S) @[@@@@. @C@@@@CKC3 JM )@@G@@ +0 . $H @F@@@@ LA A0,CJN )@@G@@3SW . $T CHECK IF AREA COMMAND @E@@@@ TE,U A0,1JO )@@G@@ . $A YES NO,*CKC3 @C@@@@ J *CKC3 JP )@@G@@ . $ @D@@@@ LX,U X10,(+3,010,,,,0) . $P WRITEJQ )@@G@@ C3 @B@@@@ LMJ X11,CF$AM . @E@@@@ LXJR )@@G@@,H2 X4,C8 . $P SET C3 SW IN C8 @B@@@@ LA JS )@@G@@ A0,C3 . @B@@@@ SA A0,2,X4 . JT )@@G@@@B@@@@ LA A0,C10 . @E@@@@ SA JU )@@G@@ A0,9,X4 . $P SAME FOR C10 @D@@@@ LX,U X10,JV )@@G@@(+8,010,,,,0) . $P WRITE C8 @A@@@@ LMJ X11,CF$AM JW )@@G@@@C@@@@ LX,U X10,(+10,010,,,,0) . $ @D@@@@ TZJX )@@G@@ C10 . $T NO C10 @D@@@@ LMJ X11,JY )@@G@@CF$AM . $P WRITE C10 @D@@@@ LA,U A0,2 JZ )@@G@@ . $P SET SW @B@@@@ SA A0,C3SW . @B@@@@KA )@@G@@ SLJ BANK . @ @@@@ J *CKCKB )@@G@@3 @[@@@@. @C@@@@. ROUTINE TO RESET I & D BANK ADDR KC )@@G@@@[@@@@. @C@@@@BANK +0 . $H @E@@@@KD )@@G@@ LA A0,LAST$DSV . $P RESET I & D BANK @B@@@@ KE )@@G@@ SA A0,LAST$D . @F@@@@ ER LCORE$ KF )@@G@@ . $P RELEASE UNUSED CORE @B@@@@ LA A0,LAST$ISKG )@@G@@V . @B@@@@ SA A0,LAST$I . @F@@@@ KH )@@G@@ ER LCORE$ . $P RELEASE UNUSED CORE @B@@@@ KI )@@G@@ LR,U R1,18 . @E@@@@ SZ A0 KJ )@@G@@ . $P ZEROS C TABLES @B@@@@ LX,U X4,A0 KK )@@G@@ . @B@@@@ LX X2,(1,C1) . @B@@@@ BTKL )@@G@@ X2,,*X4 . @B@@@@ J *BANK KM )@@G@@ . @]@@@@$(4). @^@@@@LAST$D* +LASTD$ @^@@@@LAST$DSV +LKN )@@G@@ASTD$ @^@@@@LAST$I* +LASTI$ @^@@@@LAST$ISV +LASTI$ KO )@@G@@@]@@@@C1* +0@]@@@@C2* +0@]@@@@C3* +0@]@@@@C4* +0KP )@@G@@@]@@@@C5* +0@]@@@@C6* +0@]@@@@C7* +0@]@@@@C8* +0KQ )@@G@@@]@@@@C9* +0@]@@@@C10* +0@]@@@@C11* +0@]@@@@C12* +0KR )@@G@@@]@@@@C13* +0@]@@@@C14* +0@]@@@@C15* +0@]@@@@C16* +0KS )@@G@@@]@@@@C17* +0@]@@@@C18* +0@]@@@@$(1). @C@@@@EPROC1 KT )@@G@@ . $H @ @@@@ ER PRINT$ KU )@@G@@@C@@@@ ER ABORT$ . $E @C@@@@DODEBUG KV )@@G@@ . $H @E@@@@ SLJ DEBUG$ KW )@@G@@ . $W PERFORM DEBUG @D@@@@ J READIN+1 KX )@@G@@ . $J READIN @C@@@@CMDERR . $H KY )@@G@@@E@@@@ P$RINT (PF 1,5,CMDMSG) . $P SEND ERROR MSG @D@@@@KZ )@@G@@ J READIN+1 . $J READIN @]@@@@ENDREAD. LA )@@G@@@A@@@@ LA A0,('END ') @ @@@@ SA A0,PLB )@@G@@BUFR @ @@@@ J ENDIN @C@@@@DOFUNC LC )@@G@@ . $H @G@@@@ LA,H2 A0,0,X1 . $PLD )@@G@@ GET FUNCTION ROUTINE ADDR @C@@@@ J 0,A0 LE )@@G@@ . $J @E@@@@. *************************************************LF )@@G@@*** @[@@@@. @ @@@@. END COMMAND OR @ @[@@@@. @E@@@@LG )@@G@@. **************************************************** @]@@@@ENDIT.LH )@@G@@ @A@@@@ DL A0,CPUINX @F@@@@ DS LI )@@G@@ A0,CPUIN . $P RESTORE TIME IN STAMP @F@@@@ LA LJ )@@G@@ A0,TIMESTX . $P RESTORE START TIME @B@@@@ SA LK )@@G@@ A0,TIMEST . @A@@@@ LA A0,(' %END%') @A@@@@LL )@@G@@ SA A0,CMDNAME @ @@@@ SLJ TIMEOUT LM )@@G@@@A@@@@ LA A0,IINAME @^@@@@ ER INT$LN )@@G@@@A@@@@ P$RINT (PF 1,3,ENDMSG) @ @@@@ ER EXITLO )@@G@@$ @ @@@@ENDMSG '* END DBREORG *' @E@@@@. *******************LP )@@G@@********************************* @[@@@@. @^@@@@. DELETE CLQ )@@G@@OMMAND@[@@@@. @E@@@@. *******************************************LR )@@G@@********* @]@@@@DELETE. @D@@@@ LX,U X10,(+8,020,,,,0LS )@@G@@) . $P READ C8 @B@@@@ LMJ X11,CF$AM . @E@@@@LT )@@G@@ LX,H2 X1,C8 . $P GET C8 ADDR @D@@@@ LU )@@G@@ TZ,H1 C8 . $T C8 EXISTS @E@@@@ TNZ,H1 LV )@@G@@ 3,X1 . $T SEE IF C4 EXISTS @E@@@@ J SEQELW )@@G@@RR . $A YES NO,SEQERR @D@@@@ LX,U X10,RDC4 LX )@@G@@ . $P READ C4 @B@@@@ LMJ X11,CF$AM . LY )@@G@@@D@@@@ LX,U X10,(+3,020,,,,0) . $P READ C3 @B@@@@ LZ )@@G@@ LMJ X11,CF$AM . @D@@@@ LX,U X10,(+5,02MA )@@G@@0,,,,0) . $P READ C5 @B@@@@ LMJ X11,CF$AM . MB )@@G@@@D@@@@ LX,U X10,(+6,020,,,,0) . $P READ C6 @B@@@@ MC )@@G@@ LMJ X11,CF$AM . @F@@@@ LMJ X11,F$ASG MD )@@G@@ . $P ASG,A ALL FILES(DB) @A@@@@ LMJ X11,REORDLME )@@G@@T @E@@@@ SLJ BANK . $P RESET I&D BANK MF )@@G@@@ @@@@ J READIN @E@@@@. *************************MG )@@G@@*************************** @[@@@@. @^@@@@. PATCH COMMAND MH )@@G@@@[@@@@. @E@@@@. *************************************************MI )@@G@@*** @]@@@@PATCH$. @D@@@@ LX,U X10,(+8,020,,,,0) . $PMJ )@@G@@ READ C8 @B@@@@ LMJ X11,CF$AM . @E@@@@ MK )@@G@@ LX,H2 X1,C8 . $P GET C8 ADDR @E@@@@ TNML )@@G@@Z,H1 1,X1 . $T SEE IF C2 EXISTS @E@@@@ J MM )@@G@@ SEQERR . $A YES NO,SEQERR @E@@@@ TNZ,H1 15,XMN )@@G@@1 . $T SEE IF C16 EXISTS@E@@@@ J SEQERR MO )@@G@@ . $A YES NO,SEQERR @E@@@@ TZ 8,X1 MP )@@G@@ . $T SEE IF C9 EXISTS @E@@@@ J C9$C10 . $A MQ )@@G@@YES,C9$C10 NO @D@@@@ LX,U X10,(+1,020,,,,0) . $P READ MR )@@G@@C1 @B@@@@ LMJ X11,CF$AM . @D@@@@ LXMS )@@G@@,U X10,(+3,020,,,,0) . $P READ C3 @B@@@@ LMJ X11,MT )@@G@@CF$AM . @ @@@@ J PATCH$0 @]@@@@C9$C10. MU )@@G@@@D@@@@ LX,U X10,(+9,020,,,,0) . $P READ C9 @B@@@@ MV )@@G@@ LMJ X11,CF$AM . @D@@@@ LX,U X10,(+10,0MW )@@G@@20,,,,0) . $P READ C10 @B@@@@ LMJ X11,CF$AM . MX )@@G@@@F@@@@ LA A0,C9 . $P MOVE C9,C10 TO C1,C3 MY )@@G@@@B@@@@ SA A0,C1 . @F@@@@ LA MZ )@@G@@ A0,C10 . $P MOVE C9,C10 TO C1,C3 @B@@@@ SA NA )@@G@@ A0,C3 . @]@@@@PATCH$0. @E@@@@ LX,U X10,NB )@@G@@RDC2 . $P READ C2 & C4 @B@@@@ LMJ X11,CF$AM NC )@@G@@ . @D@@@@ LX,U X10,(+16,020,,,,0) . $P READ C16 ND )@@G@@@B@@@@ LMJ X11,CF$AM . @D@@@@ LX,U NE )@@G@@ X10,(+4,020,,,,0) . $P READ C4 @B@@@@ LMJ X11,CF$AM NF )@@G@@ . @F@@@@ LMJ X11,F$ASG . $P ASG,A ALL FNG )@@G@@ILES(DB) @E@@@@ LMJ X11,PATCH . $W PERFORM PATNH )@@G@@CH @B@@@@ J READIN . @E@@@@. *******NI )@@G@@********************************************* @[@@@@. @ @@@@. NJ )@@G@@ RESTORE COMMAND @[@@@@. @E@@@@. *************************NK )@@G@@*************************** @C@@@@RESTORE$. NL )@@G@@ . $H @D@@@@ LX,U X10,(+8,020,,,,0) . $P READ C8 NM )@@G@@@B@@@@ LMJ X11,CF$AM . @E@@@@ LX,H2 NN )@@G@@ X1,C8 . $P GET C8 ADDR @E@@@@ TZ 9,X1NO )@@G@@ . $T SEE IF C10 EXISTS@E@@@@ J C10C12 NP )@@G@@ . $A YES,C10C12 NO @D@@@@ LX,U X10,(+3,020,,,,0NQ )@@G@@) . $P READ C3 @B@@@@ LMJ X11,CF$AM . @D@@@@NR )@@G@@ LX,U X10,(+5,020,,,,0) . $P READ C5 @B@@@@ LMNS )@@G@@J X11,CF$AM . @D@@@@ LX,U X10,(+6,020,,,,0NT )@@G@@) . $P READ C6 @B@@@@ LMJ X11,CF$AM . @B@@@@NU )@@G@@ J RESTORE$0 . @]@@@@C10C12. @D@@@@ NV )@@G@@ LX,U X10,(+10,020,,,,0) . $P READ C10 @B@@@@ LMJ NW )@@G@@ X11,CF$AM . @D@@@@ LX,U X10,(+11,020,,,,0) . $NX )@@G@@P READ C11 @B@@@@ LMJ X11,CF$AM . @D@@@@ NY )@@G@@ LX,U X10,(+12,020,,,,0) . $P READ C12 @B@@@@ LMJ NZ )@@G@@ X11,CF$AM . @G@@@@ LA A0,C10 . $POA )@@G@@ MOVE C10-C12 TO C3,C5,C6 @B@@@@ SA A0,C3 OB )@@G@@ . @G@@@@ LA A0,C11 . $P MOVE C10-C12 TO COC )@@G@@3,C5,C6 @B@@@@ SA A0,C5 . @G@@@@ OD )@@G@@ LA A0,C12 . $P MOVE C10-C12 TO C3,C5,C6 @B@@@@OE )@@G@@ SA A0,C6 . @]@@@@RESTORE$0. @I@@@@ OF )@@G@@ LX,U X10,(+18,020,,,,0) . $P ROG )@@G@@EA @B@@@@ LMJ X11,CF$AM . @F@@@@ LMOH )@@G@@J X11,F$ASG . $P ASG,A ALL FILES(DB) @ @@@@NEWCODE EQOI )@@G@@UF 1,X9,T1 @]@@@@. @B@@@@. RESET C5 FOR OLD/NEWOJ )@@G@@ CODE CHK @]@@@@. @C@@@@ZIPC5 OK )@@G@@ . $H @E@@@@ LX,H2 X9,C5 . $P GET C5 ADDROL )@@G@@ @]@@@@ZIPC5LP. @D@@@@ SZ NEWCODE . $POM )@@G@@ RESET SW @E@@@@ TNZ,T3 0,X9 . $T LAST ENTRY ON )@@G@@ @E@@@@ J RSTLP . $A YES,RSTLP NO OO )@@G@@@E@@@@ AX,T3 X9,,X9 . $P NEXT ENTRY @B@@@@OP )@@G@@ J ZIPC5LP . @C@@@@RSTLP OQ )@@G@@ . $H @E@@@@ P$RINT (PF 1,5,READYR1) . $POR )@@G@@ SEND READ. MSG @]@@@@$(4). @C@@@@READYR1 'READY.(FOR RESTORE OS )@@G@@SUBCOMMAND)' @]@@@@INPUT4 +0@ @@@@ +ENDRXX,LINELNG OT )@@G@@@]@@@@$(1). @E@@@@ LX,U X10,INPUT4 . $P GET IOU )@@G@@NPUT PKT @E@@@@ LMJ X11,INPUT . $W CALL INPUT OV )@@G@@RTN @B@@@@ SLJ ECHO . @B@@@@ LSOW )@@G@@SL A0,18 . @E@@@@ JZ A0,RSTLP OX )@@G@@ . $T BLANK INPUT @E@@@@ . $AOY )@@G@@ YES,RSTLP NO @G@@@@ LXM,U A0,LINE . $P SAVE OZ )@@G@@NUMBER OF WORS IN'ED @E@@@@ LMJ X11,PARSE . $WPA )@@G@@ PARSE THE INPUT @E@@@@ LA A0,PBUFR . $P GET FPB )@@G@@IRST WORD @E@@@@ TNE A0,('ENDR ') . $T IS IT 'ENDRPC )@@G@@' @E@@@@ J ENDRXX . $A YES,ENDRXX NO PD )@@G@@@F@@@@ LA A0,PBUFR+5 . $P GET THE SUBCOMMAND PE )@@G@@@E@@@@ TNE A0,('TO ') . $T IS IT 'TO' @E@@@@PF )@@G@@ J RSTTO . $A YES,RSTTO NO @E@@@@ PG )@@G@@ P$RINT (PF 1,5,INVALXX) . $P SEND ERROR MSG @C@@@@ J PH )@@G@@ RSTLP . $J @C@@@@RSTTO PI )@@G@@ . $H @E@@@@ SLJ CHKRCD . $P CHECKPJ )@@G@@ RECORD NAME@F@@@@ LX X9,X1 . $P SAVE RECORDPK )@@G@@ TBL ADDR @E@@@@ LA A0,PBUFR+10 . $P GET THE NUMPL )@@G@@BER @E@@@@ SLJ XCON . $P CONVERT TO BINARYPM )@@G@@@E@@@@ JZ A2,CODEERR . $T >0 AND <= 07777 @B@@@@PN )@@G@@ TG,U A2,010000 . @E@@@@ J CODEPO )@@G@@ERR . $A YES NO,CODEERR @G@@@@ SA A2,NEWCODEPP )@@G@@ . $P SAVE THE NEW RECORD CODE @C@@@@ J RSTLPQ )@@G@@P . $J @C@@@@CODEERR. . $HPR )@@G@@ @C@@@@ P$RINT (PF 1,CERRLNG,CERRMSG) @C@@@@ PS )@@G@@ J RSTLP . $J LOOP @]@@@@$(4). @A@@@@CERRMSPT )@@G@@G 'ILLEGAL RECORD CODE.' @A@@@@CERRLNG EQU $-CERRMSG PU )@@G@@@]@@@@$(1). @]@@@@ENDRXX. @E@@@@ LMJ X11,RESTORPV )@@G@@E . $W PERFORM RESTORE @B@@@@ J READIN PW )@@G@@ . @E@@@@. **************************************************** PX )@@G@@@[@@@@. @^@@@@. RELOAD COMMAND@[@@@@. @E@@@@. *******PY )@@G@@********************************************* @C@@@@RELOAD$. PZ )@@G@@ . $H @D@@@@ LX,U X10,(+8,020,,,,0QA )@@G@@) . $P READ C8 @B@@@@ LMJ X11,CF$AM . @E@@@@QB )@@G@@ LX,H2 X1,C8 . $P GET C8 ADDR @E@@@@ QC )@@G@@ TZ 9,X1 . $T SEE IF C10 EXISTS@E@@@@ J QD )@@G@@ C10$C12 . $A YES,C10$C12 NO @D@@@@ LX,U QE )@@G@@ X10,(+3,020,,,,0) . $P READ C3 @B@@@@ LMJ X11,CF$AM QF )@@G@@ . @D@@@@ LX,U X10,(+5,020,,,,0) . $P READ C5 QG )@@G@@@B@@@@ LMJ X11,CF$AM . @D@@@@ LX,U QH )@@G@@ X10,(+6,020,,,,0) . $P READ C6 @B@@@@ LMJ X11,CF$AM QI )@@G@@ . @B@@@@ J RELOAD$0 . @]@@@@C10$C1QJ )@@G@@2. @D@@@@ LX,U X10,(+10,020,,,,0) . $P READ C10 @B@@@@QK )@@G@@ LMJ X11,CF$AM . @D@@@@ LX,U X10,QL )@@G@@(+11,020,,,,0) . $P READ C11 @B@@@@ LMJ X11,CF$AM QM )@@G@@ . @D@@@@ LX,U X10,(+12,020,,,,0) . $P READ C12 @B@@@@QN )@@G@@ LMJ X11,CF$AM . @G@@@@ LA A0,CQO )@@G@@10 . $P MOVE C10-C12 TO C3,C5,C6 @B@@@@ SA QP )@@G@@ A0,C3 . @G@@@@ LA A0,C11 . $PQQ )@@G@@ MOVE C10-C12 TO C3,C5,C6 @B@@@@ SA A0,C5 QR )@@G@@ . @G@@@@ LA A0,C12 . $P MOVE C10-C12 TO CQS )@@G@@3,C5,C6 @B@@@@ SA A0,C6 . @]@@@@RELOADQT )@@G@@$0. @I@@@@ LX,U X10,(+18,020,,,,0) QU )@@G@@ . $P REA @B@@@@ LMJ X11,CF$AM . QV )@@G@@@G@@@@ LA A0,LAST$D . $P MCORE$ BUFFER FOR Z1 TAQW )@@G@@BLE @B@@@@ AA,U A0,ZAP1 . @B@@@@ ERQX )@@G@@ MCORE$ . @B@@@@ LA A1,LAST$D QY )@@G@@ . @B@@@@ SA A0,LAST$D . @E@@@@ AAQZ )@@G@@,U A1,1 . $P PUT Z1 TBL ADDR @B@@@@ SA,H2 RA )@@G@@ A1,Z1 . @E@@@@ SZ ZCOUNT . $PRB )@@G@@ RESET Z1 WORD @^@@@@ SZ,H1 Z1 @B@@@@ SZ RC )@@G@@ A3 . @B@@@@ LX,U X1,A3 . RD )@@G@@@B@@@@ LX X2,Z1 . @B@@@@ LXI,U RE )@@G@@ X2,1 . @E@@@@ LR,U R1,ZAP1 . $PRF )@@G@@ ZERO OUT TBL AREA@B@@@@ BT X2,,*X1 . @[@@@@RG )@@G@@. @C@@@@LOAD1 . $H @E@@@@ RH )@@G@@ P$RINT (PF 1,5,READYR) . $P SEND READ. MSG @]@@@@$(4). RI )@@G@@@]@@@@INPUT2 +0@^@@@@ +ENDR,LINELNG @]@@@@$(1). @E@@@@RJ )@@G@@ LX,U X10,INPUT2 . $P GET INPUT PKT @E@@@@ RK )@@G@@ LMJ X11,INPUT . $W CALL INPUT RTN @B@@@@ SLRL )@@G@@J ECHO . @B@@@@ LSSL A0,18 RM )@@G@@ . @E@@@@ JZ A0,LOAD1 . $T BLANK INPUT RN )@@G@@@E@@@@ . $A YES,LOAD1 NO @G@@@@RO )@@G@@ LXM,U A0,LINE . $P SAVE NUMBER OF WORS IN'ED RP )@@G@@@E@@@@ LMJ X11,PARSE . $W PARSE THE INPUT @E@@@@RQ )@@G@@ LA A0,PBUFR . $P GET FIRST WORD @E@@@@ RR )@@G@@ TNE A0,('ENDR ') . $T IS IT 'ENDR' @E@@@@ J RS )@@G@@ ENDR0 . $A YES,ENDR0 NO @F@@@@ LA RT )@@G@@ A0,PBUFR+5 . $P GET THE SUBCOMMAND @D@@@@ TNE RU )@@G@@ A0,('% ') . $T IS IT '%' @E@@@@ J PERCENT RV )@@G@@ . $A YES,PERCENT NO @E@@@@ TNE A0,('FROM ') RW )@@G@@ . $T IS IT 'FROM' @E@@@@ J FROM .$A RX )@@G@@YES,FROM NO @E@@@@ TNE A0,('IN ') . $T IS ITRY )@@G@@ 'IN' @E@@@@ J INPAGE .$A YES,INPAGE NRZ )@@G@@O @E@@@@ P$RINT (PF 1,5,INVAL) . $P SEND ERROR MSG SA )@@G@@@C@@@@ J LOAD1 . $J @C@@@@ENDR SB )@@G@@ . $H @E@@@@ SZ TERMITR SC )@@G@@ .$P SET END INPUT SW @C@@@@ENDR0 SD )@@G@@ . $H @G@@@@ LA,U A0,ZAP1 . $P SET CORE RESE )@@G@@LEASE COUNT @D@@@@ SA A0,RELCNT . $P SAVE SF )@@G@@IT @D@@@@ TNZ ZCOUNT . $T ANY ENTRY @E@@@@SG )@@G@@ J ENDR9 . $A YES NO,ENDR9 @B@@@@ SH )@@G@@ LR R3,ZCOUNT . @E@@@@ JGD R3,$+1 SI )@@G@@ . $P SET LOOP COUNT @E@@@@ LX,H2 X1,Z1 SJ )@@G@@ . $P GET Z1 TBL ADDR @B@@@@ LXI,U X1,1 . SK )@@G@@@C@@@@ENDR1 . $H @E@@@@ LASL )@@G@@,H2 A0,1,X1 . $P GET IN COUNT @G@@@@ MSI,U SM )@@G@@ A0,2 . $P COMPUTE NUMBER OF WORDS @G@@@@ AASN )@@G@@,H1 A0,1,X1 . $P ADD NUMBER OF FROM COUNT @F@@@@ SO )@@G@@ AA,U A0,2 . $P COMPUTE ENTRY LENGTH @E@@@@ SP )@@G@@ LA,H1 A1,Z1 . $P UPDATE Z1 LENGTH @B@@@@ AASQ )@@G@@ A1,A0 . @B@@@@ SA,H1 A1,Z1 SR )@@G@@ . @F@@@@ LA A1,RELCNT . $P UPDATE RELEASE COSS )@@G@@UNT @B@@@@ ANA A1,A0 . @B@@@@ SAST )@@G@@ A1,RELCNT . @E@@@@ JGD R3,$+2 SU )@@G@@ . $T ANY MORE ENTRY @E@@@@ J ENDR9 . $ASV )@@G@@ YES NO,ENDR9 @E@@@@ SA,T3 A0,0,X1 . $P SAVE SW )@@G@@LINK FIELD @G@@@@ LX X3,X1 . $P MOVE UP ALLSX )@@G@@ OTHER ENTRIES @B@@@@ AX X1,A0 . @E@@@@SY )@@G@@ LX X2,X1 . $P SET UP BT REG'S @B@@@@ SZ )@@G@@ AX,U X3,ZAP2 . @B@@@@ LA A0,LAST$D TA )@@G@@ . @B@@@@ LXI,U A0,1 . @G@@@@ TB )@@G@@ ANA A0,X3 . $P GET WORD COUNT FOR TRANSFER @B@@@@TC )@@G@@ AA,U A0,1 . @B@@@@ LR R1,ATD )@@G@@0 . @B@@@@ BT X2,,*X3 . @C@@@@TE )@@G@@ J ENDR1 . $J ENDR1@[@@@@. @C@@@@ENDR9 TF )@@G@@ . $H @G@@@@ LA A0,LTG )@@G@@AST$D . $P COMPUTE RELEASE CORE ADDR @B@@@@ ANA TH )@@G@@ A0,RELCNT . @D@@@@ SA A0,LAST$D . $PTI )@@G@@ SAVE IT @ @@@@ ER LCORE$ @F@@@@ LMJ TJ )@@G@@ X11,F$ASG . $P ASG,A ALL FILES(DB) @E@@@@ LMJ TK )@@G@@ X11,RELOAD . $W PERFORM RELOAD @E@@@@ LA A0,CTL )@@G@@4 . $P MOVE C4 TO C16&C8@B@@@@ SA A0,C16 TM )@@G@@ . @B@@@@ LX,H2 X1,C8 . @B@@@@ TN )@@G@@ SA A0,15,X1 . @D@@@@ LX,U X10,(+8,01TO )@@G@@0,,,,0) . $P WRITE C8 @B@@@@ LMJ X11,CF$AM . TP )@@G@@@E@@@@ LX,U X10,(+16,010,,,,0) . $P WRITE C16 @B@@@@TQ )@@G@@ LMJ X11,CF$AM . @E@@@@ SLJ TIMETR )@@G@@OUT . $P GET STATISTICS @E@@@@ SLJ BANK TS )@@G@@ . $P RESET I&D BANK @D@@@@ TZ TERMITR TT )@@G@@ . $T END INPUT @E@@@@ J READIN+1 . $A YES NTU )@@G@@O,READIN @D@@@@ J ENDREAD . $J ENDREAD TV )@@G@@@[@@@@. @C@@@@PERCENT . $H @E@@@@TW )@@G@@ SLJ CHKRCD . $P CHECK RECORD NAME@E@@@@ TX )@@G@@ LA A0,PBUFR+10 . $P GET THE NUMBER @E@@@@ SLTY )@@G@@J XCON . $P CONVERT TO BINARY@E@@@@ JZ TZ )@@G@@ A2,PERERR1 . $T >0 AND <=100 @B@@@@ TG,U A2,1UA )@@G@@01 . @E@@@@ J PERERR1 . $A YES NUB )@@G@@O,PERERR1 @E@@@@ SLJ CKZTAB . $P GET TBL ENTUC )@@G@@RY @E@@@@ SA,T2 A2,0,X1 . $P INSERT INTO TBL UD )@@G@@@C@@@@ J LOAD1 . $J @[@@@@. @[@@@@UE )@@G@@. @[@@@@. @C@@@@FROM . $H UF )@@G@@@E@@@@ SLJ CHKRCD . $P CHECK RECORD NAME@F@@@@UG )@@G@@ LA A0,PBUFR+15 . $T SEE IF 'TO' MISSING @B@@@@UH )@@G@@ TE A0,('TO ') . @E@@@@ J FORMUI )@@G@@ERR . $A YES,FORMERR NO @F@@@@ DL A0,PBUFR+1UJ )@@G@@0 . $P GET FROM AREA NAME @C@@@@ TNE A0,(' UK )@@G@@ ') . $T BLANK@E@@@@ J FORMERR . $A YES,FUL )@@G@@ORMERR NO @E@@@@ SLJ CHKAREA . $P SEARCH AREAUM )@@G@@ TBL @F@@@@ LA A12,A13 . $P SAVE AREA CODE INUN )@@G@@ A12 @E@@@@ DL A0,PBUFR+20 . $P GET TO AREA NAME UO )@@G@@@C@@@@ TNE A0,(' ') . $T BLANK@C@@@@ J UP )@@G@@ FORMERR . $A YES @B@@@@ SLJ CHKAREA UQ )@@G@@ . @F@@@@ TZ,S1 8,X9 . $T IS IT A AREUR )@@G@@AP AREA @E@@@@ J BADTOA . $A YES,BADTOA US )@@G@@NO @E@@@@ . $ AREA CODE IN A13 UT )@@G@@@E@@@@ SLJ CKZTAB . $P SEARCH TBL ENTRY @G@@@@UU )@@G@@ LX X2,X1 . $P CHECK IN AND FROM COUNT UV )@@G@@@E@@@@ LA,H2 A0,1,X1 . $P GET IN COUNT @B@@@@UW )@@G@@ MSI,U A0,2 . @G@@@@ LR,H1 R1,1UX )@@G@@,X1 . $P GET FROM COUNT AS LOOP COUNT @F@@@@ AX UY )@@G@@ X2,A0 . $P GET FROM ENTRY ADDR @B@@@@ AX,U UZ )@@G@@ X2,2 . @C@@@@FROMLP . $HVA )@@G@@ @E@@@@ TNZ 0,X2 . $T ENTRY EMPTY VB )@@G@@@E@@@@ J FROMIN . $A YES,FROMIN NO @E@@@@VC )@@G@@ TNE,T2 A12,0,X2 . $T ANY DUPLICATE @E@@@@ VD )@@G@@ J FROMERR2 . $A YES,FROMERR2 NO @E@@@@ AXVE )@@G@@,U X2,1 . $P NXT ENTRY ADDR @C@@@@ J VF )@@G@@ FROMLP . $J @C@@@@FROMIN VG )@@G@@ . $H @F@@@@ SA,T2 A12,0,X2 . $P SAVE FROM AVH )@@G@@REA CODE @E@@@@ SA,T3 A13,0,X2 . $P SAVE TO AREVI )@@G@@A CODE@E@@@@ LA,U A0,1 . $P UPDATE FROM COUNTVJ )@@G@@@B@@@@ AA,H1 A0,1,X1 . @B@@@@ SA,H1 VK )@@G@@ A0,1,X1 . @E@@@@ J LOAD1 . $JVL )@@G@@ READ NXT COMMAND @[@@@@. @[@@@@. @[@@@@. @C@@@@INPAGE VM )@@G@@ . $H @E@@@@ SLJ CHKRCD VN )@@G@@ . $P CHECK RECORD NAME@E@@@@ TZ A15 VO )@@G@@ . $T A CALC REOCRD @E@@@@ J INERR1 . $AVP )@@G@@ YES,INERR1 NO @G@@@@ E$DIT EDPKT . $P STRIPVQ )@@G@@ OFF BLANKS ON INPUT @E@@@@ LR,U R3,23 . $PVR )@@G@@ LOOP COUNT @A@@@@ LX X9,(2,PBUFR+10) @C@@@@INLOOPVS )@@G@@1 . $H @E@@@@ DL A0,0VT )@@G@@,*X9 . $P GET INPUT WORDS @B@@@@ LMJ X11,EFD2$ VU )@@G@@ . @A@@@@ JGD R3,INLOOP1 @#@@@@ E$VV )@@G@@DITX @E@@@@ LX X1,(1,PRINT) . $P SAVE IMG IN PBUFRVW )@@G@@@B@@@@ LX X2,(1,PBUFR) . @B@@@@ LR,U VX )@@G@@ R1,14 . @B@@@@ BT X2,,*X1 . VY )@@G@@@ @@@@ E$DIT EDPKT @F@@@@ LA,U A0,'(' VZ )@@G@@ . $P SEARCH FOR AREA NAME @F@@@@ SA,S2 A0,EDPKT WA )@@G@@ . $P SET '(' AS DELIMITER @E@@@@ SA,S1 A0,PBUFR+1WB )@@G@@5 . $P SET SAFETY STOP @C@@@@ E$MSG PBUFR WC )@@G@@ . $P SCAN @E@@@@ LA,H2 A0,EDPKT+1 . $P GET STOP ADWD )@@G@@DR @E@@@@ TNE,U A0,PBUFR+15 . $T '(' MISSING WE )@@G@@@E@@@@ J INERR2 . $A YES,INERR2 NO @E@@@@WF )@@G@@ DL A0,PRINT . $P GET THE AREA NAME@E@@@@ WG )@@G@@ SLJ CHKAREA . $W CHECK AREA NAME @E@@@@ WH )@@G@@ . $ AREA CODE IN A13 @H@@@@ DL WI )@@G@@ A0,(' ') . @E@@@@ WJ )@@G@@ DS A0,PRINT . RESET PRINT BUFFER @D@@@@ E$WK )@@G@@COL 0 . $P RESET COL @E@@@@ LA,U A0,'WL )@@G@@,' . $P SCAN FOR N1 @G@@@@ SA,S2 A0,EDPKT WM )@@G@@ . $P SET ',' AS THE DELIMITER @E@@@@ SA,S2 A0,PWN )@@G@@BUFR+15 . SET SAFETY STOP @E@@@@ E$MSGR WO )@@G@@ . $P RESUME SCAN @G@@@@ LA,H2 A0,EDPKT+1 WP )@@G@@ . $P GET THE SCAN STOP ADDR @E@@@@ TNE,U A0,PBUFR+1WQ )@@G@@5 . $T ',' MISSING @E@@@@ J INERR2 WR )@@G@@ . $A YES,INERR2 NO @E@@@@ LA A0,PRINT . $PWS )@@G@@ GET THE N1 @E@@@@ SLJ XCON . $P CONVEWT )@@G@@RT TO BINARY@E@@@@ LA A12,A2 . $P SAVE IT IN WU )@@G@@A12 @B@@@@ DL A0,(' ') @B@@@@ DSWV )@@G@@ A0,PRINT . @^@@@@ E$COL 0 @E@@@@ WW )@@G@@ LA,U A0,')' . $P SCAN FOR N2 @F@@@@ SAWX )@@G@@,S2 A0,EDPKT . $P USE ')' AS DELIMITER @E@@@@ SAWY )@@G@@,S3 A0,PBUFR+15 . $P SET SAFFETY STOP @E@@@@ E$MSGR WZ )@@G@@ . $P RESUME SCAN @G@@@@ LA,H2 A0,EXA )@@G@@DPKT+1 . $P GET THE SCAN STOP ADDR @E@@@@ TNE,U XB )@@G@@ A0,PBUFR+15 . $T ')' MISSING @E@@@@ J INERXC )@@G@@R2 . $A YES,INERR2 NO @D@@@@ LA A0,PRINT XD )@@G@@ . $P GET N2 @E@@@@ SLJ XCON . $PXE )@@G@@ CONVERT TO BINARY@D@@@@ TLE A2,A12 . $T N1 >=XF )@@G@@N2 @E@@@@ J INERR3 . $A YES NO,INERR3 XG )@@G@@@E@@@@ LA A11,A2 . $P SAVE N2 IN A11 @F@@@@XH )@@G@@ SLJ CKZTAB . $P SEARCH FOR TBL ENTRY @[@@@@XI )@@G@@. @[@@@@. @E@@@@. IN ORDER TO INSERT 'IN' ENTRY 'FROM' EXJ )@@G@@NTRIES MUST @A@@@@. BE SHIFTED DOWN 2 WORDS @[@@@@. @E@@@@XK )@@G@@ LX X2,X1 . $P TBL ENTRY IN X2 @B@@@@ XL )@@G@@ AX,U X2,2 . @E@@@@ TNZ,H2 1,X1 XM )@@G@@ . $T ANY 'IN' ENTRY @E@@@@ J SHIFTFM XN )@@G@@ . $A YES NO,SHIFTFM @F@@@@ LR,H2 R3,1,X1 . $PXO )@@G@@ GET 'IN' ENTRY COUNT @E@@@@ JGD R3,$+1 . $PXP )@@G@@ SET LOOP COUNT @C@@@@INLOOP2 . $H XQ )@@G@@@G@@@@ TNE,T3 A13,0,X2 . $T SEE IF DUPLICATE AREA EXR )@@G@@NTRY @E@@@@ J INERR4 . $A YES,INERR4 NO XS )@@G@@@E@@@@ AX,U X2,2 . $P NXT ENTRY ADDR @B@@@@XT )@@G@@ JGD R3,INLOOP2 . @C@@@@SHIFTFM XU )@@G@@ . $H @E@@@@ TNZ,H1 1,X1 . $TXV )@@G@@ ANY 'FROM' ENTRY @E@@@@ J INSTPGS . $A YES NXW )@@G@@O,INSTPGS @E@@@@ LX X3,X2 . $P SET BT REG'XX )@@G@@S @B@@@@ AX,H1 X3,1,X1 . @F@@@@ ANXY )@@G@@X,U X3,1 . $P COMPUTE BOTTOM ADDR @ @@@@ LXXZ )@@G@@I,U X3,-1 @B@@@@ LX X4,X3 . @B@@@@YA )@@G@@ AX,U X3,2 . @E@@@@ LR,H1 R1,1YB )@@G@@,X1 . $P 'FROM' COUNT @B@@@@ BT X3,,*X4 YC )@@G@@ . @[@@@@. @C@@@@INSTPGS . $HYD )@@G@@ @E@@@@ SA A13,0,X2 . $P SAVE AREA CODE YE )@@G@@@D@@@@ SA,H1 A12,1,X2 . $P SAVE PL @D@@@@ YF )@@G@@ SA,H2 A11,1,X2 . $P SAVE PU @E@@@@ LA,U YG )@@G@@ A0,1 . $P UPDATE IN COUNT @B@@@@ AA,H2 A0,1YH )@@G@@,X1 . @B@@@@ SA,H2 A0,1,X1 . @B@@@@YI )@@G@@ J LOAD1 . @[@@@@. @C@@@@CHKRCD +0YJ )@@G@@ . $H @G@@@@ LX,H2 X1,C5 YK )@@G@@ . $P GET RECORD TBL(C5) ADDR @]@@@@CHKRCD0. @G@@@@ YL )@@G@@ DL A0,2,X1 . $P GET FIRST 2 WORDS OF RECORD NAME@C@@@@YM )@@G@@ DTE A0,PBUFR . $T MATCH@E@@@@ J YN )@@G@@ NXTENT . $A YES NO,NXTENT @E@@@@ DL A0,4YO )@@G@@,X1 . $P GET 3RD & 4TH @C@@@@ DTE A0,PBUFR+2YP )@@G@@ . $T MATCH@E@@@@ J NXTENT . $A YES NYQ )@@G@@O,NXTENT @E@@@@ LA A0,6,X1 . $P GET LAST WOYR )@@G@@RD @B@@@@ TE A0,PBUFR+4 . @B@@@@ J YS )@@G@@ NXTENT . @E@@@@ LA,T1 A14,0,X1 YT )@@G@@ . $P SAVE RECORD CODE @E@@@@ LA,S3 A15,0,X1 . $PYU )@@G@@ SET CALC SW @D@@@@ J *CHKRCD . $J RETURYV )@@G@@N @[@@@@. @]@@@@NXTENT. @E@@@@ TNZ,T3 0,X1 YW )@@G@@ . $T ANY MORE ENTRY @E@@@@ J NORCD YX )@@G@@ . $A YES NO,NORCD @F@@@@ AX,T3 X1,0,X1 . $PYY )@@G@@ GET NXT ENTRY ADDR @B@@@@ J CHKRCD0 . YZ )@@G@@@]@@@@NORCD. @ @@@@ E$DIT EDPKT @A@@@@ E$ZA )@@G@@FD2 ('RECORD-NAME:')@^@@@@ E$SKIP 1 @^@@@@ LAZB )@@G@@,U A0,5@ @@@@ SA,S2 A0,EDPKT @ @@@@ E$MSG ZC )@@G@@ PBUFR @^@@@@ E$SKIP 1 @A@@@@ E$COPY 35,NZD )@@G@@OTSPC1 @#@@@@ E$DITX @A@@@@ P$RINT (PF 1,14,PZE )@@G@@RINT) @B@@@@ J ENDIT . @]@@@@CHKAREA +0ZF )@@G@@@F@@@@ LX,H2 X9,C3 . $P GET AREA TBL ADDR(C3) ZG )@@G@@@]@@@@CHKAREA0. @E@@@@ DTE A0,1,X9 . $T AREA ZH )@@G@@NAME MATCH @E@@@@ J NXTAREA . $A YES NO,NXTAZI )@@G@@REA @E@@@@ LA,T1 A13,0,X9 . $P GET AREA CODE ZJ )@@G@@@C@@@@ J *CHKAREA . $J @]@@@@NXTAREA. ZK )@@G@@@E@@@@ TNZ,T3 0,X9 . $T ANY MORE ENTRY @E@@@@ZL )@@G@@ J NOAREA . $A YES NO,NOAREA @F@@@@ ZM )@@G@@ AX,T3 X9,0,X9 . $P GET NXT ENTRY ADDR @ @@@@ ZN )@@G@@ J CHKAREA0 @]@@@@NOAREA. @E@@@@ DS A0,AZO )@@G@@NAMEX . $P SAVE AREA NAME @ @@@@ E$DIT EDPKT ZP )@@G@@@A@@@@ E$FD2 ('AREA-NAME:') @^@@@@ E$SKIP 1 ZQ )@@G@@@ @@@@ E$FD2 ANAMEX @^@@@@ E$SKIP 1 @A@@@@ZR )@@G@@ E$COPY 33,NOTSPC2 @#@@@@ E$DITX @A@@@@ ZS )@@G@@ P$RINT (PF 1,14,PRINT) @ @@@@ J LOAD1 @[@@@@ZT )@@G@@. @[@@@@. @B@@@@CKZTAB +0 . @E@@@@ZU )@@G@@ LX,H2 X1,Z1 . $P GET Z1 TBL ADDR @D@@@@ ZV )@@G@@ TNZ ZCOUNT . $T ANY ENTRY @E@@@@ J ZW )@@G@@ Z1ZERO . $A YES NO,Z1ZERO @E@@@@ LR R1,ZZX )@@G@@COUNT . $P LOOP COUNT @D@@@@ LXI,U X1,ZAP2 ZY )@@G@@ . $P TBL SIZE @D@@@@ SE,T1 A14,0,*X1 . $TZZ )@@G@@ TBL EXIST @E@@@@ J Z1ZERO . $A YES NO,Z1ZEAA )@@G@@RO @E@@@@ ANX,U X1,ZAP2 . $P GET TBL ADDR AB )@@G@@@C@@@@ J *CKZTAB . $J @[@@@@. @]@@@@AC )@@G@@Z1ZERO. @E@@@@ LA,U A0,1 . $P UPDATE ZCOUAD )@@G@@NT @A@@@@ AA A0,ZCOUNT @A@@@@ SA AE )@@G@@ A0,ZCOUNT @B@@@@ SZ 0,X1 . @E@@@@AF )@@G@@ SA,T1 A14,0,X1 . $P SAVE RECORD CODE @B@@@@ AG )@@G@@ SZ 1,X1 . @C@@@@ J *CKZTAB AH )@@G@@ . $J @]@@@@INERR1. @B@@@@ LA A0,INPKT1 AI )@@G@@ . @B@@@@ J INERR9 . @]@@@@INERR2AJ )@@G@@. @B@@@@ LA A0,INPKT2 . @B@@@@ J AK )@@G@@ INERR9 . @]@@@@INERR3. @B@@@@ LA AL )@@G@@ A0,INPKT3 . @B@@@@ J INERR9 . AM )@@G@@@]@@@@INERR4. @B@@@@ LA A0,INPKT4 . @B@@@@AN )@@G@@ J INERR9 . @]@@@@PERERR1. @B@@@@ AO )@@G@@ LA A0,PERPKT1 . @B@@@@ J INERR9 AP )@@G@@ . @]@@@@FORMERR. @B@@@@ LA A0,FORMPKT AQ )@@G@@ . @B@@@@ J INERR9 . @]@@@@FROMERR2. AR )@@G@@@B@@@@ LA A0,FORMPKT2 . @B@@@@ J AS )@@G@@ INERR9 . @]@@@@INERR9. @ @@@@ ER PRINAT )@@G@@T$ @B@@@@ J LOAD1 . @]@@@@BADTOA. AU )@@G@@@ @@@@ E$DIT EDPKT @^@@@@ E$FD2 1,X9@A@@@@AV )@@G@@ E$COPY 31,BADTOMSG @#@@@@ E$DITX @B@@@@ AW )@@G@@ LA A0,(PF 1,14,PRINT) @ @@@@ J INERR9 AX )@@G@@@E@@@@. **************************************************** @[@@@@AY )@@G@@. @A@@@@. SCAN AND UNLOAD COMMANDS @[@@@@. @E@@@@. *AZ )@@G@@*************************************************** @C@@@@SCAN$ BA )@@G@@ . $H @G@@@@ SLJ SCANTBLR BB )@@G@@ . $P READ C TABLES FOR SCAN @F@@@@ LMJ X11,BC )@@G@@F$ASG . $P ASG,A ALL FILES(DB) @E@@@@ LMJ X11,BD )@@G@@SCAN . $P PERFORM SCAN @E@@@@ SLJ SCANTBLW BE )@@G@@ . $P WRITE C TABLES @ @@@@ J READIN @[@@@@BF )@@G@@. @^@@@@. UNLOAD COMMAND@[@@@@. @C@@@@UNLOAD$ BG )@@G@@ . $H @E@@@@ SLJ SCANTBLR BH )@@G@@ . $P READ C TABLES @]@@@@ULOAD1. @B@@@@ P$RINT (PF BI )@@G@@1,5,READYU) . @]@@@@$(4). @]@@@@INPUT3 +0@^@@@@ +EBJ )@@G@@NDU,LINELNG @]@@@@$(1). @E@@@@ LX,U X10,INPUT3 BK )@@G@@ . $P GET INPUT PKT @E@@@@ LMJ X11,INPUT . $WBL )@@G@@ CALL INPUT RTN @B@@@@ SLJ ECHO . @E@@@@BM )@@G@@ LSSL A0,18 . $T EMPTY LINE @E@@@@ BN )@@G@@ JZ A0,ULOAD1 . $A YES,ULOAD1 @E@@@@ LXBO )@@G@@M,U A0,LINE . $P SET UP FOR PARSER@B@@@@ LMJ BP )@@G@@ X11,PARSE . @B@@@@ LA A0,PBUFR . BQ )@@G@@@F@@@@ TNE A0,('ENDU ') . $T END UNLOAD SUBCOMMAND BR )@@G@@@E@@@@ J ENDU0 . $A YES,ENDU0 NO @B@@@@BS )@@G@@ LA A0,PBUFR+5 . @E@@@@ TNE A0,(BT )@@G@@'VIA ') . $T A VIA COMMAND @E@@@@ J VIA BU )@@G@@ . $A YES,VIA NO @E@@@@ TNE A0,('TO ') BV )@@G@@ . $T A TO COMMAND @E@@@@ J TOFILE . $ABW )@@G@@ YES,TOFILE NO @B@@@@ P$RINT (PF 1,5,INVALU) . @B@@@@BX )@@G@@ J ULOAD1 . @]@@@@ENDU. @E@@@@ BY )@@G@@ SZ TERMITU . $P SET EOF SW @]@@@@ENDU0. BZ )@@G@@@F@@@@ LMJ X11,F$ASG . $P ASG,A ALL FILES(DB) CA )@@G@@@F@@@@ LMJ X11,UNLOAD . $P CALL UNLOAD PROCESS CB )@@G@@@B@@@@ SLJ SCANTBLW . @F@@@@ TZ CC )@@G@@ KEYSORT . $T SEE IF SORT REQUIRED @E@@@@ SLJ CD )@@G@@ DOSORT . $A YES,DOSORT NO @C@@@@ TZ TERMCE )@@G@@ITU . $T EOF @E@@@@ J READIN . $ACF )@@G@@ YES NO,READIN @B@@@@ J ENDIT . @E@@@@CG )@@G@@. **************************************************** @[@@@@. CH )@@G@@@A@@@@. INTERNAL SORT COMMAND @[@@@@. @E@@@@. *******CI )@@G@@********************************************* @C@@@@DOSORT +0 CJ )@@G@@ . $H @F@@@@ SLJ TIMEOUT CK )@@G@@ . $P CLOCK OUT FOR UNLOAD @A@@@@ P$RINT (PF 3,4,SORTMSG)CL )@@G@@@E@@@@ SLJ TIMEIN . $P CLOCK IN FOR SORT@B@@@@CM )@@G@@ LA A0,('SORT ') . @B@@@@ SA A0,CCN )@@G@@MDNAME . @E@@@@ LA,U A0,1 . $P SET CCO )@@G@@OMMAND LEVEL@B@@@@ SA A0,CMDLVL . @E@@@@ CP )@@G@@ LMJ X11,SORTKEY . $P PERFORM KEY SORT @D@@@@ J CQ )@@G@@ *DOSORT . $J RETURN @]@@@@$(4). @A@@@@SORTMSCR )@@G@@G 'PROCESSING KEY FILE SORT'@]@@@@TERMITU +1@B@@@@INVALU 'INVALIDCS )@@G@@ UNLOAD SUBCOMMAND. ' @C@@@@READYU 'READY.(FOR UNLOAD SUBCOMMAND)' CT )@@G@@ @]@@@@$(1). @[@@@@. @A@@@@. PROCESS TO SUBCOMMANCU )@@G@@D @[@@@@. @C@@@@TOFILE . $H CV )@@G@@@E@@@@ SLJ CHKRCD . $P CHECK RECORD NAME@E@@@@CW )@@G@@ LA A0,PBUFR+10 . $P GET FILE CODE @E@@@@ CX )@@G@@ SLJ XCON . $P CONV TO BINARY @B@@@@ SZCY )@@G@@ A0 . @G@@@@ LA,U A1,9 CZ )@@G@@ . $ NUMBER SHOULD BE 1 THRU 9 @C@@@@ TW A0,A2 DA )@@G@@ . $T IS IT@E@@@@ J BADNUM . $A YES NDB )@@G@@O,BADNUM @D@@@@ TNZ C18 . $T IS C18 UP DC )@@G@@@E@@@@ SLJ GETC18 . $A YES NO,GETC18 @E@@@@DD )@@G@@ LX,H2 X1,C18 . $P GET C18 ADDR @E@@@@ DE )@@G@@ AX,H1 X1,C18 . $P ENTRY ADDR @E@@@@ SADF )@@G@@,T1 A14,,X1 . $P SAVE RECORD CODE @E@@@@ SA,T3 DG )@@G@@ A2,,X1 . $P SAVE FILE CODE @G@@@@ LA,H1 A0,CDH )@@G@@18 . $P UPDATE C18 ENTRY COUNT @B@@@@ AA,U DI )@@G@@ A0,1 . @B@@@@ SA,H1 A0,C18 . DJ )@@G@@@D@@@@ J ULOAD1 . $J RETURN @C@@@@BADNUMDK )@@G@@ . $H @A@@@@ P$RINT (PF DL )@@G@@1,5,NUMMSG) @B@@@@ J ULOAD1 . @[@@@@. DM )@@G@@@C@@@@GETC18 +0 . $H @E@@@@ LXDN )@@G@@,U X1,TBLC18 . $P GET C18 TBL ADDR @E@@@@ SX DO )@@G@@ X1,C18 . $P SAVE IN C18 @B@@@@ J *GETDP )@@G@@C18 . @]@@@@$(4). @^@@@@TBLC18 RES 40 @B@@@@DQ )@@G@@NUMMSG 'FILE CODE MUST BE 1 THRU 9' @]@@@@$(1). @[@@@@. DR )@@G@@@A@@@@. PROCESS VIA SUBCOMMAND @[@@@@. @C@@@@VIA DS )@@G@@ . $H @E@@@@ SLJ CHKRCD DT )@@G@@ . $P CHECK RECORD NAME@B@@@@ LA A0,A14 DU )@@G@@ . @E@@@@ SLJ CHKC1 . $P SEARCH C1 TBL DV )@@G@@@G@@@@ SX X1,OBJX1 . $P SAVE OBJ RECORD C1 ADDRDW )@@G@@ @G@@@@ LR,U R5,3 . $P EXPECT MOST VIA 4DX )@@G@@ SETS @E@@@@ SZ NOSET . $P RESET EMPTYDY )@@G@@ SW @]@@@@SETLOOP. @F@@@@ LA,U A0,PBUFR+10 . $PDZ )@@G@@ GET VIA SET NAME ADDR @B@@@@ LA,U A1,5 . EA )@@G@@@B@@@@ MSI A1,R5 . @B@@@@ AA EB )@@G@@ A0,A1 . @C@@@@ LA A1,0,A0 . $PEC )@@G@@ @C@@@@ TNE A1,(' ') . $T BLANK@E@@@@ ED )@@G@@ J NXTSET . $A YES,NXTSET NO @F@@@@ SAEE )@@G@@ A0,NOSET . $P SET SW TO INDICATE -- @D@@@@ SLEF )@@G@@J CHKC7 . $P SEARCH C7 @E@@@@ SLJ PUTOEG )@@G@@BJ . $P SAVE SET CODE @E@@@@ LA A0,A14 EH )@@G@@ . $P RECORD CODE @E@@@@ SLJ CHKC1 EI )@@G@@ . $P CHECK IN C1 @G@@@@ SX X1,OBJX1 . $PEJ )@@G@@ SAVE OBJ RECORD C1 ADDR @E@@@@ LA,U A0,020 EK )@@G@@ . $P SET TRACE BIT @B@@@@ OR,S3 A0,0,X1 . EL )@@G@@@F@@@@ SA,S3 A1,0,X1 . $P RESTORE TYPE FIELD EM )@@G@@@G@@@@ SLJ SEQCNT . $P GET SEQ NO.,& SET ENTRYEN )@@G@@ ADDR @]@@@@NXTSET. @F@@@@ SX X11,KEYSORT . $PEO )@@G@@ SET SORT KEY FILE IND @F@@@@ JGD R5,SETLOOP . $TEP )@@G@@ DONE WITH ALL SETS @D@@@@ TZ NOSET . $TEQ )@@G@@ ANY SET @B@@@@ J ULOAD1 . @A@@@@ ER )@@G@@ P$RINT (PF 1,3,NULLSET)@ @@@@ J ULOAD1 @[@@@@ES )@@G@@. @E@@@@. RECORD SPECIFIED WILL BE UNLOADED VIA ANOTHER SET ET )@@G@@@[@@@@. @C@@@@UNLDERR . $H @D@@@@EU )@@G@@ P$RINT (PF 1,UNLDMSG9-UMSG90,UMSG90) @D@@@@ P$EV )@@G@@RINT (PF 1,NULLSET-UNLDMSG9,UNLDMSG9) @^@@@@ ER ERR$EW )@@G@@@]@@@@. @C@@@@. PUT SET CODE IN THE OBJECT RECORD EX )@@G@@@]@@@@. @C@@@@PUTOBJ +0 . $H EY )@@G@@@F@@@@ LX X1,OBJX1 . $P GET RECORD C1 ADDR EZ )@@G@@@F@@@@ LA,U A0,040 . $T UNLOAD VIA SET BIT ON FA )@@G@@@E@@@@ AND,S3 A0,0,X1 . $P GET TYPE ENTRY @G@@@@FB )@@G@@ JNZ A1,UNLDERR . $A YES,AMBIGUOUS UNLOAD COMMD FC )@@G@@@F@@@@ OR,S3 A0,0,X1 . $P SET UNLOAD VIA SET FD )@@G@@@F@@@@ SA,S3 A1,0,X1 . $P RESTORE TYPE FIELD FE )@@G@@@E@@@@ AX,S4 X1,0,X1 . $P SKIP O/A CNT @G@@@@FF )@@G@@ TN 1,X1 . $T MAN CONTROL WORD HIGH BIT FG )@@G@@@E@@@@ ER ERR$ . $E INTERNAL ERROR @E@@@@FH )@@G@@ SA,T2 A15,1,X1 . $P SAVE THE SET CODE@D@@@@ FI )@@G@@ J *PUTOBJ . $J RETURN @]@@@@$(4). @H@@@@FJ )@@G@@OBJX1 +0 . INDICATE OBJ RECORD NEEDS SET COFK )@@G@@DE @]@@@@KEYSORT +0@E@@@@UMSG90 'ERROR: LAST SUBCOMMAND CAUSED TFL )@@G@@HAT AT LEAST' @E@@@@UNLDMSG9 'ONE RECORD TO BE UNLOADED VIA MORE THFM )@@G@@AN ONE SET' @ @@@@NULLSET 'SET NAME MISSING' @]@@@@NOSET +0@]@@@@FN )@@G@@$(1). @[@@@@. @^@@@@. SAVE C2,C4,C8 @[@@@@. @]@@@@FO )@@G@@SCANTBLW +0@E@@@@ LX,H2 X1,C8 . $P GET C8 ADDRFP )@@G@@ @E@@@@ LA A0,C2 . $P SAVE C2 IN C8 FQ )@@G@@@B@@@@ SA A0,1,X1 . @B@@@@ LA FR )@@G@@ A0,C4 . @B@@@@ SA A0,3,X1 . FS )@@G@@@D@@@@ LA A0,C18 . $P STORE C18 @C@@@@ FT )@@G@@ SA A0,17,X1 . $P IN C8@D@@@@ LX,U X10,FU )@@G@@(+8,010,,,,0) . $P WRITE C8 @B@@@@ LMJ X11,CF$AM FV )@@G@@ . @D@@@@ LX,U X10,(+2,010,,,,0) . $P WRITE C2 @A@@@@FW )@@G@@ LMJ X11,CF$AM @D@@@@ LX,U X10,(+4,01FX )@@G@@0,,,,0) . $P WRITE C4 @A@@@@ LMJ X11,CF$AM @I@@@@FY )@@G@@ LX,U X10,(+18,010,,,,0) FZ )@@G@@. $P WRI @B@@@@ LMJ X11,CF$AM . @^@@@@ GA )@@G@@ SLJ BANK@A@@@@ J *SCANTBLW @C@@@@SCANTBGB )@@G@@LR +0 . $H @D@@@@ LX,U X10,GC )@@G@@(+8,020,,,,0) . $P READ C8 @B@@@@ LMJ X11,CF$AM GD )@@G@@ . @E@@@@ TNZ C8 . $T C8 AVAILABLE GE )@@G@@@E@@@@ J SEQERR . $A YES NO,SEQERR @B@@@@GF )@@G@@ LX,H2 X1,C8 . @F@@@@ TNZ 2,X1GG )@@G@@ . $T CHECK IF AREA CMND IN @B@@@@ J SEQEGH )@@G@@RR . @[@@@@. @A@@@@. READ C1,C3,C5,C6,C7 GI )@@G@@@[@@@@. @F@@@@ SZ A15 . $P ZERO OUT LOGJ )@@G@@OP COUNT @]@@@@SRDLOOP. @B@@@@ LX,U X10,SCANC1 GK )@@G@@ . @B@@@@ AX X10,A15 . @E@@@@ LMGL )@@G@@J X11,CF$AM . $P READ A TBL @E@@@@ AA,U GM )@@G@@ A15,1 . $P UPDATE LOOP COUNT@E@@@@ TNE,U A15,GN )@@G@@5 . $T DONE ALL 5 @E@@@@ J $+2 GO )@@G@@ . $A YES NO,SRDLOOP @B@@@@ J SRDLOOP GP )@@G@@ . @[@@@@. @A@@@@. READ C17 IF AVAILABLE @[@@@@. GQ )@@G@@@E@@@@ LX,H2 X1,C8 . $P GET C8 ADDR @E@@@@GR )@@G@@ TNZ 16,X1 . $T C17 AVAILABLE @E@@@@ GS )@@G@@ J *SCANTBLR . $A YES NO,*RETURN @F@@@@ LXGT )@@G@@,U X10,(+17,020,,,,0). $P SET UP TO READ C17 @B@@@@ LMGU )@@G@@J X11,CF$AM . @D@@@@ LX,U X10,(+9,020,,,,0GV )@@G@@) . $P READ C9 @B@@@@ LMJ X11,CF$AM . @D@@@@GW )@@G@@ J *SCANTBLR . $J RETURN @]@@@@$(4). GX )@@G@@@]@@@@SCANC1. @^@@@@ +1,020,,,,0 @^@@@@ +3,020,,GY )@@G@@,,0 @^@@@@ +5,020,,,,0 @^@@@@ +6,020,,,,0 @^@@@@GZ )@@G@@ +7,020,,,,0 @]@@@@$(1). @[@@@@. @D@@@@. SEHA )@@G@@ARCH C1 TBL, AND RETURN ENTRY ADDR IN X1 @[@@@@. @]@@@@CHKC1 +0HB )@@G@@@E@@@@ LX,H2 X1,C1 . $P GET C1 ADDR @]@@@@HC )@@G@@CHKC10. @E@@@@ TE,T1 A0,0,X1 . $T RECORD CODEHD )@@G@@ MATCH@E@@@@ J NXTC1 . $A YES NO,NXTC1 HE )@@G@@@ @@@@ J *CHKC1 @]@@@@NXTC1. @D@@@@ TNHF )@@G@@Z,T3 0,X1 . $T LINK =0 @E@@@@ ER ERR$HG )@@G@@ . $A YES,ERR$ NO @E@@@@ AX,T3 X1,0,X1 HH )@@G@@ . $P GET NXT ADDR @D@@@@ J CHKC10 HI )@@G@@ . $J TRY NXT @[@@@@. @C@@@@. CHECK VALIDITY OF SET NAMEHJ )@@G@@ ENTERED @[@@@@. @]@@@@CHKC7 +0@G@@@@ LX X2,AHK )@@G@@0 . $P GET SET NAME ADDR IN X2 @E@@@@ LX,H2 HL )@@G@@ X1,C7 . $P GET C7 ADDR @]@@@@CHKC70. @G@@@@ HM )@@G@@ DL A0,0,X2 . $P 1ST 2 WORDS OF SET NAME @C@@@@HN )@@G@@ DTE A0,1,X1 . $T MATCH@E@@@@ J HO )@@G@@ NXTC7 . $A YES NO,NXTSET @E@@@@ DL A0,2HP )@@G@@,X2 . $P CHECK NXT 2 WORDS@B@@@@ DTE A0,3,X1 HQ )@@G@@ . @B@@@@ J NXTC7 . @B@@@@ HR )@@G@@ LA A0,4,X2 . @B@@@@ TE A0,5,X1 HS )@@G@@ . @B@@@@ J NXTC7 . @E@@@@ HT )@@G@@ LA,T1 A15,0,X1 . $P SET CODE IN A15 @E@@@@ AXHU )@@G@@,U X1,6 . $P UPDATE ENTRY PTR @E@@@@ LR,T2 HV )@@G@@ R1,0,X1 . $P GET MEMBER COUNT @C@@@@ JGD R1,$HW )@@G@@+1 . $P -1 @E@@@@ LA A0,A14 . $PHX )@@G@@ LOOK FOR MEMBER @F@@@@ LA,T3 A14,0,X1 . $P SAVE HY )@@G@@THE OWNER CODE @]@@@@CHKC71. @E@@@@ TE,T3 A0,1,X1 HZ )@@G@@ . $T RIGHT MEMBER @E@@@@ J NXTMEM IA )@@G@@ . $A YES NO,NXTMEM @D@@@@ J *CHKC7 . $JIB )@@G@@ RETURN @]@@@@NXTMEM. @C@@@@ AX,U X1,1 IC )@@G@@ . $P UP @C@@@@ JGD R1,CHKC71 . $T END @D@@@@ID )@@G@@ LX X5,X2 . $P SAVE X2 @ @@@@ E$IE )@@G@@DIT EDPKT @ @@@@ E$FD2 PBUFR @ @@@@ E$IF )@@G@@FD2 PBUFR+2 @ @@@@ E$FD1 PBUFR+4 @A@@@@ E$IG )@@G@@COPY 25,SETMSG @^@@@@ E$FD2 0,X5@^@@@@ E$IH )@@G@@FD2 2,X5@^@@@@ E$FD1 4,X5@^@@@@ E$SKIP 1 II )@@G@@@ @@@@ E$FD1 ('SET.') @#@@@@ E$DITX @A@@@@ IJ )@@G@@ P$RINT (PF 1,14,PRINT) @ @@@@ J ULOAD1 @]@@@@IK )@@G@@$(4). @B@@@@SETMSG ' DOES NOT ASSOCIATE WITH ' @]@@@@$(1). IL )@@G@@ @]@@@@NXTC7. @D@@@@ TNZ,T3 0,X1 . $TIM )@@G@@ LINK = 0 @ @@@@ J SETERR @D@@@@ AX,T3 IN )@@G@@ X1,0,X1 . $P NXT ENTRY @B@@@@ J CHKC70 IO )@@G@@ . @]@@@@SETERR. @D@@@@ LX X5,X2 IP )@@G@@ . $P SAVE X2 @ @@@@ E$DIT EDPKT @ @@@@ E$IQ )@@G@@FD1 ('SET') @^@@@@ E$SKIP 1 @^@@@@ E$FD2 IR )@@G@@ 0,X5@^@@@@ E$FD2 2,X5@^@@@@ E$FD1 4,X5@A@@@@IS )@@G@@ E$COPY 44,SETMSG2 @#@@@@ E$DITX @A@@@@ IT )@@G@@ P$RINT (PF 1,14,PRINT) @ @@@@ J ULOAD1 @]@@@@IU )@@G@@$(4). @E@@@@SETMSG2 ' IS NOT PATICIPATING IN THIS REORGANIZATIONIV )@@G@@.' @]@@@@$(1). @[@@@@. @C@@@@. SEARCH C1 TO GET SETIW )@@G@@ TRACE SEQUENCE @C@@@@SEQCNT +0 . $H IX )@@G@@@B@@@@ SZ X3 . @G@@@@ SZ IY )@@G@@ A0 . $P SET SUMMATION OF SEQ NO. = 0 @E@@@@ LXIZ )@@G@@ X2,X1 . $P C1 ENTRY ADDR @D@@@@ LR,S4 JA )@@G@@ R1,0,X2 . $P GET ZCNT @E@@@@ AX,U X2,1 JB )@@G@@ . $T ANY AUTO SET @E@@@@ JGD R1,$+2 JC )@@G@@ . $A YES NO,MANUAL @ @@@@ J MANUAL @]@@@@CNT0. JD )@@G@@ @E@@@@ AA,S1 A0,0,X2 . $P ACCUM. SEQ NO. JE )@@G@@@E@@@@ TNE,T2 A15,0,X2 . $T IS THIS THE SET @E@@@@JF )@@G@@ LX X3,X2 . $A YES,SAVE THE ADDR@F@@@@ JG )@@G@@ AX,U X2,1 . $T DONE WITH AUTO SETS @E@@@@ JH )@@G@@ JGD R1,CNT0 . $A YES NO,CNT0 @]@@@@MANUAL. JI )@@G@@@E@@@@ TN 0,X2 . $T ANY MANUAL SET @E@@@@JJ )@@G@@ J NOMAN . $A YES NO,NOMAN @E@@@@ JK )@@G@@ LR,S2 R1,0,X2 . $P GET MAN. SET CNT @B@@@@ JGJL )@@G@@D R1,$+2 . @B@@@@ J NOMAN JM )@@G@@ . @B@@@@ AX,U X2,2 . @]@@@@CNT1. JN )@@G@@@E@@@@ AA,S1 A0,0,X2 . $P ACCUM. SEQ NO. @B@@@@JO )@@G@@ TNE,T2 A15,0,X2 . @B@@@@ LX X3,XJP )@@G@@2 . @B@@@@ AX,U X2,1 . @B@@@@JQ )@@G@@ JGD R1,CNT1 . @[@@@@. @A@@@@. COJR )@@G@@MPUTE NXT SEQ. NO. @[@@@@. @]@@@@NOMAN. @B@@@@ LAJS )@@G@@,U A1,1 . @]@@@@CNT2. @F@@@@ JZ JT )@@G@@ A0,SETSEQ . $T END OF COMPUTATION @B@@@@ ANA JU )@@G@@ A0,A1 . @B@@@@ AA,U A1,1 . JV )@@G@@@B@@@@ JP A0,CNT2 . @G@@@@ ER JW )@@G@@ ERR$ . $J INTERNAL ERROR A0 SHOULD NOT@E@@@@SETSEQ. JX )@@G@@ . $ BE NEGATIVE @B@@@@ TNZ JY )@@G@@ X3 . @G@@@@ ER ERR$ . $ JZ )@@G@@SHOULD ALWAYS FOUND THE SET @E@@@@ TNZ,S1 0,X3 KA )@@G@@ . $T SEQ NO. EXIST @E@@@@ SA,S1 A1,0,X3 . $AKB )@@G@@ YES NO,SET IT @D@@@@ J *SEQCNT . $J RETURKC )@@G@@N @[@@@@. @[@@@@. @]@@@@TIME. @A@@@@ LA KD )@@G@@ A0,PBUFR+5 @^@@@@ SZ A1 @A@@@@ TE KE )@@G@@ A0,('OFF ') @^@@@@ LA,U A1,1@A@@@@ SA KF )@@G@@ A1,SWTIME @ @@@@ J READIN+1 @[@@@@. @[@@@@KG )@@G@@. @]@@@@TIMEIN. @]@@@@ +0@ @@@@ ER TDATKH )@@G@@E$ @A@@@@ SA A0,TIMEST @A@@@@ LA KI )@@G@@ A0,(24,PCT) @^@@@@ ER PCT$@ @@@@ LA KJ )@@G@@ A0,CPU @ @@@@ LA A1,IOCNT @ @@@@ DS KK )@@G@@ A0,CPUIN @ @@@@ LA A0,PBUFR @A@@@@ SA KL )@@G@@ A0,CMDNAME @ @@@@ J *TIMEIN @[@@@@. @[@@@@KM )@@G@@. @]@@@@TIMEOUT. @]@@@@ +0@E@@@@ SZ CMDLKN )@@G@@VL . $P RESET COMMAND LVL@ @@@@ TNZ SWTIME KO )@@G@@@ @@@@ J *TIMEOUT @ @@@@ E$DIT EDPKT KP )@@G@@@^@@@@ E$SKIP 6 @ @@@@ E$COPY 11,TMSG1 @A@@@@KQ )@@G@@ E$COPY 6,CMDNAME @#@@@@ E$DITX @A@@@@ KR )@@G@@ P$RINT (PF 3,14,PRINT) @ @@@@ E$DIT EDPKT @^@@@@KS )@@G@@ E$SKIP 6 @ @@@@ E$COPY 11,TMSG2 @ @@@@ KT )@@G@@ ER TDATE$ @A@@@@ ANA A0,TIMEST @A@@@@KU )@@G@@ LMJ X11,ETIME$ @^@@@@ E$SKIP 1 @^@@@@KV )@@G@@ E$CHAR '(' @ @@@@ E$TIME TIMEST @ @@@@ KW )@@G@@ E$COPY 4,TMSG21 @#@@@@ E$TD @^@@@@ E$CHAR KX )@@G@@ ')' @#@@@@ E$DITX @A@@@@ P$RINT (PF 1,14,PRINT) KY )@@G@@@A@@@@ LA A0,(24,PCT) @^@@@@ ER PCT$KZ )@@G@@@ @@@@ E$DIT EDPKT @^@@@@ E$SKIP 6 @ @@@@LA )@@G@@ E$COPY 7,TMSG3 @ @@@@ LA A0,CPU @ @@@@LB )@@G@@ ANA A0,CPUIN @ @@@@ DSL A0,36 @^@@@@LC )@@G@@ DI,U A0,5@A@@@@ LMJ X11,EDECV$ @A@@@@LD )@@G@@ E$COPY 17,TMSG31 @ @@@@ LA A0,IOCNT LE )@@G@@@ @@@@ ANA A0,IOIN @A@@@@ LMJ X11,EDECV$LF )@@G@@ @#@@@@ E$DITX @A@@@@ P$RINT (PF 1,14,PRINT) LG )@@G@@@ @@@@ J *TIMEOUT @[@@@@. @[@@@@. @I@@@@XCON LH )@@G@@ +0 . ROUTINE TO CONVERT DECIMAL(FD) TO BINALI )@@G@@RY @A@@@@. (IN) A0 = DECIMAL(FD) @^@@@@. A2 = BINLJ )@@G@@ARY @D@@@@ DSL A0,36 . A1=DECIMAL @C@@@@LK )@@G@@ SZ A2 . RESET A2@D@@@@ LR,U LL )@@G@@ R15,5 . LOOP COUNT @]@@@@XLOOP. @B@@@@ SZLM )@@G@@ A0 . @C@@@@ LDSL A0,6 LN )@@G@@ . 1 CHAR @E@@@@ TNE,U A0,5 . TEST FOR BLANKLO )@@G@@ @B@@@@ J NXTDIG . @D@@@@ TNLP )@@G@@E,U A0,0 . TEST FOR @ @B@@@@ J NXTDLQ )@@G@@IG . @E@@@@ ANA,U A0,060 . - HIGHERLR )@@G@@ 2 BIT2 @B@@@@ MSI,U A2,10 . @ @@@@ LS )@@G@@ AA A2,A0 @]@@@@NXTDIG. @A@@@@ JGD R15,LT )@@G@@XLOOP @C@@@@ J *XCON . RETURN @[@@@@LU )@@G@@. @D@@@@. ECHO THE INPUT LINE IF BATCH OR VIA @ADD @[@@@@LV )@@G@@. @E@@@@ECHO +0 . $H ECHO ROUTINE LW )@@G@@@D@@@@ SA A0,ECHOA0 . $P SAVE A0 @F@@@@ LX )@@G@@ LA,U A0,LINE . $P GET INPUT BUFFER ADDR @E@@@@ LY )@@G@@ SA,H2 A0,ECHOPKT . $P SET PRINT PKT @F@@@@ LALZ )@@G@@ A0,LINELNG . $P GET INPUT CHARS NUM @E@@@@ DSMA )@@G@@L A0,36 . $P SHIFT TO A1 @F@@@@ DI,U MB )@@G@@ A0,6 . $P COMPUTE NUM OF WORDS @E@@@@ TZ MC )@@G@@ A1 . $T ANY REMINER @C@@@@ AA,U A0,1MD )@@G@@ . $P +1 @B@@@@ SA,H2 A0,ECHOA0 . ME )@@G@@@D@@@@ LA A0,(031,PBUFR) . $P READ PCT @^@@@@ MF )@@G@@ ER PCT$@D@@@@ LA,S2 A0,PBUFR+030 . $P GET TMG )@@G@@YPE @D@@@@ TE,U A0,4 . $T DEMAND @E@@@@MH )@@G@@ J ECHO1 . $A YES NO,ECHO1 @B@@@@ MI )@@G@@ LA A0,(+0200000,0) . @E@@@@ AND A0,ECHOA0 MJ )@@G@@ . $P CHK INPUT MODE @B@@@@ JZ A1,ECHORTN MK )@@G@@ . @]@@@@ECHO1. @E@@@@ LA,H2 A0,ECHOA0 . $PML )@@G@@ GET INPUT LENGTH @A@@@@ JZ A0,ECHORTN @H@@@@ MM )@@G@@ SA A0,PRTLNG . $P SAVE TOTAL LENGTH TO BE PRINTED MN )@@G@@@]@@@@ECHOLOP. @E@@@@ LA A0,PRTLNG . $P LENGTMO )@@G@@H LEFT @D@@@@ JZ A0,ECHORTN . $J RETURN MP )@@G@@@B@@@@ JN A0,ECHORTN . @E@@@@ ANU,U MQ )@@G@@ A0,12 . $P LNG -12 TO A1 @D@@@@ TG,U A0,1MR )@@G@@2 . $T LNG > 12 @E@@@@ LA,U A0,12 MS )@@G@@ . $P PRINT ONLY 12 @E@@@@ SA,S3 A0,ECHOPKT . $PMT )@@G@@ SET PRINT LENGTH @E@@@@ SA A1,PRTLNG . $P SAVE MU )@@G@@PRTLNG @A@@@@ LA A0,ECHOPKT @ @@@@ ERMV )@@G@@ PRINT$ @F@@@@ LA,H2 A0,ECHOPKT . $P UPDATMW )@@G@@E BUFFER ADDR @C@@@@ AA,U A0,12 . $P +12 MX )@@G@@@B@@@@ SA,H2 A0,ECHOPKT . @C@@@@ J MY )@@G@@ ECHOLOP . $J LOOP @]@@@@ECHORTN. @E@@@@ LA MZ )@@G@@ A0,ECHOA0 . $P RESTORE A0 @ @@@@ J *ECHNA )@@G@@O @]@@@@$(4). @E@@@@PRTLNG +0 . $ NB )@@G@@TEMP PRT LENGTH @ @@@@ECHOPKT PF 1,0,LINE @]@@@@ECHOA0 +0NC )@@G@@@^@@@@ANAMEX RES 2 @C@@@@NOTSPC2 'NOT SPECIFIED IN THE AREAND )@@G@@ COMMAND' @C@@@@NOTSPC1 'NOT SPECIFIED IN THE RECORD COMMAND' @#@@@@NE )@@G@@Z1* +0,0 @]@@@@TERMITR +1@]@@@@ZCOUNT +0@C@@@@READYR 'RNF )@@G@@EADY. (FOR RELOAD SUBCOMMAND)' @B@@@@INVAL 'INVALID RELOAD SUBCNG )@@G@@OMMAND.' @B@@@@INVALXX 'INVALID RESTORE SUBCOMMAND.' @]@@@@RELCNTNH )@@G@@ +0@G@@@@INMSG1 'WARNING:PAGE RANGE ENTERED FOR A CALC RECORD - IGNI )@@G@@NORED' @C@@@@INPKT1 PF 1,INPKT1-INMSG1,INMSG1 @E@@@@NJ )@@G@@INMSG2 'PAGE RANGE SUBCOMMAND FORMAT ERROR - IGNORED' @C@@@@INPKT2NK )@@G@@ PF 1,INPKT2-INMSG2,INMSG2 @B@@@@INMSG3 'PAGE RANGE INNL )@@G@@VALID - IGNORED' @C@@@@INPKT3 PF 1,INPKT3-INMSG3,INMSG3 NM )@@G@@@C@@@@INMSG4 'DUPLICATE PAGE RANGE - IGNORED' @C@@@@INPKT4 PFNN )@@G@@ 1,INPKT4-INMSG4,INMSG4 @D@@@@FORMMSG 'FROM SUBCOMMAND FORNO )@@G@@MAT ERROR - IGNORED' @C@@@@FORMPKT PF 1,FORMPKT-FORMMSG,FORMNP )@@G@@MSG @C@@@@FORMMSG2 'DULICATE FROM SUBCOMMAND - IGNORED' @C@@@@FORMPKNQ )@@G@@T2 PF 1,FORMPKT2-FORMMSG2,FORMMSG2@B@@@@PERMSG1 'INVALID % VALNR )@@G@@UE - IGNORED' @C@@@@PERPKT1 PF 1,PERPKT1-PERMSG1,PERMSG1 NS )@@G@@@C@@@@BADTOMSG ' CAN BE PATCHED ONLY - IGNORED' @]@@@@SWTIME +0NT )@@G@@@#@@@@CMDNAME* ' ' @^@@@@PCT RES 24 @ @@@@CPU EQNU )@@G@@UF PCT+026 @ @@@@IOCNT EQUF PCT+8 @]@@@@CPUIN* +0NV )@@G@@@]@@@@IOIN* +0@^@@@@CPUINX RES 2 @^@@@@TIMESTX RES NW )@@G@@ 1 @^@@@@TMSG1 '* COMMAND= ' @^@@@@TMSG2 '* ELAPSED= ' @#@@@@NX )@@G@@TMSG21 ' TO ' @^@@@@TMSG3 '* CPU= ' @A@@@@TMSG31 ' MS, INY )@@G@@/O COUNT= ' @]@@@@TIMEST* +0@^@@@@PBUFR* RES 60 @F@@@@NZ )@@G@@LINELNG RES 1 . $ NUM OF CHARS ON INPUT @E@@@@OA )@@G@@LINE RES 40 . $ INPUT BUFFER @^@@@@BLANK OB )@@G@@ ' ' @G@@@@C1SW +0 . C1SW = 0OC )@@G@@, RECORD CMD NOT IN @G@@@@ . OD )@@G@@ 1, RECORD CMD IN PROGRESS@G@@@@ OE )@@G@@ . 2, C1 IN CORE & IN FILE @B@@@@C2SW +0 OF )@@G@@ . @G@@@@C3SW +0 . C3SW = 0, AREAOG )@@G@@ CMD NOT IN @G@@@@ . 1OH )@@G@@, AREA CMD IN PROGRESS @G@@@@ . OI )@@G@@ 2, C3 IN CORE & IN FILE @^@@@@C1PARAM +1,020,0,0,0,0@^@@@@C3PARAOJ )@@G@@M +3,020,0,0,0,0@ @@@@EDPKT* E$PKT 14,PRINT @^@@@@PRINT* REOK )@@G@@S 14 @C@@@@PROGID '-BELL LABS D.B. REORGANIZER: ' @#@@@@OL )@@G@@VERSION '6,0' @ @@@@PF FORM 12,6,18 @^@@@@READY 'ROM )@@G@@EADY.' @B@@@@SEQMSG 'REORG COMMAND SEQUENCE ERROR' @]@@@@COMMANON )@@G@@D. @#@@@@ 'TIME' @^@@@@ +0,TIME @^@@@@ OO )@@G@@ 'RECORD' @^@@@@ +1,RECORD @#@@@@ 'AREA' OP )@@G@@@^@@@@ +2,AREA @^@@@@ 'AREAP' @^@@@@ OQ )@@G@@ +2,AREA @#@@@@ 'SCAN' @^@@@@ +3,SCAN$ OR )@@G@@@^@@@@ 'UNLOAD' @^@@@@ +3,UNLOAD$ @^@@@@ OS )@@G@@ 'RESTOR' @^@@@@ +4,RESTORE$ @^@@@@ 'DELETE'OT )@@G@@ @^@@@@ +5,DELETE @^@@@@ 'RELOAD' @^@@@@OU )@@G@@ +6,RELOAD$ @^@@@@ 'PATCH' @^@@@@ +7OV )@@G@@,PATCH$ @^@@@@ 'DEBUG' @^@@@@ +0,DODEBUG OW )@@G@@@#@@@@ 'END' @^@@@@ +99,ENDIT @A@@@@CMDCNT + OX )@@G@@(CMDCNT-COMMAND)/2 @C@@@@CMDMSG 'ILLEGAL REORGANIZATION COMMAND'OY )@@G@@ @]@@@@X1SAVE +0@]@@@@AREAP* +0@^@@@@WRTC2 +2,010,0,0,0,0OZ )@@G@@@^@@@@WRTC4 +4,010,0,0,0,0@^@@@@RDC2 +2,020,0,0,0,0@^@@@@RDC4 PA )@@G@@ +4,020,0,0,0,0@^@@@@ END MAIN___@@@ LA PB )@@G@@ A0,(031,PBUFR) . $P READ PCT @^@@@@ *[@@@@*SDFF*@#@@@@ PC )@@G@@ AXR$ @[@@@@. @G@@@@. THIS SUBROUTINE, DF$AM (DATA FILPD )@@G@@E ACCESS METHOD), IS DESIGNED @G@@@@. TO CREATE THE DATA FIPE )@@G@@LE AND TO READ, WRITE THE FILE. @[@@@@. @^@@@@. ENTERED:PF )@@G@@ @A@@@@. 3 SEQUENTIAL READ @[@@@@. @B@@@@. PG )@@G@@ LX,U X10,BUFFER @B@@@@. LMJ X1PH )@@G@@1,DF$AMR @[@@@@. @[@@@@. @#@@@@$(4) LIT. @]@@@@$(1). PI )@@G@@ @C@@@@DF$AMR* . $H @E@@@@ PJ )@@G@@ TNZ INITSW . $T FIRST TIME @E@@@@ J PK )@@G@@ INITIAL . $A YES,INITIAL NO @ @@@@ LA PL )@@G@@ A0,SWBUF @E@@@@ LA A1,BUFADDR,A0 . $P GET BUFFER PM )@@G@@ADDR @E@@@@ TNZ,H1 0,A1 . $T RECORD COUNT = 0 PN )@@G@@@E@@@@ SLJ GETNXT . $A YES,GETNXT NO @ @@@@PO )@@G@@ LA A0,SWBUF @A@@@@ LX X8,BUFADDR,A0 PP )@@G@@@A@@@@ LA A1,NXTWRD @ @@@@ AA A1,XPQ )@@G@@8 @^@@@@ LXI,U A1,1@ @@@@ LXI,U X10,1 PR )@@G@@@ @@@@ LA,H1 A0,0,*A1 @ @@@@ LR R1,A0 PS )@@G@@@E@@@@ LR R3,A0 . $P SET RECORD LENGTH@^@@@@PT )@@G@@ AA,U A0,1@A@@@@ AA A0,NXTWRD @A@@@@PU )@@G@@ SA A0,NXTWRD @A@@@@ BT X10,0,*A1 PV )@@G@@ @ @@@@ LA,H1 A0,0,X8 @^@@@@ ANA,U A0,1PW )@@G@@@ @@@@ SA,H1 A0,0,X8 @ @@@@ J 0,X11 PX )@@G@@@[@@@@. @[@@@@. @C@@@@GETNXT +0 . $HPY )@@G@@ @A@@@@ LA A0,BLKCNT @A@@@@ JN PZ )@@G@@ A0,NXTFILE @E@@@@ JNZ A0,GETNXT1 . $T GETINQA )@@G@@G LAST BLOCK@E@@@@ TP IOPKT+3 . $A YES NO,GETNQB )@@G@@XT1 @C@@@@ ER WAIT$ . $P WAIT @F@@@@ QC )@@G@@ LA,U A0,1 . $P SET TO PROPER BUFFER @B@@@@ QD )@@G@@ SA A0,NXTWRD . @E@@@@ ANA A0,SWBUF QE )@@G@@ . SET BUFFER SW @ @@@@ SA A0,SWBUF @E@@@@QF )@@G@@ LA A0,(-1) . $P SET BLKCOUNT TO -@A@@@@ QG )@@G@@ SA A0,BLKCNT @C@@@@ J *GETNXT QH )@@G@@ . $E @[@@@@. @C@@@@GETNXT1 . $HQI )@@G@@ @C@@@@ SLJ DFREAD . $W @E@@@@ QJ )@@G@@ LA A0,BLKCNT . $P UPDATE BLKCNT @^@@@@ ANQK )@@G@@A,U A0,1@B@@@@ SA A0,BLKCNT . @C@@@@ QL )@@G@@ J *GETNXT . $E @[@@@@ENDF @B@@@@ LAQM )@@G@@ A0,(+0777777777777). @B@@@@ SA A0,0,X10 QN )@@G@@ . @C@@@@ J 0,X11 . $E @C@@@@DFREADQO )@@G@@ +0 . $H @B@@@@ TP IOPKQP )@@G@@T+3 . @B@@@@ . @F@@@@QQ )@@G@@ ER WAIT$ . $P WAIT FOR PREVIOUS I/O @F@@@@QR )@@G@@ TZ DEVICE . $T SEE IF A TAPE FILE @E@@@@QS )@@G@@ SLJ CHKSTAT . $A YES,CHKSTAT NO @B@@@@ QT )@@G@@ . @B@@@@ LA,U A0,1 QU )@@G@@ . @ @@@@ ANA A0,SWBUF @G@@@@ LX QV )@@G@@ X8,BUFADDR,A0 . $P GET BUFFER ADDR JUST READ @H@@@@ LAQW )@@G@@,H2 A1,0,X8 . $P COMPUTE NEXT BLOCK SECTOR ADDR @B@@@@QX )@@G@@ SZ A0 . @B@@@@ DI,U A0,2QY )@@G@@8 . @B@@@@ TZ A1 . @B@@@@QZ )@@G@@ AA,U A0,1 . @G@@@@ AA A0,NRA )@@G@@XTSECT . $P SAVE IT, ALSO IN IO PKT @B@@@@ SA RB )@@G@@ A0,NXTSECT . @B@@@@ SA A0,IODRUM . RC )@@G@@@B@@@@ LA A0,SWBUF . @B@@@@ LA RD )@@G@@ A1,BUFADDR,A0 . @E@@@@ SA A1,IOBUF . $PRE )@@G@@ GET BUFFER ADDR @B@@@@ LA,U A0,1 . @B@@@@RF )@@G@@ SA A0,NXTWRD . @B@@@@ ANA A0,SRG )@@G@@WBUF . @G@@@@ SA A0,SWBUF . $P SWITCRH )@@G@@H SET TO PROPER BUFFER @B@@@@ LA,U A0,IOPKT . RI )@@G@@@D@@@@ ER IO$ . $P DO I/O @C@@@@ RJ )@@G@@ J *DFREAD . $E @[@@@@. @ @@@@. INRK )@@G@@ITIALIZE ROUTINE @[@@@@. @C@@@@INITIAL RL )@@G@@ . $H @F@@@@ LA A0,LAST$D . $P MCORE BUFFERM )@@G@@R SPACE @B@@@@ AU,U A0,1 . @G@@@@ RN )@@G@@ SA A1,BUFADDR . $P COMPUTE FIRST BUFF ADDR @F@@@@RO )@@G@@ AA,U A1,BLKSZ . $P COMPUTE 2ND BUFF ADDR @F@@@@RP )@@G@@ SA A1,BUFADDR+1 . $P SAVE 2ND BUFF ADDR @F@@@@RQ )@@G@@ AA,U A0,BLKSZ . $P COMPUTE MCORE$ ADDR @F@@@@RR )@@G@@ AA,U A0,BLKSZ . $P COMPUTE MCORE$ ADDR @B@@@@RS )@@G@@ SA A0,LAST$D . @B@@@@ ER MCORRT )@@G@@E$ . @E@@@@ LA,U A0,1 . $P SET IRU )@@G@@NIT SW @B@@@@ SA A0,INITSW . @D@@@@ RV )@@G@@ TNZ C18 . $T C18 EXIST @E@@@@ J RW )@@G@@ ONEFILE . $A YES NO,ONEFILE @E@@@@ LX,H2 X8,CRX )@@G@@18 . $P GET C18 ADDR @B@@@@ LXI,U X8,1 RY )@@G@@ . @D@@@@ LR,H1 R1,C18 . $P GET COUNT RZ )@@G@@@]@@@@FILELOOP. @D@@@@ JGD R1,$+2 . $T ANY MSA )@@G@@ORE @B@@@@ J ONEFILE . @G@@@@ LASB )@@G@@,U A1,10 . $P COMPUTE FILE TBL ENTRY @E@@@@ SC )@@G@@ AN,T3 A1,,*X8 . $P 10 - FILE CODE @E@@@@ SASD )@@G@@,S1 A0,FILETBL,A1 . $P SET USE BIT @B@@@@ J SE )@@G@@ FILELOOP . @[@@@@. @C@@@@ONEFILE SF )@@G@@ . $H @E@@@@ SZ FILECNT . RESET FISG )@@G@@LE COUNT @]@@@@NXTFILE. @E@@@@ LA A0,FILECNT SH )@@G@@ . $P GET FILE COUNT @C@@@@ AA,U A0,1 . $PSI )@@G@@ UP 1 @B@@@@ SA A0,FILECNT . @E@@@@ TNSJ )@@G@@E,U A0,11 . $T ALL FILE DONE @E@@@@ J SK )@@G@@ ENDF . $A YES,ENDF NO @E@@@@ TNZ,S1 FILESL )@@G@@TBL,A0 . $T FILE IN USE @E@@@@ J NXTFILE SM )@@G@@ . $A YES NO,NXTFILE @E@@@@ LA,H2 A0,FILETBL,A0 SN )@@G@@ . $P GET FILE CODE @G@@@@ AA A0,A0 . $PSO )@@G@@ COMPUTE INX FOR FILE NAME @E@@@@ DL A1,NAMED2,A0 SP )@@G@@ . $P GET FILE NAME @B@@@@ DS A1,ASGCODE . SQ )@@G@@@B@@@@ DS A1,PKTCODE . @B@@@@ DS SR )@@G@@ A1,HDRCODE . @E@@@@ SZ SWBUF . $PSS )@@G@@ RESET BUF SW @B@@@@ LA,U A0,1 . @B@@@@ST )@@G@@ SA A0,NXTWRD . @D@@@@ LA,U A0,ASU )@@G@@SGA . $P @ASG FILE @C@@@@ ER CSF$ SV )@@G@@ . $ @C@@@@ JP A0,READHDR . $ @D@@@@SW )@@G@@ LX,U X10,ASGA . $P @ASG ERR @B@@@@ LMSX )@@G@@J X11,ASGERR . @B@@@@ ER ERR$ SY )@@G@@ . @]@@@@$(4). @ @@@@FF FORM 6,6,6,18 @]@@@@FILETBSZ )@@G@@L. @]@@@@ +0@]@@@@ +9@]@@@@ +8@]@@@@ TA )@@G@@ +7@]@@@@ +6@]@@@@ +5@]@@@@ +4@]@@@@ TB )@@G@@ +3@]@@@@ +2@]@@@@ +1@ @@@@ FF 1,0,TC )@@G@@0,0 @]@@@@INITSW +0@]@@@@$(1). @[@@@@. @A@@@@. RETD )@@G@@AD HDR AND FIRST BLOCK @[@@@@. @C@@@@READHDR TE )@@G@@ . $H @F@@@@ DL A0,HDPKT . $P FIND OTF )@@G@@UT DEVICE TYPE @A@@@@ DS A0,FITEMPKT @A@@@@ TG )@@G@@ LA A0,(13,FITEMPKT)@ @@@@ ER FITEM$ @ @@@@TH )@@G@@ SZ DEVICE @^@@@@ SZ A1 @ @@@@ TI )@@G@@ LA,U A2,017 @^@@@@ LA,U A0,1@ @@@@ TNTJ )@@G@@W A1,EQUIP @A@@@@ SA A0,DEVICE @ @@@@ TK )@@G@@ TNZ DEVICE @^@@@@ J $+3 @A@@@@ LATL )@@G@@ A0,(0,FITEMPKT) @ @@@@ ER TINTL$ @]@@@@READHDTM )@@G@@R0. @ @@@@ LA,U A0,HDPKT @E@@@@ ER IOW$TN )@@G@@ . $P READ HDR BLOCKS @D@@@@ TZ,S1 HDPKT+3 TO )@@G@@ . $T I/O GOOD @E@@@@ ER ERR$ . $ATP )@@G@@ YES NO,ERROR @ @@@@ TZ DEVICE @ @@@@ SLTQ )@@G@@J CHKHDR @F@@@@ SLJ NOTIFY . $P SEND TR )@@G@@DATA FILE INFO @E@@@@ LA,H1 A0,RCDSZ1 . $P GET BTS )@@G@@LOCK SIZE @A@@@@ SA A0,IOLENG @E@@@@ LATT )@@G@@ A0,BUFADDR . @P GET BUF ADDR @E@@@@ SZ TU )@@G@@ 0,A0 . $P SET TO ZERO @E@@@@ LA A0,BTV )@@G@@UFADDR+1 . $@ GET 2ND BUF ADDR @B@@@@ SZ 0,A0 TW )@@G@@ . @ @@@@ SZ SWBUF @^@@@@ LA,U TX )@@G@@ A0,2@ @@@@ SA A0,NXTSECT @E@@@@ SZ,S1 IOPKTY )@@G@@T+3 . $P RESET STATUS @H@@@@ SLJ DFREAD TZ )@@G@@ . $P READ 1ST BLOCK AND WAIT FOR IT @ @@@@ TP UA )@@G@@ IOPKT+3 @B@@@@ ER WAIT$ . @E@@@@ UB )@@G@@ TZ,S1 IOPKT+3 . $T CHK STATUS OK @^@@@@ ERUC )@@G@@ ERR$@E@@@@ LA A0,BLKCNT . $P UPDATE BLKCUD )@@G@@NT @^@@@@ ANA,U A0,1@B@@@@ SA A0,BLKCNT UE )@@G@@ . @C@@@@ SLJ GETNXT . $W @E@@@@UF )@@G@@ SZ SWBUF . $P SET TO 1ST BLOCK @C@@@@ UG )@@G@@ J DF$AMR . $E @[@@@@. @C@@@@. PRUH )@@G@@INT BLOCK COUNT AND RECORD COUNT @[@@@@. @C@@@@NOTIFY +0 UI )@@G@@ . $H @A@@@@ SX X11,SAVEX11 UJ )@@G@@@E@@@@ TZ DEVICE . $T IS IT A TAPE FILE@B@@@@UK )@@G@@ J TAPEIN . @ @@@@ E$DIT EDPKUL )@@G@@T @ @@@@ E$DECV BLKCNT @ @@@@ E$COPY 9,DFUM )@@G@@MSG1 @ @@@@ E$DECV RCDCNT @A@@@@ E$COPY 12,DUN )@@G@@FMSG2 @ @@@@ E$FD2 IOPKT @]@@@@TAPEMSG. @#@@@@UO )@@G@@ E$DITX @F@@@@ P$RINT (PF 2,14,PRINT) . $P PRINTUP )@@G@@ DATA FILE MSG @ @@@@PF FORM 12,6,18 @A@@@@ LXUQ )@@G@@ X11,SAVEX11 @C@@@@ J *NOTIFY . $EUR )@@G@@ @]@@@@TAPEIN. @ @@@@ E$DIT EDPKT @A@@@@ US )@@G@@ E$FD2 ('READING') @^@@@@ E$SKIP 1 @ @@@@ UT )@@G@@ E$FD2 IOPKT @^@@@@ E$SKIP 1 @ @@@@ E$UU )@@G@@FD1 ('FROM') @^@@@@ E$SKIP 1 @ @@@@ E$FD1 UV )@@G@@ ('TAPE') @^@@@@ E$SKIP 1 @A@@@@ E$FD2 ('REUW )@@G@@EL-NO.:') @ @@@@ E$DECF 3,CUREEL @ @@@@ J UX )@@G@@ TAPEMSG @[@@@@. @B@@@@. TAPE READING RELATED ROUTINE UY )@@G@@@[@@@@. @C@@@@CHKHDR +0 . $H @A@@@@UZ )@@G@@ LA A0,CUREEL @^@@@@ A,U A0,1@A@@@@VA )@@G@@ SA A0,CUREEL @A@@@@ TE A0,REELNO VB )@@G@@ @^@@@@ ER ERR$@D@@@@. VC )@@G@@ WRONG REEL NO. @ @@@@ LA A0,HDR @A@@@@ VD )@@G@@ TE A0,('HDRO@@') @E@@@@ ER ERR$ VE )@@G@@ . $ HDR BLK MISSING @ @@@@ LA,U A0,9000 @A@@@@ VF )@@G@@ SA A0,BLKCNT @ @@@@ LA,U A0,HDPKT @^@@@@VG )@@G@@ ER IOW$@A@@@@ LA,S1 A0,HDPKT+3 @D@@@@VH )@@G@@ TNE,U A0,1 . $T AN EOF @ @@@@ J VI )@@G@@ *CHKHDR @^@@@@ ER ERR$@[@@@@. @C@@@@. VJ )@@G@@ ROUTINE TO CHK TAPE READ STATUS @[@@@@. @^@@@@CHKSTAT +0VK )@@G@@ . @E@@@@ LA,S1 A0,IOPKT+3 . $P GET STATUS VL )@@G@@ @A@@@@ JZ A0,*CHKSTAT @D@@@@ TE,U VM )@@G@@ A0,1 . $T AN EOF @C@@@@ ER ERR$ VN )@@G@@ . $ @ @@@@ DL A0,IOPKT @ @@@@ DSVO )@@G@@ A0,TEORF @ @@@@ LA,U A0,TEORF @^@@@@ ERVP )@@G@@ IOW$@D@@@@ TZ,S1 TEORF+3 . $T STATUS OK VQ )@@G@@@^@@@@ ER ERR$@ @@@@ LA A0,EORF @A@@@@VR )@@G@@ TNE A0,('EOFO@@') @ @@@@ J NXTFILE VS )@@G@@@A@@@@ TE A0,('EORO@@') @^@@@@ ER ERR$VT )@@G@@@A@@@@ LA A0,(0,FITEMPKT) @ @@@@ ER TSWAVU )@@G@@P$ @ @@@@ J READHDR0 @]@@@@$(4). @]@@@@DEVICEVV )@@G@@ +0@B@@@@TEORF I$OT 'D$FILE0',R$ 28,EORF @^@@@@EORF REVW )@@G@@S 28 @]@@@@CUREEL +0@^@@@@FITEMPKT RES 13 @A@@@@EQUIP VX )@@G@@ EQUF FITEMPKT+6,,S1 @F@@@@SWBUF +0 VY )@@G@@ . BUFFER ALTERNATE SWITCH @]@@@@BUFADDR +0@]@@@@ +0@]@@@@VZ )@@G@@NXTWRD +1@ @@@@BRECNT EQUF 0,X8,H1 @]@@@@NXTSECT +2@C@@@@WA )@@G@@IOPKT I$OD 'D$FILE0 ',R$ BLKSZ,0 2 @ @@@@PKTCODE EQUF WB )@@G@@ IOPKT @A@@@@IOBUF EQUF IOPKT+4,,H2 @ @@@@IODRUM EQWC )@@G@@UF IOPKT+5 @A@@@@IOLENG EQUF IOPKT+4,,H1 @C@@@@HDPKT WD )@@G@@ I$OD 'D$FILE0 ',R$ 56,HDR 0 @ @@@@HDRCODE EQUF HDPKWE )@@G@@T @E@@@@HDR 'HDRO@@' . WORD 0 OF HDR BLOCK WF )@@G@@@G@@@@RCDSZ1 +0,0 . BLOCK SZ, LARGEST RECORD SZ WG )@@G@@ @]@@@@ +0@]@@@@ +0@]@@@@DATE1 +0@A@@@@REELNOWH )@@G@@ EQUF DATE1+1,,H2 @]@@@@ +0@]@@@@ +0@^@@@@WI )@@G@@ RES 21 @^@@@@EOF 'EOFO@@' @E@@@@RCDSZ2 +0WJ )@@G@@,0 . WORD 0 OF EOF BLOCK @]@@@@BLKCNT +0@]@@@@WK )@@G@@RCDCNT +0@]@@@@DATE2 +0@]@@@@ +0@]@@@@EOFSECT +0@^@@@@WL )@@G@@ RES 21 @B@@@@ASGA '@ASG,A D$FILE0 . ' WM )@@G@@@ @@@@ASGCODE EQUF ASGA+2 @^@@@@NAMED2* 'D$FILE0' @^@@@@WN )@@G@@ 'D$FILE1' @^@@@@ 'D$FILE2' @^@@@@ 'DWO )@@G@@$FILE3' @^@@@@ 'D$FILE4' @^@@@@ 'D$FILE5' WP )@@G@@@^@@@@ 'D$FILE6' @^@@@@ 'D$FILE7' @^@@@@ WQ )@@G@@ 'D$FILE8' @^@@@@ 'D$FILE9' @^@@@@DFMSG1 ' BLOCKSWR )@@G@@, ' @ @@@@DFMSG2 ' RECORDS IN ' @]@@@@SAVEX11 +0@]@@@@FILECNWS )@@G@@T +0@#@@@@ END ___ 0,A0 . @ @@@@ WT )@@G@@ SZ SWBUF @^@@@@ LA,U A0,2@ @@@@ SAWU )@@G@@ A0,NXTSECT @E@@@@*[@@@@*SDFF*@#@@@@ AXR$ @[@@@@. WV )@@G@@@ @@@@. SNOFLAKE MACROS @[@@@@. @^@@@@$(DBK$$(0)) LIT.WW )@@G@@ @#@@@@XSVE$$(0) EQU 0 @]@@@@SA$$ RES 21.@#@@@@DSCR$$ RES 2. WX )@@G@@@]@@@@$(1) RES 0 @C@@@@ . CODE TO RESTORE REGISTERS UPON RETURN WY )@@G@@@^@@@@XRST$$ LX X11,SA$$. @#@@@@ DL 13,SA$$+1 @#@@@@ DL 15,SA$$WZ )@@G@@+3. @#@@@@ DL 26,SA$$+5. @#@@@@ LR,U R1,14. @#@@@@ LX X1,(1,XA )@@G@@66). @^@@@@ LX X2,(1,SA$$+7). @#@@@@ BT X1,0,*X2. @^@@@@ TNZXB )@@G@@,T1 0,X11. @]@@@@ J 1,X11. @^@@@@ AX,T1 X11,0,X11. @]@@@@XC )@@G@@ J 0,X11. @]@@@@XSAVE* PROC.@#@@@@* SX 11,SA$$. @#@@@@ DS 13,SA$XD )@@G@@$+1. @^@@@@ DS 15,SA$$+3. @^@@@@ DS 26,SA$$+5. @#@@@@XE )@@G@@ LR,U R1,14. @#@@@@ LX X1,(1,66). @^@@@@ LX X2,(1,SA$$+7). XF )@@G@@@#@@@@ BT X2,0,*X1. @]@@@@ END. @#@@@@XRETN* PROC *1. @A@@@@XG )@@G@@ DO XRETN(1)=1 , LA,U A0,1. @A@@@@ DO XRETN(1)=1 , J XRST$$. XH )@@G@@ @B@@@@ DO XRETN(1)>1 , LX,U X1,XRETN(1,1). @A@@@@ DO XRETN(1XI )@@G@@)>1 , SX X1,DSCR$$. @A@@@@ DO XRETN(1)>1 , LA A0,XRETN(1,2) @B@@@@XJ )@@G@@ DO XRETN(1)>1 , SA,H1 A0,DSCR$$+1. @B@@@@ DO XRETN(1)>1 , SA,H2XK )@@G@@ A0,DSCR$$+1. @A@@@@ DO XRETN(1)>1 , LX,U A0,DSCR$$. @ @@@@ DO XRXL )@@G@@ETN(1)>1 , J XRST$$. @]@@@@ END. @#@@@@XFRETN* PROC *0. @]@@@@XM )@@G@@ SZ A0. @#@@@@ J XRST$$. @]@@@@ END. @]@@@@ AXR$. XN )@@G@@@#@@@@$(4) LIT. @]@@@@$(1). @[@@@@. @C@@@@. SYXO )@@G@@MBOL TABLE ACCESS METHOD(SYM$AM) @[@@@@. @ @@@@PF FORM XP )@@G@@ 12,6,18 @C@@@@SYM$TW* . $H @[@@@@XQ )@@G@@. @A@@@@. CREATE AND EXPAND AN ENTRY@[@@@@. @C@@@@. XR )@@G@@ X10 = ADDR OF 8 WORDS SYM. TBL. PACKET@ @@@@. LMJ X11,SYM$TXS )@@G@@W @[@@@@. @C@@@@. A0 = ABS. ADDR OF 3 WORDS ENTRY XT )@@G@@@[@@@@. @D@@@@ SX,H2 X11,SAVEX11 . $P SAVE X11 XU )@@G@@@D@@@@ TNZ C14 . $T C14 EXIST @E@@@@ XV )@@G@@ SLJ SYMINIT . $A YES NO,SYMINIT @G@@@@ SLXW )@@G@@J CHKC14 . $P SEARCH FOR SYMBOLIC NAME @D@@@@ XX )@@G@@ TNZ X1 . $T NEW ENTRY @F@@@@ J XY )@@G@@ SYMCRT . $A YES,CREAT-ONE NO . @E@@@@ LA,S3 XZ )@@G@@ A0,5,X1 . $P GET 1ST MODE @E@@@@ LA,S3 A1,5YA )@@G@@,X10 . $P GET 2ND MODE @E@@@@ LSSL A1,18 YB )@@G@@ . $P FORM A MODES WORD@C@@@@ LDSL A0,18 YC )@@G@@ . $ @E@@@@ TNE A0,(+1,2) . $T SEE IF 1 & YD )@@G@@2 @E@@@@ J $+3 . $A YES,$+3 NO YE )@@G@@@E@@@@ TE A0,(+2,1) . $T SEE IF 2 & 1 @E@@@@YF )@@G@@ J DUPL . $J DUPLICATED SYMBOL@D@@@@ YG )@@G@@ LA,H1 A0,C15 . $P GET C15 @D@@@@ SA,H2 YH )@@G@@ A0,6,X1 . $P SET LINK @E@@@@ AU,U A0,3 YI )@@G@@ . $P UP C15 BY 3 @B@@@@ SA,H1 A1,C15 YJ )@@G@@ . @E@@@@ AA,H2 A0,C15 . $P NEW ENTRY ADDR YK )@@G@@@E@@@@ DL A2,5,X10 . $P GET 2 WORD ENTRY @D@@@@YL )@@G@@ DS A2,0,A0 . $P SAVE IT @F@@@@ LAYM )@@G@@ A2,7,X10 . $P GET THE THIRD WORD @D@@@@ SAYN )@@G@@ A2,2,A0 . $P SAVE IT @[@@@@. @ @@@@ J YO )@@G@@ 0,X11 @[@@@@. @^@@@@. CREATE A NEW ENTRY@[@@@@. YP )@@G@@@E@@@@SYMCRT LA,H1 A0,C14 . $P GET C14 LENGTH @D@@@@YQ )@@G@@ AU,U A0,8 . $P UP BY 8 @D@@@@ SAYR )@@G@@,H1 A1,C14 . $P SAVE IT @G@@@@ AA,H2 A0,CYS )@@G@@14 . $P COMPUTE NEW ENTRY ADDR (ABS.)@B@@@@ LX YT )@@G@@ X1,A0 . @E@@@@ LXI,U X1,1 . $PYU )@@G@@ MOVE ENTRY @B@@@@ LX X2,X10 . @B@@@@YV )@@G@@ LXI,U X2,1 . @E@@@@ LR,U R1,8YW )@@G@@ . $P SET MOVE COUNT @D@@@@ BT X1,,*X2 YX )@@G@@ . $P MOVE IT @G@@@@ AA,U A0,5 . $PYY )@@G@@ ABS. ADDR OF 3 WORDS ENTRY @D@@@@ J 0,X11 YZ )@@G@@ . $J RETURN @[@@@@. @C@@@@. PERFORM M$CORE FOR SYMBOL TBL ZA )@@G@@BUFFER @[@@@@. @C@@@@SYMINIT +0 . $HZB )@@G@@ @E@@@@ LA,H2 A0,LAST$D . $P GET DBANK ADDR ZC )@@G@@@^@@@@ AA,U A0,1@ @@@@ SA A0,C14 @[@@@@ZD )@@G@@. @ @@@@. C14 BUFFER SIZE @[@@@@. @B@@@@ AAZE )@@G@@,U A0,C14SZ. . @B@@@@ SA A0,LAST$D ZF )@@G@@ . @D@@@@ ER MCORE$ . $P M$CORE @E@@@@ZG )@@G@@ LA,H2 A0,LAST$I . $P GET IBANK ADDR @B@@@@ ZH )@@G@@ AA,U A0,1 . @B@@@@ SA A0,C15 ZI )@@G@@ . @[@@@@. @ @@@@. C15 BUFFER SIZE @[@@@@. ZJ )@@G@@@B@@@@ AA,U A0,C15SZ . @B@@@@ SA ZK )@@G@@ A0,LAST$I . @ @@@@ ER MCORE$ @I@@@@ ZL )@@G@@ LA,U A0,1 . $P SET NOT TO USE THE 1ST WORD OF C15 ZM )@@G@@ @B@@@@ SA,H1 A0,C15 . @ @@@@ J ZN )@@G@@ *SYMINIT @[@@@@. @C@@@@. SEARCH C14 TO MATCH A SYMBZO )@@G@@OL NAME @A@@@@. (I) X10 = ADDR OF NAME @B@@@@. (ZP )@@G@@O) X1 = ADDR OF TBL ENTRY @A@@@@. (O) X1 = 0 IF NOT FOUNDZQ )@@G@@@[@@@@. @C@@@@CHKC14 +0 . $H @D@@@@ZR )@@G@@ SZ X1 . $P SET X1=0 @D@@@@ TNZS )@@G@@Z,H1 C14 . $T ANY ENTRY @E@@@@ J *CHKZT )@@G@@C14 . $A YES NO,*CHKC14 @E@@@@ LX,H2 X1,C14 ZU )@@G@@ . $P GET C14 ADDR @]@@@@C14LOOP. @G@@@@ DL ZV )@@G@@ A0,,X10 . $P GET FIRST 2 WORDS OF THE NAME@C@@@@ DTZW )@@G@@E A0,,X1 . $T = @E@@@@ J NXTC14 ZX )@@G@@ . $A YES NO,NXTC14 @B@@@@ DL A0,2,X10 ZY )@@G@@ . @B@@@@ DTE A0,2,X1 . @B@@@@ J ZZ )@@G@@ NXTC14 . @B@@@@ LA A0,4,X10 AA )@@G@@ . @B@@@@ TE A0,4,X1 . @B@@@@ J AB )@@G@@ NXTC14 . @D@@@@ J *CHKC14 AC )@@G@@ . $J FOUND IT @C@@@@NXTC14 . $H AD )@@G@@@E@@@@ AX,U X1,8 . $P UP X1 BY 8 @F@@@@AE )@@G@@ LA,H2 A0,C14 . $P COMPUTE TBL END ADDR @C@@@@AF )@@G@@ AA,H1 A0,C14 . $ @E@@@@ TE AG )@@G@@ A0,X1 . $T END OF TBL @E@@@@ J C14LAH )@@G@@OOP . $A YES NO,C14LOOP @E@@@@ SZ X1 AI )@@G@@ . $P SET X1 = 0 @D@@@@ J *CHKC14 AJ )@@G@@ . $J *CHKC14 @[@@@@. @B@@@@. RANDOM LOCATE A SYM TBL ENAK )@@G@@TRY @[@@@@. @F@@@@. (I) X10 = ADDR OF A 5 WORDS PACKET CONAL )@@G@@TAINING THE NAME @D@@@@. (O) A0,H1 = ABS. ADDR OF 3 WORD OLD EAM )@@G@@NTRY @D@@@@. A0,H2 = ABS. ADDR OF 3 WORD NEW ENTRY @[@@@@AN )@@G@@. @B@@@@. EITHER OR BOTH MAY BE 0 @[@@@@. @E@@@@AO )@@G@@. A DEFINED ITEM WILL BE TREATED AS A NEW ITEM @[@@@@. AP )@@G@@@C@@@@SYM$TR* . $H @E@@@@ TNAQ )@@G@@Z C14 . $T C14 IN CORE @E@@@@ SLJ AR )@@G@@ GETC14 . $A YES NO,GETC14 @E@@@@ SLJ CHKCAS )@@G@@14 . $P SEARCH C14 @D@@@@ SZ A0 AT )@@G@@ . $P SET A0 @C@@@@ TNZ X1 . $TAU )@@G@@ FOUND@E@@@@ J 0,X11 . $A YES NO,RETURN AV )@@G@@@G@@@@ AX,U X1,5 . $P GET ADDR OF 3 WORDS ENTAW )@@G@@RY @E@@@@ LA A0,X1 . $P PUT IT IN A0 AX )@@G@@@D@@@@ LA,S3 A1,0,X1 . $P GET MODE @G@@@@ AY )@@G@@ TNE,U A1,2 . $T SEE IF NEW SCHEMA ONLY @E@@@@AZ )@@G@@ J 0,X11 . $A YES,RETURN NO @E@@@@ BA )@@G@@ TNE,U A1,3 . $T A DEFINED ITEM @E@@@@ J BB )@@G@@ 0,X11 . $A YES,RETURN NO @C@@@@ LSSL BC )@@G@@ A0,18 . $P SHIFT@G@@@@ TNZ,H2 1,X1 BD )@@G@@ . $T OLD SCHEMA ONLY(LINK=0) @E@@@@ J 0,X11 BE )@@G@@ . $A YES,RETURN NO @D@@@@ LA,H2 A1,1,X1 BF )@@G@@ . $P GET LINK @E@@@@ DSL A1,17 . $P SHIFTBG )@@G@@ REL TO A2 @C@@@@ SSL A2,19 . $ @E@@@@BH )@@G@@ LA,H2 A4,C14 . $P ASSUME C14 @E@@@@ BI )@@G@@ TNZ A1 . $T TOP BIT SET @E@@@@ LABJ )@@G@@,H2 A4,C15 . $A YES,ADD C15 @E@@@@ AA BK )@@G@@ A2,A4 . $ NO, ADD C14 @B@@@@ LA A1,ABL )@@G@@2 . @G@@@@ SSL A0,18 . $P PUT OBM )@@G@@LD ADDR IN H1,OF A0 @G@@@@ LSSL A1,18 . $PBN )@@G@@ PUT NEW ADDR IN H2 OF A0 @C@@@@ LDSL A0,18 BO )@@G@@ . $ @B@@@@ J 0,X11 . @[@@@@. BP )@@G@@@A@@@@. READ C14 & C15 FROM C$FILE@[@@@@. @C@@@@GETC14 +0BQ )@@G@@ . $H @D@@@@ SX X10,SAVEX1BR )@@G@@0 . $P SAVE X10 @D@@@@ SX X11,SAVEX11 . $BS )@@G@@P SAVE X11 @B@@@@ LX,U X10,(+14,020,,,,0) @D@@@@ BT )@@G@@ LMJ X11,CF$AM . $P READ C14 @B@@@@ LX,U BU )@@G@@ X10,(+15,020,,,,0) @E@@@@ LMJ X11,CF$AM BV )@@G@@ . $P READ C15 @E@@@@ LX X10,SAVEX10 . $P RESTOBW )@@G@@RE X10 @E@@@@ LX X11,SAVEX11 . $P RESTORE X11BX )@@G@@ @D@@@@ J *GETC14 . $J RETURN @]@@@@BY )@@G@@. @B@@@@. DUPLICATED SYMBOLS ENCOUNTERED @]@@@@. BZ )@@G@@ @C@@@@DUPL. . $H @E@@@@ CA )@@G@@ TZ FRSTDUP . $T FIRST TIME @E@@@@ J CB )@@G@@ DUPMSG . $A YES NO,DUPMSG @A@@@@ P$RINT CC )@@G@@ (PF 2,ML1,MSG1) @A@@@@ P$RINT (PF 1,ML1,MSG1) @A@@@@ CD )@@G@@ P$RINT (PF 1,ML2,MSG2) @A@@@@ P$RINT (PF 1,ML3,MSG3) CE )@@G@@@A@@@@ P$RINT (PF 1,ML4,MSG4) @A@@@@ P$RINT (PF CF )@@G@@1,ML5,MSG5) @A@@@@ P$RINT (PF 1,ML6,MSG6) @A@@@@ P$CG )@@G@@RINT (PF 1,ML7,MSG7) @A@@@@ P$RINT (PF 1,ML1,MSG1) @A@@@@CH )@@G@@ P$RINT (PF 1,ML1,MSG1) @E@@@@ SA A0,FRSTDUPCI )@@G@@ . $P SET FRST TIME SW @C@@@@DUPMSG. CJ )@@G@@ . $H @A@@@@ P$RINT (PF 2,ML1,MSG1) @ @@@@ E$CK )@@G@@DIT EDPKT @A@@@@ E$FD2 ('DUPLICATED') @^@@@@ CL )@@G@@ E$SKIP 1 @A@@@@ E$FD2 ('SYMBOL:') @^@@@@ CM )@@G@@ E$SKIP 1 @ @@@@ E$FD2 0,X10 @ @@@@ E$CN )@@G@@FD2 2,X10 @ @@@@ E$FD1 4,X10 @^@@@@ E$CO )@@G@@CHAR '(' @E@@@@ LA,U A1,PGMSW . $P GET SW(REORCP )@@G@@/ORED)@F@@@@ LA A2,NEWSEQ . $P GET NEW NAME SEQUCQ )@@G@@ENCE @C@@@@ AA,U A2,1 . $P +1 @D@@@@ CR )@@G@@ SA A2,NEWSEQ . $P SAVE IT @F@@@@ DSL CS )@@G@@ A2,36 . $P CONVERT TO OCTAL(FD) @B@@@@ DI,U CT )@@G@@ A2,8 . @B@@@@ OR,U A3,060 . CU )@@G@@@E@@@@ SA,S6 A4,NEWNAME,A1 . $P SAVE 6TH DIGIT @F@@@@CV )@@G@@ DSL A2,36 . $P CONVERT TO OCTAL(FD) @B@@@@CW )@@G@@ DI,U A2,8 . @B@@@@ OR,U A3,0CX )@@G@@60 . @E@@@@ SA,S5 A4,NEWNAME,A1 . $P SAVE CY )@@G@@5TH DIGIT @F@@@@ DSL A2,36 . $P CONVERT TO CZ )@@G@@OCTAL(FD) @B@@@@ DI,U A2,8 . @B@@@@ DA )@@G@@ OR,U A3,060 . @E@@@@ SA,S4 A4,NEWNAMEDB )@@G@@,A1 . $P SAVE 4TH DIGIT @E@@@@ LA A0,NEWNAME,A1 DC )@@G@@ . $P GET THE NEW NAME @D@@@@ SA A0,0,X10 . $PDD )@@G@@ CHANGE IT @G@@@@ DL A0,(' '). $P BLANK OUT DE )@@G@@NEXT 4 WORDS @B@@@@ DS A0,1,X10 . @B@@@@DF )@@G@@ DS A0,3,X10 . @F@@@@ E$FD2 0,X1DG )@@G@@0 . $P PRINT MODIFIED NAME @B@@@@ E$FD2 2,X1DH )@@G@@0 . @B@@@@ E$FD1 4,X10 . @B@@@@DI )@@G@@ E$CHAR ')' . @#@@@@ E$DITX @A@@@@DJ )@@G@@ P$RINT (PF 1,12,PRINT) @A@@@@ P$RINT (PF 1,ML1,DK )@@G@@MSG1) @E@@@@ LX X11,SAVEX11 . $P RESTORE X11 DL )@@G@@@F@@@@ J SYM$TW . $J REPROCESS THE NAME DM )@@G@@@]@@@@$(4). @]@@@@SAVEX10 +0@]@@@@SAVEX11 +0@]@@@@FRSTDUP +0DN )@@G@@@^@@@@NEWNAME '%0-000' @^@@@@ '%1-000' @E@@@@NEWSEQDO )@@G@@ +0 . $ NEW NAME SEQ NO. @G@@@@MSG1 '*DP )@@G@@*****************************************************' @ @@@@ML1 DQ )@@G@@ EQU $-MSG1 @E@@@@MSG2 'WARNING: DUPLICATED SYMBOL(S) EDR )@@G@@NCOUNTERED.' @ @@@@ML2 EQU $-MSG2 @E@@@@MSG3 ' DS )@@G@@ ANY REFERENCE TO THESE SYMBOLS IN THE EDITING' @ @@@@ML3 EQU DT )@@G@@ $-MSG3 @D@@@@MSG4 ' PROCESS MAY YIELD INCORRECT RESULTS.' DU )@@G@@@ @@@@ML4 EQU $-MSG4 @D@@@@MSG5 ' SPECIAL ATTENTIONDV )@@G@@ MUST BE GIVEN WHEN' @ @@@@ML5 EQU $-MSG5 @E@@@@MSG6 DW )@@G@@ ' THE RECORDS ASSOCIATED WITH THESE SYMBOLS' @ @@@@ML6 EQDX )@@G@@U $-MSG6 @D@@@@MSG7 ' ARE TRANSFORMED BY THE ART PROCESSDY )@@G@@.' @ @@@@ML7 EQU $-MSG7 @]@@@@$(1). @B@@@@SYMTRSDZ )@@G@@* XSAVE . $H SNO READ ENTRY @E@@@@ LX,H2 A0,1,X11 EA )@@G@@ . $P GET IND ADDR? @B@@@@ L,U A1,6 EB )@@G@@ . @F@@@@ S,H2 A1,1,A0 . $P LENGTH OF STRING EC )@@G@@= 6 @C@@@@ LA,H2 A0,,A0 . $P @A@@@@ ED )@@G@@ SA A0,INDADDR @F@@@@ LX,H2 X10,,X11 EE )@@G@@ . $P GET ADDR OF THE NAME @C@@@@ LX,H2 X10,,X10 EF )@@G@@ . $ @F@@@@ LMJ X11,SYM$TR . $P SEARCH FOR EG )@@G@@THE NAME @D@@@@ SA A0,ADDR . $P SAVE IT EH )@@G@@@A@@@@ LX X1,INDADDR @D@@@@ SZ 0,X1EI )@@G@@ . $P SET TO 0 @E@@@@ LA,S4 A0,,A0 EJ )@@G@@ . $P GET SYM TYPE @B@@@@ LA,U A1,1 . EK )@@G@@@E@@@@ TNE,U A0,025 . $T RESERVED TYPE @D@@@@EL )@@G@@ SA A1,,X1 . $P SET TO 1 @ @@@@ XREM )@@G@@ETN ADDR,ADDRL @E@@@@SYMTWS* XSAVE . $H SNO CEN )@@G@@REAT ENTRY @F@@@@ LX,H2 X10,,X11 . $P GET ADDR OFEO )@@G@@ THE NAME @C@@@@ LX,H2 X10,,X10 . $ @F@@@@EP )@@G@@ LMJ X11,SYM$TW . $P SEARCH FOR THE NAME @D@@@@EQ )@@G@@ SA A0,ADDR . $P SAVE IT @ @@@@ XRER )@@G@@ETN ADDR,ADDRL @]@@@@$(4). @]@@@@INDADDR +0@]@@@@ADDR +0ES )@@G@@@]@@@@ADDRL +6@#@@@@ END ___STORE X10 @E@@@@ ET )@@G@@ LX X11,SAVEX11 . $P RESTORE X11 @D@@@@ J EU )@@G@@*[@@@@*SDFF*@[@@@@. @A@@@@. EDIT$ WORKER ROUTINE @[@@@@EV )@@G@@. @^@@@@. 1. T - TOP @^@@@@. 2. B - BOTTOM @^@@@@EW )@@G@@. 3. M - MOVE @^@@@@. 4. DITTO @^@@@@. 5.EX )@@G@@ D - DELETE @#@@@@. 6. # @^@@@@. 7. EXIT @#@@@@EY )@@G@@. 8. END @^@@@@. 9. OMIT @ @@@@. 10. #(VAEZ )@@G@@RIABLE) @^@@@@. 11. N OR + @#@@@@. 12. - @#@@@@FA )@@G@@. 13. ON @^@@@@. 14. OFF @^@@@@. 15. USE FB )@@G@@ @[@@@@. @#@@@@ AXR$ @#@@@@$(4) LIT. @]@@@@FC )@@G@@$(1). @E@@@@SAVEX11 +0 . RETURN ADDRESSFD )@@G@@ @C@@@@EDIT$WK* . $H @E@@@@ FE )@@G@@ SZ STATUS . $P RESET STATUS @G@@@@ SXFF )@@G@@,H2 X11,SAVEX11 . $P SAVE X11 @E@@@@ FG )@@G@@ LA A0,TYPE . $P GET EDIT TYPE @H@@@@ LAFH )@@G@@,H2 A0,TYPETBL,A0 . $P GET SUB. ADDR @B@@@@FI )@@G@@ J 0,A0 . @]@@@@ERROR. @E@@@@ FJ )@@G@@ ER ERR$ . $ INTERNAL ERROR @[@@@@. @^@@@@FK )@@G@@. DELETE COMMAND@[@@@@. @C@@@@DELETE FL )@@G@@ . $H @E@@@@ SLJ BLDPKT . $P BUILDFM )@@G@@ TF$AM PKT @C@@@@ SZ TFPKT . $P @B@@@@FN )@@G@@ SZ TFPKT+2 . @E@@@@ LX,U X10,FO )@@G@@TFPKT . $P GET PKT ADDR @E@@@@ LMJ X11,TF$DLTFP )@@G@@ . $P PERFORM DELETE @F@@@@ LA A0,NEWLN FQ )@@G@@ . $P GET NEW CURRENT LINE @D@@@@ SA A0,LN FR )@@G@@ . $P SAVE IT @E@@@@ TZ TFSTAT . $T CHK TFS )@@G@@FSTAT @B@@@@ ER ERR$ . @D@@@@ FT )@@G@@ SZ RDA . $P RESET RDA @D@@@@ J FU )@@G@@ *SAVEX11 . $J RETURN @[@@@@. @^@@@@. MOVE COMFV )@@G@@MAND @[@@@@. @C@@@@MOVE . $H FW )@@G@@@E@@@@ SLJ BLDPKT . $P BUILD TF$AM PKT @B@@@@FX )@@G@@ SZ TFPKT . @E@@@@ LA A0,LFY )@@G@@N . $P SET CURRENT LN @B@@@@ SA A0,CURLN FZ )@@G@@ . @B@@@@ SZ TFSTAT . @E@@@@ GA )@@G@@ LX,U X10,TFPKT . $P GET PKT ADDR @B@@@@ LMGB )@@G@@J X11,TF$MVE . @B@@@@ TZ TFSTAT GC )@@G@@ . @B@@@@ ER ERR$ . @E@@@@ LAGD )@@G@@ A0,NEWLN . $P GET NEW LN @B@@@@ SA GE )@@G@@ A0,LN . @B@@@@ J *SAVEX11 . GF )@@G@@@[@@@@. @^@@@@. DITTO COMMAND @[@@@@. @C@@@@DITTO GG )@@G@@ . $H @E@@@@ SLJ BLDPKT GH )@@G@@ . $P BUILD TF$AM PKT @B@@@@ SZ TFPKT GI )@@G@@ . @E@@@@ LA A0,LN . $P GET CURRENT LN GJ )@@G@@@B@@@@ SA A0,CURLN . @B@@@@ SZ GK )@@G@@ TFSTAT . @E@@@@ LX,U X10,TFPKT . $PGL )@@G@@ GET PKT ADDR @B@@@@ LMJ X11,TF$CPY . @B@@@@GM )@@G@@ TZ TFSTAT . @E@@@@ ER ERR$GN )@@G@@ . $. INTERNAL ERROR @B@@@@ LA A0,NEWLN GO )@@G@@ . @B@@@@ SA A0,LN . @B@@@@ GP )@@G@@ J *SAVEX11 . @[@@@@. @^@@@@. EXIT COMGQ )@@G@@MAND @[@@@@. @C@@@@EXITED* . $H GR )@@G@@@D@@@@ TZ ROPT . $T READ ONLY @E@@@@ GS )@@G@@ J OMIT . $A YES,OMIT NO @E@@@@ LMGT )@@G@@J X11,BLDD$F . $P REBUILD D$FILE @G@@@@ L,U GU )@@G@@ X10,KEYPKT . ADDRESS OF EDITOR KEY FILE PKT @E@@@@ TZGV )@@G@@ KAFIRST . SKIP IF KEYFILE OK @F@@@@ LMJ GW )@@G@@ X11,KF$AMF . FLUSH KEY FILE BUFFERS @H@@@@ P$RINT GX )@@G@@ (PF 1,3,EXITMSG) . $P PRINT END MSG @B@@@@ GY )@@G@@ J STOPALL . @]@@@@$(4). @ @@@@EXITMSG 'EGZ )@@G@@DITOR EXITED' @]@@@@$(1). @[@@@@. @A@@@@. #(VARIABHA )@@G@@LE) COMMAND @[@@@@. @]@@@@EDGOTOX. @E@@@@ LA HB )@@G@@ A0,SAVEX11 . $P GET RETURN ADDR @G@@@@ SA A0,GHC )@@G@@ETVX11 . $P SAVE IT FOR GETVARX RTN @ @@@@ SLJ HD )@@G@@ GETVARX @I@@@@ LA,S5 A0,VARSW HE )@@G@@ . $P GET @F@@@@ TE,U A0,2 HF )@@G@@ . $T PIC 9 OR PIC 9 COMP @ @@@@ J ERROR1 @E@@@@HG )@@G@@ LA A0,VARXVAL . $P GET THE VALUE @B@@@@ HH )@@G@@ J EDGOXIN . @[@@@@. @[@@@@. @^@@@@. HI )@@G@@ # COMMAND @[@@@@. @C@@@@EDGOTO HJ )@@G@@ . $H @E@@@@ SLJ GETD1 . $P GET LINE # HK )@@G@@(FD) @]@@@@EDGOXIN. @E@@@@ . $PHL )@@G@@ CONVERT TO BINARY@E@@@@ LA A1,RECNMC . $P GET LHM )@@G@@AST LINE # @E@@@@ TLE A1,A0 . $P CHK IF OVERHN )@@G@@ EOF @B@@@@ J HITEOF . @E@@@@ SAHO )@@G@@ A0,LN . $P SAVE THE LN @D@@@@ J HP )@@G@@ *SAVEX11 . $J RETURN @C@@@@SENDEOF* +0 HQ )@@G@@ . $H @C@@@@ E$DIT EDPKT HR )@@G@@@C@@@@ E$FD1 ('EOF:') @C@@@@ E$HS )@@G@@DECV RECNMC @#@@@@ E$DITX @E@@@@ HT )@@G@@ LA,U A0,1 . $P SET EOF STATUS @A@@@@ SAHU )@@G@@ A0,STATUS @B@@@@ LA A0,(PF 1,14,PRINT) HV )@@G@@@E@@@@ TNZ PERFSW . $T PERFORM MODE @ @@@@HW )@@G@@ ER PRINT$ @ @@@@ J *SENDEOF @[@@@@HX )@@G@@. @]@@@@HITEOF. @ @@@@ SLJ SENDEOF @^@@@@ HY )@@G@@ SZ LN @ @@@@ J *SAVEX11 @[@@@@. @ @@@@HZ )@@G@@. TOP COMMAND @[@@@@. @C@@@@TOP IA )@@G@@ . $H @I@@@@ SZ LN IB )@@G@@ . $P SET @D@@@@ J *SAVIC )@@G@@EX11 . $J RETURN @[@@@@. @^@@@@. BOTTOM COMMANDID )@@G@@@[@@@@. @C@@@@BOTTOM . $H @E@@@@IE )@@G@@ LA A0,RECNMC . $P GET LAST LINE # @E@@@@ IF )@@G@@ SA A0,LN . $P SET LN = LAST @D@@@@ J IG )@@G@@ *SAVEX11 . $J RETURN @[@@@@. @^@@@@. ENIH )@@G@@D AND OMIT @[@@@@. @C@@@@ENDED . $HII )@@G@@ @C@@@@OMIT . $H @E@@@@ IJ )@@G@@ P$RINT (PF 1,4,ENDMSG) @]@@@@STOPALL. IK )@@G@@@A@@@@ LA A0,IINAME @^@@@@ ER INT$IL )@@G@@@ @@@@ ER EXIT$ @]@@@@$(4). @A@@@@ENDMSG 'NIM )@@G@@O CORRECTION APPLIED' @]@@@@$(1). @[@@@@. @^@@@@. N IN )@@G@@OR + COMMAND@[@@@@. @E@@@@SKIPF . $HIO )@@G@@ SKIP FORWARD @E@@@@ SLJ GETD1 . $P GET SIP )@@G@@KIP COUNT @F@@@@ AA A0,LN . $P COMPUTE NEWIQ )@@G@@ LINE NUM. @F@@@@ J EDGOTO+1 . $P PERFORM IT IR )@@G@@AS A GOTO @[@@@@. @^@@@@. - COMMAND @[@@@@. @E@@@@IS )@@G@@SKIPB . $H SKIP BACKWARD @E@@@@ IT )@@G@@ SLJ GETD1 . $P GET SKIPB COUNT @E@@@@ LAIU )@@G@@ A1,LN . $P GET CURRENT LN @E@@@@ ANA IV )@@G@@ A1,A0 . $P COMPUTE NEW LN @D@@@@ SA A1,LIW )@@G@@N . $P SAVE IT @I@@@@ TP A1 IX )@@G@@ . $T IS @I@@@@ SZ IY )@@G@@ LN . $P ZER @D@@@@IZ )@@G@@ J *SAVEX11 . $J RETURN @[@@@@. @A@@@@JA )@@G@@. SUBROUTINE TO GET INDATA1 @[@@@@. @C@@@@GETD1 +0 JB )@@G@@ . $H @G@@@@ LA,U A0,3 JC )@@G@@ . $P PKT LENG MUST BE 4 OR GREATER@C@@@@ TG A0,LENG JD )@@G@@ . $T IS IT@I@@@@ ER ERR$ . $ JE )@@G@@ INTERNAL @B@@@@ DL A0,INDATA1JF )@@G@@ . @G@@@@ SLJ FD$BIN . $P CONVERT 1STJG )@@G@@ DATA TO BIN @D@@@@ J *GETD1 . $J RETURJH )@@G@@N @[@@@@. @A@@@@. SUBROUTINE TO GET INDATA2 @[@@@@. JI )@@G@@@C@@@@GETD2 +0 . $H @B@@@@ LAJJ )@@G@@,U A0,3 . @B@@@@ TG A0,LENG JK )@@G@@ . @E@@@@ ER ERR$ . $ INTERNAL ERROR JL )@@G@@@F@@@@ LA A0,(-1) . $P SET A0 TO NEGATIVE JM )@@G@@@F@@@@ LA,U A1,6 . $P PKT MUST HAVE 6 WORDS JN )@@G@@@B@@@@ TE A1,LENG . @C@@@@ J JO )@@G@@ *GETD2 . $ @B@@@@ DL A0,INDATA2 JP )@@G@@ . @B@@@@ SLJ FD$BIN . @B@@@@ J JQ )@@G@@ *GETD2 . @[@@@@. @A@@@@. BUILD TF$AM PKJR )@@G@@T FOR D NUM1@D@@@@. D NUM1 NUM2 JS )@@G@@@C@@@@. DITTO NUM1@E@@@@. JT )@@G@@ DITTO NUM1 NUM2 @C@@@@. JU )@@G@@ M NUM1 @D@@@@. JV )@@G@@ M NUM1 NUM2 @C@@@@BLDPKT +0 . $H JW )@@G@@@B@@@@ SLJ GETD1 . @D@@@@ JZ JX )@@G@@ A0,ERROR2 . $P GET NUM1 @E@@@@ LA A4,A0 JY )@@G@@ . $P SAVE IT IN A4 @D@@@@ SLJ GETD2 JZ )@@G@@ . $P GET NUM2 @E@@@@ JN A0,NONUM2 . $T CHK IKA )@@G@@F NUM2 IN @F@@@@ TLE A0,A4 . $T CHK NUM2 > KB )@@G@@OR = NUM1 @B@@@@ J ERROR2 . @B@@@@ KC )@@G@@ SA A4,NUM1 . @B@@@@ SA A0,NUM2 KD )@@G@@ . @G@@@@CHKRNG. . $P CHECK IF(NUKE )@@G@@M1 OR NUM2) > MAX.@B@@@@ LA A0,RECNMC . @D@@@@KF )@@G@@ TLE A0,NUM1 . $T >=NUM1 @B@@@@ J KG )@@G@@ HITEOF . @D@@@@ TLE A0,NUM2 KH )@@G@@ . $T >=NUM2 @B@@@@ SLJ SENDEOF . @B@@@@KI )@@G@@ LA A0,RECNMC . @D@@@@ TLE A0,NKJ )@@G@@UM2 . $T >=NUM2 @B@@@@ SA A0,NUM2 KK )@@G@@ . @ @@@@ J *BLDPKT @[@@@@. @^@@@@. NUKL )@@G@@M1 IN ONLY @[@@@@. @]@@@@NONUM2. @B@@@@ SA A4,NKM )@@G@@UM1 . @B@@@@ SA A4,NUM2 . @B@@@@KN )@@G@@ LA,U A0,5 . @E@@@@ TE A0,TKO )@@G@@YPE . $T CHK IF DELETE @E@@@@ J CHKRNG KP )@@G@@ . $A YES NO,CHKRNG @E@@@@ LA A0,LN KQ )@@G@@ . $P GET CURRENT LN @C@@@@ JZ A0,ERROR3 . --KR )@@G@@------@B@@@@ SA A0,NUM1 . @B@@@@ AAKS )@@G@@ A0,NUM2 . @H@@@@ ANA,U KT )@@G@@ A0,1 . @B@@@@ SA A0,NKU )@@G@@UM2 . @B@@@@ J CHKRNG . @[@@@@KV )@@G@@. @C@@@@. SPECIAL MODES SWITCHS ON-OFF COMMAND @[@@@@. KW )@@G@@@]@@@@ONMODE. @E@@@@ SLJ GETMODE . $P GET MKX )@@G@@ODE SW @E@@@@ LA,U A0,1 . $P SET IT TO 1KY )@@G@@ @I@@@@ LX,H2 X2,,X1 KZ )@@G@@ . $P GET @B@@@@ SA A0,,X2 . LA )@@G@@@I@@@@ LA,H1 A0,,X1 LB )@@G@@ . $P GET @I@@@@ TZ A0 LC )@@G@@ . $T ANY @E@@@@ SLJ 0,A0 LD )@@G@@ . $P PERFORM SPEC RTN @ @@@@ J *SAVEX11 @]@@@@LE )@@G@@OFFMODE. @E@@@@ SLJ GETMODE . $P GET MODE SWLF )@@G@@ @E@@@@ LX X1,,X1 . $P GET OPT WORD ADDRLG )@@G@@@E@@@@ SZ 0,X1 . $P SET IT TO 0 @ @@@@LH )@@G@@ J *SAVEX11 @[@@@@. @C@@@@GETMODE +0 LI )@@G@@ . $H @E@@@@ LA A0,2,X10 . $PLJ )@@G@@ GET MODE WORD @I@@@@ LX X1,(2,MODES-2) LK )@@G@@ . $P GET @E@@@@ LR R1,MODECNTLL )@@G@@ . $P GET MODES COUNT @B@@@@ SE A0,2,*X1 LM )@@G@@ . @ @@@@ J ERROR4 @D@@@@ AX,U X1,1LN )@@G@@ . $P ADJ ADDR @D@@@@ J *GETMODE LO )@@G@@ . $J RETURN @[@@@@. @E@@@@USE. LP )@@G@@ . $H USE NAME1 NAME2 @E@@@@ SX X10,SAVEX10 . $PLQ )@@G@@ SAVE USE PKT ADDR@E@@@@ AX,U X10,7 . $P POINTLR )@@G@@ TO NAME2 @E@@@@ LMJ X11,SYM$TR . $P CHK IN SYM LS )@@G@@TBL @F@@@@ JZ A0,USERR . $J USE NAME2 NOT EXILT )@@G@@ST @E@@@@ DSL A0,18 . $P CHK NEW/OLD NAME LU )@@G@@@D@@@@ TNZ A0 . $T OLD NAME @E@@@@ LV )@@G@@ LDSL A0,18 . $P USE NEW NAME @G@@@@ SALW )@@G@@ A0,NAME2PKT . $P SAVE ADDR OF NAME2 ADDR @E@@@@ LX )@@G@@ LX X10,SAVEX10 . $P GET PKT ADDR @E@@@@ AXLY )@@G@@,U X10,2 . $P POINT TO NAME1 @E@@@@ LMJ LZ )@@G@@ X11,SYM$TR . $T CHK SYM TBL @D@@@@ JZ A0,NMA )@@G@@EWUSE . $J NEW NAME1 @E@@@@ DSL A0,18 MB )@@G@@ . $T CHK NEW/OLD ENTRY@D@@@@ TNZ A0 . $TMC )@@G@@ OLD ONE @E@@@@ LDSL A0,18 . $P USE NEW ONEMD )@@G@@ @E@@@@ LXI,U A0,1 . $P SET UP TO BT ME )@@G@@@E@@@@ LX X1,NAME2PKT . $P ADDR OF NAME2 @B@@@@MF )@@G@@ LXI,U X1,1 . @E@@@@ LR,U R1,3MG )@@G@@ . $P MOVE 3 WORDS @B@@@@ BT A0,,*X1 MH )@@G@@ . @D@@@@ J *SAVEX11 . $P RETURN MI )@@G@@@D@@@@NEWUSE. . $H NAME1 NEW @E@@@@ MJ )@@G@@ LX X1,SAVEX10 . $P GET USE PKT ADDR @E@@@@ AXMK )@@G@@,U X1,2 . $P NAME1 ADDR @C@@@@ LXI,U ML )@@G@@ X1,1 . $ @E@@@@ LX X2,(1,SYMPKT) MM )@@G@@ . $P NEW PKT ADDR @E@@@@ LR,U R1,5 . $PMN )@@G@@ MOVE 5 WORDS @B@@@@ BT X2,,*X1 . @F@@@@MO )@@G@@ LX X1,NAME2PKT . $P GET NAME2 PKT ADDR @B@@@@MP )@@G@@ LXI,U X1,1 . @E@@@@ LR,U R1,3MQ )@@G@@ . $P MOVE 3 WORDS @B@@@@ BT X2,,*X1 MR )@@G@@ . @E@@@@ LX,U X10,SYMPKT . $P NEW PKT ADDMS )@@G@@R @D@@@@ LMJ X11,SYM$TW . $P CREAT TBL @D@@@@MT )@@G@@ J *SAVEX11 . $J RETURN @F@@@@USERR. MU )@@G@@ . $H USE NAME2 NOT EXIST @B@@@@ J MV )@@G@@ ERROR5 . @]@@@@$(4). @^@@@@SYMPKT RES MW )@@G@@ 8 @]@@@@SAVEX10 +0@]@@@@NAME2PKT +0@]@@@@MODES. @^@@@@ MX )@@G@@ 'BRIEF' @#@@@@ +BOPT @^@@@@ 'BATCH' MY )@@G@@@#@@@@ +POPT @#@@@@ 'LIST' @#@@@@ +LOPT MZ )@@G@@@^@@@@ 'DEBUG' @^@@@@ +DEBUG$,TOPT @#@@@@ NA )@@G@@ 'READ' @#@@@@ +ROPT @^@@@@ 'MONITO' @#@@@@NB )@@G@@ +MOPT @ @@@@MODECNT +(MODECNT-MODES)/2 @]@@@@$(1). NC )@@G@@@]@@@@$(4). @ @@@@TYPE EQUF 0,X10,S3 @ @@@@INDATA1 EQND )@@G@@UF 2,X10 @ @@@@INDATA2 EQUF 4,X10 @ @@@@LENG EQNE )@@G@@UF 0,X10,T1 @^@@@@TYPETBL +0,ERROR @#@@@@ +TOP NF )@@G@@@^@@@@ +BOTTOM @#@@@@ +MOVE @#@@@@ +DNG )@@G@@ITTO @^@@@@ +DELETE @^@@@@ +EDGOTO @^@@@@NH )@@G@@ +EXITED @#@@@@ +ENDED @#@@@@ +OMIT NI )@@G@@@^@@@@ +EDGOTOX @#@@@@ +SKIPF @#@@@@ +SNJ )@@G@@KIPB @^@@@@ +ONMODE @^@@@@ +OFFMODE @#@@@@NK )@@G@@ +USE @ @@@@PF FORM 12,6,18 @]@@@@TFPKT +0NL )@@G@@@]@@@@ +0@]@@@@ +0@]@@@@ +0@]@@@@ +0NM )@@G@@@ @@@@NUM1 EQUF TFPKT+3 @ @@@@NUM2 EQUF TFPKT+4 NN )@@G@@@ @@@@NEWLN EQUF TFPKT+1 @ @@@@CURLN EQUF TFPKT NO )@@G@@@A@@@@TFSTAT EQUF TFPKT+2,,T1 @]@@@@$(1). @[@@@@. NP )@@G@@@A@@@@. ERROR PRINTING SECTION @A@@@@. STATNQ )@@G@@US: 1 - 5 @[@@@@. @]@@@@ERROR1 . @^@@@@ LA,U A0,1NR )@@G@@@ @@@@ J PRTERR @]@@@@ERROR2. @^@@@@ LANS )@@G@@,U A0,2@ @@@@ J PRTERR @]@@@@ERROR3. @^@@@@NT )@@G@@ LA,U A0,3@ @@@@ J PRTERR @]@@@@ERROR4NU )@@G@@. @^@@@@ LA,U A0,4@ @@@@ J PRTERR NV )@@G@@@]@@@@ERROR5. @^@@@@ LA,U A0,5@ @@@@ J NW )@@G@@ PRTERR @]@@@@PRTERR. @A@@@@ LA A1,STATCODE NX )@@G@@@A@@@@ SA A1,STATUS @A@@@@ LA A1,FNY )@@G@@ATCODE @ @@@@ SA A1,FATAL @A@@@@ LX NZ )@@G@@ X2,MSGADDR @E@@@@ LA A0,,X2 . $P GET POA )@@G@@RINT PKT @E@@@@ TZ PERFSW . $T PERFORM MODOB )@@G@@E @C@@@@ TZ FATAL . $T FATAL@ @@@@ OC )@@G@@ ER PRINT$ @ @@@@ J *SAVEX11 @]@@@@$(4). OD )@@G@@ @A@@@@ERMSG5 'USE NAME2 NOT DEFINDED' @ @@@@ML5 EQU OE )@@G@@ $-ERMSG5 @C@@@@ERMSG1 'LINE NUMBER CAN NOT BE EVALUATED' @ @@@@OF )@@G@@ML1 EQU $-ERMSG1 @ @@@@ERMSG4 'UNDEFINED MODE' @ @@@@OG )@@G@@ML4 EQU $-ERMSG4 @B@@@@ERMSG3 'ILLEGAL COMMAND AT LINE 0OH )@@G@@' @ @@@@ML3 EQU $-ERMSG3 @A@@@@ERMSG2 'ERROR IN LINEOI )@@G@@ NUMBER(S)' @ @@@@ML2 EQU $-ERMSG2 @]@@@@ERRTBL. @ @@@@OJ )@@G@@TBL FORM 12,6,18 @C@@@@ TBL 2,1,(PF 1,ML1,EROK )@@G@@MSG1) @C@@@@ TBL 3,1,(PF 1,ML2,ERMSG2) @C@@@@OL )@@G@@ TBL 4,1,(PF 1,ML3,ERMSG3) @C@@@@ TBL OM )@@G@@ 5,0,(PF 1,ML4,ERMSG4) @C@@@@ TBL 8,0,(PF 1,ML5,ERON )@@G@@MSG5) @A@@@@STATCODE EQUF ERRTBL-1,A0,T1 @A@@@@MSGADDR EQOO )@@G@@UF ERRTBL-1,A0,H2 @A@@@@FATCODE EQUF ERRTBL-1,A0,S3 @#@@@@OP )@@G@@ END ___ . $J USE NAME2 NOT EXIST @E@@@@ DSOQ )@@G@@L A0,18 . $P CHK NEW/OLD NAME *[@@@@*SDFF*@[@@@@. OR )@@G@@@D@@@@. SUMMARY OF EDITOR STATUS CODES @[@@@@. OS )@@G@@@B@@@@. * INDICATES FATAL ERRORS, AND @E@@@@. OT )@@G@@ 1. EDITOR WILL TERMINATED IN BATCH MODE @D@@@@. 2. POU )@@G@@ERFORM WILL BE TERMINATED @[@@@@. @[@@@@. @A@@@@. EROV )@@G@@ROR(S) FROM MAIN @[@@@@. @A@@@@. 91* 'NO INPUT FILE SPECIOW )@@G@@FIED' @^@@@@. 92* 'SYNTAX ERROR'@C@@@@. 90* 'INVALID COMMAND FOROX )@@G@@ NON-PROC MODE' @[@@@@. @A@@@@. ERROR(S) FROM RDCTBL OY )@@G@@@[@@@@. @A@@@@. 93* 'NO C$FILE AVAILABLE' @[@@@@. @A@@@@OZ )@@G@@. ERROR(S) FROM LOCATE @[@@@@. @^@@@@. 6 'NO FINDPA )@@G@@' @E@@@@. 7* 'NOT AN OBJECT RECORD OR NOT A RECORD NAME' PB )@@G@@@C@@@@. 11* 'VARIABLE MUST BE A PIC 9 COMP ITEM' @A@@@@. 13 'DPC )@@G@@BP=0 NOT ALLOWED' @B@@@@. 15 'END OF SET OR AN EMPTY SET' PD )@@G@@@ @@@@. 16* 'NOT A SET NAME' @D@@@@. 17 'BAD SET POINTER IN PE )@@G@@THE CURRENT RECORD' @A@@@@. 18 'NO CURRENCY FOR THE SET' @C@@@@PF )@@G@@. 19 'NEXT SET MEMBER NOT IN D$FILE' @E@@@@. 20 'CURRENTPG )@@G@@ SET MEMBER(MANUAL) NO LONGER IN D$FILE' @A@@@@. 9 'CURRENT LINE PH )@@G@@IS 0' @C@@@@. 10 'CURRENT LINE IS A CONTROL LINE' @[@@@@PI )@@G@@. @A@@@@. ERROR(S) FROM EDIT$WK @[@@@@. @B@@@@. 1 PJ )@@G@@ 'EOF(END OF FILE ENCOUNTERED)' @C@@@@. 2* 'LINE NUMBER CAN NOTPK )@@G@@ BE EVALUATED' @ @@@@. 5 'UNDEFINED MODE' @B@@@@. 4* 'IPL )@@G@@LLEGAL COMMAND AT LINE 0' @A@@@@. 3* 'ERROR IN LINE NUMBER(S)' PM )@@G@@@A@@@@. 8 'USE NAME2 NOT DEFINDED' @[@@@@. @A@@@@. ERPN )@@G@@ROR(S) FROM CHANGE @[@@@@. @^@@@@. 21 'NO FIND' @A@@@@PO )@@G@@. 22* 'ERROR IN LINE NUMBER' @B@@@@. 23* 'ILLEGAL COMMAND AT PP )@@G@@LINE 0' @[@@@@. @ @@@@. ERROR(S) FROM LET @[@@@@. PQ )@@G@@@C@@@@. 24* 'AN OLD ITEM CAN NOT BE MODIFIED' @E@@@@. 25 'SPR )@@G@@YMBOL FOR ARRAY IS ALREADY DEFINED - IGNORED' @C@@@@. 26* 'ARITHMAPS )@@G@@TIC OPR ERROR - OVERFLOW' @C@@@@. 27* 'ARITHMATIC OPR ERROR - DIPT )@@G@@VIDED BY 0 '@D@@@@. 28* 'INCOMPATABLE VARIABLE TYPES IN AN EQUATE' PU )@@G@@@C@@@@. 30* 'INVALID SET LINKAGE FOR THE SET' @A@@@@. 31* 'IPV )@@G@@LLEGAL ITEM TO MODIFY' @E@@@@. 33* 'NOT A RECORD NAME OR LINE # CANPW )@@G@@ NOT BE EVALUATED'@C@@@@. 34* 'LINE NUMBER EXCEEDS MAX. OR 0' PX )@@G@@@C@@@@. 35* 'RECORD HAS NO MANUAL CONTROL WORD' @E@@@@. 36* 'CPY )@@G@@URRENT OF THE RECORD NO LONGER IN D$FILE' @A@@@@. 37* 'UNDEFINPZ )@@G@@ED SET NAME' @A@@@@. 38* 'UNDEFINED RECORD NAME' @A@@@@. 40* QA )@@G@@ 'NO CURRENT OF THE RECORD'@E@@@@. 41 'RECORD NOT PARTICIPATING QB )@@G@@IN THE MANUAL SET' @C@@@@. 42* 'RECORD AND SET ARE NOT RELATED'QC )@@G@@ @B@@@@. 43* 'A BAD OCTAL NUMBER ENTERED' @C@@@@. 44* 'IQD )@@G@@NDEX VALUE CAN NOT BE EVALUATED' @B@@@@. 45* 'PIC X ITEM USED AS QE )@@G@@AN INDEX' @C@@@@. 46* 'AN ITEM IS INCORRECTLY INDEXED' @C@@@@QF )@@G@@. 32* 'UNDEFINED ITEM OR NO CURRENT VALUE' @C@@@@. 47* 'DEPENDIQG )@@G@@NG ON VALUE OUT OF RANGE' @C@@@@. 48* 'RECORD LENGTH CAN NOT BE QH )@@G@@CHANGED' ___^9GDDIC*)D1PD(]C(M^[ F[#C( C-N^[HCDS 0)D9M^@0^8)^@)@G@@_@QI )@@G@@ 0)AS5 K)^@)^@)^9MC(#D9MC))D[[ES)D1J^[HCDIE([D))CTJD1OELJD))E9JEL^^8)^@)QJ )@@G@@*[@@@@*SDFF*@[@@@@. @B@@@@. CHANGE WORKER ROUTINE (C,CO) QK )@@G@@@[@@@@. @#@@@@ AXR$ @#@@@@$(4) LIT. @]@@@@$(1). QL )@@G@@ @C@@@@CHANGE$* . $H @[@@@@. QM )@@G@@@^@@@@. INITIALIZATION@[@@@@. @E@@@@ SZ STATQN )@@G@@US . $P RESET STATUS @E@@@@ SX,H2 X11,SAVEX1QO )@@G@@1 . $P SAVE RETURN ADDR @E@@@@ SZ NOFIND QP )@@G@@ . $P RESET NO FIND SW @E@@@@ LX X2,X10 . $PQQ )@@G@@ GET G IND ADDR @B@@@@ AX,U X2,2 . @F@@@@QR )@@G@@ SX X2,G . $P SAVE IT IN SNO PKT @E@@@@QS )@@G@@ LA A0,TYPE . $P SAVE CHANGE TYPE @B@@@@ QT )@@G@@ SA A0,TYPEX . @[@@@@. @C@@@@. COMPUTE QU )@@G@@NUM. OF LINE TO BE CHANGED @[@@@@. @D@@@@ LA A0,LQV )@@G@@INEM . $P GET INPUT @E@@@@ JZ A0,SINGLE QW )@@G@@ . $P 1 LINE IF 0 @E@@@@ TE,U A0,'A' . $TQX )@@G@@ ALL SEBSEG. LINE @E@@@@ J LINENUM . $A YES NQY )@@G@@O,LINENUM @E@@@@ LA A0,RECNMC . $P GET MAX LINQZ )@@G@@E @E@@@@ SA A0,LINECNT . $P SET TO MAX RA )@@G@@@F@@@@ LX,U X2,('G ') . $P SET TO POINT TO G IND RB )@@G@@@B@@@@ SX X2,G . @B@@@@ J RC )@@G@@ GETC1 . @[@@@@. @C@@@@SINGLE RD )@@G@@ . $H @E@@@@ LA,U A0,1 . $P SET LRE )@@G@@INECNT TO 1 @B@@@@ SA A0,LINECNT . @I@@@@ RF )@@G@@ TNZ LN . $P MRG )@@G@@AK @B@@@@ J ERROR3 . @B@@@@ J RH )@@G@@ GETC1 . @[@@@@. @C@@@@LINENUM RI )@@G@@ . $H @D@@@@ DL A0,3,X10 . $PRJ )@@G@@ GET INPUT @E@@@@ SLJ FD$BIN . $P CONVERT TO RK )@@G@@BINARY@E@@@@ JZ A0,ERROR2 . $P MAKE SURE NOT 0 RL )@@G@@@D@@@@ SA A0,LINECNT . $P SAVE IT @[@@@@. RM )@@G@@@A@@@@. GET C1, THE FIRST STRING @[@@@@. @C@@@@GETC1 RN )@@G@@ . $H @E@@@@ LX X2,X10 RO )@@G@@ . $P COMPUTE C1 ADDR @D@@@@ AX,U X2,3 RP )@@G@@ . + OFF-SET @E@@@@ LA,U A0,1 . $T CHK LRQ )@@G@@INE TYPE @C@@@@ TNE A0,LINEM . $ @B@@@@RR )@@G@@ AX,U X2,2 . @F@@@@ SX X2,CRS )@@G@@1 . $P SAVE IT IN SNO PKT @E@@@@ LA A0,0RT )@@G@@,X2 . $P GET STRING LENGTH@F@@@@ DSL A0,36 RU )@@G@@ . $P COMPUTE WORD COUNT @B@@@@ DI,U A0,6 RV )@@G@@ . @I@@@@ TZ A1 RW )@@G@@ . $P REM @B@@@@ A,U A0,1 RX )@@G@@ . @E@@@@ A,U A0,1 . $P SET REPEATER RY )@@G@@@E@@@@ LR R2,A0 . $P TEMP. SAVE IN R2 @[@@@@RZ )@@G@@. @B@@@@. GET C2, THE CHANGE TO STRING @[@@@@. @E@@@@SA )@@G@@ LX X2,X10 . $P COMPUTE C2 ADDR @D@@@@ SB )@@G@@ AX,U X2,3 . + OFF-SET @D@@@@ AX SC )@@G@@ X2,R2 . $P SKIP C1 @E@@@@ LA,U A0,1 SD )@@G@@ . $T CHK LINE TYPE @C@@@@ TNE A0,LINEM SE )@@G@@ . $ @B@@@@ AX,U X2,2 . @D@@@@ SF )@@G@@ SX X2,C2 . $P SAVE IT @[@@@@. @ @@@@. SG )@@G@@ SET LN TO 1 IF 0 @[@@@@. @B@@@@ LA,U A0,1 SH )@@G@@ . @H@@@@ TNZ LN SI )@@G@@ . @B@@@@ SA A0,LN . SJ )@@G@@@[@@@@. @A@@@@. MCORE$ BUFFER IF NOT YET @[@@@@. @D@@@@SK )@@G@@ TZ BUFADR . $T SW SET @B@@@@ J SL )@@G@@ CHG0 . @F@@@@ LA A0,LAST$D SM )@@G@@ . $P COMPUTE LAST$D ADDR @B@@@@ AA,U A0,1 SN )@@G@@ . @E@@@@ SA A0,BUFADR . SET BUFFER ADDR SO )@@G@@@E@@@@ A,U A0,701 . $P 700 WORDS BUFF @B@@@@SP )@@G@@ SA A0,LAST$D . @ @@@@ ER MCORSQ )@@G@@E$ @[@@@@. @A@@@@. MOVE LINE TO WORK BUFFER @[@@@@. SR )@@G@@@C@@@@CHG0 . $H @E@@@@ SLSS )@@G@@J GETCURLN . $P GET CURRENT LINE @E@@@@ LX ST )@@G@@ X2,BUFADR . $P GET BUFFER ADDR @E@@@@ LR R1,RSU )@@G@@DA . $P GET LINE LENGTH @B@@@@ LA A0,R1 SV )@@G@@ . @G@@@@ MSI,U A0,6 . $P CONVERT TO SW )@@G@@CHAR LENGTH @E@@@@ SA A0,,X2 . TEMP. SASX )@@G@@VE IT @E@@@@ AX,U X2,1 . $ SET TO BUFERSY )@@G@@(DATA)@B@@@@ LXI,U X2,1 . @B@@@@ LXSZ )@@G@@ X1,(1,RDA+1) . @D@@@@ LA A1,TYPEX TA )@@G@@ . $T CHK TYPE @C@@@@ TE,U A1,1 . $T CO TB )@@G@@@E@@@@ J COCTAL1 . $A YES,COCTAL1 NO @D@@@@TC )@@G@@ BT X2,,*X1 . $P TRANSFER @B@@@@ J TD )@@G@@ CALLSNO . @[@@@@. @B@@@@. CONVERT TO OCTTE )@@G@@AL FORMAT(CO) @[@@@@. @C@@@@COCTAL1 TF )@@G@@ . $H @E@@@@ SLJ EXPAND . $P CONVERT IT TG )@@G@@ @E@@@@ LX X1,BUFADR . $P GET BUFFER ADDR TH )@@G@@@E@@@@ LA A0,,X1 . $P GET CHAR COUNT @C@@@@TI )@@G@@ MSI,U A0,2 . $P *2 @D@@@@ SA TJ )@@G@@ A0,,X1 . $@ SAVE IT @[@@@@. @C@@@@. CALL SNOTK )@@G@@FLAKE PROG. TO PERFORM CHANGE @[@@@@. @C@@@@CALLSNO TL )@@G@@ . $H @A@@@@ LMJ X11,CHANGE @]@@@@TM )@@G@@BUFADR +0@]@@@@C1 +0@]@@@@C2 +0@]@@@@G +0@[@@@@TN )@@G@@. @ @@@@. RETURNED FROM SNO @[@@@@. @E@@@@ JZTO )@@G@@ A0,NOCHG . $T C1 MATCHED @B@@@@ SA TP )@@G@@ A0,NOFIND . @[@@@@. @A@@@@. MOVE CHANGED LINE TOTQ )@@G@@ RDA @[@@@@. @E@@@@ LX X1,BUFADR . $P GET BTR )@@G@@UFF ADDR @F@@@@ LA,H2 A0,,X1 . $P GET MODIFIETS )@@G@@D LENGTH @F@@@@ AX,U X1,1 . $P COMPUTE BUFTT )@@G@@FER ADDR @E@@@@ LXI,U X1,1 . $P SET UP FOR TU )@@G@@BT @E@@@@ LX X2,(1,RDA+1) . $P SET UP FOR BT TV )@@G@@@F@@@@ LA A1,A0 . $P COMPUTE NUM OF WORDS TW )@@G@@@B@@@@ DSL A1,36 . @B@@@@ DI,U TX )@@G@@ A1,6 . @H@@@@ TZ A2 TY )@@G@@ . @^@@@@ A,U A1,1@E@@@@TZ )@@G@@ SA A1,RDA . $P SAVE IT IN RDA @E@@@@ UA )@@G@@ LR R1,A1 . $P SET REPEATER @B@@@@ LAUB )@@G@@ A1,TYPEX . @C@@@@ TE,U A1,1 UC )@@G@@ . $T CO @E@@@@ J COCTAL2 . $A YES,COCTAL2UD )@@G@@ NO @D@@@@ BT X2,,*X1 . $P TRANSFER @C@@@@UE )@@G@@ J CALLT$F . $J @[@@@@. @B@@@@. UF )@@G@@ CONVERT BACK TO REGULAR STRING @[@@@@. @C@@@@COCTAL2 UG )@@G@@ . $H @B@@@@ SLJ CONTRACT UH )@@G@@ . @F@@@@ LX X1,BUFADR . $P COMPUTE NUM. OF WUI )@@G@@ORDS @F@@@@ LA A0,,X1 . $P GET UNCONV CHAR CUJ )@@G@@OUNT @B@@@@ DSL A0,36 . @B@@@@ DIUK )@@G@@,U A0,12 . @H@@@@ TZ A1 UL )@@G@@ . @B@@@@ A,U A0,1UM )@@G@@ . @B@@@@ SA A0,RDA . @[@@@@UN )@@G@@. @A@@@@. CALL TF$AM TO CHANGE @[@@@@. @C@@@@CALLT$UO )@@G@@F . $H @D@@@@ LA A0,RUP )@@G@@DA . $P SET TFPKT @G@@@@ SA A0,TF$PKT+2 UQ )@@G@@ . $P RECORD LENGTH & CLEAR STATUS @E@@@@ LA A0,RDALN UR )@@G@@ . $P SET LINE NUMBER @B@@@@ SA A0,TF$PKT US )@@G@@ . @B@@@@ LX,U X10,TF$PKT . @B@@@@ LMUT )@@G@@J X11,TF$C . @D@@@@ TZ,T1 TF$PKT+2 UU )@@G@@ . $T STATUS 0 @^@@@@ ER ERR$@E@@@@ LA UV )@@G@@ A0,TYPEX . $P GET C TYPE @F@@@@ LX,U X10,UW )@@G@@PRTP . $P SET UP TO PRINT PN @D@@@@ TE,U A0,1UX )@@G@@ . $T C OR CO @C@@@@ LX,U X10,PRTPO UY )@@G@@ . $ @D@@@@ TNZ BOPT . $T BRIEF ON UZ )@@G@@@B@@@@ LMJ X11,PRINTL . @[@@@@. @A@@@@. VA )@@G@@ CHANGE NXT IF REQ'D @[@@@@. @C@@@@NOCHG VB )@@G@@ . $H @A@@@@ LA A0,LINECNT @B@@@@VC )@@G@@ ANA,U A0,1 . @B@@@@ JZ A0,EVD )@@G@@NDCHG . @B@@@@ SA A0,LINECNT . @B@@@@VE )@@G@@ LA A0,LN . @B@@@@ TG A0,RVF )@@G@@ECNMC . @ @@@@ J HITEOF @B@@@@ AAVG )@@G@@,U A0,1 . @B@@@@ SA A0,LN VH )@@G@@ . @ @@@@ J CHG0. @[@@@@. @^@@@@. ENVI )@@G@@D AHANGE @[@@@@. @]@@@@HITEOF. @ @@@@ SLJ SENDVJ )@@G@@EOF @^@@@@ SZ LN @B@@@@ SZ STATUS VK )@@G@@ . @]@@@@ENDCHG. @ @@@@ TZ NOFIND @ @@@@VL )@@G@@