@CAT,P 1013-001-005.,///10000 @ASG,T TEMP.,///10000 @ELT,OI TEMP.1013-001-005,,,127770053241,000 )@@G@@**PF**@@@[(\@@@@@@@@@@@[@ O@@@]FE /^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@@@@@@@@@@@@@@@@@@@@@@@@AB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@J@@@@@N@@@@@@@@@@@@AC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I@@@@@@@@@@@@AD )@@G@@@@@@@@@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AE )@@G@@@@@@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@@@@@@@@@@@@@@@@@@@@@@@@@@@AF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#AH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AI )@@G@@@@@@@@@@K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@AJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@]@@@@@@@@@@@D@@HAK )@@G@@@@G@@@@@@@@@@@@@@F@@@@@@@@@@@@@@@@@@@@@@@[@@@@@@@@@@@@@@@@@@@@@@@L@@@@@@AL )@@G@@@@@@@@@@^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@OAN )@@G@@MANUAL @@@@@@@@[@@@APL @ @@@[B@@@J4@@@@W@OWYAHCDOCS AO )@@G@@@@@@@@@@[@@@APL @ @@@[B@@@]E@@@@:4P]ACBDSAMPLE @@@@@@@@[@@@AP )@@G@@APL @ @@@[@@@@@+@@@@!"@SWCCDDOC @@@@@@@@[@@@ASCII AQ )@@G@@@ @@@[B@@@@8@@@@,)@/YDODSITEPAR @@@@@@@@[@@AAPL @ @@@[]@@@[7AR )@@G@@@@@@\SF'ZETDSITEPAR @@@@@@@@ @@@APL @@@@1J@@ @@@@@@@1JF'>ETDAS )@@G@@ASCII-TCF @@C@@@@@[@@@LEVEL26 @ @@@[[@@@]$@@@@1OFY_ELCASCII-TCF AT )@@G@@@@@@@@@@[@@@LEVEL27 @ @@@[[@@@]V@@@@3;FZOELCXQTMAP-ABS @@@@@@@@[@@@AU )@@G@@APL @ @@@[A@@@@B@@@@6QD[RCIDSYSMAP-ABS @@@@@@@@[@@@APL AV )@@G@@@@@@@[A@@@@B@@@@6XC9;CIDDBMAP-ABS @@@@@@@@[@@@APL @ @@@[A@@@@BAW )@@G@@@@@@6=HV9CIDROOSEG @@@@@@@@ @@@APL @@@[@%@@&@D_@@@@6:F3BETDAX )@@G@@SYSSEG @@@@@@@@ @@@APL @@@[B>@@L@AP@@@[[KF8&ETDXQTSEG AY )@@G@@@@@@@@@@ @@@APL @@@[L/@@K@EA@@@[B6F6#ETDED @@@@@@@@A@@@AZ )@@G@@ @@@@:R^@@@[L@@@[MGN)WCLDED$ @@@@@@@@A@@@ BA )@@G@@[OL@:R^@@@#N@@@[NXN) -- VERSION 3.4 -- 12 JULY 1978 @A@[@@VD )@@G@@ RUN AT 02:25:53 ON 12/01/78@#@]@@ DATA-FILE IS @ @[@@ AMPS VE )@@G@@BW 4 BANDS 31 JULY 74 @@@[@@@^@[@@ INPUT OPTIONS: @A@[@@ VF )@@G@@ CLASSIFY 1 1 210 100 410 @#@[@@ PRINT @#@[@@ FIVG )@@G@@LE @J@[@@ SYMBOLS 1/# 2/# 3/# 4/# 5/# 6/# 7/\ 8/\ 9/\ 10/\ 1VH )@@G@@1/\ 12/\ 13/\ 14/\ 15/\ 16/O @E@[@@ 17/O 18/O 19/O 20/O 21/O 2VI )@@G@@2/* 22/* 23/* 24/* 25/* @B@[@@ *** INPUT CARD SYNTAX ERROR ***: VJ )@@G@@@D@[@@ 17/O 18/O 19/O 20/O 21/O 22/* 22/* 23/* 24/* 25/*@B@[@@ER ABOVK )@@G@@RT$ ABORT ADR: 017044 BDI:000004@ @[@@RUNSTREAM ANALYSIS TERMINATED VL )@@G@@@@@[@@0[@@@@R . @F@[@@ RUNID: BC4866 PROJECT: 13010 VM )@@G@@USER: 3935024624 @C@[@@02:25:23 LOAD $TTS467 9/3 TAPE -1 BC4866 VN )@@G@@@ @[@@02:25:53 BC4866 ABORT @D@]@@ ITEM VO )@@G@@ AMOUNT COST @D@]@@CPU TIME 00:00:03.542 VP )@@G@@ $0.03@D@[@@FILE I/O REQUESTS 128 $0.01VQ )@@G@@@D@[@@FILE I/O WORDS 335274 $0.01@D@[@@MEMORYVR )@@G@@ USAGE 0.079 $0.01@D@[@@CARDS IN VS )@@G@@ 68 $0.03@D@[@@PAGES PRINTED VT )@@G@@ 4 $0.05@D@[@@TAPE MOUNTS 1VU )@@G@@ $0.18@D@[@@SOFTWARE SUPPORT 8 $0.03VV )@@G@@@D@[@@JOB CHARGE 1 $0.06@D@]@@TOTAL VW )@@G@@COST $0.41@I@]@@ THE ABOVE DOLLVX )@@G@@AR AMOUNTS ARE APPROXIMATE AND ARE BASED ON RATES FOR WEEKEND RUNS@D@[@@VY )@@G@@PROJ BALANCE $16.55@C@]@@ INITIATIVZ )@@G@@ON TIME: 02:25:22 DEC 1,1978 @C@]@@ TERMINATION TIME: 02:25:WA )@@G@@55 DEC 1,1978 @C@]@@ PREVIOUS RUN TIME: 02:25:20 DEC 1,1978 WB )@@G@@0^@@@@D,@@TTY RUN=CLS,BRF=ON _@_____P__________________________________WC )@@G@@________________________________________________________________________WD )@@G@@_________________________V______________________________________________WE )@@G@@________________________________________________________________________WF )@@G@@________________________________________________________________________WG )@@G@@________________________________________________________________________WH )@@G@@________________________________________________________________________WI )@@G@@________________________________________________________________________WJ )@@G@@________________________________________________________________________WK )@@G@@________________________________________________________________________WL )@@G@@________________________________________________________________________WM )@@G@@________________________________________________________________________WN )@@G@@________________________________________________________________________WO )@@G@@________________________________________________________________________WP )@@G@@________________________________________________________________________WQ )@@G@@________________________________________________________________________WR )@@G@@________________________________________________________________________WS )@@G@@________________________________________________________________________WT )@@G@@________________________________________________________________________WU )@@G@@________________________________________________________________________WV )@@G@@________________________________________________________________________WW )@@G@@________________________________________________________________________WX )@@G@@________________________________________________________________________WY )@@G@@________________________@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@YZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ED )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ER )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ES )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ET )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ID )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@II )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IL )@@G@@@@@@@@@[$@@@@@%@@@@@7@@@@@@@@@@@@@@@@@@@@@@@:@@@@@@@@@@[Q@@@@[V@@@@@@@@@IM )@@G@@@@N@@@@@4@@R@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$@@@@[0@[G@@@@@@@@@@@A@@@@@@IN )@@G@@@@5@@@@@>@@@@@@@@^@@@@@@@@@@@J@@<@@@@@@@[M@@@@[:@@@@@@@@@@@@@@ @@M@@@@@@IO )@@G@@@[4@[W@@@@@@@[!@@@@@3@@@@@@@["@@@@@@@@@@[)@@@@@@@@@@@Y@@X@@@@@&@@@@[S@@@IP )@@G@@@@!@@@@@D@@@@@@@[>@@*@@@@@@@@[@]@@@@@@]@@@@@-@@@@@@@@(@@@@@@@@@@@@@@+@@@IQ )@@G@@@@@@@'@[6@@@@@@@@@@[K@@@@@@@@@@[T@@@@@@@[B@@@@@@@@@@@U@[;@@@@@@@@9@] @@@IR )@@G@@@@@@@?@[N@@T@@@@@H@@@@@@@[2@@@@@V@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LIS )@@G@@@@@@@I@@@@[1@@@@@@@@@@@@@@@@@@@@Z@@@@@@@@/@[X@@@@@@@@@@@@@@@@[\@@@@@@@@@IT )@@G@@@@@@[Z@@@@[H@@@@@C@@@@@@@@@@@@@[ @@@@@@@@S@@@@[,@@@@@@@@B@@@@@@@@@@@@@@@IU )@@G@@@@@@@G@@1@@@@[(@@W@[F@@@@[O@@@@@@@@,@@@@[&@@;@@@@@@@@#@[E@@@@@@@@@@@F@@@IV )@@G@@@@@@@@@[9@@@@@@@[A@@@@@@@@@@@@@[=@@@@@@@@Q@@@@@@@@@@[U@@@@@@@@@@@@@[D@@@IW )@@G@@@@@@@@@[[@@@@@@@@@@]A@@@@@@@[%@@@@@@@@@@@.@@^@]BTCORE$ @@#@@E@@@@@@IX )@@G@@CHK000 @@N@@@@@@@@@GALI @@N@@@@@@@@@LNKRTN @@N@@K@@@@@@IY )@@G@@CHK220 @@N@@@@@@@@@AAOPT @@N@@@@@@@@@FFOPT @@N@@6@@@@@@IZ )@@G@@XXOPT @@N@@@@@@@@@KKOPT @@N@@O@@@@@@GBU @@N@@P@@@@@@JA )@@G@@SZCHK @@N@@0@@@@@@UNOPT @@N@@@@@@@@@NSZOPT @@N@@)@@@@@@JB )@@G@@DIRSIZ @@O@@@@@@@@@DIREND @@O@@@@@@@@@DIRINT @@O@@@@@@@@@JC )@@G@@DIRSEC @@O@@@@@@@@@DIREC$FLAG @@O@@@@@@@@@GOTONE @@O@@@@@@@@@JD )@@G@@DIREC$ @@O@@@@@@@@@DGETP$FN$WD$@@O@@@@@@@@@PAKID$ @@O@[I@@@@@@JE )@@G@@DIRECERR @@P@@@@@@@@@DIR$ET @@Q@@\@@@@@@DIRLNK @@Q@@@@@@@@@JF )@@G@@DGET$BUF2 @@Q@@"@@@@@@DSEG @@R@@@@@@@@@PMORE @@S@@@@@@@@@JG )@@G@@OPNSRT @@T@@_@@@@@@NOSORTF @@T@@@@@@@@@ROPN$ @@T@@=@@@@@@JH )@@G@@RTMIN$ @@T@@@@@@@@@RTMAX$ @@T@@@@@@@@@RTPT$ @@T@[]@@@@@@JI )@@G@@RTST$ @@T@@@@@@@@@RTMT$ @@T@@@@@@@@@RLBLK$ @@T@@8@@@@@@JJ )@@G@@GOTREC @@T@]B@@@@@@DOSORT @@T@@2@@@@@@LPOC @@T@@@@@@@@@JK )@@G@@SRTNXT @@T@[P@@@@@@TOT000 @@U@@@@@@@@@MSG @@V@@@@@@@@@JL )@@G@@FCT @@V@[C@@@@@@SDF000 @@V@@@@@@@@@SDF100 @@V@[#@@@@@@JM )@@G@@SORTF @@-@][@@@@@@PNAME @@=@@@@@@@@@POUT @@=@[3@@@@@@JN )@@G@@VTOT @@=@@@@@@@@@GTOT @@=@@@@@@@@@LINOUT @@=@[@@@@@@@JO )@@G@@PROJPK @@=@@@@@@@@@PCT @@=@[L@@@@@@MFD$ @@=@@@@@@@@@JP )@@G@@LI0 @@=@@@@@@@@@MI0 @@=@@@@@@@@@MI1 @@=@@@@@@@@@JQ )@@G@@SNOITPO @@=@@@@@@@@@OPTWRD @@=@@@@@@@@@SPEC4 @@=@[J@@@@@@JR )@@G@@INS1 @@=@@@@@@@@@TMASK @@=@[R@@@@@@SPC @@=@[^@@@@@@JS )@@G@@INS2 @@=@@@@@@@@@INS3 @@=@@@@@@@@@POLINK @@=@@@@@@@@@JT )@@G@@POLISH @@=@@@@@@@@@ECODE @@=@[5@@@@@@SZOPT @@=@@@@@@@@@JU )@@G@@CNT1 @@=@@@@@@@@@PFCT @@=@[8@@@@@@CNT2 @@=@[*@@@@@@JV )@@G@@RTOT @@=@[Y@@@@@@TOT @@=@@@@@@@@@SECTOT @@=@[.@@@@@@JW )@@G@@ACMASK @@=@[+@@@@@@EQUCD @@=@[_@@@@@@EQUCDL @@=@@@@@@@@@JX )@@G@@SUB30 @@=@@@@@@@@@SUB35 @@=@@@@@@@@@SUB36 @@=@[7@@@@@@JY )@@G@@TAPTYP @@=@]]@@@@@@EDPACK @@=@[?@@@@@@REVT @@=@@@@@@@@@JZ )@@G@@REVO @@=@@@@@@@@@REVG @@=@[<@@@@@@REVV @@=@@@@@@@@@KA )@@G@@REVR @@=@[-@@@@@@REVD @@=@@@@@@@@@UNCHEK @@=@@@@@@@@@KB )@@G@@SZLOD @@=@@@@@@@@@SZBAK @@=@@@@@@@@@DATREF @@=@@@@@@@@@KC )@@G@@RPR @@=@@@@@@@@@RPRL @@=@@@@@@@@@FLAGS @@=@[/@@@@@@KD )@@G@@MRFLGS @@=@@@@@@@@@LINE2 @@=@@@@@@@@@FLAG3 @@=@@@@@@@@@KE )@@G@@FLAG4 @@=@@@@@@@@@FLAG5 @@=@@@@@@@@@SIZE @@=@@@@@@@@@KF )@@G@@OPTIONS @@=@]#@@@@@@TABLE2 @@=@@@@@@@@@SORTBL @@=@@@@@@@@@KG )@@G@@ADDKEYS @@=@@@@@@@@@MFD100 @@=@@@@@@@@@MFD200 @@=@@@@@@@@@KH )@@G@@MFD300 @@=@@@@@@@@@MFD500 @@=@@@@@@@@@MFD600 @@=@@@@@@@@@KI )@@G@@MFD700 @@=@@@@@@@@@MFD900 @@=@@@@@@@@@SPECER @@=@@@@@@@@@KJ )@@G@@POLTRAN @@=@['@@@@@@FREIM @@>@]^@@@@@@RDPKT @@>@@@@@@@@@KK )@@G@@FITEM @@>@@@@@@@@@QF000 @@>@@@@@@@@@QF900 @@>@@@@@@@@@KL )@@G@@IN2000 @@$@@@@@@@@@GOON @@$@@@@@@@@@QOPT @@$@@@@@@@@@KM )@@G@@POPT @@$@@@@@@@@@AOPT @@$@@@@@@@@@FOPT @@$@@@@@@@@@KN )@@G@@ZOPT @@$@@@@@@@@@XOPT @@$@@@@@@@@@KOPT @@$@@@@@@@@@KO )@@G@@PR000 @@*@@@@@@@@@PR300 @@*@@@@@@@@@PR600 @@*@@@@@@@@@KP )@@G@@LEVEL @@(@@@@@@@@@IN1000 @@?@@@@@@@@@E EQUAL TO WITHIN A SPECKQ )@@G@@IFIED PERCEN- @G@@@@ TAGE ERROR, THEY ARE TREATED AS IF THEY KR )@@G@@WERE EXACTLY EQUAL. @G@@@@ FUZZING IS APPLIED TO ALL OF THE RELATIKS )@@G@@ONAL OPERATORS (=, $=, >, @G@@@@ <, ETC.), WHEN USED AS SCALARS, AKT )@@G@@S PART OF A COMPOUND OPERATION, @G@@@@ OR WHEN IMPLICIT AS IN THE DYKU )@@G@@ADIC 'INDEX OF' ($I) AND 'MEMBERSHIP' @G@@@@ ($E) OPERATORS. IN ADKV )@@G@@DITION, IT IS USED IN THE CEILING AND FLOOR @F@@@@ OPERATORS, AND INKW )@@G@@ THE EVALUATION OF INDICES FOR SUBSCRIPTING. @[@@@@ @G@@@@ KX )@@G@@ ONE SHOULD REALIZE THAT ALTHOUGH FUZZING DOES GIVE THE @G@@@@KY )@@G@@ DESIRED RESULT IN MOST CASES, IT DESTROYS THE TRANSITIVITY OF THE KZ )@@G@@@G@@@@ EQUALITY RELATION - E.G. IT IS POSSIBLE TO HAVE THREE VARIABLELA )@@G@@S @G@@@@ A, B AND C SUCH THAT A=B IS TRUE, B=C IS TRUE, BUT C=ALB )@@G@@ IS NOT @G@@@@ TRUE. SINCE SUBTRACTION IS NOT SUBJECT TO FUZZING, LC )@@G@@THIS COULD BE @G@@@@ DETECTED BY EXAMINING THE DIFFERENCES BETWEEN TLD )@@G@@HESE VARIABLES. IN @D@@@@ PRACTICE, THIS ANOMALY IS RARELY OF ANY CLE )@@G@@ONSEQUENCE. @[@@@@ @[@@@@*****^@G@@@@A USER'S GUIDE TO APL\1100 (PRLF )@@G@@ELIMINARY) 5- 10@[@@@@ @[@@@@ @[@@@@LG )@@G@@ @G@@@@ IT IS RECOGNIZED THAT IN CERTAIN APPLICATIONS (PARTILH )@@G@@CULARLY @G@@@@ NUMERICAL ANALYSIS), FUZZING IS A DISTINCTLY UNDESIRLI )@@G@@ABLE FEATURE. @G@@@@ ALL INTERNAL CALCULATIONS IN APL\1100 ARE CARLJ )@@G@@RIED TO AN ACCURACY @G@@@@ OF 60 BITS, BUT IN FUZZING, ONLY THE MOSLK )@@G@@T SIGNIFICANT 48 BITS ARE @G@@@@ CONSIDERED. ASSOCIATED WITH EACH LL )@@G@@WORKSPACE IS A 'FUZZ CONSTANT'; @G@@@@ FOR A CLEAR WORKSPACE ITS LM )@@G@@VALUE IS 12 (I.E. 60-48). THE FUZZ @G@@@@ CONSTANT FOR A GIVEN LN )@@G@@WORKSPACE MAY BE CHANGED THROUGH THE USE OF @D@@@@ THE )FUZZ COMMANDLO )@@G@@ OR THE FUNCTION FUZZ IN 1 WSFNS. @[@@@@ @G@@@@ EXTREME CAUTLP )@@G@@ION SHOULD BE USED WHEN CHANGING THE VALUE OF THE @G@@@@ FUZZING CONLQ )@@G@@STANT. A SMALL FUZZING CONSTANT, OR NO FUZZING AT ALL @G@@@@ CAN LR )@@G@@CAUSE THE CEILING AND FLOOR OPERATORS TO GIVE UNDESIRED @G@@@@LS )@@G@@ RESULTS, AND CAN CAUSE ERRORS IN THE EVALUATION OF SUBSCRIPTS. A LT )@@G@@@G@@@@ LARGE FUZZING CONSTANT CAN CAUSE APL TO CONSIDER TWO QUANTITIES TLU )@@G@@O @G@@@@ BE EQUAL WHICH CLEARLY SHOULD NOT BE. THE STANDARD LV )@@G@@FUZZING @G@@@@ CONSTANT OF 12 IS AN OPTIMUM VALUE FOR ALMOST ALL WOLW )@@G@@RK ON AN 1100 @#@@@@ SERIES MACHINE. @[@@@@ @[@@@@ @#@@@@LX )@@G@@ 5. 8. COMMENTS@[@@@@ @[@@@@ @G@@@@ COMMENTS MAY BELY )@@G@@ ENTERED ON ANY LINE OF INPUT TO APL EXCEPT @G@@@@ THE HEADER LINE OLZ )@@G@@F A FUNCTION. COMMENTS ARE PRECEDED BY THE LAMP @G@@@@ ($:) SYMBOLMA )@@G@@; ANYTHING TO THE RIGHT OF THE LAMP IS CONSIDERED AS A @G@@@@ COMMEMB )@@G@@NT, AND NOT PROCESSED BY APL. A LINE CONTAINING ONLY A LAMP @G@@@@MC )@@G@@ AND NOTHING ELSE (I.E. NULL COMMENTS) HAS SPECIAL SIGNIFICANCE IN MD )@@G@@@G@@@@ FUNCTION EDITING. WHEN IN FUNCTION DEFINITION MODE, ONME )@@G@@E @G@@@@ INDICATES THAT A PARTICULAR LINE OF THE FUNCTION IS TO BE EMF )@@G@@NTIRELY @G@@@@ DELETED BY TYPING A LINE CONTAINING ONLY A LAMP. MG )@@G@@E.G., IN THE @A@@@@ FUNCTION DEFINITION MODE, THE LINE @^@@@@ MH )@@G@@ [5] $: @D@@@@ WILL CAUSE LINE 5 OF THE FUNCTION TO BE DELETEDMI )@@G@@. @[@@@@ @[@@@@ @ @@@@ 5. 9. USE OF THE BREAK KEY@[@@@@MJ )@@G@@ @[@@@@ @G@@@@ IT IS SOMETIMES DESIRABLE TO INTERRUPT PMK )@@G@@ROCESSING WHICH APL @G@@@@ IS DOING. THIS MAY OCCUR BECAUSE IT APPEML )@@G@@ARS AS IF AN APL FUNCTION @G@@@@ IS LOOPING, OR BECAUSE ONE WISHES MM )@@G@@TO CANCEL THE PRINTOUT OF (SAY) @C@@@@ THE TEXT OF A FUNCTION OR AN MN )@@G@@ )SI DISPLAY. @[@@@@ @G@@@@ WHEN USING A TELETYPE, APL MMO )@@G@@AY BE INTERRUPTED T ANY TIME BY @G@@@@ DEPRESSING THE 'BREAK' KEY. MP )@@G@@ THIS WILL RESULT IN A RESPONSE FROM @#@@@@ THE SYSTEM OF @[@@@@MQ )@@G@@ @B@@@@ INTRPT LAST LINE @[@@@@ @G@@@@MR )@@G@@ AT THIS POINT, ONE SHOULD PRESS THE BRK-RLS BUTTON, AND ENTER A MS )@@G@@@[@@@@*****^@G@@@@A USER'S GUIDE TO APL\1100 (PRELIMINARY) MT )@@G@@ 5- 11@[@@@@ @[@@@@ @[@@@@ @G@@@@ CARRIAGE REMU )@@G@@TURN. IF APL WAS PRINTING AT THE TIME BREAK WAS HIT, @G@@@@ A FEMV )@@G@@W MORE LINES OF OUTPUT MAY PRINT. THE SYSTEM WILL THEN @G@@@@MW )@@G@@ SUSPEND THE EXECUTING FUNCTION (F THERE WAS ONE) AND RETURN TO THE MX )@@G@@@G@@@@ DESK CALCULATOR MODE. IF THE SYSTEM WAS IN FUNCTION DEFINITIOMY )@@G@@N @G@@@@ MODE, IT WILL NOT RETURN TO DESK CALCULATOR MODE, BUT WILL MZ )@@G@@INSTEAD @G@@@@ PROMPT YOU FOR THE NEXT LINE OF INPUT TO THE FUNCTIONNA )@@G@@. ONE SHOULD @G@@@@ NOT TYPE THE CHARACTER X IN RESPONSE TO THNB )@@G@@E INTRPT LAST LINE @G@@@@ MESSAGE, AS THIS WILL CAUSE EXEC 8 NC )@@G@@TO ABORT APL ENTIRELY AND @A@@@@ RETURN TO THE EXEC 8 CONTROL MODE. ND )@@G@@@[@@@@ @G@@@@ A SIMILAR PROCEDURE IS AVAILABLE WHEN USING NE )@@G@@DEVICES OTHER @G@@@@ THAN TELETYPES AS TERMINALS. FOR EXAMPLE, WNF )@@G@@HEN USING TERMINALS @G@@@@ COMPATIBLE WITH THE IBM 2741, THE ATTN NG )@@G@@KEY IS GENERALLY USED FOR @G@@@@ THE BREAK FUNCTION. ONE SHOULDNH )@@G@@ CONSULT THE APPROPRIATE UNIVAC @G@@@@ MANUALS AND ANY SPECIAL SINI )@@G@@TE-DEPENDENT INFORMATION TO DETERMINE @D@@@@ THE EXACT PROCEDURE FORNJ )@@G@@ DEVICES OTHER THAN TELETYPES.@[@@@@ @[@@@@ @[@@@@ @^@@@@NK )@@G@@ 5.10. SIDE EFFECTS @[@@@@ @[@@@@ @G@@@@ SIDE EFFECTSNL )@@G@@ ARE APPARENT ANOMALIES IN A PROGRAMMING LANGUAGE @G@@@@ WHICH CAN NM )@@G@@ CAUSE IT TO GIVE OTHERWISE UNEXPECTED RESULTS. ALL @G@@@@ CONTENN )@@G@@MPORARY COMPUTER LANGUAGES EXHIBIT SIDE EFFECTS TO SOME @G@@@@NO )@@G@@ DEGREE OR OTHER. ALTHOUGH THE ORIGINAL DESIGNERS OF APL[3] WERE NP )@@G@@@G@@@@ CAREFUL TO ELIMINATE MOST CASES IN WHICH THEY COULD OCCURNQ )@@G@@. @G@@@@ NEVERTHELESS, THE TWO AREAS IN WHICH THEY APPEAR ARE IN THENR )@@G@@ USE OF @G@@@@ THE SPECIFICATION ($S) OPERATOR, AND IN THE MASKINNS )@@G@@G OF VARIABLE @ @@@@ NAMES IN FUNCTION EXECUTION. @[@@@@ @[@@@@NT )@@G@@ @ @@@@ 5.10. 1. SPECIFICATION @[@@@@ @G@@@@ TWO ANNU )@@G@@OMALIES EXIST IN THE USE OF THE SPECIFICATION OPERATOR, @G@@@@ ONE NV )@@G@@WHICH MAY BE CAUSED BY THE OCCURRENCE OF AN ERROR IN A @G@@@@NW )@@G@@ PROGRAM, THE OTHER WHEN THE $S OPERATOR IS USED IN PARENTHESES. NX )@@G@@@G@@@@ TO DEMONSTRATE THE FORMER, CONSIDER THE FOLLOWING APL STATEMENTSNY )@@G@@: @[@@@@ @ @@@@ J $S 1 + V$S 2 @ @@@@ ANZ )@@G@@$S V + J$S 3 + J @[@@@@ @G@@@@ AFTER THE EXECUTION OF THE SECOND OA )@@G@@STATEMENT, THE VALUE OF J WILL @G@@@@ BE SIX, AND A WILL BE EIGHT.OB )@@G@@ CONSIDER NOW INSTEAD THAT V IS UN- @A@@@@ DEFINED - I.E. THE STATOC )@@G@@EMENTS ARE: @[@@@@ @#@@@@ J $ S 3@A@@@@ A $ S VOD )@@G@@ + J $S 3 + J @[@@@@ @G@@@@ IN THIS CASE, A 'VALUE ERROR' WILLOE )@@G@@ BE SIGNALLED WHEN APL A(]@@@[H9?G(-H0)BS)@]@[@[^@)^@)AS0 0)@]@[@[^@)^@)OF )@@G@@AS1 0)@A@[@[^@)^@)AS2 0)^@)^@)^@)GT-IT>^[4AC)H9&@]@[@[^@)^@)AS3 0)@C@[@[OG )@@G@@^@)^@)AS4 0)^@)^@)^@)I-ZIL>GD? -4F9(H14G($G(2^@'@A@[@[^@)^@)AS5 0)^@)^@)OH )@@G@@^@)^@)^[+G($HD,^@)@I@[@[^@)^@)AS6 0)^@)^@)^@)^@)^[(G0) [4AK)B*)I-ZGL\H9?OI )@@G@@G(-H0(^[\IK) [4AK)B*)I-ZIT4IL(H1$ C)@A@[@[^@)^@)AS7 0)^@)^@)^@)^@)^@)^@)OJ )@@G@@I-*G(,@B@[@[^@)^@)AS8 0)^@)^@)^@)^@)^@)^@)^@)^[+G($HD,@F@[@[^@)^@)AS9 0)OK )@@G@@^@)^@)^@)^@)^@)^@)^@)^[>IL2H92F90IL\GS*G(2ILZGS(^@;^@)@R@[@[^@)^@)A)0 0)OL )@@G@@^@)^@)^@)^@)^@)^@)^@)^[7IL(I->H-, [=HD-G9,F9&HD?G*?^8*^8?G(2ILZGS?^8(^@%OM )@@G@@ K%^[3G(!GD,I-(GS)G(2IL\IK)BK)HD,GT\H(0GD4HD+H->^@$ ))@N@[@[^@)^@)A)1 0)ON )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^9\I[>IL-H1=^[4JD0G(3^[&H92^[2G(?GD4OO )@@G@@HD\H1-H))H90G(2GD4H92^8(^@;^@)@I@[@[^@)^@)A)2 0)^@)^@)^@)^@)^@)^@)^@)^[3OP )@@G@@G(!F93I--GT:FT3F*,G(2IL\ILZIL>GS)BK.^[4IL5G*)BS)@D@[@[^@)^@)A)3 0)^@)^@)OQ )@@G@@^@)^@)^@)^@)^@)^[$H94H8)IL>I-5IL,^@;@B@[@[^@)^@)A)4 0)^@)^@)^@)^@)^@)^@)OR )@@G@@^@)^[>H1=^@;@]@[@[^@)^@)A)5 0)@E@[@[^@)^@)A)6 0)^@)^@)^@)^@)^[\G1&AC)BK.OS )@@G@@^[4F93 1\G1&IT>I))BS)^@)@G@[@[^@)^@)A)7 0)^@)^@)^@)^@)^[\G1&AK)BK.^[3G(!OT )@@G@@F93I--GT:FT3ALX 1\G1&IT>I))BS)@E@[@[^@)^@)A)8 0)^@)^@)^@)^@)^[?G(6AC)BK.OU )@@G@@^[4F93 10IL\GTZH->I0)BS)@H@[@[^@)^@)A)9 0)^@)^@)^@)^@)^[?G(6AK)BK.^[3G(!OV )@@G@@F93I--GT:FT3ALX 10IL\GTZH->I0)BS)^@)@]@[@[^@)^@)A*0 0)@I@[@[^@)^@)A*1 0)OW )@@G@@^@)^@)^@)^@)^[(G0) [4AC)B*)I-ZHD,I->G9>IK(^[-H1=^@*I)2^@.^[4F9(H14G($G(2OX )@@G@@([@@@[ C)^@)@A@[@[^@)^@)A*2 0)^@)^@)^@)^@)^@)^@)I-*G(,@B@[@[^@)^@)A*3 0)OY )@@G@@^@)^@)^@)^@)^@)^@)^@)^[+G($HD,@D@[@[^@)^@)A*4 0)^@)^@)^@)^@)^@)^@)^@)^[(OZ )@@G@@G0)I-ZIS,I->H(0H92@C@[@[^@)^@)A*5 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)I-*G(,^@)PA )@@G@@@K@[@[^@)^@)A*6 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[$G(,G(2F9(H13I-2 [JE[#PB )@@G@@F9NE(] -\G1&AC?H->I02 -\G1&AK(@C@[@[^@)^@)A*7 0)^@)^@)^@)^@)^@)^@)^@)^@)PC )@@G@@^@)G(?IT>^@)@D@[@[^@)^@)A*8 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[+G($HD,^@)PD )@@G@@@G@[@[^@)^@)A*9 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[\G1&^@'B*)H1>I9ZI->H(0PE )@@G@@^@;^@)@K@[@[^@)^@)A00 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[$G(,G(2F9(H13I-2PF )@@G@@ [JE[#F9GC)?H9&G0?H->I01 -\G1&AC(^@;@L@[@[^@)^@)A01 0)^@)^@)^@)^@)^@)^@)PG )@@G@@^@)^@)^@)^@)^[$G(,G(2F9(H13I-2 [JE[#F9NE(] -\G1& -?G(6AK?H9&G02 C)BS)^@)PH )@@G@@@F@[@[^@)^@)A02 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[\G1&AC)BK.^[\G1&^@;^@)PI )@@G@@@D@[@[^@)^@)A03 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>H1=^@;^@)@B@[@[^@)^@)PJ )@@G@@A04 0)^@)^@)^@)^@)^@)^@)^@)^[>H1=^@)@A@[@[^@)^@)A05 0)^@)^@)^@)^@)^@)^@)PK )@@G@@G(?IT>@B@[@[^@)^@)A06 0)^@)^@)^@)^@)^@)^@)^@)^[+G($HD,@E@[@[^@)^@)A07 0)PL )@@G@@^@)^@)^@)^@)^@)^@)^@)^[(G0)I)1^@.^[4F9(H14G($G(2@C@[@[^@)^@)A08 0)^@)^@)PM )@@G@@^@)^@)^@)^@)^@)^@)^@)I-*G(,^@)@F@[@[^@)^@)A09 0)^@)^@)^@)^@)^@)^@)^@)^@)PN )@@G@@^@)^@)^[(G0)I-ZIS,I->H(0H92^@)@D@[@[^@)^@)A80 0)^@)^@)^@)^@)^@)^@)^@)^@)PO )@@G@@^@)^@)^@)^@)I-*G(,@K@[@[^@)^@)A81 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PP )@@G@@^@)^[$G(,G(2F9(H13I-2 [JE[#F9AD-JCDO -\G1&AC?A@?([@@@[A@(^@)@D@[@[^@)^@)PQ )@@G@@A82 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)G(?IT>@E@[@[^@)^@)A83 0)^@)^@)PR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[+G($HD,@H@[@[^@)^@)A84 0)^@)^@)^@)^@)PS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^[\G1&^@'B*)H1>I9ZI->H(0^@;@M@[@[^@)^@)A85 0)PT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[$G(,G(2F9(H13I-2 [JE[#F9GC)?H9&PU )@@G@@G0?H->I01 -\G1&AC(^@;^@)@I@[@[^@)^@)A86 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PV )@@G@@^@)^@)^@)^[4F93 14G(!I[\IK)BK.^[4IL5G*)BS)@L@[@[^@)^@)A87 0)^@)^@)^@)^@)PW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^[$G(,G(2F9(H13I-2 [JE[#F9AD-JCDO -\G1& )0 )0PX )@@G@@ C)BS)@G@[@[^@)^@)A88 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[\G1&AC)PY )@@G@@BK.^[\G1&^@;@E@[@[^@)^@)A89 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>PZ )@@G@@H1=^@;@]@[@[^@)^@)B@0 0)@E@[@[^@)^@)B@1 0)^@)^@)^@)^@)^@)^@)^@)^[(G0)I)2QA )@@G@@^@.^[4F9(H14G($G(2@C@[@[^@)^@)B@2 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)I-*G(,^@)QB )@@G@@@H@[@[^@)^@)B@3 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[(G0)IT>H(ZIT4GDH(0H92@D@[@[^@)^@)B@4 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)I-*G(,QD )@@G@@@L@[@[^@)^@)B@5 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[$G(,G(2F9(H13QE )@@G@@I-2 [JE[#F9AD-JCDO -\G1&AK?A@?A@(^@)@D@[@[^@)^@)B@6 0)^@)^@)^@)^@)^@)^@)QF )@@G@@^@)^@)^@)^@)^@)^@)G(?IT>@E@[@[^@)^@)B@7 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QG )@@G@@^@)^@)^@)^[+G($HD,@N@[@[^@)^@)B@8 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QH )@@G@@^@)^[$G(,G(2F9(H13I-2 [JE[#F9GC)?I1\H--I)1 -?G(6AK?H9&G02 C)BS)^@)@^@[@[QI )@@G@@^@)^@)B@9 0)^@)^@)^@)^@)(I@@@[^@)^@)^@)^@)^@)^@)^@)^@)^@)^[$G(,G(2F9(H13QJ )@@G@@I-2 [JE[#F9AD-JCDO -6H9?GD4AC?A@?A@(^@;^@)@G@[@[^@)^@)BC0 0)^@)^@)^@)^@)QK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^[?G(6AK)BK.^@0^@;^@)@H@[@[^@)^@)BC1 0)^@)^@)QL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[\G1&AK)BK.^[6H9?GD4AC)BS)@E@[@[^@)^@)QM )@@G@@BC2 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>H1=^@;@]@[@[^@)^@)BC3 0)QN )@@G@@@D@[@[^@)^@)BC4 0)^@)^@)^@)^@)^@)^@)^@)^[(G0)I-ZIS,I->H(0H92@C@[@[^@)^@)QO )@@G@@BC5 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)I-*G(,^@)@D@[@[^@)^@)BC6 0)^@)^@)^@)^@)QP )@@G@@^@)^@)^@)^@)^@)^@)^[+G($HD,^@)@G@[@[^@)^@)BC7 0)^@)^@)^@)^@)^@)^@)^@)^@)QQ )@@G@@^@)^@)^[\G1&^@'B*)H1>I9ZI->H(0^@;^@)@K@[@[^@)^@)BC8 0)^@)^@)^@)^@)^@)^@)QR )@@G@@^@)^@)^@)^@)^[$G(,G(2F9(H13I-2 [JE[#F9GC)?H9&G0?H->I01 -\G1&AC(^@;@F@[@[QS )@@G@@^@)^@)BC9 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[\G1&AC)BK.^[\G1&^@;^@)@D@[@[QT )@@G@@^@)^@1A@0 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>H1=^@;^@)@]@[@[^@)^@1A@1 0)QU )@@G@@@K@[@[^@)^@1A@2 0)^@)^@)^@)^@)^@)^@)^@)^[$G(,G(2F9(H13I-2 [JE[#F93I(+IK?QV )@@G@@H9&G01 -?G(6AK?H9&G02 C)BS)^@)@B@[@[^@)^@1A@3 0)^@)^@)^@)^@)^@)^@)^@)^[>QW )@@G@@H1=^@;@]@[@[^@)^@1A@4 0)@D@[@[^@)^@1A@5 0)^@)^@)^@)^@)^[&IL>G(ZI->H(0 [\QX )@@G@@G1&AC(^@;^@)@E@[@[^@)^@1A@6 0)^@)^@)^@)^@)^[(G0)IT>H(ZIT4GDQY )@@G@@H(0H92@A@[@[^@)^@1A@7 0)^@)^@)^@)^@)^@)^@)I-*G(,@E@[@[^@)^@1A@8 0)^@)^@)QZ )@@G@@^@)^@)^@)^@)^@)^[&IL>G(ZI->H(0 [\G1&AK(^@;@]@[@[^@)^@1A@9 0)@H@[@[^@)^@1RA )@@G@@AC0 0)^@)^@)^@)^@)^[3G(!F93I--GT:FT3F*,H90I-(H(ZG(6GD?^@'B*)I-2I(>^@;^@)RB )@@G@@@B@[@[^@)^@1AC1 0)^@)^@)^@)^@)^[,G(7 [0 C)BS)^@)@D@[@[^@)^@1AC2 0)^@)^@)RC )@@G@@^@)^@)^[0F0,H1>J[4^@'B*)H1(H))BS)^@)@G@[@[^@)^@1AC3 0)^@)^@)^@)^@)^[0F0,RD )@@G@@G(,I-2JC)BK.^[0IL\G92GD!F9J[4^@'B*)RG )@@G@@H1(H))BS)^@)@H@[@[^@)^@1AC7 0)^@)^@)^@)^@)^[0F0,G(,I-2JC)BK.^[0IL\G92GD!RH )@@G@@F9^@'B*)I@)BS)@]@[@[^@)^@1AC9 0)@C@[@[^@)^@1AK0 0)^@)^@)RJ )@@G@@^@)^@)^[^@'B*)D9KCTZCLU^@;^@)@G@[@[^@)^@1AK2 0)^@)^@)^@)^@)^@)^@)RL )@@G@@H->IT3^@'^@)H90GT\G->^@'B*)D9KCTZCLGFK)BS)@G@[@[^@)^@1AK3 0)^@)^@)^@)^@)RM )@@G@@^@)^@)H->ITZG(1BK)H90GT\G->^@'B*)D9KCTZCLIC9U^@;@H@[@[^@)^@1AK4 0)^@)^@)RN )@@G@@^@)^@)^@)^@)G92G(-I->IK)BK)H90GT\G->^@'B*)D9KCTZCLBFK)BS)^@)@I@[@[^@)^@1RO )@@G@@AK5 0)^@)^@)^@)^@)^@)^@)G92G(-I->ILZG(1^@'^[\I[H1=^@;^@)@]@[@[^@)^@1AK8 0)RR )@@G@@@G@[@[^@)^@1AK9 0)^@)^@)^@)^@)^[$G(,G(2F9(H13I-2 [\I[H(0H92RU )@@G@@^@'B*)G1-H-3G*)BS)@A@[@[^@)^@1AS2 0)^@)^@)^@)^@)^[>H1=^@;^@)@]@[@[^@)^@1RV )@@G@@AS3 0)@B@[@[^@)^@1AS4 0)^@)^@)^@)I-ZGL\H9?G(-H0)BK)^@)@A@[@[^@)^@1AS5 0)RW )@@G@@^@)^@)^@)^@)^[+G($HD,^@)@D@[@[^@)^@1AS6 0)^@)^@)^@)^@)^[(G0)I)2^@/B0)I-ZRX )@@G@@GL\H9?G(-H0)@A@[@[^@)^@1AS7 0)^@)^@)^@)^@)^@)^@)I-*G(,@B@[@[^@)^@1AS8 0)RY )@@G@@^@)^@)^@)^@)^@)^@)^@)^[+G($HD,@F@[@[^@)^@1AS9 0)^@)^@)^@)^@)^@)^@)^@)^[>RZ )@@G@@IL2H92F90IL\GS*G(2ILZGS(^@;^@)@R@[@[^@)^@1A)0 0)^@)^@)^@)^@)^@)^@)^@)^[7SA )@@G@@IL(I->H-, [=HD-G9,F9&HD?G*?^8*^8?G(2ILZGS?^8(^@% K%^[3G(!GD,I-(GS)G(2IL\SB )@@G@@IK)BK)HD,GT\H(+GD4HD+H->^@$ ))@N@[@[^@)^@1A)1 0)^@)^@)^@)^@)^@)^@)^@)^@)SC )@@G@@^@)^@)^@)^@)^9\I[>IL-H1=^[4JD0G(3^[&H92^[2G(?GD4HD\H1-H))H90G(2GD4H92^8(SD )@@G@@^@;^@)@I@[@[^@)^@1A)2 0)^@)^@)^@)^@)^@)^@)^@)^[3G(!F93I--GT:FT3F*,G(2IL\SE )@@G@@ILZIL>GS)^@'B*)I-2I(>^@;@D@[@[^@)^@1A)3 0)^@)^@)^@)^@)^@)^@)^@)^[$H94H8)SF )@@G@@IL>I-5IL,^@;@B@[@[^@)^@1A)4 0)^@)^@)^@)^@)^@)^@)^@)^[>H1=^@;@D@[@[^@)^@1SG )@@G@@A)5 0)^@)^@)^@)^@)^[>IL2H92F90IL\GS*G(2ILZGS(^@;@R@[@[^@)^@1A)6 0)^@)^@)SH )@@G@@^@)^@)^[7IL(I->H-, [=HD-G9,F9&HD?G*?^8*^8?G(2ILZGS?^8(^@% K%^[>IL2H92^@'SI )@@G@@^@$^9+H9\H->GD,^8$^[2G(?^@$^9+H9\H->GD,^8$^8?^@)@L@[@[^@)^@1A)7 0)^@)^@)SJ )@@G@@^@)^@)^@)^@)^@)^@)^8)H[-IS)H1\I))JD>I))GL>G(,^[(H(0H->H(>H14G(=^@,^[3H92SK )@@G@@IL9^8(^@;^@)@H@[@[^@)^@1A)8 0)^@)^@)^@)^@)^[3G(!F93I--GT:FT3F*,G(2IL\IK0SL )@@G@@IL>GS)BK.^[4IL5G*)BS)^@)@A@[@[^@)^@1A)9 0)^@)^@)^@)^@)^[>H1=^@;^@)@^@[@[SM )@@G@@^@)^@1A*0 0)^@)^@)^@)I-Z(]@@@[IT4IL(H1$^@'@A@[@[^@)^@1A*1 0)^@)^@)^@)^@)SN )@@G@@^[+G($HD,^@)@D@[@[^@)^@1A*2 0)^@)^@)^@)^@)^[(G0)I)2^@/B0)I-ZIT4IL(H1$^@)SO )@@G@@@A@[@[^@)^@1A*3 0)^@)^@)^@)^@)^@)^@)I-*G(,@B@[@[^@)^@1A*4 0)^@)^@)^@)^@)SP )@@G@@^@)^@)^@)^[+G($HD,@F@[@[^@)^@1A*5 0)^@)^@)^@)^@)^@)^@)^@)^[>IL2H92F90IL\SQ )@@G@@GS*G(2ILZGS(^@;^@)@R@[@[^@)^@1A*6 0)^@)^@)^@)^@)^@)^@)^@)^[7IL(I->H-, [=SR )@@G@@HD-G9,F9&HD?G*?^8*^8?G(2ILZGS?^8(^@% K%^[3G(!GD,I-(GS)G(2IL\IK)BK)HD,GT\SS )@@G@@H(+GD4HD+H->^@$ ))@N@[@[^@)^@1A*7 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ST )@@G@@^9\I[>IL-H1=^[4JD0G(3^[&H92^[2G(?GD4HD\H1-H))H90G(2GD4H92^8(^@;^@)@I@[@[SU )@@G@@^@)^@1A*8 0)^@)^@)^@)^@)^@)^@)^@)^[3G(!F93I--GT:FT3F*,G(2IL\ILZIL>GS)^@'SV )@@G@@B*)I-2I(>^@;@D@[@[^@)^@1A*9 0)^@)^@)^@)^@)^@)^@)^@)^[$H94H8)IL>I-5IL,^@;SW )@@G@@@B@[@[^@)^@1A00 0)^@)^@)^@)^@)^@)^@)^@)^[>H1=^@;@D@[@[^@)^@1A01 0)^@)^@)SX )@@G@@^@)^@)^[>IL2H92F90IL\GS*G(2ILZGS(^@;@Q@[@[^@)^@1A02 0)^@)^@)^@)^@)^[7IL(SY )@@G@@I->H-, [=HD-G9,F9&HD?G*?^8*^8?G(2ILZGS?^8(^@% K%^[>IL2H92^@'^@$^93I-2HD,SZ )@@G@@G8$^8)IL>H))^8$IT4IL(H1$^8$^8?@L@[@[^@)^@1A03 0)^@)^@)^@)^@)^@)^@)^@)^@)TA )@@G@@^8)H[-IS)H1\I))JD>I))GL>G(,^[(H(0H->H(>H14G(=^@,^[3H92IL9^8(^@;^@)@H@[@[TB )@@G@@^@)^@1A04 0)^@)^@)^@)^@)^[3G(!F93I--GT:FT3F*,G(2IL\ILZIL>GS)BK.^[4IL5G*)TC )@@G@@BS)^@)@A@[@[^@)^@1A05 0)^@)^@)^@)^@)^[>H1=^@;^@)@]@[@[^@)^@1A06 0)@D@[@[TD )@@G@@^@)^@1A07 0)^@)^@)^@)G(,G))BS)^@)JS)H9&^[TK )@@G@@H))IL>I-5IL,^@;^@)@]@[@[^@)^@)^@6 0)@^@[@[^@)^@)^@7 0)^@)^@)I1-IK)@B@[@[TL )@@G@@^@)^@)^@8 0)^@)^@)^@)G(2ILZGS)BK)GT*GD2^@;@B@[@[^@)^@)^@9 0)^@)^@)^@)IS)TM )@@G@@BK)HD,I->G9>IK)BS)@D@[@[^@)^@)AC0 0)^@)^@)^@)I@)BK)F1G9(H0)^@)@C@[@[^@)^@)TO )@@G@@AC3 0)^@)^@)IS)BK.^[3G(!F93I--GT:F94H90^@;@E@[@[^@)^@)AC4 0)^@)^@)HD&^[3TP )@@G@@G(!F93I--GT:FT3F*,G(2IL\ILZIL>GS)^@)@A@[@[^@)^@)AC5 0)^@)^@)^@)^@)^[4H[>TQ )@@G@@H0)^@)@D@[@[^@)^@)AC6 0)^@)^@)^@)^@)^@)^@)G9\I-\^[2G(4I(2H0)BS)^@)@H@[@[TR )@@G@@^@)^@)AC7 0)^@)^@)HD&^[3G(!F93I--GT:FT3F*,G(8I[2F94JD0G*)B)"^[4F9(H14G($TS )@@G@@G(2^@)@ @[@[^@)^@)AC8 0)^@)^@)^@)I-*G(,^@)@A@[@[^@)^@)AC9 0)^@)^@)^@)^@)TT )@@G@@^[+G($HD,^@)@H@[@[^@)^@)AK0 0)^@)^@)^@)^@)^[3G(!F93I--GT:FT3F*,G(2IL\ILZTU )@@G@@IL>GS)BK.^[4IL5G*)BS)^@)@D@[@[^@)^@)AK1 0)^@)^@)^@)^@)^[>IL2H92F90IL\GS*TV )@@G@@G(2ILZGS(^@;@R@[@[^@)^@)AK2 0)^@)^@)^@)^@)^[7IL(I->H-, [=HD-G9,F9&HD?G*?TW )@@G@@^8*^8?G(2ILZGS?^8(^@% K%^[3G(!GD,I-(GS)G(2IL\IK)BK)H1\H0!GL\H9?G(-H0)H->TX )@@G@@G14^@$ ))^@)@ @[@[^@)^@)AK3 0)^@)^@)^@)^@)^@)^@)(C@@@[^@)^@)^@)^@)^@)^@)TY )@@G@@^9\I[>IL-H1=^[&H92^@&^8(^@;^@)@C@[@[^@)^@)AK4 0)^@)^@)^@)^@)^[$H94H8)IL>TZ )@@G@@I-5IL,^@;^@)@A@[@[^@)^@)AK5 0)^@)^@)^@)^@)^[>H1=^@;^@)@E@[@[^@)^@)AK6 0)UA )@@G@@^@)^@)HD&^[3G(!F93I--GT:FT3F*,H90I-(H(ZG(6GD?^@)@ @[@[^@)^@)AK7 0)^@)^@)UB )@@G@@^@)I-*G(,^@)@A@[@[^@)^@)AK8 0)^@)^@)^@)^@)^[+G($HD,^@)@L@[@[^@)^@)AK9 0)UC )@@G@@^@)^@)^@)^@)^[+GDIK(^@;@ @[@[^@)^@)AS0 0)^@)^@)^@)^@)^[>H1=@ @[@[^@)^@)AS1 0)UE )@@G@@^@)^@)^@)G(?IT>^@)@A@[@[^@)^@)AS2 0)^@)^@)^@)^@)^[+G($HD,^@)@H@[@[^@)^@)UF )@@G@@AS3 0)^@)^@)^@)^@)^[3G(!F93I--GT:FT3F*,H90I-(H(ZG(6GD?^@'B*)I-2I(>^@;^@)UG )@@G@@@Q@[@[^@)^@)AS4 0)^@)^@)^@)^@)^[$G(,G(2F9(H13I-2 [JE[#F9GC)?I1\H--I)1 -3UH )@@G@@G(!F93I--GT:FT3F*,I[2H9J[4^@'B*)H1(H))BS)^@)@G@[@[^@)^@)AS7 0)^@)^@)^@)^@)^[0F0,G(,I-2UK )@@G@@JC)BK.^[0IL\G92GD!F9^@'B*)I@)BS)@H@[@[^@)^@)AS9 0)^@)^@)^@)^@)UM )@@G@@^[$G(,G(2F9(H13I-2 [JE[#F9]FK?I1\H--I)1 )0 )0 C)BS)^@)@G@[@[^@)^@)A)0 0)UN )@@G@@^@)^@)^@)^@)^[3G(!F93I--GT:FT3F*,I->H(0H92^@'B*)G1-H-3G*)BS)@A@[@[^@)^@)UO )@@G@@A)1 0)^@)^@)^@)^@)^[>H1=^@;^@)@]@[@[^@)^@)A)2 0)@B@[@[^@)^@)A)3 0)^@)^@)UP )@@G@@IL>I-5IL,^@'^[>H1=^@;^@)+@@@@@0E@@@@H,,1, ===== CONSTAUQ )@@G@@BLE =====. (G@@@@ UR )@@G@@ +@@@@[@O__@[^@)^@)^@1 0)^@)^@)I[2H9ILZGT\H13I)*GT\H13I-ZI1-H)'HD,I->G9>IK)BS)I1-IK)GTZH9&G13G(4^@'UT )@@G@@^[(H14G($G(2 C;^@)@K@[@[^@)^@)^@2 0)^@)^@)JT H14G(2IS)I1-H-5G*)HD,^[4H[>UU )@@G@@^[I-5IL,IS)I-*G*)@K@[@[^@)^@)^@3 0)^@)^@)UV )@@G@@^[\G1&IT>I),^[OH[>^[4GD+H->^[(IS)H(-HD,I--HD,G(=^[-IS)GC)H-(H1:G(=^[?HD3UW )@@G@@I))J*)@]@[@[^@)^@)^@4 0)@E@[@[^@)^@)^@5 0)^@)^@)^@)I1-IK)I@)BK)F1G9(H0)UY )@@G@@@C@[@[^@)^@)^@8 0)^@)^@)^@)^@)^[(G0)GT\H13I-ZI1-H).A@)@I@[@[^@)^@)^@9 0)UZ )@@G@@^@)^@)^@)^@)^@)^@)I-*G(,^@)^@)^@)^@)^@)^@)^@)JS)GT\H(!H9,H-9^[5IT>G))J*)VA )@@G@@@D@[@[^@)^@)AC0 0)^@)^@)^@)^@)^@)^@)^@)^[I)'B*0^@)@A@[@[^@)^@)VB )@@G@@AC1 0)^@)^@)^@)^@)^@)^@)G(?IT>@E@[@[^@)^@)AC2 0)^@)^@)^@)^@)^@)^@)^@)^[(VC )@@G@@G0)GT\H13I-ZI1-H).AC)^@)@I@[@[^@)^@)AC3 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)I-*VD )@@G@@G(,^@)^@)^@)^@)^@)^@)^@)JS)I-*GD4^[4H9\^[.@F@[@[^@)^@)AC4 0)^@)^@)^@)^@)VE )@@G@@^@)^@)^@)^@)^@)^@)^[I))BK.^@1^@)@C@[@[^@)^@)AC5 0)^@)^@)^@)^@)VF )@@G@@^@)^@)^@)^@)^@)G(?IT>^@)@G@[@[^@)^@)AC6 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VG )@@G@@^[7HD4H@)GT\H13I-ZI--GL?G*)G-\@E@[@[^@)^@)AC7 0)^@)^@)^@)^@)^@)^@)^@)^@)VH )@@G@@^@)^@)^@)^@)GL>G9(H0)^@)@I@[@[^@)^@)AC8 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VI )@@G@@^@)^@)^@)^[I)'B(?G(,G94H@)BS)^@)@^@[@[^@)^@)AC9 0)^@)^@)^@)^@)VJ )@@G@@(D@@@[^@)^@)^@)^@)^@)^@)^@)^@)^@)^[?G(,G94H@) S'B*)AC)BS)^@)@F@[@[^@)^@)VK )@@G@@AK0 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[,G(7 [0 C)BS)@I@[@[^@)^@)VL )@@G@@AK1 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[0F0,G(,I-2JC'B(VN )@@G@@J[4BK.H1(H))BS)^@)@H@[@[^@)^@)AK3 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VO )@@G@@^@)^[?GD3I-Y 1,G(8I)'B(0^@;^@)@F@[@[^@)^@)AK4 0)^@)^@)^@)^@)^@)^@)^@)^@)VP )@@G@@^@)^@)^@)^@)^@)^[?GD3I)'B(0^@;@E@[@[^@)^@)AK5 0)^@)^@)^@)^@)^@)^@)^@)^@)VQ )@@G@@^@)^@)^@)^@)G(,G))BS)^@)@F@[@[^@)^@)AK6 0)^@)^@)^@)G(,G))BS)^@)^[;^[\G0)VR )@@G@@G(,I->ILZGT\H13I))J*)^@)@]@[@[^@)^@)AK7 0)@]@[@[^@)^@)AK8 0)@]@[@[^@)^@)VS )@@G@@AK9 0)@O@[@[^@)^@)AS0 0)^@)^@)I[2H9ILZGTZIT4IL(H1$ [6GD2VT )@@G@@^[3^@'^[YH1\G9\F93I-2HD,G8)BS)I1-IK)H))BK)HD,I->G9>IK(^@;^@)@]@[@[^@)^@)VU )@@G@@AS1 0)@ @[@[^@)^@)AS2 0)^@)^@)GL>G9(H0)^@)@E@[@[^@)^@)AS3 0)^@)^@)^@)H)'VV )@@G@@B( 1?G(,G94H@)BS)^@)@H@[@[^@)^@)AS4 0)^@)^@)^@)GT\H13I-ZVW )@@G@@I--GL?G*,H->H1$I-*^@:BK.^[3F0,I9ZH->H1$I-*^@;^@)@H@[@[^@)^@)AS5 0)^@)^@)VX )@@G@@^@)GT\H13I-ZI--GL?G*,H--IT4F0,H1>J[4^@'B*)ITY 1&HD2IT4^@;^@)@G@[@[^@)^@)VY )@@G@@AS6 0)^@)^@)^@)GT\H13I-ZI--GL?G*,H--IT4^@'B*)ITY 13F9?GD3I))BS)^@)@B@[@[VZ )@@G@@^@)^@)AS7 0)^@)^@)^@)G-(IT0H93G**IS(^@;^@)@E@[@[^@)^@)AS8 0)^@)^@)G(,G))WA )@@G@@BS)^[;^[\G0)G(,I->ILZGTZIT4IL(H1$^[.+@@@@@0G@@@@H,,1, =WB )@@G@@==== ENV1 =====. (E@@@@ WC )@@G@@ +@@@@[@E__@[^@)^@)^@1 0)^@)^@)WD )@@G@@C(IE1DELJD1HC(IE))C- CTGCDMCDODDJD1N^@;^@)@]@[@[^@)^@)^@2 0)@]@[@[^@)^@)WE )@@G@@^@3 0)@ @[@[^@)^@)^@4 0)^@)^@)GT\H13I))^@)@N@[@[^@)^@)^@5 0)^@)^@)^@)^@)WF )@@G@@GTZHD,I[5I-ZH->H1$I-*B*8AK)BS)^[;^[4H[>^[3H95IL^[?G(,G94H@)J*)@M@[@[^@)^@)^@6 0)^@)^@)^@)^@)GTZHD=G(,I-ZH15H(+G(2B*4WH )@@G@@AK)BS)JS)I-*G*)I-\HT>H0)H15H(+G(2^[&H92^[(G->H14HD&HD>IK)J*)@K@[@[^@)^@)WI )@@G@@^@7 0)^@)^@)^@)^@)GTZH(-J[ZI->IL!HD,GD?B*7A@)BS)JS)I-*G*)H(-J@)I->IL!HD,WJ )@@G@@GD?^[,I(!GL>IK)J*)@E@[@[^@)^@)^@8 0)^@)^@)^@)^@)ITF9-IT3G9,B*5^@;^@)@E@[@[^@)^@)AK2 0)^@)^@)^@)HD,I-=HD6F9-IT3WU )@@G@@G9,B*6^@;^[>J[0F9-IT3G9,(G@@@[B*7^@;^[\ILZGD3IT$H0.B@)BS)GD,G-ZGD3IT$H0.WV )@@G@@BC)BS)GT-I-ZGD3IT$H0.AC0^@;^@)@]@[@[^@)^@)AK3 0)@M@[@[^@)^@)AK4 0)^@)^@)WW )@@G@@^@)I-2I(,GS.AC)BS)G1?H9\IK.AK)BS)GT>HD?HD,G8.AS)BS)^@)^@)^@)^@)^@)JT&H92WX )@@G@@^[PD1[ELTD9K^[.^@)@]@[@[^@)^@)AK5 0)@H@[@[^@)^@)AK6 0)^@)^@)^@)^@)^@)^@)WY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)JT&H92^[MC(GD9K^[.^@)@P@[@[^@)^@)AK7 0)^@)^@)WZ )@@G@@^@)G(1I(-H).AC)BS)H->IT3B*2^@;^[?G(3ITZG(1B*3^@;^[$IL>GD4G(2B*4^@;^[$IL>XA )@@G@@GD4G(2F9>IC.A*)BS)H1\I-ZG(1B*6^@;^@)@]@[@[^@)^@)AK8 0)@G@[@[^@)^@)AK9 0)XB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JS)G1\IK)CTJD1NE-[D1O^[.^@)@L@[@[^@)^@)XC )@@G@@AS0 0)^@)^@)^@)I-ZGL\H9?G(-H0.AC)BS)I-ZHD,I->G9>IK.AK)BS)I-ZIL>GD?B*3^@;XD )@@G@@^[4F93I-2HD,G8.A))BS)^@)@]@[@[^@)^@)AS1 0)@K@[@[^@)^@)AS2 0)^@)^@)^@)^@)XE )@@G@@^@)^@)^@)^[;^[OC(MD(DD1[D-N^[MC(LE(DELDD1B^[NC(HCDIE-DCS)EL CTJEL^ES)J*)XF )@@G@@@M@[@[^@)^@)AS3 0)^@)^@)^@)I-ZGD3IT(G9,H90B*4A@)BS)I-ZGT\H13I--H14B*4AC)XG )@@G@@BS)I-ZHD=B*4AK)BS)I-ZH(5H-4H90B*4AS)BS)^@)@I@[@[^@)^@)AS4 0)^@)^@)^@)I-ZXH )@@G@@I[?I(3H90B*4A))BS)I-ZIL>H-\I@.A)5^@;^[4F95H1-IL9H90B*4A0)BS)@]@[@[^@)^@)XI )@@G@@AS5 0)@]@[@[^@)^@)AS6 0)@F@[@[^@)^@)AS7 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XJ )@@G@@JS)E-CC*)D9KCTJC- ES)J*)@P@[@[^@)^@)AS8 0)^@)^@)^@)D9KCTZC1DF@.A-]^@;^[JXK )@@G@@E[#F9IC(BB*1A[]^@;^[JE[#F9AD-JCDOB*1A-]^@;^[JE[#F9ID9OB*2A[]^@;^[JE[#F9]XL )@@G@@B*3A[]^@;^@)@P@[@[^@)^@)AS9 0)^@)^@)^@)D9KCTZCLUB*4A[]^@;^[JE[#F9]D1UB*5XM )@@G@@A[]^@;^[JE[#F9]C9UB*6A[]^@;^[JE[#F9]D1BFK.A80CK)BS)D9KCTZCLGFK.AC0A[]^@;XN )@@G@@@R@[@[^@)^@)A)0 0)^@)^@)^@)D9KCTZCLID-UB*1AC0CK)BS)D9KCTZCL[D).AC2A[]^@;XO )@@G@@^[JE[#F9]DTOB*1AK4CK)BS)D9KCTZETQCS.AC3A[]^@;^[JE[#F9OELIC8.AC3A-]^@;^@)XP )@@G@@@Q@[@[^@)^@)A)1 0)^@)^@)^@)D9KCTZETCD).AC4A[]^@;^[JE[#F9ND[MB*1A*0CK)BS)XQ )@@G@@D9KCTZD-^CC.AC6A[]^@;^[JE[#F9NE).AC7A[]^@;^[JE[#F9GC).AK0A[]^@;^@)@N@[@[XR )@@G@@^@)^@)A)2 0)^@)^@)^@)D9KCTZCD^C).AK1A[]^@;^[JE[#F9[C-^EK.AK1A-]^@;^[JE[#XS )@@G@@F9NE(]B*2AK0CK)BS)D9KCTZETPCLMB*2AK4CK)BS)@N@[@[^@)^@)A)3 0)^@)^@)^@)D9KXT )@@G@@CTZD(PD).AK3A[]^@;^[JE[#F9HE(GEK.AK3A-]^@;^[JE[#F9^DDQB*2A)0CK)BS)D9KCTZXU )@@G@@C-DE1MB*2A)4CK)BS)@G@[@[^@)^@)A)4 0)^@)^@)^@)D9KCTZC(SE@.AK5A[]^@;^[JE[#XV )@@G@@F9 F[KEL B*2A*4CK)BS)^@)@J@[@[^@)^@)A)5 0)^@)^@)^@)D9KCTZCDIC).AK6A[]^@;XW )@@G@@^[JE[#F9JEK.AK7A[]^@;^[JE[#F9SD9MB*3A@0CK)BS)^@)@N@[@[^@)^@)A)6 0)^@)^@)XX )@@G@@^@)D9KCTZEL^D).AS1A[]^@;^[JE[#F9MC-MB*3AC4CK)BS)D9KCTZEL^DC.AS2A[]^@;^[JXY )@@G@@E[#F9METOEK.AS2A-]^@;^@)@Q@[@[^@)^@)A)7 0)^@)^@)^@)D9KCTZE9GB*3AS0CK)BS)XZ )@@G@@D9KCTZE9MB*3AS4CK)BS)D9KCTZE9DB*3A)0CK)BTJE[#F9RETOEK.AS5A[]^@;D9KCTZETFYA )@@G@@E@.AS6A[]^@)BS)^@)@O@[@[^@)^@)A)8 0)^@)^@)^@)D9KCTZCT[E).AS5A-]^@;^[JE[#YB )@@G@@F9NE(NE-MB*3A04CK)BS)D9KCTZETOC(LB*3A80CK)BS)D9KCTZETOD-NES.AS7A-]^@;^@)YC )@@G@@@C@[@[^@)^@)A)9 0)^@)^@)^@)D9KCTZETOE[#B*1A84CK)BS)^@)@]@[@[^@)^@)A*0 0)YD )@@G@@@]@[@[^@)^@)A*1 0)@E@[@[^@)^@)A*2 0)^@)^@)^@)GTZIT>H(ZIT4GD^@.YE )@@G@@^@1AK0^@;^@)@]@[@[^@)^@)A*3 0)@B@[@[^@)^@)A*4 0)^@)^@)^@)I1\H--I)1^@.^@0YF )@@G@@^@;^@)@A@[@[^@)^@)A*5 0)^@)^@)^@)I1\H--I)2^@.^@9([@@@[^@;^@)@B@[@[^@)^@)YG )@@G@@A*6 0)^@)^@)^@)I1\H--I)3^@.^@1A@)BS)@]@[@[^@)^@)A*7 0)@]@[@[^@)^@)A*8 0)YH )@@G@@@^@[@[^@)^@)A*9 0)^@)^@)I-9I[>@H@[@[^@)^@)A00 0)^@)^@)^@)^@)I-ZHD,I[5I-ZYI )@@G@@H->H1$I-*^@.^@0 0,GTZHD,I[5I-ZH->H1$I-*^@;@H@[@[^@)^@)A01 0)^@)^@)^@)^@)YJ )@@G@@I-ZH(-J[ZI->IL!HD,GD?^@.^@1 0,GTZH(-J[ZI->IL!HD,GD?^@;@I@[@[^@)^@)A02 0)YK )@@G@@^@)^@)^@)^@)I-ZIL>ITZI9ZH->H1$I-*^@.^@1 0,ITITZI9\IL=^@.^[0GDG))GD2IL-JDVI-ZIL>YM )@@G@@ITZI9ZH->H1$I-*F*)H9&^[^@.^[0GDG))GD2IL-JDVI-ZHD,I[5I-ZH->H1$I-*F*)H9&^[H(ZIT4GD -4F9>J[0IK?I-ZI[\ITZH(-IL:G(2 C)BS)^@)@]@[@[^@)^@)A09 0)@E@[@[YR )@@G@@^@)^@)A80 0)^@)^@)^@)GT\H13I--H14F9>H14IL9^@.^@)IL>GT\IL=^@)@H@[@[^@)^@)YS )@@G@@A81 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>H14IL9^@'^[(H14G($G(2^@;YT )@@G@@@J@[@[^@)^@)A82 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[,G(8I))BK)F1H14IL9F90I))B*)F1H1$I-*YZ )@@G@@^@'^[(H14G($G(2^@;@L@[@[^@)^@)B@0 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZA )@@G@@ITZG1(IL3I)?ITZH--IT4^@'^[H1=^@;^@)@]@[@[^@)^@)B@2 0)@]@[@[^@)^@)ZC )@@G@@B@3 0)@G@[@[^@)^@)B@4 0)^@)^@)^@)H1\G9\F93I-2HD,G9ZI[4^@.^[YH1\G9\F93I-2ZD )@@G@@HD,G8)BS)^@)@]@[@[^@)^@)B@5 0)@]@[@[^@)^@)B@6 0)@E@[@[^@)^@)B@7 0)^@)^@)ZE )@@G@@^@)I1-IL(GD,I-ZI--G9ZI))B*)A@, 06A*5AS5^@;@]@[@[^@)^@)B@8 0)@]@[@[^@)^@)ZF )@@G@@B@9 0)@]@[@[^@)^@)BC0 0)@C@[@[^@)^@)BC1 0)^@)^@)H--GL>H-ZIT4GDZG )@@G@@^@.^@)@A@[@[^@)^@)BC2 0)^@)^@)^@)^@)^[2G(J[4^@'^[YH--GL>H-ZIT4GD^@;^@)@E@[@[^@)^@)BC4 0)ZI )@@G@@^@)^@)^@)^@)^@)^@)H--GLZIT4IK)BK)IL>ITZI9\IL=^@;@H@[@[^@)^@)BC5 0)^@)^@)ZJ )@@G@@^@)^@)^@)^@)G(8HD4F9(H1&^@'^[^[H1=^@;^@)^@)^@)^[;^[\G0)IL>GT\IL=ZO )@@G@@^[.^@)@I@[@[^@)^@1A@0 0)^@)^@)^@)I-ZIT>H(ZIT4GD^@.^@1 0,GTZIT>ZP )@@G@@H(ZIT4GD^@;^@)@B@[@[^@)^@1A@1 0)^@)^@)IT>H(ZIT4GD^@.ZQ )@@G@@@ @[@[^@)^@1A@2 0)^@)^@)^@)IL>GT\IL=@ @[@[^@)^@1A@3 0)^@)^@)^@)^@)^[>IL2ZR )@@G@@( @@@[H92F92G(<^@'^[+H9\H->GD,^@;^@)@G@[@[^@)^@1A@4 0)^@)^@)^@)^@)^[F9&^@'^[3G(!F93I--GT:F94^[\G0)^@)@C@[@[^@)^@1A@5 0)^@)^@)^@)^@)ZT )@@G@@^@)^@)I-ZI-\HT>H0)BK)^@)@I@[@[^@)^@1A@6 0)^@)^@)^@)^@)^@)^@) @)^[H1ZG0)BK)I1-IL(GD,I-ZI--G9ZI))H9&^@)@I@[@[^@)^@1A@7 0)^@)^@)^@)^@)ZV )@@G@@^@)^@)^@)^@)^@)I-ZGD3IT(G9,H90 -4F9!I(?I-\I@?I-ZI[?I(3H90 ))@M@[@[^@)^@1ZW )@@G@@A@8 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[4F92G(?H90 -4F95H1-IL9H90^@'^@) @)ZX )@@G@@H90G(2^@'^[(H14G($G(2^@(^@;^@)@I@[@[^@)^@1A@9 0)^@)^@)^@)^@)^@)^@)^@)^@)ZY )@@G@@^@)I-ZHD=^@'^@*^[(G-ZG0)BK)IL>ITZI9\IL=^@(^@;^@)@E@[@[^@)^@1AC0 0)^@)^@)ZZ )@@G@@^@)^@)^@)^@)^@)^@)^@)I-ZGT\H13I--H14^@'^@)@L@[@[^@)^@1AC1 0)^@)^@)^@)^@)AA )@@G@@^@)^@)^@)^@)^@) @)^[G9>IK)BK) [(H14G($G(2F96^@'^[(H14AE )@@G@@G($G(2 C)BS)@J@[@[^@)^@1AC4 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)I-ZIL>AF )@@G@@GD?^@'^@*^[2G(-H-ZI0)BK)IL>GD?^@(^@;@L@[@[^@)^@1AC5 0)^@)^@)^@)^@)^@)^@)AG )@@G@@^@)^@)^@)^@)^@)^@)I-ZIT4IL(H1$^@'^@*IT4IL(H1$F96^@'^[YH1\G9\F93I-2HD,G8(AH )@@G@@@B@[@[^@)^@1AC6 0)^@)^@)^@)^@)^@)^@)^@)^@)^@) C)@A@[@[^@)^@1AC7 0)^@)^@)AI )@@G@@^@)^@)^@)^@) C)BS)@C@[@[^@)^@1AC8 0)^@)^@)^@)^@)^@)^@)I-ZHD=F9?HD3I))BK)AJ )@@G@@@B@[@[^@)^@1AC9 0)^@)^@)^@)^@)^@)^@) @)^[(G-ZGT\(^@@@[I(,I))BK)HD,I->G9>AK )@@G@@IK)BS)@F@[@[^@)^@1AK0 0)^@)^@)^@)^@)^@)^@)^@)^[(G-ZH-(IT4^@'^[(H14G($G(2AL )@@G@@ C)BS)@B@[@[^@)^@1AK1 0)^@)^@)^@)^@)^@)^@)I-ZG->GT?^@'@G@[@[^@)^@1AK2 0)AM )@@G@@^@)^@)^@)^@)^@)^@) @)^[4F9=G(^@'^[(H14G($G(2^@(^@;@B@[@[^@)^@1AN )@@G@@AK3 0)^@)^@)^@)^@)^@)^@)I-ZI-9I[>^@'@F@[@[^@)^@1AK4 0)^@)^@)^@)^@)^@)^@)AO )@@G@@ @)^[4JD0G(ZI))BK)HD,I->G9>IK)BS)^@)@G@[@[^@)^@1AK5 0)^@)^@)^@)^@)^@)^@)AP )@@G@@^@)^[4JD0G(ZIT(JL>^@'^[(H14G($G(2 C)BS)^@)@D@[@[^@)^@1AK6 0)^@)^@)^@)^@)AQ )@@G@@^@)^@)I-ZI[\ITZH(-IL:G(2^@'^@)@F@[@[^@)^@1AK7 0)^@)^@)^@)^@)^@)^@) @)I[\AR )@@G@@ITZH(-IL:^@'^[(H14G($G(2^@(^@;@B@[@[^@)^@1AK8 0)^@)^@)^@)^@)^@)^@)I-ZG(8AS )@@G@@I[2^@'@M@[@[^@)^@1AK9 0)^@)^@)^@)^@)^@)^@) @)^[J[0IK?IL>GD=H9,AT )@@G@@H-9 -4G(!I[\IK?IL>G9(IT4G(2^@'^[+H9\H->GD,^@;^@)@H@[@[^@)^@1AS0 0)^@)^@)AU )@@G@@^@)^@)^@)^@)^@)^[0IL\GTZH->I0?H9&G13G(4^@'^[(H14G($G(2^@;^@)@I@[@[^@)^@1AV )@@G@@AS1 0)^@)^@)^@)^@)^@)^@)^@)^[GD,^[\G0)^@)@E@[@[^@)^@1AS4 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AZ )@@G@@^@)^@)I-2I(>^@'^@)@N@[@[^@)^@1AS5 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)BA )@@G@@^@)^@*^[+H9\H-ZI-2I(> -+H9\H-ZG1-H-3G*)BK)F1 -4H9:G(,F93I-2HD,G8?HD,I[5I-ZH-(H1>^@'^[0GDG))GD2IL-JDVI-ZHD,I[5BF )@@G@@I-ZH->H1$I-*F*)H9&^[^@?^[H14F9(H10I(4F9^[(H1=BJ )@@G@@G(8^@)@M@[@[^@)^@1A)5 0)^@)^@)^@)^@)H9&^[4H[>^[?GD3I))GT\H13I(!G(=^[^[(H1=G(8@G@[@[^@)^@1A)6 0)^@)^@)BL )@@G@@^@)^@)H9&^[4H[>^[?GD3I))GT*GD2^[(H0)I-*G*)H-(H1>^@,^[.@]@[@[^@)^@1A)7 0)BM )@@G@@@E@[@[^@)^@1A)8 0)^@)^@)^@)^@)H-(H1>F9,I(!GL>IK)BK)HD,I->G9>IK)BS)@E@[@[BN )@@G@@^@)^@1A)9 0)^@)^@)^@)^@)G(2IL\ILZGT\I(,I))BK)HD,I->G9>IK)BS)@F@[@[^@)^@1BO )@@G@@A*0 0)^@)^@)^@)^@)H-(H1>F9>IL2H92F9G))BK)GL\H9?G(-H0)BS)^[;^[4IL5G*)HD&^[4H[>^[H14^[(H10I(4^[?HD,G*)H[-IS)GL>G(,^[?HD3I->G))J*)@D@[@[^@)^@1A*2 0)BR )@@G@@^@)^@)^@)^@)G(2IL\IL3^@'^[+H9\H->GD,^@;^@)@D@[@[^@)^@1A*3 0)^@)^@)^@)^@)BS )@@G@@H1>IT4HD,G8)BK)HD,I->G9>IK)BS)@R@[@[^@)^@1A*4 0)^@)^@)^@)^@)E-[CLGC(N^@'BT )@@G@@^[4G(8I))BS)^[;^[4H[>^[,GD!G*)H9&^[4H[>^[&HD?G*)I9(I-*^[4H[>^[3GT-H1,G(2BU )@@G@@^[-H1=^[0GD2IT>IK)I--GL?G(3^[.@A@[@[^@)^@1A*5 0)^@)^@)^@)^@)G-(GD$H1ZG1(BV )@@G@@(G@@@[H->^@'I->J[4^@;^@)JS)I->J[4^[&HD?G*)G1\IK)I-*G*)G-(GD$H1\IT4HD^[3G(!GD,I-(GS)IL\I(4HD,G(3^[.^@)@]@[@[BY )@@G@@^@)^@1A00 0)@]@[@[^@)^@1A01 0)@G@[@[^@)^@1A02 0)^@)^@)^@)H--GL>H-ZIT4GDH1$I-*^@'^[(H14G($G(2^@;^@)@K@[@[^@)^@1A05 0)^@)^@)^@)^@)^@)^@)CC )@@G@@^@)^@)^@)^@)^@)^@)G1(IL3I)?H--IT4^@'^[YGT\H13I--H14F9>H14IL9^@;^@)@D@[@[CD )@@G@@^@)^@1A06 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>H1=^@;^@)@]@[@[^@)^@1A07 0)CE )@@G@@@F@[@[^@)^@1A08 0)^@)^@)^@)I[2H9$IL-H(ZGT\I(,I->IK)BK)HD,I->G9>IK)BS)^@)CF )@@G@@@]@[@[^@)^@1A09 0)@I@[@[^@)^@1A80 0)^@)^@)^@)GD3GTZI-\F9&HD>H-=^@'^[-IL2CG )@@G@@GD9FS0 0,AC2A9X^[\G0)HD,I->G9>IK)BS)@]@[@[^@)^@1A81 0)@M@[@[^@)^@1A82 0)CH )@@G@@^@)^@)^@)IT>H(ZIT4GDH(ZIT4GDF*)H9&^[3G(!CI )@@G@@F93I--GT:F9,H9=G*)BS)^@)@]@[@[^@)^@1A83 0)@E@[@[^@)^@1A84 0)^@)^@)^@)IT>CJ )@@G@@H(ZIT4GDG9>IK)BS)@D@[@[^@)^@1A85 0)^@)^@)I[2H9IK) ))@D@[@[^@)^@1A87 0)^@)^@)I[2H9F9\I(4^@?^@)JS)H-(IT4IS)H95CN )@@G@@I))I-*G*)GT5IL2G(,I))HD,I[5I))H-(H1>^[.^@)@@@[@[(O@@@[^@)^@1A89 0)^@)^@)CO )@@G@@I[2H9IK*I1-IK)H(-HL\IK)BK)I-ZH(-J[ZI->IL!HD,GD?^@;^[6CP )@@G@@GD2^[!HD,H92^@'^[(H14G($G(2^@;@K@[@[^@)^@1B@0 0)^@)^@)^@)^@)^@)^@)^@)^@)CQ )@@G@@^@)I1-IK)I-\HT>H1ZI[\HD,I->IK)BK)I-ZHD,I[5I-ZH->H1$I-* C) ))@H@[@[^@)^@1CR )@@G@@B@1 0)^@)^@)I[2H9IL2F9<^@'^[F94G(!I@*I)'HD,I->G9>IK( ))@F@[@[^@)^@1B@5 0)^@)^@)CV )@@G@@G15H1G9>IK) ))^@)@N@[@[^@)^@1B@6 0)^@)^@)CW )@@G@@I[2H9ILZGT\H13I)*GT\H13I-ZI1-H)'HD,I->G9>IK;I1-IK)GTZH9&CX )@@G@@G13G(4BL(H14G($G(2 C?^@)@N@[@[^@)^@1B@7 0)^@)^@)I[2H9ILZCY )@@G@@GTZIT4IL(H1$ [6GD2^[3BL,H9$H9ZIT4IL(H1$F90I);I1-IK)H)'HD,I->G9>IK( ))^@)CZ )@@G@@@P@[@[^@)^@1B@8 0)^@)^@)I[2H9H(ZIT*HD&I)*I-\HT>H0?H((H1\IK'DA )@@G@@HD,I->G9>IK)BS)I-\HT>H1ZI[\HD,I->IK'I-ZHD,I[5I-ZH->H1$I-* C?@D@[@[^@)^@1DB )@@G@@B@9 0)^@)^@)I[2H9IL!F9!I(?I-\I[ZG1-GT4H92 ))^@)@E@[@[^@)^@1BC2 0)^@)^@)DE )@@G@@I[2H9J[0ILZI[?I(3H90F94G(2H*?@C@[@[^@)^@1BC3 0)^@)^@)I[2H9H-\I@?^@)@[@[@[^@)^@1(C@@@[BC5 0)^@)^@)I[2H9J[0ILZH92 ))@J@[@[^@)^@1BC9 0)^@)^@)I[2H9H1>ILZDK )@@G@@HD,IT4IK*H90GT\G-> -2G($ -+F92G($ -=HD3I[? C?^@)@M@[@[^@)^@2A@0 0)^@)^@)DL )@@G@@I[2H9H14IL9F90I);^[=G(3I))DM )@@G@@BK)HD,I->G9>IK( ))@C@[@[^@)^@2A@1 0)^@)^@)I[2H9J[(I-ZHD= -H))IL>DU )@@G@@I-5IL,^@;^@)@]@[@[^@)^@)^@9 0)@^@[@[^@)^@)AC0 0)^@)^@)I1-IK)@E@[@[^@)^@)DV )@@G@@AC1 0)^@)^@)^@)H))BK)F1?GD+G(?F93I--GT:F9,H9=G*)BS)^@)@C@[@[^@)^@)AC2 0)DW )@@G@@^@)^@)^@)IT4IK)BK)IL>ITZI9\IL=^@;^@)@A@[@[^@)^@)AC3 0)^@)^@)^@)GS)BK)GT*DX )@@G@@GD2^@;@E@[@[^@)^@)AC4 0)^@)^@)^@)I@)BK)GT\H13I--H14F9>H14IL9F90I))BS)^@)DY )@@G@@@]@[@[^@)^@)AC5 0)@ @[@[^@)^@)AC6 0)^@)^@)GL>G9(H0)^@)@]@[@[^@)^@)AC7 0)DZ )@@G@@(F@@@[^@)^@)^@)IT4IK)BK.^[3G(!F93I--GT:FT3G(!F93I--GT:F94H90F*,HD=F9&^@;EA )@@G@@@D@[@[^@)^@)AC8 0)^@)^@)^@)IT>H(ZIT4GDJ[4^@.^[,HD? C)^@)@A@[@[^@)^@)AK4 0)^@)^@)^@)^@)^@)^@)EF )@@G@@I-*G(,@B@[@[^@)^@)AK5 0)^@)^@)^@)^@)^@)^@)^@)^[+G($HD,@E@[@[^@)^@)AK6 0)EG )@@G@@^@)^@)^@)^@)^@)^@)^@)^[>IL2H9ZI[2H9< [< C)BS)^@)@M@[@[^@)^@)AK7 0)^@)^@)EH )@@G@@^@)^@)^@)^@)^@)^[7IL(I->H-, [=HD-G9,F9&HD?G*?^8*^8?GS?^8(^@% K%^[>IL2H92EI )@@G@@^@'^[?GD+G(?^@$ ))@O@[@[^@)^@)AK8 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[3I-2EJ )@@G@@ )$^[&H92^[ F[DE))G-\G(3^[,H94^[>J[(IT4^[7HD4H[(H0)HD,H1>IL!H93I))^8?^@)EK )@@G@@@F@[@[^@)^@)AK9 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@$I[2H9I-5EN )@@G@@IL,^@;@B@[@[^@)^@)AS2 0)^@)^@)^@)^@)^@)^@)^@)^[>H1=^@;@C@[@[^@)^@)AS3 0)EO )@@G@@^@)^@)^@)^@)^[?^@'B*)H-Y 1,G(8I))BS)@D@[@[^@)^@)AS4 0)^@)^@)^@)^@)^[>H1=EP )@@G@@^@;^@)JS)H9&^[7H[(H->^[.@]@[@[^@)^@)AS5 0)@A@[@[^@)^@)AS6 0)^@)^@)^@)H1>EQ )@@G@@I8*I@(^@;^@)@E@[@[^@)^@)AS7 0)^@)^@)^@)I[Y 1,G(8I))BK.^[?F0,G(8HD4F9(H1&ER )@@G@@^@;^@)@A@[@[^@)^@)AS8 0)^@)^@)^@)I[Y 1>H14IL9^@'( @@@[B*)I[2H9$IL-H(ZGT\ES )@@G@@I(,I->IK)BS)@E@[@[^@)^@)AS9 0)^@)^@)^@)G9>H1>ILZHD,IT4IK*D9KCTZCK?A@?A@?ET )@@G@@A@(^@;@C@[@[^@)^@)A)0 0)^@)^@)^@)H-Y 1>J[(I-ZHD,G0)BK.^[0^@;@]@[@[^@)^@)EU )@@G@@A)1 0)@B@[@[^@)^@)A)2 0)^@)^@)IL>I-5IL,BK)G(,G))BS)^@)@]@[@[^@)^@)A)3 0)EV )@@G@@@]@[@[^@)^@)A)4 0)@]@[@[^@)^@)A)5 0)@G@[@[^@)^@)A)6 0)^@)^@)^@)^@)^@)^@)EW )@@G@@^@)^[;^@/ETOB0)BK'B*)CTJD1ODDIE( ^[DC))J*)@]@[@[^@)^@)A)7 0)@D@[@[^@)^@)EX )@@G@@A)8 0)^@)^@)I[2H9F9(G))BS)@]@[@[^@)^@)A)9 0)@B@[@[EY )@@G@@^@)^@)A*0 0)^@)^@)H--GL>H))IL>I-5IL,^@;^@)@]@[@[^@)^@)A*1 0)@^@[@[^@)^@)EZ )@@G@@A*2 0)^@)^@)I1-IK)@E@[@[^@)^@)A*3 0)^@)^@)^@)H))BK)F1?GD+G(?F93I--GT:F9,FA )@@G@@H9=G*)BS)^@)@C@[@[^@)^@)A*4 0)^@)^@)^@)IT4IK)BK)IL>ITZI9\IL=^@;^@)@A@[@[FB )@@G@@^@)^@)A*5 0)^@)^@)^@)GS)BK)GT*GD2^@;@E@[@[^@)^@)A*6 0)^@)^@)^@)I@)BK)GT\FC )@@G@@H13I--H14F9>H14IL9F90I))BS)^@)@]@[@[^@)^@)A*7 0)@ @[@[^@)^@)A*8 0)^@)^@)FD )@@G@@GL>G9(H0)^@)@H@[@[^@)^@)A*9 0)^@)^@)^@)IT4IK)BK.^[3G(!F93I--GT:FT3G(!F93FE )@@G@@I--GT:F94H90F*,HD=F9&^@;@D@[@[^@)^@)A00 0)^@)^@)^@)IT>H(ZIT4GDJ[4^@.^[,HD? C)^@)@A@[@[^@)^@)FJ )@@G@@A06 0)^@)^@)^@)^@)^@)^@)I-*G(,@B@[@[^@)^@)A07 0)^@)^@)^@)^@)^@)^@)^@)^[+FK )@@G@@G($HD,@]@[@[^@)^@)A08 0)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@FZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ID )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@II )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@LZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ME )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ML )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@MZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ND )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ON )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ST )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@US )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VR )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VS )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VT )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VU )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VV )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VY )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WP )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[@@@@*SDFF*@F@@_@*. THIS ELEMENT SHOULD CONTAINWR )@@G@@ ALL LOCAL MODIFICATIONS TO @MFD. ___^[OD8)C[HC1^ 0)___@@[H@@^1279 ,BUFSIZ EQU DIRSIZ @^@@@@DEBUG EQXC )@@G@@U 0 @[@@@@. @A@@@@. INITIALIZE AND SET UP ADDTBL @[@@@@XD )@@G@@. @ @@@@DIR$ET* L,U A0,MCTPKT @^@@@@ ER MCT$XE )@@G@@@D@@@@ L,S1 A1,MCTPKT . GET STATUS @G@@@@ XF )@@G@@ L,U A0,8 . SET FOR DIREC$ ERROR TYPE 8 @G@@@@XG )@@G@@ JNZ A1,OVFL+2 . IF STATUS NONZERO, ERROR OFF XH )@@G@@@F@@@@ L,T2 A0,MCTTBL+5 . GET MCT LEVEL INDICATOR XI )@@G@@@G@@@@ JZ A0,$+4 . IF NOT P1, SKIP THIS STUXJ )@@G@@FF @F@@@@ L,U A0,03 . CHANGE MASKS ACCORXK )@@G@@DINGLY@B@@@@ S,S1 A0,MASK1 . @B@@@@ S,XL )@@G@@S1 A0,MASK2 . @A@@@@ L A0,*DIREC$+1 XM )@@G@@@ @@@@ AN A0,*DIREC$@^@@@@ SSL A0,6@A@@@@XN )@@G@@ TG,U A0,BUFSIZ+1 @^@@@@ J OVFL@A@@@@XO )@@G@@ L A3,DIREC$+3 @ @@@@ L A0,*DIREC$XP )@@G@@@ @@@@ S A0,5,A3 @A@@@@ L A0,DIREC$+XQ )@@G@@2 @ @@@@ LXI,U A0,27 @ @@@@ S A0,4XR )@@G@@,A3 @A@@@@ L A1,(1,ADDTBL) @^@@@@ LXI,U XS )@@G@@ A2,3@ @@@@LOOP L,U A0,0,A3 @^@@@@ ER IOW$XT )@@G@@@^@@@@ TZ,S1 3,A3@^@@@@ SLJ IOR @A@@@@ XU )@@G@@ LXM A2,DIREC$+2 @ @@@@DOIT L A0,0,*A2 @ @@@@XV )@@G@@ JZ A0,DOIT @ @@@@ JP A0,$+4 @A@@@@XW )@@G@@ TE A0,DIREC$+7 @^@@@@ J DOIT@ @@@@XX )@@G@@ J NXTDAS @ @@@@ S A0,0,*A1 @ @@@@XY )@@G@@ L A0,5,A3 @ @@@@ A,U A0,64 @ @@@@XZ )@@G@@ S A0,5,A3 @^@@@@ J DOIT@ @@@@NXTDASYA )@@G@@ L A0,5,A3 @A@@@@ TLE A0,*DIREC$+1 @^@@@@YB )@@G@@ J LOOP@ @@@@ L,U A0,0,A1 @ @@@@ YC )@@G@@ AN,U A0,ADDTBL @ @@@@ S A0,ADDL @ @@@@ YD )@@G@@ L,U A0,28 @ @@@@ S,H1 A0,4,A3 @^@@@@ YE )@@G@@ J 5,11@[@@@@. @C@@@@. CODE RIPPED OFF FROM @SECURE ELEMEYF )@@G@@NT DIRECT @[@@@@. @ @@@@DIRLNK* S R1,SAVE @ @@@@ YG )@@G@@ DO DEBUG>0 , SLJ TON$ @^@@@@ TZ ADDL@ @@@@ TNYH )@@G@@Z *DIREC$ @ @@@@ J NOTINT @ @@@@ S YI )@@G@@ R2,SAVE+1 @ @@@@ S X4,SAVE+2 @ @@@@ L YJ )@@G@@ A0,*3,X11 @ @@@@ JZ A0,ADDCN3 @ @@@@ L YK )@@G@@ A1,A0 @ @@@@ SSL A1,24 @ @@@@ ANYL )@@G@@D,U A1,0377 @D@@@@ TEP,U A2,0200 . PHASE 3 YM )@@G@@DISC? @ @@@@ J ADDCN1 @ @@@@ L,U A1,MYN )@@G@@CTTBL @E@@@@MCTI L,T2 A3,8,A1 . GET HEADER LENGTH YO )@@G@@@F@@@@ TZ,T2 MCTTBL+5 . EXEC LEVEL 30 OR HIGHER?YP )@@G@@@G@@@@ L,T2 A3,6,A1 . YES, GET IT FROM ELSEWHEYQ )@@G@@RE @F@@@@ A A1,A3 . POINT TO PROPER PLYR )@@G@@ACE @ @@@@ A A1,A2 @ @@@@ L,T3 A2,0YS )@@G@@,A1 @ @@@@ A,U A2,MCTTBL @ @@@@ L,S1 A3,0YT )@@G@@,A2 @ @@@@ TG,U A3,030 @ @@@@ J ADDCYU )@@G@@N1 @ @@@@ LXM,U X4,ADDTBL @^@@@@ LXI,U X4,1YV )@@G@@@ @@@@ADDCN0 L A1,0,*X4 @ @@@@ AND A1,MASK1 YW )@@G@@@^@@@@ AN,U A2,1@ @@@@ AU,U A2,1792 @ @@@@YX )@@G@@ AND A0,MASK1 @ @@@@ TNW A2,A1 @^@@@@YY )@@G@@ J $+7 @ @@@@ADDCN4 L A3,ADDL @ @@@@ YZ )@@G@@ A,U A3,ADDTBL @^@@@@ A,U A3,1@ @@@@ TNZA )@@G@@E,U A3,0,X4 @ @@@@ J ADDCN3 @ @@@@ J ZB )@@G@@ ADDCN0 @ @@@@ L,U A3,0,X4 @^@@@@ ANZC )@@G@@,U A3,1@^@@@@ A,U A2,1@ @@@@ AN A1,AZD )@@G@@2 @^@@@@ TN 0,A3@^@@@@ J $+4 @A@@@@ZE )@@G@@ AND A0,(0777777) @ @@@@ AN,H2 A1,0,A3 ZF )@@G@@@ @@@@ JN A1,ADDCN4 @^@@@@ SZ A0 @ @@@@ZG )@@G@@ DI,U A0,034 @ @@@@ JNZ A1,ADDCN3 @ @@@@ZH )@@G@@ S A0,A1 @ @@@@ J ADDCN2 @ @@@@ZI )@@G@@ADDCN1 LXM,U X4,ADDTBL @^@@@@ LXI,U X4,1@ @@@@ ZJ )@@G@@ L A2,ADDL @ @@@@ S A2,R1 @ @@@@ ZK )@@G@@ L R2,MASK2 @ @@@@ MSE A0,0,*X4 @ @@@@ ZL )@@G@@ J ADDCN3 @ @@@@ L R1,SAVE @ @@@@ ZM )@@G@@ L R2,SAVE+1 @A@@@@ AND A0,(0777777) @ @@@@ZN )@@G@@ L,U A3,0,X4 @^@@@@ AN,U A3,1@ @@@@ ZO )@@G@@ AN,H2 A1,0,A3 @ @@@@ S A1,A0 @ @@@@ADDCN2ZP )@@G@@ AN,U A3,ADDTBL @ @@@@ L X4,SAVE+2 @A@@@@ ZQ )@@G@@ A A3,*DIREC$+4 @^@@@@ LSSL A3,6@ @@@@ ZR )@@G@@ A A0,A3 @A@@@@ L A3,DIREC$+3 @ @@@@ZS )@@G@@ S A0,5,A3 @ @@@@ L A2,*DIREC$@^@@@@ZT )@@G@@ AN,U A2,1@^@@@@ SSL A2,6@^@@@@ SSZU )@@G@@L A0,6@ @@@@ TNE A0,A2 @^@@@@ J ZV )@@G@@ BT @ @@@@ L A0,2,X11 @ @@@@ LXI,U A0,2ZW )@@G@@8 @ @@@@ S A0,4,A3 @ @@@@ L,U A0,0ZX )@@G@@,A3 @^@@@@ ER IOW$@^@@@@ TZ,S1 3,A3@^@@@@ZY )@@G@@ SLJ IOR @ @@@@ DO DEBUG>0 , SLJ TOFF$ @ @@@@ ZZ )@@G@@ J 5,X11 @ @@@@ DO DEBUG>0 ,KILL* SLJ TOFF$ @^@@@@ DO DAA )@@G@@EBUG>0 , J 1,11 @ @@@@BT MSI,U A1,034 @A@@@@ A AB )@@G@@ A1,DIREC$+8 @^@@@@ LXI,U A1,1@ @@@@ L AC )@@G@@ A0,2,X11 @^@@@@ LXI,U A0,1@ @@@@ L,U AD )@@G@@ R1,28 @ @@@@ BT A0,0,*A1 @ @@@@ J AE )@@G@@ 5,X11 @^@@@@OVFL L,U A0,6@ @@@@ L,U A1,DAF )@@G@@IRSIZ @ @@@@ DS A0,*1,X11 @ @@@@ J *0,XAG )@@G@@11 @^@@@@ADDCN3 L,U A0,7@ @@@@ L A1,*3,X11 AH )@@G@@@ @@@@ L X4,SAVE+2 @ @@@@ DS A0,*1,X11 AI )@@G@@@ @@@@ DO DEBUG>0 , SLJ TOFF$ @ @@@@ J *0,X11 AJ )@@G@@@^@@@@IOR J 0 @^@@@@ L,U A0,2@A@@@@ AK )@@G@@ L A1,DIREC$+3 @ @@@@ L A1,3,A1 @ @@@@AL )@@G@@ DS A0,*1,11 @ @@@@ J *0,11 @^@@@@AM )@@G@@NOTINT L,U A0,5@^@@@@ SZ A1 @ @@@@ DSAN )@@G@@ A0,*1,11 @ @@@@ J *0,11 @[@@@@$(0) @ @@@@AO )@@G@@MCTPKT + MCTTBL @^@@@@ADDL + 0 @#@@@@DGET$BAP )@@G@@UF2* . @ @@@@ADDTBL RES BUFSIZ @^@@@@MCTTBL RES AQ )@@G@@ 512 @^@@@@SAVE + 0 @^@@@@ + 0 @^@@@@AR )@@G@@ + 0 @A@@@@MASK1 + 017777777777 @A@@@@AS )@@G@@MASK2 + 017777777700 @#@@@@ END ___ J AT )@@G@@ ADDCN2 @ @@@@ADDCN1 LXM,U X4,A*[@@@@*SDFF*@#@@@@$(1) AU )@@G@@ AXR$ @[@@@@. @F@@@@. DYNAMIC SEGMENT MCORE ROUTINE - CHUNK OFAV )@@G@@ 'DLOAD$' RLIB$ ELEMENT @[@@@@. @G@@@@DSEG* LSSL A1,2 AW )@@G@@ . CONVERT SEGID TO SLT INDEX @F@@@@ A,U A1,SAX )@@G@@LT$ . GET ADDR OF SLT ENTRY @G@@@@ L,S2 A0,,AY )@@G@@A1 . TEST IF SEG DEFINED AS DSEG @B@@@@ TE,U AZ )@@G@@ A0,011 . @B@@@@ TNE,U A0,010 . BA )@@G@@@F@@@@ J $+2 . IS A DSEG - CONTINUE BB )@@G@@@#@@[@ NOP @F[@@@ L,H1 A0,1,A1 . BC )@@G@@LOAD IBANK ADDR NEEDED @H@@@@ L,S2 A2,SLT$ . BD )@@G@@DETERMINE IF SLT FORMAT COMPLEX @B@@@@ TNE,U A2,022 BE )@@G@@ . @E@@@@ J DLOAD0 . IF COMPLEX, BF )@@G@@DLOAD0@F@@@@ JZ A0,$+3 . CHECK FOR VOID SEGBG )@@G@@MENT @G@@@@ A A0,(1*/34) . SET PROGRAM-WIDE BBH )@@G@@IT FOR MCORE@D@@@@ ER MCORE$ . EXPAND IBANKBI )@@G@@@F@@@@ L,H1 A0,2,A1 . LOAD DBANK ADDR NEEDED BJ )@@G@@@E@@@@ JZ A0,DLOAD2 . CHECK FOR VOID SEG@E@@@@BK )@@G@@ A A0,(1*/34) . SET PGM-WIDE BIT @D@@@@ BL )@@G@@ ER MCORE$ . EXPAND DBANK@D@@@@ J BM )@@G@@ DLOAD2 . CONTINUE @G@@@@DLOAD0 L A2,A1 BN )@@G@@ . SAVE INITIAL SLT ENTRY ADDR @E@@@@DLOAD1 JZ A0,$BO )@@G@@+4 . CHECK FOR VOID SEG@F@@@@ LXI,T1 A0,2,A2 BP )@@G@@ . LOAD BDI FOR THIS BANK @E@@@@ A A0,(1*/34)BQ )@@G@@ . SET PGM-WIDE BIT @D@@@@ ER MCORE$ BR )@@G@@ . EXPAND BANK @G@@@@ L,H2 A2,2,A2 . LOAD LBS )@@G@@INK TO NEXT EXTENSION @G@@@@ JZ A2,DLOAD2 . BT )@@G@@JUMP IF ALL EXTENSIONS DONE @F@@@@ A,U A2,SLT$ BU )@@G@@ . COMPUTE EXTENSION ADDR @F@@@@ L,H2 A0,1,A2 BV )@@G@@ . LOAD BANK ADDR NEEDED @F@@@@ J DLOAD1 BW )@@G@@ . CONTINUE EXPANSION LOOP @F@@@@DLOAD2 L,U A2,024 BX )@@G@@ . MARK SEG AS OVERLAY SEG @B@@@@ S,S2 A2,,A1 BY )@@G@@ . @C@@@@ J 0,X11 . RETURN@#@@@@ BZ )@@G@@ END ___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@CA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[@@@@*SDFF*@]@@@@SEG MAIN @ @@@@IN MFD,DSECB )@@G@@G,EDIT$,EDIT$T @#@@@@SEG IN1SG,(MAIN) @^@@@@IN INIT1,INFOR$,ID CC )@@G@@@#@@@@SEG IN2SG,(MAIN) @]@@@@IN INIT2 @^@@@@SEG CHEKPRTSG,(MAIN) CD )@@G@@@#@@@@IN CHECK,PRINT @#@@@@SEG PR2SG,(MAIN) @]@@@@IN PRINT2 @#@@@@CE )@@G@@SEG TOTSEG,(MAIN)@]@@@@IN TOTALS @A@@@@SEG QFSEG,(CHEKPRTSG,TOTSEG,PCF )@@G@@R2SG) @]@@@@IN QF @A@@@@DSEG DIRSEG,(CHEKPRTSG,TOTSEG,PR2SG)@ @@@@CG )@@G@@IN DIREC$,DIRLNK,DIRERR @#@@@@DSEG SDFOSG,() @#@@@@IN WOUT,SDCH )@@G@@FO @#@@@@DSEG SORTSG,() @B@@@@IN SORTER,PRATTS,BKEYS,RDFM$,PCORECI )@@G@@,REBD$@^@@@@IN KRFIND,BCONSG,SORTF@[@@@@END ___ -^DDMC(MEK)^@)@^@@@@CJ )@@G@@C-NC(B^[NC-AD9NC8? @(^@)@^@@@@DDI^@)^[RD9PE)?ET^*[@@@@*SDFF*@]@@@@IBANK,CK )@@G@@M IB1@[@@@@$EVEN @]@@@@SEG MAIN @A@@@@IN MFD,DSEG,EDIT$($ALL),EDITCL )@@G@@$T @#@@@@SEG IN1SG,(MAIN) @^@@@@IN INIT1,INFOR$,ID @#@@@@SEG ICM )@@G@@N2SG,(MAIN) @]@@@@IN INIT2 @^@@@@SEG CHEKPRTSG,(MAIN) @#@@@@IN CCN )@@G@@HECK,PRINT @#@@@@SEG PR2SG,(MAIN) @]@@@@IN PRINT2 @#@@@@SEG TOTSEG,CO )@@G@@(MAIN)@]@@@@IN TOTALS @A@@@@SEG QFSEG,(CHEKPRTSG,TOTSEG,PR2SG) @]@@@@CP )@@G@@IN QF @A@@@@DSEG DIRSEG,(CHEKPRTSG,TOTSEG,PR2SG)@ @@@@IN DIREC$,CQ )@@G@@DIRLNK,DIRERR @#@@@@DSEG SDFOSG,() @#@@@@IN WOUT,SDFO @#@@@@CR )@@G@@DSEG SORTSG,() @B@@@@IN SORTER,PRATTS,BKEYS,RDFM$,PCORE,REBD$@^@@@@CS )@@G@@IN KRFIND,BCONSG,SORTF@#@@@@DBANK,MC DB1 @[@@@@$ODD @]@@@@SEG MCT )@@G@@AIN @^@@@@IN MFD,DSEG,EDIT$T @#@@@@SEG IN1SG,(MAIN) @#@@@@IN ICU )@@G@@NIT1,INFOR$ @#@@@@SEG IN2SG,(MAIN) @]@@@@IN INIT2 @^@@@@SEG CHEKPRTCV )@@G@@SG,(MAIN) @#@@@@IN CHECK,PRINT @#@@@@SEG PR2SG,(MAIN) @]@@@@IN PCW )@@G@@RINT2 @#@@@@SEG TOTSEG,(MAIN)@]@@@@IN TOTALS @A@@@@SEG QFSEG,(CHEKPRCX )@@G@@TSG,TOTSEG,PR2SG) @]@@@@IN QF @A@@@@DSEG DIRSEG,(CHEKPRTSG,TOTSEG,CY )@@G@@PR2SG)@ @@@@IN DIREC$,DIRLNK,DIRERR @#@@@@DSEG SDFOSG,() @#@@@@CZ )@@G@@IN WOUT,SDFO @#@@@@DSEG SORTSG,() @B@@@@IN SORTER,PRATTS,BKEYSDA )@@G@@,RDFM$,PCORE,REBD$@^@@@@IN KRFIND,BCONSG,SORTF@[@@@@END ___@@@ET C8)DB )@@G@@^[OD9OET C8? [HCDDD0(^@)@#@@@@DDI^@)^[OD9OCDGES)@D@@@@ET C8)^[LC1NC(B )*DC )@@G@@CTCC(FE[ME-NC8?E-JE-NC(B*[@@@@*SDFF*@#@@@@$(1) LIT. @#@@@@ DD )@@G@@ AXR$ @H@@@@ CONFIG . DEFINE CONFIDE )@@G@@GURATION PARAMETERS @D@@@@ EQUFS . DF )@@G@@DEFINE TAGS @E@@@@ERRMSG 'MFD ERROR TYPE & CODE &' . DIREC$ ERRORDG )@@G@@ MSG @^@@@@. DIREC$ ERROR ROUTINE @[@@@@. @G@@@@DIRECERR* LXI DH )@@G@@ X11,X11 . SAVE RETURN ADDR IN UPPER X11 @E@@@@ LADI )@@G@@ A0,ECODE . GET ERROR TYPE @D@@@@ TE,U DJ )@@G@@ A0,3 . DIRSEC EOF? @C@@_@ J ERR100 DK )@@G@@ . NO @ @@@@ ON SORTOK @E@@@@ TZDL )@@G@@ SORT . SORT DESIRED? @D@@@@ J DM )@@G@@ DOSORT . YES, DO IT @ @@@@ OFF SORTOK DN )@@G@@@E@@_@ J MFD600 . NO, FINISH UP @D@@_@DO )@@G@@ERR100 E$DIT EDPACK . OPEN EDIT @E@@@@ E$DP )@@G@@MSG ERRMSG . EDIT START OF MSG @E@@@@ E$DECV DQ )@@G@@ ECODE . EDIT ERROR TYPE @F@@@@ TNZ ECODDR )@@G@@E+1 . ERROR CODE PRESENT? @E@@_@ J ERR2DS )@@G@@00 . NO, PRINT MSG @D@@@@ E$MSGR DT )@@G@@ . CONTINUE MSG@E@@@@ E$OCTF 12,ECODE+1 . DU )@@G@@EDIT ERROR CODE @D@@_@ERR200 P$RINT POUT . PRINT DV )@@G@@MSG @D@@@@ L A0,X11 . GET X11 @G@@@@DW )@@G@@ SSL A0,18 . ISOLATE DIRECERR RTN SAVE DX )@@G@@@E@@@@ LXI,U X11,0 . PREVENT LOOPS @B@@@@DY )@@G@@ AN,U A0,LNKRTN . @G@@@@ SR R15,DZ )@@G@@BMI1 . MARK AS BAD MAIN ITEM SEC 1 @G@@@@ JZ EA )@@G@@ A0,CHK220 . TO 'MIJP' IF FROM 'GOLINK' @D@@_@ J EB )@@G@@ MFD700 . ELSE EXIT @#@@@@ END ___E[MEC )@@G@@*[@@@@*SDFF*@]@@@@LEVEL* . @#@@@@ '6.4' @#@@@@ ENED )@@G@@D ___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[@@@@*SDFF*@#@@_@@ASM MFD,MFD @[@@_@-3,3 EF )@@G@@@^@@_@FLAP EQU 1 @^@@_@@MAP,BN MAP,MFD/FLAP @[@@_@@EOF EG )@@G@@___@_@C[HCDK -]D0)^[HCDK -HC1^ 9AD-[E@)^@)@[@@_@*[@@@@*SDFF*@^@@_@. @MFDEH )@@G@@ PRINT2 ROUTINE @[@@_@ @G@@_@. CALLED BY PRINT ROUTINE IF ADDITIOEI )@@G@@NAL LINES ARE NEEDED FOR MULTIPLE @E@@_@. TAPE REELS, DISC PACKS, AND/EJ )@@G@@OR SECURE BACKUPS. ALSO EDITS@G@@_@. LAPSE ENTRIES AND EXTRA INFORMATIOEK )@@G@@N PROVIDED BY FITEM$ WHEN THE 'QF' @^@@_@. OPTIONS ARE USED. @[@@@@EL )@@G@@. @#@@@@ AXR$ @H@@@@ CONFIG EM )@@G@@ . DEFINE CONFIGURATION PARAMETERS @D@@@@ EQUFS EN )@@G@@ . DEFINE TAGS @E@@@@MI2 RES 28 EO )@@G@@ . MI 2-N BUFFER @^@@@@LINK RES 1 @#@@@@MORE 'MEP )@@G@@ORE &'@^@@_@PACKS 'PACKS:&' @^@@@@REELS 'REELS:&' @^@@@@EQ )@@G@@BAKS 'BACKUPS:&' @B@@@@LAPS 'LAPSE FROM & AT & TO & AT &' ER )@@G@@@E@@@@TAP1 'UNIT: & REELS: & INDEX: & CURRENT: & NEXT: &'@B@@@@ES )@@G@@TAP2 'NOISE: &FILES EXTENDED: &' @ @@@@TAP3 'BLOCKS EXTENDET )@@G@@ED: &'@^@@@@COL1 EQU 5 @^@@@@COL2 EQU 19 @^@@@@EU )@@G@@COL3 EQU 124 @^@@@@COL4 EQU 64 @^@@@@PAKBIT EQEV )@@G@@U 040 @^@@@@BAKBIT EQU 020 @^@@@@LPSBIT EQU 010 EW )@@G@@@#@@_@/$(1),PMORE* . @[@@@@. @A@@@@. HANDLE EXTRA TAPE REELS FIRSEX )@@G@@T @[@@@@. @G@@@@ LA A8,NTP . GET NUEY )@@G@@MBER OF EXTRA REELS @F@@@@ JZ A8,PM200 . EZ )@@G@@IF NONE, SKIP TO PACKS @D@@@@ E$DIT EDPACK . FA )@@G@@OPEN EDIT @D@@@@ E$COL COL1 . POSITION FB )@@G@@@C@@@@ E$MSG MORE . 'MORE'@D@@@@ E$FC )@@G@@MSG REELS . 'REELS:' @D@@@@ E$COL COL2FD )@@G@@ . POSITION @E@@@@ E$FD1 MI0+27 FE )@@G@@ . EDIT SECOND REEL @E@@@@ AN,U A8,1 . FF )@@G@@ONE LESS TO DO @F@@@@ JZ A8,PM110 . PRINT FG )@@G@@IF THAT'S ALL @F@@@@ LA,U A0,MI0 . FIRST FH )@@G@@LINK WORD ADDR @B@@@@ J $+2 . @F@@@@FI )@@G@@PM100 LA,U A0,MI2 . GET NEXT LINK WORD ADDR @E@@@@FJ )@@G@@ LMJ X10,GETNXT . GET NEXT SECTOR @E@@@@ FK )@@G@@ J PM110 . NO MORE, SO PRINT @G@@@@ LXFL )@@G@@ X4,(1,2) . GET SECTOR INDEX AND INCREMENT@F@@@@ FM )@@G@@ LXI,U X10,26 . WORD LIMIT IN SECTOR @E@@@@ FN )@@G@@ LMJ X10,EDSUB . FORM PRINT LINES @F@@@@ J FO )@@G@@ PM100 . NEED ANOTHER SECTOR @E@@@@PM110 P$FP )@@G@@RINT POUT . PRINT THE LINE @ @@@@. NOW DO REMOVABLEFQ )@@G@@ DISC PACKS @[@@@@. @G@@@@PM200 LA A8,NRP . FR )@@G@@GET NUMBER OF EXTRA PACKS @G@@@@ JZ A8,PM300 FS )@@G@@ . IF NONE, GO ON TO BACKUPS @D@@@@ E$DIT EDPACK FT )@@G@@ . OPEN EDIT @D@@@@ E$COL COL1 . FU )@@G@@POSITION @C@@@@ E$MSG MORE . 'MORE'@D@@@@FV )@@G@@ E$MSG PACKS . 'PACKS:' @D@@@@ E$FW )@@G@@COL COL2 . POSITION @E@@@@ TNZ TEMPFX )@@G@@ . TEMPORARY FILE? @F@@@@ J PM208 FY )@@G@@ . NO, HANDLE NORMALLY @G@@@@ E$FD1 MI1+19 FZ )@@G@@ . YES, QF SETS UP 1-WRD ENTRIES @H@@@@ LX X4,(GA )@@G@@1,20) . SET INDEX AND INC FOR PACKS 3-10 @D@@@@ J GB )@@G@@ PM210 . CONTINUE @E@@_@PM208 E$FD1 MI1+GC )@@G@@20 . EDIT SECOND PACKID@H@@@@ LX X4,(2,22) GD )@@G@@ . SET INDEX AND INC FOR PACKS 3-5 @E@@@@PM210 AN,U GE )@@G@@ A8,1 . ONE LESS PACK @G@@@@ JZ A8,PGF )@@G@@M230 . IF NO MORE, JUST PRINT LINE @F@@@@ E$CHAR GG )@@G@@ ',' . OTHERWISE, EDIT COMMA @D@@@@ E$SKIP GH )@@G@@ 1 . POSITION @E@@@@ E$FD1 MI1,X4 GI )@@G@@ . EDIT NEXT PACKID @F@@@@ L,U A0,26 GJ )@@G@@ . ASSUME 5 2-WORD ENTRIES @E@@@@ TZ TEMP GK )@@G@@ . TEMPORARY FILE? @F@@@@ L,U A0,27 . GL )@@G@@YES, 10 1-WORD ENTRIES @F@@@@ TLEM X4,A0 . GM )@@G@@ANY MORE IN THIS SECTOR?@E@@@@ J PM210 . GN )@@G@@YES, GO GET THEM @H@@@@ AN,U A8,1 . NO MORGO )@@G@@E THIS SECOTR...ONE LESS TO DO@F@@@@ JZ A8,PM230 GP )@@G@@ . IF NO MORE, PRINT LINE @F@@@@ LA,U A0,MI1 GQ )@@G@@ . FIRST LINK WORD ADDR @B@@@@ J $+2 GR )@@G@@ . @F@@@@PM220 LA,U A0,MI2 . NEXT LINK WORD ADDGS )@@G@@R @E@@@@ LMJ X10,GETNXT . GET NEXT SECTOR GT )@@G@@@F@@@@ J PM230 . NO MORE, PRINT LINE GU )@@G@@@F@@@@ LA,S1 A0,MI2+7 . GET DESCRIPTOR BITS GV )@@G@@@F@@@@ TOP,U A0,PAKBIT . IS THIS A PACKID SECTOR?GW )@@G@@@F@@@@ J PM220 . NO, TRY NEXT SECTOR GX )@@G@@@F@@@@ LX X4,(2,8) . GET SECTOR INDEX AND INCGY )@@G@@@E@@@@ LXI,U X10,26 . SECTOR WORD LIMIT @E@@@@GZ )@@G@@ LMJ X10,EDSUB . FORM PRINT LINES @E@@@@ HA )@@G@@ J PM220 . NEED NEXT SECTOR @D@@@@PM230 P$HB )@@G@@RINT POUT . PRINT LINE @ @@@@. NOW FOR EXTRA BACKUP RHC )@@G@@EELS @[@@@@. @G@@@@PM300 LA A8,NSB . GET NUHD )@@G@@MBER OF EXTRA BACKUPS @E@@@@ JZ A8,PM400 . HE )@@G@@IF NONE, GO ON @D@@@@ E$DIT EDPACK . OPEN EHF )@@G@@DIT @D@@@@ E$COL COL1 . POSITION @C@@@@HG )@@G@@ E$MSG MORE . 'MORE'@D@@@@ E$MSG HH )@@G@@ BAKS . 'BACKUPS:' @D@@@@ E$COL COL2 HI )@@G@@ . POSITION @F@@@@ E$FD1 MI1+12 . HJ )@@G@@EDIT SECOND BACKUP REEL @E@@@@ AN,U A8,1 . HK )@@G@@ONE LESS TO DO @F@@@@ JZ A8,PM320 . IF NO HL )@@G@@MORE, PRINT LINE @F@@@@ LA,U A0,MI1 . FIRST HM )@@G@@LINK WORD ADDR @B@@@@ J $+2 . @E@@@@HN )@@G@@PM310 LA,U A0,MI2 . NEXT LINK ADDR @E@@@@ HO )@@G@@ LMJ X10,GETNXT . GET NEXT SECTOR @G@@@@ J HP )@@G@@ PM320 . NO MORE SECTORS, SO PRINT @F@@@@ HQ )@@G@@ LA,S1 A0,MI2+7 . GET DESCRIPTOR BITS @F@@@@ HR )@@G@@ TOP,U A0,BAKBIT . IS THIS A BACKUP SECTOR?@F@@@@ HS )@@G@@ J PM310 . NO, GET NEXT SECTOR @F@@@@ HT )@@G@@ LX X4,(1,8) . GET SECTOR INDEX AND INC@E@@@@ HU )@@G@@ LXI,U X10,27 . SECTOR WORD LIMIT @E@@@@ LMHV )@@G@@J X10,EDSUB . FORM PRINT LINES @E@@@@ J HW )@@G@@ PM310 . NEED NEXT SECTOR @^@@@@PM320 P$RINT POUTHX )@@G@@@#@@@@. LAPSE EDITING @[@@@@. @G@@_@PM400 LA A8,NLPS HY )@@G@@ . GET NUMBER OF LAPSE ENTRIES @F@@@@ JZ A8,PHZ )@@G@@M500 . IF NONE, WE'RE THROUGH @F@@@@ LX X4,(IA )@@G@@2,MI1+13) . GET MI1 INC AND INDEX @E@@@@PM410 LMJ X10,IB )@@G@@LPSED . EDIT LAPSE ENTRY @D@@@@ TLEM,U X4,MI1+15 IC )@@G@@ . THAT ALL? @E@@@@ J PM410 . ID )@@G@@NO, GET NEXT ONE @F@@@@ LA,U A0,MI1 . GET FIIE )@@G@@RST LINK ADDR @B@@@@ J $+2 . @E@@@@IF )@@G@@PM420 LA,U A0,MI2 . GET NEXT LINK ADDR@E@@@@ IG )@@G@@ LMJ X10,GETNXT . GET NEXT SECTOR @E@@@@ J IH )@@G@@ PM500 . NO MORE, GO ON @E@@@@ LA,S1 II )@@G@@ A0,MI2+7 . GET DESC BITS @E@@@@ TOP,U A0,LIJ )@@G@@PSBIT . LAPSE ENTRIES? @F@@@@ J PM420 IK )@@G@@ . NO, TRY ANOTHER SECTOR @F@@@@ LX X4,(2,MI2+IL )@@G@@8) . SET MI2 INDEX AND INC @E@@@@PM430 LMJ X10,LPSED IM )@@G@@ . EDIT LAPSE ENTRY @G@@@@ TLEM,U X4,MI2+26 IN )@@G@@ . FINISHED WITH THIS SECTOR? @G@@@@ J PM430 IO )@@G@@ . NOT YET, CONTINUE EDITING @F@@@@ J PM42IP )@@G@@0 . YES, GET NEXT SECTOR @[@@@@. @D@@@@LPSED E$IQ )@@G@@DIT EDPACK . OPEN EDIT @D@@@@ E$COL COL1IR )@@G@@ . POSITION @D@@@@ E$MSG LAPS IS )@@G@@ . 'LAPSE FROM'@E@@@@ E$DAY1 0,X4 . EDIT SIT )@@G@@TART DATE @C@@@@ E$MSGR . 'AT' @E@@@@IU )@@G@@ E$TIME 0,X4 . EDIT START TIME @C@@@@ IV )@@G@@ E$MSGR . 'TO' @E@@@@ E$DAY1 1,X4IW )@@G@@ . EDIT END DATE @C@@@@ E$MSGR IX )@@G@@ . 'AT' @D@@@@ E$TIME 1,X4 . END TIIY )@@G@@ME @D@@@@ P$RINT POUT . PRINT LINE @^@@@@IZ )@@G@@ AN,U A8,1@F@@@@ JZ A8,PM500 . JA )@@G@@IF THAT'S ALL, STOP @C@@@@ J 0,X10 . JB )@@G@@RETURN@[@@@@. @G@@@@. ALL DONE, RETURN TO MAIN PRINT SEGMENT ...BUJC )@@G@@T IF QF OPTIONS ARE @^@@@@. SET, FREE FILE FIRST @[@@@@. @E@@_@JD )@@G@@PM500 TZ QANDF2 . QF OPTIONS SET? @F@@@@ JE )@@G@@ TZ QFITEM . WITHOUT FITEM$ DONE? @C@@@@ JF )@@G@@ J PM600 . NO @F@@@@ LA,U A0,'JG )@@G@@ ' . YES, HAVE TO FREE FILE. @G@@@@ TZ QFASJH )@@G@@G . ASG'D BY QF OPTIONS ONLY? @H@@@@ LA,U JI )@@G@@ A0,'R' . YES, DO @FREE,R INSTEAD OF @FREE,A @F@@@@ JJ )@@G@@ SA,S2 A0,FREIM+1 . STORE CORRECT OPTION @D@@@@ JK )@@G@@ LA,U A0,FREIM . GET IMAGE @E@@@@ ER JL )@@G@@ CSF$ . FREE THE FILE @E@@@@ JZ A0,PJM )@@G@@M600 . IF OK, THAT'S ALL @E@@@@ ER EABT$ JN )@@G@@ . SIGNIFY ERROR @]@@@@PM600 . @D@@@@ TZ JO )@@G@@ TAP . TAPE FILE? @E@@@@ TNZ QFITEM JP )@@G@@ . AND FITEM$ DONE @C@@_@ J PM900 JQ )@@G@@ . NO @[@@@@. @F@@@@. FILE IS TAPE FILE, ASSIGNED BY THE USER.JR )@@G@@ WE CAN EDIT ADDITIONAL@D@@@@. INFORMATION ABOUT IT NOW, USING INFO FROJS )@@G@@M FITEM$. @[@@@@. @D@@@@ E$DIT EDPACK . JT )@@G@@OPEN EDIT @D@@@@ E$COL COL1 . POSITION JU )@@G@@@D@@@@ E$MSG TAP1 . 'TAPE IS ON'@E@@@@ JV )@@G@@ E$DECV FITEM+9,,T1 . EDIT FIRST SS# @B@@@@ E$JW )@@G@@CHAR '/' . @D@@@@ E$DECV FITEM+9,,S3 JX )@@G@@ . UNIT #1 @E@@@@ LA,S3 A0,FITEM+6 . GET UNJY )@@G@@IT COUNT @D@@@@ TNE,U A0,1 . JUST ONE? JZ )@@G@@@F@@@@ J PM610 . YES, SKIP SECOND ONE KA )@@G@@@B@@@@ E$CHAR ',' . @F@@@@ LA,H2 KB )@@G@@ A0,FITEM+9 . GET SECOND SUBSYSTEM # @E@@@@ SSL KC )@@G@@ A0,6 . GET RID OF UNIT # @D@@@@ E$DECV KD )@@G@@ . EDIT SS # @B@@@@ E$CHAR '/' KE )@@G@@ . @D@@@@ E$DECV FITEM+9,,S6 . EDIT UNIT # @E@@_@KF )@@G@@PM610 E$MSGR . TOTAL REEL COUNT @D@@@@ KG )@@G@@ E$DECV FITEM+8,,S1 . EDIT COUNT @G@@@@ E$MSGR KH )@@G@@ . CONTINUE WITH 'REEL INDEX' @D@@@@ E$KI )@@G@@DECV FITEM+10,,S3 . EDIT INDEX @D@@@@ TNZ,S1 FITEKJ )@@G@@M+8 . ANY REELS? @C@@@@ J PM620 KK )@@G@@ . NO @F@@@@ TNZ FITEM+11 . CURRENT REELKL )@@G@@ THERE? @C@@@@ J PM620 . NO @E@@@@KM )@@G@@ E$MSGR . CURRENT REEL= @E@@@@ KN )@@G@@ E$FD1 FITEM+11 . EDIT CURRENT REEL @D@@@@ TNKO )@@G@@Z FITEM+12 . ANOTHER ONE?@E@@@@ J PM62KP )@@G@@0 . NO, PRINT THIS ONE@F@@@@ E$MSGR KQ )@@G@@ . YES, EDIT NEXT REEL= @D@@@@ E$FD1 FITEM+12 KR )@@G@@ . EDIT REEL @D@@@@PM620 P$RINT POUT . KS )@@G@@PRINT LINE @E@@@@ E$DIT EDPACK . START ANOTHEKT )@@G@@R LINE@D@@@@ E$COL COL1 . POSITION @D@@@@KU )@@G@@ E$MSG TAP2 . EDIT 'NOISE'@F@@@@ E$KV )@@G@@DECV FITEM+8,,S3 . EDIT NOISE CONSTANT @D@@@@ E$KW )@@G@@SKIP 2 . POSITION @E@@@@ LA,S1 A0,FKX )@@G@@ITEM+6 . GET EQUIP CODE @D@@@@ TG,U A0,011 KY )@@G@@ . U12/16/20? @B@@@@ TG,U A0,016 . KZ )@@G@@@C@@@@ J PM630 . NO @E@@@@ E$LA )@@G@@MSGR . YES, EDIT MSG @F@@@@ E$DECV LB )@@G@@ FITEM+10,,S4 . EDIT FILES EXTENDED @D@@@@ E$SKIP LC )@@G@@ 2 . POSITION @D@@@@PM630 E$MSG TAP3 LD )@@G@@ . EDIT MSG @F@@@@ E$DECV FITEM+10,,T3 . LE )@@G@@EDIT BLOCKS EXTENDED @D@@@@ P$RINT POUT . LF )@@G@@PRINT LINE @ @@_@. RETURN TO CHECK/PRINT SEG @[@@_@. @F@@_@PM900 LG )@@G@@ L$OAD CHEKPRTSG,PR600,1 . RETURN TO MAIN PRINT SEG@^@@_@/. EDLH )@@G@@ITING SUBROUTINE @[@@_@. @D@@@@EDSUB E$CHAR ',' LI )@@G@@ . EDIT A COMMA@G@@@@ E$SKIP 1 . AND SPLJ )@@G@@ACE TO SEPARATE ITEMS @E@@@@ E$COLN . LK )@@G@@GET CURRENT COL @F@@@@ L,U A1,COL3 . ASSUMELL )@@G@@ BATCH, LONG LINE @D@@@@ TNZ A7 . DEMANDLM )@@G@@? @E@@@@ L,U A1,COL4 . YES, SHORTER LINE LN )@@G@@@F@@@@ TLE A0,A1 . ROOM FOR ANOTHER ITEM? LO )@@G@@@C@@@@ J EDSUB2 . YES @F@@@@ P$LP )@@G@@RINT POUT . NO, PRINT THIS LINE @F@@@@ E$LQ )@@G@@DIT EDPACK . AND START ANOTHER ONE @D@@@@ E$LR )@@G@@COL COL2 . POSITION @E@@@@EDSUB2 E$FD1 MI2,LS )@@G@@X4 . EDIT NEXT ITEM @E@@@@ AN,U A8,1 LT )@@G@@ . ONE LESS TO DO @G@@@@ JZ A8,1,X10 LU )@@G@@ . IF NO MORE, RETURN TO 1,X10 @G@@@@ LA A0,X10 LV )@@G@@ . GET LIMIT AND RETURN ADDR @E@@@@ SSL A0,1LW )@@G@@8 . ISOLATE LIMIT @G@@@@ TLEM X4,A0 LX )@@G@@ . REACHED END OF THIS SECTOR? @E@@@@ J EDSULY )@@G@@B . NO, KEEP GOING @F@@@@ J 0,X10 LZ )@@G@@ . YES, RETURN TO 0,X10 @C@@_@/. SUBROUTINE TO READ UP NEXTMA )@@G@@ DIRECTORY ITEM @[@@_@. @F@@_@GETNXT TZ QANDF2 MB )@@G@@ . ARE QF OPTIONS SET? @H@@@@ J ITSQF MC )@@G@@ . YES, DO DREAD$ FOR DESIRED SECTOR @[@@_@. @D@@_@. QF OPTIONSMD )@@G@@ NOT SET: USE DIRLNK TO GET NEXT SECTOR @[@@_@. @F@@@@ LAME )@@G@@ A0,,A0 . GET LINK WORD IN A0 @G@@@@ JNMF )@@G@@ A0,,X10 . ERROR RETURN IF LINK NEGATIVE @E@@@@ MG )@@G@@ SA A0,LINK . STORE LINK WORD @F@@@@ LMMH )@@G@@J X11,DIRLNK . LINK TO DESIRED SECTOR @D@@@@ J MI )@@G@@ NORTN . ERROR RETURN@D@@@@ + ECODMJ )@@G@@E . ERROR CODE @D@@@@ + MI2 MK )@@G@@ . BUFFER ADDR @E@@@@ + LINK . ADDR OML )@@G@@F LINK WORD @C@@@@ + 0 . WB @E@@@@MM )@@G@@ J 1,X10 . NORMAL RETURN @[@@@@. MN )@@G@@@C@@_@. QF OPTION ARE SET: GET NEXT SECTOR VIA DREAD$@[@@_@. @F@@_@MO )@@G@@ITSQF TP 0,A0 . LINK WORD NEGATIVE? @E@@@@MP )@@G@@NORTN J 0,X10 . YES, ERROR RETURN @F@@@@ MQ )@@G@@ TNE,U A0,MI2 . FIRST TIME THROUGH? @G@@@@ MR )@@G@@ J ITSQF1 . NO, PACKET ALREADY SET UP @E@@@@MS )@@G@@ LXI,U A1,03401 . GET MAIN ITEMS, @G@@@@ MT )@@G@@ TNE,U A0,MI0 . UNLESS LINK WORD IS MI0+0, @H@@@@MU )@@G@@ LXI,U A1,03402 . IN WHICH CASE, GET GRANULE ITEMV )@@G@@MS @F@@@@ LXM,U A1,MI2 . FOR TAPE REEL NUMBMW )@@G@@ERS @F@@@@ SA A1,RDPKT+3 . STORE IN MSCON$ PAMX )@@G@@CKET @G@@@@ LA,U A1,2 . ASSUME START WITH MY )@@G@@SECTOR 2 @F@@@@ TNE,U A0,MI0 . GETTING GRANMZ )@@G@@ULE ITEMS? @F@@@@ SZ A1 . YES, START WNA )@@G@@ITH SECTOR 0@D@@@@ J ITSQF2 . CONTINUE NB )@@G@@@G@@@@ITSQF1 L,T1 A1,RDPKT+4 . GET PREVIOUS STARTING SENC )@@G@@CTOR @F@@@@ A,U A1,1 . INCREMENT TO NEXT ND )@@G@@SECTOR@G@@@@ITSQF2 SA,T1 A1,RDPKT+4 . AND STORE IN MSCONNE )@@G@@$ PACKET @E@@@@ LA,U A0,RDPKT . GET ADDR OF NF )@@G@@PACKET@E@@@@ ER MSCON$ . DO THE DREAD$ NG )@@G@@@C@@@@ TP A0 . OK? @E@@@@ J NH )@@G@@ 0,X10 . NO, ERROR RETURN @E@@@@ J NI )@@G@@ 1,X10 . YES, NORMAL RETURN@#@@@@ END ___@@@NJ )@@G@@ J EDSUB . NO, KEEP GOING @F@@@@ NK )@@G@@ J 0,X10 . YES, RETURN *[@@@@*SDFF*@#@@@@$(1) NL )@@G@@ AXR$ @H@@@@ CONFIG . DEFINE CONFINM )@@G@@GURATION PARAMETERS @D@@@@ EQUFS . NN )@@G@@DEFINE TAGS @[@@@@. @F@@@@. THIS ROUTINE VALIDATES EACH DIRECTORY ITNO )@@G@@EM RETURNED BY DIREC$ @F@@@@. (OR BY DREAD$ FOR QF OPTIONS) AND DECIDENP )@@G@@S WHETHER IT IS WORTH @G@@@@. PRINTING. IF SO, IT WILL RETURN TO 'MFDNQ )@@G@@500' IN THE MAIN SEGMENT, @C@@@@. WHERE EITHER OF TWO ACTIONS WILL TNR )@@G@@AKE PLACE: @[@@@@. @H@@@@. A. IF SORT IS SPECIFIED, RELEASE THE RECNS )@@G@@ORD (MAIN ITEM SECTORS 0 AND 1) @ @@@@. TO THE SORT ROUTINE. NT )@@G@@@G@@@@. B. IF NO SORT IS SPECIFIED, JUMP TO THE PRINT ROUTINE TO EDIT THNU )@@G@@E @B@@@@. USEFUL INFORMATION ABOUT THE FILE. @[@@@@. @F@@@@NV )@@G@@. WHEN SEARCHING DGET FILE, GET LEAD ITEM FIRST...PERFORM WHAT @F@@@@NW )@@G@@. CHECKS CAN BE DONE ON IT: IF IT PASSES, CHECK ALL MAIN ITEMS @E@@@@NX )@@G@@. FOR THIS LEAD ITEM. IF IT FAILS, GET ANOTHER LEAD ITEM. @[@@@@. NY )@@G@@@F@@@@CHK000* TZ QANDF . ARE Q AND F OPTIONS SET?NZ )@@G@@@H@@@@ J CHK090 . ALREADY HAVE MI SEC 0/1 OA )@@G@@FROM DREAD$ @F@@@@CHK001 TNZ QANDF2 . IF Q+F OPTS,OB )@@G@@ FINUP NOW @F@@@@ LMJ X11,DIRSEC . GET NEXT L.IOC )@@G@@./M.I. SEC @D@@@@ J CHK080 . ERROR RETURNOD )@@G@@@G@@@@ + ECODE . ERROR CODES IN ECODE,ECOOE )@@G@@DE+1 @G@@@@ + LI0 . PUT LI'S IN LI0, MOF )@@G@@I'S IN MI0 @C@@@@ + 0 . WB @H@@@@OG )@@G@@ JNZ A0,CHK100 . A0=0 IF LEAD ITEM, 1 IF MAIN IOH )@@G@@TEM @[@@@@. @F@@@@. HAVE LEAD ITEM - PERFORM G,T,O,K,F,P,Q,I OPTIOOI )@@G@@N CHECKS ON IT @F@@@@. IF GOOD, GET MAIN ITEM SEC 0 - IF N.G., GET ANOJ )@@G@@OTHER LEAD ITEM. @[@@@@. @F@@@@ SZ FLAGS1 OK )@@G@@ . CLEAR TAP,GFIL FLAGS @E@@@@ SZ A14 OL )@@G@@ . CLEAR RDSC FLAG @D@@@@ L,S1 A0,LI0+9 . OM )@@G@@GET MEDIUM @D@@@@ TE,U A0,075 . 8414/24 ON )@@G@@@F@@@@ TNE,U A0,076 . OR 8440 REMOVABLE DISC? OO )@@G@@@E@@@@ S R15,A14 . YES, SET RDSC FLAG@C@@@@OP )@@G@@ TG,U A0,020 . TAPE? @C@@@@ J OQ )@@G@@ CHK020 . NO @E@@@@ TP TPT OR )@@G@@ . YES, WANT TAPES? @G@@@@ J GALI . OS )@@G@@NO, GET ANOTHER LEAD ITEM @E@@@@ S R15,TAP OT )@@G@@ . YES, SET TAPE FLAG@D@@@@ J CHK030 . OU )@@G@@CONTINUE @[@@@@. @B@@@@. FILE IS NOT A TAPE - DO WE WANT IT? OV )@@G@@@[@@@@. @F@@@@CHK020 TZ TPT . NOT TAPE, WAOW )@@G@@NT TAPES? @H@@@@ EX REVT . YES (NO), GEOX )@@G@@T ANOTHER LEAD ITEM @[@@@@. @ @@@@. FILE HAS PASSED TAPE TEST OY )@@G@@@D@@@@. IF O OR K-OPTION IS SET, FILE MUST BE REMOVABLE DISC@[@@@@. OZ )@@G@@@G@@@@CHK030 TZ OPT . WANT REMOVABLE DISC FILEPA )@@G@@S? @I@@@@ EX REVO . YES, GALI IF NOT RPB )@@G@@EM (NO, GALI IF REM) @E@@@@ TZ KPT . PC )@@G@@K-OPTION SET? @F@@@@ JZ A14,GALI . YES, MPD )@@G@@UST BE REM DISC @[@@@@. @ @@@@. CHECK FOR G-OPTION FILE @[@@@@PE )@@G@@. @G@@@@ TNZ GPT . LOOKING FOR G-OPTIPF )@@G@@ON FILES? @C@@@@ J $+3 . NO @E@@@@PG )@@G@@ EX REVG . G-OPTION FILE? @E@@@@ PH )@@G@@ J GALI . NO (YES), GALI @E@@@@ TPPI )@@G@@ LI0+10 . G-OPTIN FILE? @E@@@@ S PJ )@@G@@ R15,GFIL . YES, SET FLAG @[@@@@. @F@@@@. IF TAPE EQPK )@@G@@UIP WAS GIVEN IN SPEC3, CHECK FOR RIGHT TAPE EQUIP @[@@@@. @D@@@@PL )@@G@@ L A1,TPT . GET T-OPTION@G@@@@ TNPM )@@G@@E,U A1,1 . IS IT SET (AND NOT REVERSED)? @G@@@@ PN )@@G@@ TNZ EQDX . AND WAS EQUIP SPEC'D IN SPEC3?@D@@@@PO )@@G@@ J CHK050 . NO, CONTINUE@F@@@@ TEPP )@@G@@ A0,EQDX . RIGHT TAPE EQUIP TYPE? @G@@@@ J PQ )@@G@@ GALI . NO, GET ANOTHER LEAD ITEM @]@@@@CHK050PR )@@G@@ . @^@@@@ ON NSSP@G@@@@ TNZ TESTS PS )@@G@@ . ANY SPECIAL TESTS TO BE DONE? @D@@@@ J CHK0PT )@@G@@60 . NO, GO ON @[@@@@. @F@@@@. SPECIAL TESTS WERE SPEPU )@@G@@CIFIED. WE MUST NOW PERFORM EACH OF THESE@F@@@@. TESTS TO DETERMINE WHEPV )@@G@@THER FURTHER PROCESSING OF THIS FILE IS @E@@@@. NECESSARY. IF NOT, WEPW )@@G@@ CAN JUST GET ANOTHER LEAD ITEM. @F@@@@. ANY LEAD ITEM TESTS CAN BE DPX )@@G@@ONE NOW, BUT WE MUST ASSUME THAT ANY@E@@@@. MAIN ITEM TESTS WILL PASS. PY )@@G@@HOWEVER, IF ANY XOR'S WERE @F@@@@. SPECIFIED, WE CANNOT DO ANY OF THEPZ )@@G@@ TESTS NOW, AND MUST GO ON TO @^@@@@. PROCESS THE MAIN ITEM.@[@@@@. QA )@@G@@@F@@@@ LA A0,AOX . GET AND/OR/XOR BITS QB )@@G@@@E@@@@ TEP,U A0,XOR . ANY XOR'S DONE? @F@@@@QC )@@G@@ J CHK060 . YES, MUST GET MAIN ITEM @H@@@@QD )@@G@@ LMJ X11,CHK900 . JUMP TO LEAD ITEM TESTS ROUTINQE )@@G@@E @H@@@@ J GALI . FAILURE - GET ANOTQF )@@G@@HER LEAD ITEM @F@@@@ J CHK060 . ALL TEQG )@@G@@STS (AND'S) PASSED@H@@@@ LMJ X11,POLTRAN . UNCLEAQH )@@G@@R - EVALUATE POLISH EXPRESSION@H@@@@ JZ A0,GALI QI )@@G@@ . IF FALSE, GET ANOTHER LEAD ITEM @]@@@@CHK060 . @^@@@@ QJ )@@G@@ OFF NSSP@G@@@@ TZ LIOPT . F,I,Q,QK )@@G@@ OR P OPTION SPEC'D? @F@@@@ J 0,X9 . QL )@@G@@YES, CHECK CONDITION @E@@@@ J CHK001 . QM )@@G@@NOW GET MAIN ITEM @[@@@@. @D@@@@. DON'T LIKE THIS LEAD ITEM - GET ANQN )@@G@@OTHER LEAD ITEM @[@@@@. @G@@@@GALI* SZ GOTONE QO )@@G@@ . CLEAR DIREC$'S LINCOR FLAG @G@@@@ J CHK000 QP )@@G@@ . GO BACK FOR ANOTHER LEAD ITEM @[@@@@. @E@@@@. DIRSEC ERRQQ )@@G@@OR, OR QF OPTIONS AND FILE HAS BEEN PRINTED @[@@@@. @E@@@@CHK080QR )@@G@@ TNZ QANDF2 . Q AND F OPTIONS? @F@@@@ J QS )@@G@@ DIRECERR . NO, HANDLE DIREC$ ERROR @ @@@@ ONQT )@@G@@ SORTOK @E@@@@ TZ SORT . SORT SQU )@@G@@PECIFIED? @D@@@@ J DOSORT . YES, DO SORTQV )@@G@@@ @@@@ OFF SORTOK @G@@_@ J QF900 QW )@@G@@ . ISSUE READ$ FOR ANOTHER FILE @[@@@@. @D@@@@. Q AND F OPQX )@@G@@TIONS ARE SET - ALREADY HAVE MAIN ITEM. @[@@@@. @D@@@@CHK090 SZQY )@@G@@ QANDF . AVOID LOOPS @[@@@@. @D@@@@. HAVE MAIN QZ )@@G@@ITEM - LEAD ITEM HAS ALREADY PASSED TESTS @[@@@@. @G@@@@CHK100 SZRA )@@G@@ A13 . CLEAR BACKED-UP (BAK) FLAG @E@@@@ RB )@@G@@ TZ QANDF2 . IF QF OPTIONS SET,@D@@@@ J RC )@@G@@ $+3 . SKIP SZ'S @E@@@@ SZ MI1+RD )@@G@@11 . CLEAR BACKUP WORD @E@@@@ SZ MI1+18 RE )@@G@@ . CLEAR PACKID WORD @F@@@@ SZ FLAGS2 RF )@@G@@ . CLEAR VFIL,BMI1 FLAGS @E@@@@ L,S2 A0,MI0+17 RG )@@G@@ . GET INHIBIT FLAGS @[@@@@. @C@@@@. IF V-OPTION SPEC'D, CHECK FORH )@@G@@R V-OPTION FILE @[@@@@. @G@@@@ TNZ VPT RI )@@G@@ . LOOKING FOR V-OPTION FILES? @C@@@@ J $+3 RJ )@@G@@ . NO @F@@@@ EX REVV . YES, VRK )@@G@@-OPTION FILE? @F@@@@ J CHK000 . NO, GERL )@@G@@T ANOTHER ITEM @E@@@@ TEP,U A0,020 . V-OPTIRM )@@G@@ON FILE? @E@@@@ S R15,VFIL . YES, SET FLARN )@@G@@G @[@@@@. @B@@@@. SET A13 NONZERO IF FILE IS BACKED UP @[@@@@RO )@@G@@. @F@@@@ LA,S1 A0,MI0+12 . GET DESCRIPTOR BITRP )@@G@@S @D@@@@ TEP,U A0,020 . BACKED UP? @E@@@@RQ )@@G@@ LA,U A13,1 . YES, SO SET FLAG @[@@@@. RR )@@G@@@F@@@@. CONVERT REFERENCE AND CATALOGUE DATES TO FORM MORE EASILY TESTEDRS )@@G@@@#@@@@. AND/OR SORTED. @[@@@@. @F@@@@ LA,U A2,1 RT )@@G@@ . FOR REF AND CAT DATES @D@@@@CHK120 LA,S3 A0,MI0+18,RU )@@G@@A2 . GET YEAR @F@@@@ LA A1,MI0+18,A2 . RV )@@G@@GET ENTIRE DATE IN A1 @G@@@@ LDSL A0,12 . RW )@@G@@SHIFT MO,DAY ONTO YR IN A0 @F@@@@ SA,H1 A0,MI0+18,A2 RX )@@G@@ . STORE AS YR,MON,DAY @ @@@@ JGD A2,CHK120 @[@@@@RY )@@G@@. @G@@@@. DETERMINE WHETHER OR NOT A CALL TO DIRLNK IS NECESSARY TO RZ )@@G@@GET THE @G@@@@. FILE'S MAIN ITEM SECTOR 1. IF POSSIBLE, AVOID THE CSA )@@G@@ALL TO DIRLNK @^@@@@. TO SAVE I/O, EEC. @[@@@@. @G@@@@ SB )@@G@@ TZ SIZFLG . IF SIZE OPT AND FILE BACKED UP@G@@@@SC )@@G@@ JNZ A13,CHK200 . MUST LINK FOR BACKUP SIZE SD )@@G@@@I@@@@ ON NSSP . ************************SE )@@G@@**************** @F@@@@ TNZ TESTS . SPECIASF )@@G@@L TEST GIVEN? @C@@@@ J CHK140 . NO SG )@@G@@@E@@@@ JNZ A13,CHK200 . IF BACKED UP, OR @E@@@@SH )@@G@@ JNZ A14,CHK200 . REM DISC, LINK. @]@@@@CHK140SI )@@G@@ . @I@@@@ OFF NSSP . ******************SJ )@@G@@********************** @G@@@@ DO NODMPK>0 , JZ A7,CHK22SK )@@G@@0 . IF DEMAND, JUST GO ON @I@@@@ ON NODMPK<1 SL )@@G@@ . **************************************** @G@@@@ JNZ SM )@@G@@ A7,$+2 . IF NOT DEMAND, LET IT THROUGH @H@@@@ JZSN )@@G@@ A14,CHK220 . DEMAND - IF FIXED, DON'T NEED MI1 @I@@@@SO )@@G@@ OFF . ******************************SP )@@G@@********** @G@@@@ JNZ A14,CHK200 . BATCH - IF RSQ )@@G@@EMOVABLE, LINK @G@@@@ JZ A13,CHK220 . FIXED SR )@@G@@- NO LINK IF NO BACKUP @[@@@@. @G@@@@. IF FILE IS BACKED UP OR REMOSS )@@G@@VABLE, MUST LINK TO MI SEC 1 FOR MORE INFO@[@@@@. @E@@@@CHK200 TZST )@@G@@ QANDF2 . QF OPTIONS SET? @G@@@@ J SU )@@G@@ 0,X9 . YES, HAVE MI1 FROM DREAD$ @F@@@@ LASV )@@G@@,T1 A0,MI0+12 . GET DESCRIPTOR BITS @F@@@@ TOSW )@@G@@P,U A0,0200 . BAD MAIN ITEM SECTOR 1? @D@@@@ J SX )@@G@@ CHK210 . NO, GO LINK @E@@@@ SR R15,SY )@@G@@BMI1 . YES, SET FLAG @H@@@@ DSL A13,72 SZ )@@G@@ . CLEAR REM DISC & BACKED-UP FLAGS @D@@@@ J TA )@@G@@ CHK220 . DON'T LINK @F@@@@CHK210 LMJ X11,DIRLNKTB )@@G@@ . LINK TO M.I. SECTOR 1 @D@@@@LNKRTN* J DIRECERR TC )@@G@@ . ERROR RETURN@G@@@@ + ECODE . TD )@@G@@ERROR CODES IN ECODE,ECODE+1 @G@@@@ + MI1 TE )@@G@@ . PUT IT IN MI SEC 1 BUFFER @C@@@@ + MI0+13 TF )@@G@@ . LINK @C@@@@ + 0 . WB TG )@@G@@@[@@@@. @F@@@@. DIREC$ ERROR ROUTINE RETURNS HERE IF ERROR OCCURRED TH )@@G@@AT 'CHK210' @[@@@@. @F@@@@CHK220* TZ LIOPT . TI )@@G@@Q,F,I, OR P OPTIONS SET?@G@@@@ J GBU . TJ )@@G@@YES, ALREADY PERFORMED TESTS @E@@@@ J 0,X9 TK )@@G@@ . NO, PERFORM TESTS @ @@@@/. CHECK DESIRED PARAMETERS @[@@@@. TL )@@G@@@B@@@@. ACCOUNT, PROJECT, OR QUALIFIER CHECK @[@@@@. @G@@@@AAOPT*TM )@@G@@ TZ CPT . C-OPTION SET FOR PARTIAL SPEC?@F@@@@TN )@@G@@ J CHK280 . YES, CHECK PARTIAL SPEC @G@@@@TO )@@G@@CHK250 DTE A9,0,X7 . DOES SPEC MATCH THAT OF FILE? TP )@@G@@@E@@@@ J CHK270 . NO, GET ANOTHER @[@@@@TQ )@@G@@. @#@@@@. TEST PASSED @[@@@@. @E@@@@CHK260 TNZ LIOPTR )@@G@@T . LEAD ITEM OPTION @F@@@@ J GBU TS )@@G@@ . NO, MAIN ITEM, SO GO ON @D@@@@ J CHK001 TT )@@G@@ . YES, GET MI0@[@@@@. @#@@@@. TEST FAILED @[@@@@. TU )@@G@@@E@@@@CHK270 TNZ LIOPT . LEAD ITEM OPTION @F@@@@TV )@@G@@ J CHK001 . NO, GET ANOTHER ITEM @G@@@@TW )@@G@@ J GALI . YES, GET ANOTHER LEAD ITEM TX )@@G@@@[@@@@. @ @@@@. CATEGORY (PARTIAL SPECS) @[@@@@. @H@@@@CHK280TY )@@G@@ LX X11,(66,0) . KLUDGE - ONCE THROUGH FOR C-OPT TZ )@@G@@@E@@@@ TZ YPT . IS Y-OPTION SET? @F@@@@UA )@@G@@ LX X11,(3,0) . YES, DO IT 11 TIMES @G@@@@UB )@@G@@CHK290 DL A9,0,X7 . GET PARAMATER FROM LI0 OR MI0 UC )@@G@@@E@@@@ DSC A9,0,*X11 . ROTATE 0-11 CHARS @F@@@@UD )@@G@@ AND A10,ACMASK+1 . MASK OFF DESIRED CHARS @B@@@@UE )@@G@@ AND A9,ACMASK . @C@@@@ DAN A10,UF )@@G@@MFD$+9 . MATCH?@D@@@@ DJZ A10,CHK260 . UG )@@G@@IF SO, TOK @F@@@@ TLEM,U X11,66 . SHIFTED 11 CUH )@@G@@HARS YET? @F@@@@ J CHK290 . NO, SHIFT ANUI )@@G@@OTHER CHAR @G@@@@ J CHK270 . YES, NO MATCUJ )@@G@@H - GET ANOTHER @[@@@@. @ @@@@. F OR I OPTIONS - FILENAME @[@@@@UK )@@G@@. @E@@@@FFOPT* TZ IPT . IS I-OPTION SET? UL )@@G@@@F@@@@ J CHK310 . YES, FILENAME CHECK ONLYUM )@@G@@@G@@@@ DL A0,PCT . GET QUAL SPEC SAVED IN PUN )@@G@@CT @D@@@@ DTE A0,LI0+1 . QUAL MATCH? @E@@@@UO )@@G@@ J GALI . NO, TRY AGAIN @E@@@@CHK310UP )@@G@@ TZ CPT . PARTIAL FILENAME? @H@@@@ J UQ )@@G@@ CHK280 . YES, HANDLE LIKE PARTIAL ACCOUNT @F@@@@UR )@@G@@ J CHK250 . NO, MAKE SIMPLE CHECK @[@@@@US )@@G@@. @^@@@@. X-OPTION (EXEC FILES) @[@@@@. @ @@@@XXOPT* LA UT )@@G@@ A0,MI0+7 @D@@@@ TZ,S1 MI0+8 . NO ACCOUNT? UU )@@G@@@F@@@@ TNE A0,('INSTAL') . OR='INSTALLATION' ? UV )@@G@@@E@@@@ J GBU . YES, SNAGGED ONE @E@@@@UW )@@G@@ J CHK001 . NO, TRY AGAIN @[@@@@. UX )@@G@@@A@@@@. K-OPTION (REMOVABLE DISC PACK) @[@@@@. @F@@@@KKOPT* JZUY )@@G@@ A14,CHK001 . IF NOT REM, TRY AGAIN @D@@@@ TZUZ )@@G@@ BMI1 . BAD MI1? @G@@@@ J CHK0VA )@@G@@01 . YES, DON'T BOTHER CHECKING @F@@@@ L,U VB )@@G@@ R1,5 . FOR FIRST 5 PACKIDS @F@@@@ L VC )@@G@@ A0,(2,MI1+18) . CHECK SPEC VS. PACK LIST@D@@@@ SE VD )@@G@@ A9,0,*A0 . FIND IT? @G@@@@ J $+2 VE )@@G@@ . NO, MAYBE TRY SECOND SPEC @G@@@@ J GBU VF )@@G@@ . YES, CONTINUE OTHER CHECKS @F@@@@ JZ VG )@@G@@ A10,CHK001 . 2ND SPEC GIVEN? NO,SEC@G@@@@ L,U VH )@@G@@ R1,5 . YES, NOW CHECK FOR 2ND SPEC @B@@@@ L VI )@@G@@ A0,(2,MI1+18) . @D@@@@ SE A10,0,*A0 VJ )@@G@@ . FIND IT? @E@@@@ J CHK001 . NO, TRVK )@@G@@Y NEXT FILE @F@@@@ . YES, CONTINUVL )@@G@@E TO GBU @C@@@@/. SPECIAL SIZE AND TYPE-OF-FILE OPTIONS @[@@@@VM )@@G@@. @D@@@@GBU* TNZ RPT . R-OPTION? @D@@@@VN )@@G@@ J CHK410 . NOT R, TRY D@[@@@@. @D@@@@VO )@@G@@. R-OPTION - CHECK FOR VARIOUS DISABLED INDICATIONS @[@@@@. @F@@@@VP )@@G@@ LA,S1 A0,MI0+11 . PICK UP DISABLE-BITS @F@@@@VQ )@@G@@ LA A1,DISDX . GET PARAMETER INDEX @E@@@@VR )@@G@@ TNE,U A1,RPRL . LAST ITEM (BMI)? @F@@@@ VS )@@G@@ LA,T1 A0,MI0+12 . YES, GET OTHER BITS @E@@@@ VT )@@G@@ EX REVR . CHECK PARAMETER @F@@@@ J VU )@@G@@ CHK000 . NO, TRY ANOTHER FILE @[@@@@. @F@@@@VV )@@G@@. DATE OPTION ROUTINE (ONLY FILES NOT REF'D SINCE DATE SPECIFIED) @[@@@@VW )@@G@@. @E@@@@CHK410 TNZ DPT . D-OPTION SET? VX )@@G@@@D@@@@ J CHK420 . NO, GO ON @F@@@@ VY )@@G@@ LA,H1 A0,MI0+18 . GET YR,MON,DAY IN A0 @F@@@@ VZ )@@G@@ LA A1,DATREF . YR,MO,DA I/P IN H2 OF A1@G@@@@ WA )@@G@@ EX REVD . M.I. DATE LE (GT) INPUT DATE? @E@@@@WB )@@G@@ J CHK000 . NO, GET ANOTHER @F@@@@CHK420WC )@@G@@ SZ A15 . INITIALIZE TOTAL TRACKS @G@@@@ WD )@@G@@ SZ,H2 MI0+14 . INITIALIZE FILE SIZE HOLDER @D@@@@WE )@@G@@ L A0,TPT . GET T-OPTION@F@@@@ TEWF )@@G@@,U A0,1 . SET (AND NOT REVERSED)? @D@@@@ TNWG )@@G@@Z EQDX . SPEC3 GIVEN?@D@@@@ J CHK4WH )@@G@@30 . NO,CHK430 @F@@@@ LA A0,EQDX WI )@@G@@ . GET EQUIP INDEX IN A0 @G@@@@ TNZ,H2 MI0+19,A0 WJ )@@G@@ . ANY GRANS ON SPEC'D EQUIP? @F@@@@ J CHK000 WK )@@G@@ . NO, TRY ANOTHER FILE @D@@@@CHK430 TZ TAP WL )@@G@@ . TAPE FILE? @F@@@@ J *SZOPT . WM )@@G@@YES, DON'T ADD UP TRACKS@[@@@@. @F@@@@. ADD UP MASS STORAGE GRANULE WN )@@G@@COUNTS, AND STORE TOTAL IN MI0+14. @E@@@@. SHOULD ALL BE ZERO IF FILE IWO )@@G@@S UNLOADED, BUT DO IT ANYHOW. @[@@@@. @ @@@@ LA,H2 A15,WP )@@G@@MI0+27@ @@@@ LX,U X11,6 @G@@@@ AA,H2 A15,WQ )@@G@@MI0+20,X11 . ADD TRACKS ON EACH DEVICE @ @@@@ JGD WR )@@G@@ X11,$-1 @F@@@@ TP MI0+13 . POSITION GRAWS )@@G@@NULARITY? @G@@@@ LSSL A15,6 . MULTIPLY BY WT )@@G@@64 TO GET TRACKS @G@@@@ SA,H2 A15,MI0+14 . STORE WU )@@G@@FILE SIZE IN MI0+14 @[@@@@. @G@@@@. IF A SPEC3 EQUIP TYPE WAS GIWV )@@G@@VEN, USE GRAN COUNT ON THAT EQUIPMENT @^@@@@. ONLY IN THE TOTALS. WW )@@G@@@[@@@@. @F@@@@ LA A0,EQDX . GET F-TYPE EWX )@@G@@QUIP INDEX @G@@@@ JZ A0,CHK435 . WAS ONE SPECWY )@@G@@IFIED (IN SPEC3)? @H@@@@ LA,H2 A15,MI0+19,A0 . YES, GWZ )@@G@@ET GRAN CNT ON THAT EQUIP ONLY@F@@@@ TP MI0+13 XA )@@G@@ . POSITION GRANULARITY? @E@@@@ LSSL A15,6 XB )@@G@@ . YES, MULT BY 64 @[@@@@. @F@@@@. IF FILE IS UNLOADED, BE SUREXC )@@G@@ TRACK COUNT IS ZERO FOR TOTALS @[@@@@. @D@@@@CHK435 TP XD )@@G@@ MI0+12 . UNLOADED? @G@@@@ SZ A15 XE )@@G@@ . YES, ZERO OUT TOTAL IN A15 @F@@@@ J *SZOXF )@@G@@PT . JUMP TO PROPER ROUTINE @[@@@@. @F@@@@. CHECK AGAIXG )@@G@@NST SIZE IN SPEC2 (USE SECURE TAPE BLOCKS IF UNLOADED)@[@@@@. @D@@@@XH )@@G@@SZCHK* TZ TAP . TAPE FILE? @F@@@@ J XI )@@G@@ CHK460 . YES, SKIP SIZE CHECK @E@@@@ TPXJ )@@G@@ MI0+12 . IS FILE LOADED? @G@@@@ J XK )@@G@@ CHK450 . NO, SKIP LOADED TRACK CHECK @F@@@@ EXXL )@@G@@ SZLOD . IS FILE > SPEC2 TRACKS? @G@@@@ J XM )@@G@@ CHK460 . YES, BUT CHECK FOR U-OPTION @E@@@@ XN )@@G@@ J CHK000 . NO, GET NEXT FILE @G@@@@CHK450 JZXO )@@G@@ A13,CHK000 . IF NO BACKUP, TRY ANOTHER @G@@@@ XP )@@G@@ LA,H2 A15,MI1+9 . YES, GET BACKUP BLOCK COUNT @F@@@@XQ )@@G@@ EX SZBAK . MORE THAN SPEC2 BLOCKS? @F@@@@XR )@@G@@ J CHK000 . NOPE, TRY NEXT FILE @E@@@@XS )@@G@@CHK460 TNZ UPT . U-OPTION SET? @E@@@@ XT )@@G@@ J NSZOPT . IF NOT, GO ON @[@@@@. @ @@@@XU )@@G@@. U-OPTION (UNLOADED FILES) @[@@@@. @D@@@@UNOPT* EX UNCHXV )@@G@@EK . U-OPTION @F@@@@ J CHK000 XW )@@G@@ . FILE IS NOT UNLOADED @[@@@@. @E@@@@. NO SPECIAL SIZE OPTIONXX )@@G@@S (OR THEY ALL PASSED THE TESTS) @[@@@@. @]@@@@NSZOPT* . @I@@@@XY )@@G@@ ON NSSP . ******************************XZ )@@G@@********** @F@@@@ TNZ TESTS . ANY SPECIAL YA )@@G@@TESTS TO DO?@D@@@@ J CHK500 . NO, GO ON YB )@@G@@@[@@@@. @^@@@@. PERFORM SPEC 4-N TESTS@[@@@@. @D@@@@ LMYC )@@G@@J X11,CHK905 . YES, DO THEM@F@@@@ J CHK0YD )@@G@@00 . ALL AND'S AND ONE FAILED@F@@@@ J CHK5YE )@@G@@00 . ALL AND'S AND ALL PASSED@H@@@@ LMJ X11,YF )@@G@@POLTRAN . UNCLEAR - EVALUATE POLISH EXPRESSION@F@@@@ JZYG )@@G@@ A0,CHK000 . IF FALSE, GET NEXT FILE @]@@@@CHK500 . YH )@@G@@@I@@@@ OFF NSSP . ************************YI )@@G@@**************** @F@@@@ TNZ QANDF2 . NO TOTYJ )@@G@@ALS IF QF OPTIONS @G@@@@ TZ TAP . IS THIYK )@@G@@S A CAT'D TAPE FILE? @F@@@@ J MFD500 . YL )@@G@@YES, SKIP SIZE STUFF @D@@@@ JZ A14,$+7 . YM )@@G@@REMOVABLE? @F@@@@ BUMP RTOT,A15 . ACCUMULATE RYN )@@G@@EM TRACKS @F@@@@ BUMP RFCT . INCREMENT REYO )@@G@@M FILE COUNT@E@@@@ TNZ VFIL . V-OPTION FILYP )@@G@@E? @C@@@@ J $+7 . NOPE @F@@@@ YQ )@@G@@ BUMP VTOT,A15 . ACCUMULATE V-OPT TRACKS @G@@@@ YR )@@G@@ BUMP VFCT . INCREMENT V-OPTION FILE COUNT @E@@@@YS )@@G@@ TNZ GFIL . G-OPTION FILE? @C@@@@ YT )@@G@@ J $+7 . NO @G@@@@ BUMP GTOTYU )@@G@@,A15 . ACCUMULATE G-OPTION TRACKS @G@@@@ BUMP YV )@@G@@ GFCT . INCREMENT G-OPTION FILE COUNT @H@@@@ JNYW )@@G@@Z A14,MFD500 . IF REM DISC, DON'T INC FIXED TRKS @E@@@@YX )@@G@@ TP MI0+12 . IS FILE LOADED? @G@@@@ YY )@@G@@ J MFD500 . NO, DON'T ADD TO FIXED TRACKS @G@@@@YZ )@@G@@ BUMP TOT,A15 . INCREMENT TOTAL FIXED TRACKS ZA )@@G@@@E@@@@ J MFD500 . RETURN TO MAIN SEG@A@@@@ZB )@@G@@/. SPEC4-N SPECIAL TEST SUBROUTINE @[@@@@. @E@@@@. PERFORM ALL SPECZC )@@G@@4-N TESTS, PUTTING RESULTS IN POLISH TABLE@D@@@@. IF TEST PASSES, RESULTZD )@@G@@ = 1. IF FAILURE, RESULT = 0.@[@@@@. @E@@@@. LINKAGE IS: LMJ X1ZE )@@G@@1,CHK900 OR LMJ X11,CHK905 @B@@@@. @B@@@@. @E@@@@. ZG )@@G@@ @[@@@@. @F@@@@ZH )@@G@@. CHK900 IS ENTRY POINT FOR LEAD ITEM CHECKS. ALL LEAD ITEM TESTS@G@@@@ZI )@@G@@. ARE DONE, BUT RESULT OF ALL MAIN ITEM TESTS IS ASSUMED TO BE 1 (PASS).ZJ )@@G@@@[@@@@. @G@@@@. CHK905 IS ENTRY POINT FOR MAIN ITEM CHECKS. ALL TESZK )@@G@@TS ARE DONE IN @]@@@@. THIS CASE.@[@@@@. @G@@@@. 'DEFINITE FAILURZL )@@G@@E' AND 'DEFINITE SUCCESS' RETURNS ARE TAKEN ONLY IF @F@@@@. NO OR'S ORZM )@@G@@ XOR'S WERE DONE (JUST AND'S), AND EITHER ONE OF THE @D@@@@. AND'S FAILZN )@@G@@ED, OR ALL OF THEM PASSED, RESPECTIVELY. @[@@@@. @^@@@@ ONZO )@@G@@ NSSP@F@@@@CHK900 LA,U A3,MI0-1 . GET LAST ADDZP )@@G@@R OF LI0 @G@@@@ J CHK906 . GO ON FOR LEZQ )@@G@@AD ITEM TESTS @F@@@@CHK905 LA,U A3,0700000 . MARK AZR )@@G@@S MAIN ITEM CHECK @F@@@@CHK906 LA A1,AOX . GET ANZS )@@G@@D/OR/XOR BITS @G@@@@ AND,U A1,OR+XOR . GET JUZT )@@G@@ST OR/XOR BITS IN A2 @G@@@@ L R1,TESTS . ZU )@@G@@GET NUMBER OF TESTS TO DO @E@@@@ JGD R1,$+1 ZV )@@G@@ . ADJUST FOR JGD @E@@@@ LX X2,(1,0) . ZW )@@G@@INITIALIZE INDEX @I@@@@CHK910 TLE,H2 A3,INS1,X2 . L.I. CZX )@@G@@HECK AND TEST OF STUFF IN M.I.? @H@@@@ J CHK925 ZY )@@G@@ . YES, ASSUME TEST PASSED FOR NOW @I@@@@ EX ZZ )@@G@@ INS1,X2 . EXECUTE REMOTE LOAD OF DIRECTORY INFO @E@@@@AA )@@G@@ TNZ INS2,X2 . IS THIS A DTE? @F@@@@ AB )@@G@@ J CHK920 . YES, SKIP AND/STORE @F@@@@ AC )@@G@@ AND A0,TMASK,X2 . PERFORM 'AND' WITH MASK @F@@@@ AD )@@G@@ SA A1,SPC . STORE RESULT IN SPC @H@@@@ AE )@@G@@ EX INS2,X2 . EXECUTE REMOTE LOAD OF SPEC VALUE AF )@@G@@@G@@@@CHK920 EX INS3,X2 . EXECUTE REMOTE TEST INSTAG )@@G@@R @D@@@@ J CHK930 . TEST FAILED @F@@@@AH )@@G@@CHK925 LA,U A0,1 . MARK TEST SUCCEEDED @C@@@@AI )@@G@@ J CHK940 . GO ON @E@@@@CHK930 SZ AJ )@@G@@ A0 . MARK TEST FAILED @]@@@@CHK940 . @H@@@@ AK )@@G@@ JNZ A2,CHK942 . IF OR'S OR XOR'S SPEC'D, HANDLE THEMAL )@@G@@@I@@@@ JZ A0,0,X11 . ONLY AND'S - IF ANY FAILAM )@@G@@, DEF. FAILURE @E@@@@ J CHK944 . THIS OAN )@@G@@NE PASSED @F@@@@CHK942 LA A1,POLINK,X2 . GET POLISH TAO )@@G@@BL INDEX @H@@@@ SA A0,POLISH,A1 . STORE RESULTAP )@@G@@ OF TEST IN POLISH TABLE@F@@@@CHK944 NOP 0,0,*X2 . AQ )@@G@@INCREMENT TEST INDEX @E@@@@ JGD R1,CHK910 . AR )@@G@@PERFORM ALL TESTS @H@@@@ JZ A2,1,X11 . SUCCESAS )@@G@@S IF ONLY AND'S (ALL PASSED) @H@@@@ J 2,X11 AT )@@G@@ . RETURN FOR POLISH TBL EVALUATION @^@@@@ OFF NSSPAU )@@G@@@#@@@@ END ___@@@. @G@@@@. CHK905 IS ENTRY POINT FOR MAAV )@@G@@IN ITEM CHECKS. ALL TESTS ARE DONE IN @]@@@@. THIS CASE.@[@@@@. AW )@@G@@@G@@@@. 'DEFINITE FAILURE' AND 'DEFINITE SUCCESS*[@@@@*SDFF*@A@@_@. @MFDAX )@@G@@ SUMMARY PRINTING ROUTINE @[@@_@. @D@@_@. CALLED AT TERMINATION AY )@@G@@UNLESS QF OPTIONS ARE SET. @[@@_@. @#@@@@ AXR$ @H@@@@AZ )@@G@@ CONFIG . DEFINE CONFIGURATION PARAMETERBA )@@G@@S @D@@@@ EQUFS . DEFINE TAGS @G@@_@BB )@@G@@TOTM01 'TRKS&: FIXED=&' . TOTAL FIXED STORAGE ON-LINE BC )@@G@@@B@@@@TOTM02 ' REMOV=& V-OPT=& G-OPT=&' @B@@@@TOTM03 ' TOTALBD )@@G@@ BACKUP TAPE BLOCKS=&' @F@@@@TOTM04 'FILES: TOTAL=&' . BE )@@G@@TOTAL FILES PRINTED @G@@@@TOTM05 ' TAPES=&' . BF )@@G@@TOTAL CAT'D TAPES PRINTED @[@@@@$(1). @]@@_@TOT000*. @ @@@@ BG )@@G@@ E$DIT EDPACK @E@@@@ E$MSG TOTM01 . BH )@@G@@TRKS: FIXED = @D@@@@ LA A0,TPT . GET T-BI )@@G@@OPTION@F@@@@ TNE,U A0,1 . SET (AND NOT REVERBJ )@@G@@SED)? @F@@@@ J TOT100 . YES, DO NORMAL STUBK )@@G@@FF @G@@@@ TNZ EQDX . F-TYPE EQUIP GIVENBL )@@G@@ IN SPEC3? @F@@@@ J TOT100 . NO, DO NORMABM )@@G@@L STUFF @E@@@@ E$SKIP 1 . YES, SKIP A BN )@@G@@SPACE @D@@@@ E$CHAR '(' . OPEN PAREN @E@@@@BO )@@G@@ LA A0,EQDX . GET EQUIP INDEX @E@@@@ BP )@@G@@ E$FD1 EQUCD-1,A0 . EDIT EQUIP TYPE @D@@@@ E$BQ )@@G@@CHAR ')' . CLOSE PAREN @E@@_@TOT100 E$MSGR BR )@@G@@ . RESUME MSG EDIT @F@@@@ E$DECV TOT BS )@@G@@ . EDIT TOTAL FIXED TRACKS @D@@@@ E$MSG TOTM02 BT )@@G@@ . REMOVABLE = @F@@@@ E$DECV RTOT . BU )@@G@@EDIT TOTAL REM. TRACKS @ @@@@ ON GVHUSH @E@@@@ BV )@@G@@ TNZ DLA . IS RUN PRIVILEGED?@F@@@@ J BW )@@G@@ TOT200 . NO, SKIP V/G TOTALS @#@@@@ OFBX )@@G@@F @D@@@@ E$MSGR . V-OPT = @F@@@@BY )@@G@@ E$DECV VTOT . EDIT V-OPTION TRACKS @D@@@@BZ )@@G@@ E$MSGR . G-OPT = @F@@@@ E$CA )@@G@@DECV GTOT . EDIT G-OPTION TRACKS @G@@@@TOT200 JZCB )@@G@@ A7,TOT300 . IF DEMAND, SKIP SEC TRACKS @F@@@@ CC )@@G@@ E$MSG TOTM03 . BACKUP TAPE BLOCKS = @E@@@@ CD )@@G@@ E$DECV SECTOT . EDIT SECURE TRACKS@F@@@@TOT300 P$CE )@@G@@RINT POUT . PRINT FIRST TOTALS LINE @ @@@@ E$CF )@@G@@DIT EDPACK @E@@@@ E$MSG TOTM04 . FILES:CG )@@G@@ TOTAL = @E@@@@ E$DECV PFCT . EDIT TOTAL FCH )@@G@@ILES @D@@@@ E$MSG TOTM02 . REMOVABLE = @G@@@@CI )@@G@@ E$DECV RFCT . EDIT REMOVABLE FILE TOTAL CJ )@@G@@@ @@@@ ON GVHUSH @E@@@@ TNZ DLA CK )@@G@@ . IS RUN PRIVILEGED?@F@@@@ J TOT400 CL )@@G@@ . NO, SKIP V/G TOTALS @#@@@@ OFF @D@@@@ E$CM )@@G@@MSGR . V-OPT = @F@@@@ E$DECV VFCTCN )@@G@@ . EDIT V-OPTION FILE TOTAL@D@@@@ E$MSGR CO )@@G@@ . G-OPT = @F@@@@ E$DECV GFCT CP )@@G@@ . EDIT G-OPTION FILE TOTAL@D@@@@TOT400 E$MSG TOTM05 CQ )@@G@@ . TAPES = @F@@@@ E$DECV TFCT . EDIT TCR )@@G@@APE FILE COUNT @#@@@@ E$DITX @F@@@@ P$RINT POUTCS )@@G@@ . PRINT SECOND TOTALS LINE@E@@@@ J MFD7CT )@@G@@00 . RETURN TO MAIN SEG@#@@@@ END ___ CU )@@G@@ . SET (AND NOT REVERSED)? @F@@@@ J TOT100 CV )@@G@@ . YES, DO NORMAL STUFF @G@@@@ TNZ EQDX CW )@@G@@*[@@@@*SDFF*@ @@@@*. @MFD GENERATION SKELETON @[@@@@*. @^@@@@*. SCX )@@G@@GS'S ACCEPTED: @[@@@@*. @G@@@@*. FULL ASSEMBLY @PDP ALL PROCY )@@G@@CS,, ASSEMBLE ALL ASM ELEMENTS, @G@@@@*. AND PECZ )@@G@@RFORM THE COLLECTION, APPLYING ALL PCF @A@@@@*. DA )@@G@@CORRECTIONS.@[@@@@*. @F@@@@*. UPDATE OPTION PERFORM A SYMBOLICDB )@@G@@ UPDATE, MERGING IN @C@@@@*. THE PCF CORRECTIONDC )@@G@@S @[@@@@*. @F@@@@*. LIST OPTION GENERATE LISTINGS OF EACDD )@@G@@H ELEMENT WHICH IS@A@@@@*. PROCESSED. @[@@@@*. DE )@@G@@@E@@@@*. DO , SPECIFIES THAT THIS ELEMNT EXISTS ONLY @B@@@@*. DJ )@@G@@ IN THE PCF/TCF. @[@@@@*. @[@@@@*. @#@@@@*DEFINE PRODK )@@G@@C @]@@@@*IF [LIST]>0@A@@@@#HDG *** [#1] *** @[@@@@DL )@@G@@*END @A@@@@*IF COLUMN SEARCH FROM NEW FOR [#1] @#@@@@#PDP,[#2]I [#1] DM )@@G@@@[@@@@*ELSE @#@@@@*IF [UPDATE]>0 @^@@@@#PDP,[#2] [#1],[#1] @[@@@@DN )@@G@@*ELSE @^@@@@#PDP,[#2] [#1],U-[#1] @[@@@@*END @[@@@@*END @#@@@@*CORREDO )@@G@@CT [#1] @[@@@@*END @^@@@@*IF [#1] HAS CORRECTIONS@]@@@@*SET PDPCHG DP )@@G@@@[@@@@*END @[@@@@*END @[@@@@*. @]@@@@*DEFINE PASM@]@@@@*IF [LIST]>0DQ )@@G@@@A@@@@#HDG *** [#1] *** @[@@@@*END @A@@@@*IF COLUMN SDR )@@G@@EARCH FROM NEW FOR [#1] @^@@@@#ASM,[#2]I [#1],[#1] @[@@@@*ELSE @#@@@@DS )@@G@@*IF [UPDATE]>0 @ @@@@#ASM,[#2] [#1],[#1],[#1] @[@@@@*ELSE @^@@@@DT )@@G@@#ASM,[#2] [#1],[#1] @[@@@@*END @[@@@@*END @#@@@@*CORRECT [#1] DU )@@G@@@[@@@@*END @[@@@@*END @[@@@@*. @F@@@@*CREATE SGS: ASM CHECK,DIREC$,DV )@@G@@DIRERR,DIRLNK,DSEG,ID,INIT1,INIT2,; @E@@@@ MFD,PRINT,PRIDW )@@G@@NT2,QF,SORTER,TOTALS,WOUT @^@@@@*CREATE SGS: PDP PROCS @ @@@@*CREATDX )@@G@@E SGS: MAP MAP,MFD,B @#@@@@*CLEAR PDPCHG @[@@@@*. @ @@@@*INCREDY )@@G@@MENT A TO [PDP,1,1] @D@@_@*IF [FULL]>0 OR ROW SEARCH FROM DO FOR [PDDZ )@@G@@P,1,1,A] @]@@@@*IF [LIST]>0@ @@@@*PROCESS PROC [PDP,1,1,A] AL @[@@@@EA )@@G@@*ELSE @ @@@@*PROCESS PROC [PDP,1,1,A] A @[@@@@*END @[@@@@*END @[@@@@EB )@@G@@*LOOP @[@@@@*. @ @@@@*INCREMENT A TO [ASM,1,1] @G@@_@*IF [FULL]>0EC )@@G@@ OR PDPCHG IS SET OR ROW SEARCH FROM DO FOR [ASM,1,1,A] @]@@@@*IF [LED )@@G@@IST]>0@ @@@@*PROCESS PASM [ASM,1,1,A] SK @[@@@@*ELSE @ @@@@*PROCESS PASEE )@@G@@M [ASM,1,1,A] N @[@@@@*END @[@@@@*END @[@@@@*LOOP @[@@@@*. @^@@@@EF )@@G@@*INCREMENT A TO [MAP,1] @]@@@@*IF [LIST]>0@B@@@@#HDG *** EG )@@G@@ [MAP,1,A,1] ***@[@@@@*END @]@@@@*EDIT ON @#@@@@#MAP,[MAP,1,A,3]& EH )@@G@@@]@@@@*IF [LIST]>0@ @@@@S [MAP,1,A,1],[MAP,1,A,2]& @[@@@@*ELSE @ @@@@EI )@@G@@N [MAP,1,A,1],[MAP,1,A,2]& @[@@@@*END @#@@@@*IF [UPDATE]>0 @#@@@@EJ )@@G@@,[MAP,1,A,1]& @[@@@@*END @]@@@@*EDIT OFF @^@@@@*CORRECT [MAP,1,A,EK )@@G@@1] @[@@@@*END @[@@@@*LOOP @[@@@@#EOF @]@@@@*IF [LIST]>0@[@@@@#HDG,NEL )@@G@@@[@@@@*END ___ CORRECTIONS.@[@@@@*. @F@@@@*. UPDATE OPTIONEM )@@G@@*[@@@@*SDFF*@G@@@@. DIREC$ IS AN NYU-WRITTEN SET OF ROUTINES FOR RETRIEVEN )@@G@@ING INFORMATION @H@@@@. FROM THE MASTER FILE DIRECTORY. THE ROUTINES EO )@@G@@INVOLVED ARE: DIREND, DIRINT, @^@@@@. DIRSEC, AND DIRLNK. @D@@@@. EACHEP )@@G@@ HAS BEEN WRITTEN TO BE CALLABLE FROM FORTRAN-V.@[@@@@. @D@@@@. DIREEQ )@@G@@ND - FREES DGET$ FILE AND ZEROES DRUM ADDRESS. @[@@@@. @^@@@@. CER )@@G@@ALLING SEQUENCE: @[@@@@. @ @@@@. FORTRAN: CALL DIREND @[@@@@ES )@@G@@. @A@@@@. ASSEMBLY: LMJ X11,DIREND @E@@@@. +ET )@@G@@ 0 . FORTRAN COMPATIBILITY@[@@@@. @[@@@@. @H@@@@EU )@@G@@. DIRINT - ASSIGNS DGET$ FILE ($$--DGET--$$) AND DOES DGET$. DIRINT ATTEV )@@G@@EMPTS @H@@@@. TO DO A DOUBLE-BUFFERED DGET$, AND IF THAT FAILS EW )@@G@@DUE TO AN EXEC @G@@@@. LOWER THAN 27-20-225, IT TRIES AGAIN EX )@@G@@WITH A NORMAL DGET$. @G@@@@. A TAG 'DIRSIZ' EXISTS IN BOTH EEY )@@G@@LEMENTS OF THE DIREC$ PACKAGE,@H@@@@. DIREC$ AND DIRLNK. THIS EZ )@@G@@VALUE IS USED AS THE INITIAL RESERVE FOR @H@@@@. THE DGET$ FILFA )@@G@@E. IF THIS IS NOT ENOUGH, DIREC$ WILL TRY AGAIN USING@I@@@@. TFB )@@G@@HE SIZE RETURNED BY MSCON$ WHEN THIS OCCURS. IF DIRSIZ IS CHANGED, FC )@@G@@@C@@@@. IT MUST BE CHANGED IN BOTH ELEMENTS. @[@@@@. @^@@@@FD )@@G@@. CALLING SEQUENCE: @[@@@@. @D@@@@. FORTRAN: CALL DIRINT($FE )@@G@@ERR,ECODE,MASK,FORK) @[@@@@. @A@@@@. ASSEMBLY: LMJ X11,DIRFF )@@G@@INT @E@@@@. + ERTN . ERROR RETURN ADDR FG )@@G@@@G@@@@. + ECODE . ADDR OF 2-WORD ERROR CODE BFH )@@G@@UFFER @D@@@@. + MASK . ADDR OF MASK @E@@@@FI )@@G@@. + FORK . ADDR OF FORK$ WORD @E@@@@. FJ )@@G@@ + 0 . FORTRAN COMPATIBILITY@[@@@@. @F@@@@FK )@@G@@. DIRINT MASK VALUES: (BITS MAY BE SET IN ANY COMBINATION) @[@@@@FL )@@G@@. @C@@@@. IF BIT 0 IS SET, DON'T INITIALIZE DIRLNK @F@@@@. FM )@@G@@ IF BIT 1 IS SET, TELL DIRSEC TO GET LEAD ITEMS (SECTOR 0) @F@@@@. FN )@@G@@ IF BIT 2 IS SET, DIRSEC WILL GET MAIN ITEMS (SECTOR 0) @F@@@@. FO )@@G@@ IF BIT 3 IS SET, DIRSEC WILL PUT LEAD ITEMS IN BUFFER ADDR @E@@@@. FP )@@G@@ GIVEN IN DIRSEC CALL, AND MAIN ITEMS IN BUFFER+28. @F@@@@. IF BOFQ )@@G@@TH BITS 1&2 ARE SET, DIRSEC WILL RETRIEVE LEAD ITEMS @F@@@@. AS FR )@@G@@WELL AS MAIN ITEMS, AND WILL RETURN WITH A0=0 IF IT @G@@@@. FOUFS )@@G@@ND A LEAD ITEM, AND A0=1 IF IT FOUND A MAIN ITEM. IF IT @G@@@@. FT )@@G@@ IS DESIRED TO MOVE ON TO THE NEXT LEAD ITEM WITHOUT RETURNING @H@@@@FU )@@G@@. ALL THE MAIN ITEMS FOR THE CURRENT LEAD ITEM, DIREC$'S EXTERNALFV )@@G@@IZED @G@@@@. CELL 'GOTONE' SHOULD BE CLEARED BEFORE THE NEXT DIRFW )@@G@@SEC CALL. @[@@@@. @H@@@@. FORK$ WORD - WHEN DOING A DOUBLE-BUFFFX )@@G@@ERED DGET$, NO OTHER ACTIVITES MAY @H@@@@. BE ACTIVE. IF THE FORK$ FY )@@G@@WORD IS NON-ZERO, DIRINT WILL DO AN ER FORK$ TO @H@@@@. THE ADDRESS SFZ )@@G@@PECIFIED, AFTER THE ACTUAL DGET$ IS DONE. IF THE FORK$ WORD@C@@@@. CGA )@@G@@ONTAINS 0, THEN NO ER FORK$ WILL BE DONE. @[@@@@. @[@@@@. @E@@@@GB )@@G@@. DIRSEC - GETS THE NEXT DESIRED ITEM FROM THE DGET$ FILE @[@@@@. GC )@@G@@@^@@@@. CALLING SEQUENCE: @[@@@@. @C@@@@. FORTRAN: CALL DIGD )@@G@@RSEC($ERR,ECODE,BUFF) @[@@@@. @A@@@@. ASSEMBLY: LMJ X11,DIRGE )@@G@@SEC @E@@@@. + ERTN . ERROR RETURN ADDR GF )@@G@@@G@@@@. + ECODE . ADDR OF 2-WORD ERROR CODE BGG )@@G@@UFFER @G@@@@. + BUFF . WHERE TO PUT THE INFOGH )@@G@@RMATION @E@@@@. + 0 . FORTRAN COMPATIGI )@@G@@BILITY@[@@@@. @A@@@@. SEE NOTES UNDER DIRINT @[@@@@. GJ )@@G@@@D@@@@. DIRLNK - LINK TO ANOTHER LEAD ITEM/MAIN ITEM SECTOR @[@@@@. GK )@@G@@@^@@@@. CALLING SEQUENCE: @[@@@@. @D@@@@. FORTRAN: CALL DIGL )@@G@@RLNK($ERR,ECODE,ITEM,LINK) @[@@@@. @A@@@@. ASSEMBLY: LMJ XGM )@@G@@11,DIRLNK @E@@@@. + ERTN . ERROR RETURN ADGN )@@G@@DR @G@@@@. + ECODE . ADDR OF 2-WORD ERROR GO )@@G@@CODE BUFFER @D@@@@. + ITEM . WHERE TO PUT ITGP )@@G@@@D@@@@. + LINK . ADDR OF LINK @E@@@@. GQ )@@G@@ + 0 . FORTRAN COMPATIBILITY@[@@@@. @[@@@@GR )@@G@@. @#@@@@. ERROR CODES: @[@@@@. @D@@@@. 1 - MSCON$ DGET$ ERRORGS )@@G@@ (WORD 1 IS CONTENTS OF A0) @D@@@@. 2 - I/O ERROR (WORD 1 IS CONTENTS GT )@@G@@OF IOPACKET+3) @^@@@@. 3 - EOF ON DIRSEC CALL@F@@@@. 4 - CSF$ ERROR OGU )@@G@@N @ASG,T OF SCRATCH FILE (STATUS IS IN WORD 1) @E@@@@. 5 - CALL MADE ONGV )@@G@@ DIRSEC OR DIRLNK WHEN NOT INITIALIZED @H@@@@. 6 - NUMBER OF DIRECTORGW )@@G@@Y TRACKS TOO BIG - OVERFLEW ADDTBL IN DIRLNK DURING @G@@@@. INITIAGX )@@G@@LIZATION. INCREASE 'DIRSIZ' (CURRENT VALUE IN WORD 1). @D@@@@. 7 - GY )@@G@@BAD ADDRESS PASSED TO DIRLNK (ADDR IN WORD 1) @D@@@@. 8 - ERROR RETURNGZ )@@G@@ FROM ER MCT$ (STATUS IN WORD 1) @B@@@@. 9 - BAD DIRINT MASK (MASK INHA )@@G@@ WORD 1) @[@@@@. @[@@@@/$(1) @#@@@@ AXR$ @^@@@@DEBUG HB )@@G@@ EQU 0 @G@@@@DIRSIZ* EQU 0 . DIRSIZHC )@@G@@ IS THE INITIAL SIZE OF @E@@@@ . HD )@@G@@THE DGET$ FILE. @G@@@@ . IF THIHE )@@G@@S IS NOT ENOUGH, DIREC$ @H@@@@ . HF )@@G@@WILL FREE THE FILE AND REASSIGN @G@@@@ HG )@@G@@ . IT WITH THE PROPER RESERVE. @G@@@@ HH )@@G@@ . IF CHANGED, DIRLNK MUST BE @E@@@@ HI )@@G@@ . REASSEMBLED, ALSO.@B@@@@ HJ )@@G@@ . @I@@@@ . IF YOUHK )@@G@@R DIRECTORY SIZE REMAINS FAIRLY @H@@@@ HL )@@G@@ . STABLE (SAY, AROUND 150 TRACKS) @G@@@@ HM )@@G@@ . THEN YOU SHOULD SET DIRSIZ TO @H@@@@ HN )@@G@@ . THAT VALUE, PLUS SOME EXPANSION @H@@@@HO )@@G@@ . FACTOR. IF, ON THE OTHER HANDHP )@@G@@, @G@@@@ . YOUR DIRECTORY SIZHQ )@@G@@E KEEPS @H@@@@ . INCREASING, HR )@@G@@SET DIRSIZ TO ZERO. @B@@@@ . HS )@@G@@@D@@@@DIREND* L A0,FREE . CHANGE CSFIM@D@@@@ HT )@@G@@ LA A1,CSFIM . TO 'FREE' @F@@@@ S HU )@@G@@ A0,CSFIM . AFTER SAVING 'ASG,T' @A@@@@ LA HV )@@G@@ A0,(4,CSFIM) @^@@@@ ER CSF$@E@@@@ SA HW )@@G@@ A1,CSFIM . RESTORE 'ASG,T' @E@@@@ SZ NXSEHX )@@G@@C . ZERO DRUM ADDRESS @C@@@@ J 1,X11 HY )@@G@@ . RETURN@[@@@@. @[@@@@. @]@@@@DIRINT* . @D@@@@ HZ )@@G@@ S X11,SAVX11 . SAVE X11 @E@@@@ L IA )@@G@@ A0,*2,X11 . GET DIRINT MASK @E@@@@ TOP,U A0,2IB )@@G@@ . WANT LEAD ITEMS @E@@@@ TEP,U A0,4 IC )@@G@@ . OR MAIN ITEMS? @D@@@@ J $+2 ID )@@G@@ . YES, GO ON @D@@@@ J BADMASK . NO, BAIE )@@G@@D MASK@G@@@@ SZ SEP . CLEAR SEPARATE LI/IF )@@G@@MI BUFF FLAG@D@@@@ TOP,U A0,010 . BIT 3 SET? IG )@@G@@@C@@@@ J NOSEP . NO @E@@@@ SAIH )@@G@@ A0,SEP . YES, SET FLAG @D@@@@ AN,U II )@@G@@ A0,010 . CLEAR BIT 3 @[@@@@NOSEP.@^@@@@ SZ IJ )@@G@@ A1 @^@@@@ DSL A0,2@ @@@@ LSSL A0,17 IK )@@G@@@F@@@@ LDSL A0,18 . SET MASK SO H1=WANTM IL )@@G@@@D@@@@ S A0,MASK . AND H2=WANTL@[@@@@REASG.IM )@@G@@@F@@@@ LA A1,MSPKT+3 . GET INITIAL RESERVE IN )@@G@@@F@@@@ JZ A1,ZRO . IF ZERO, LEAVE IT ALONE IO )@@G@@@D@@@@ SSL A1,5 . ADD ABOUT 3%@G@@@@ IP )@@G@@ TLE,U A1,3 . AT LEAST 3 TRACKS BEING ADDED?@G@@@@IQ )@@G@@ LA,U A1,2 . NO, ADD 2 TRACKS TO ACCOMODATEIR )@@G@@@E@@@@ . DYNAMIC EXPANSION @D@@@@IS )@@G@@ AA A1,MSPKT+3 . TO BE SAFE @]@@@@ZRO . IT )@@G@@@D@@@@ LA A2,SLASH . '/ ' @F@@@@CN IU )@@G@@ SZ A0 . CONVERT TO FD DECIMAL @ @@@@ IV )@@G@@ DI,U A0,10 @F@@@@ AA,U A1,060 . IW )@@G@@CONVERT TO FIELDATA @E@@@@ DSL A1,6 . IX )@@G@@LEFT-JUSTIFY IN A2@ @@@@ LA A1,A0 @ @@@@ JNIY )@@G@@Z A0,CN @E@@@@ SA A2,INTRES . STORE IZ )@@G@@IN ASG IMAGE@D@@@@ L,U A0,CSFIM . ASG FILE JA )@@G@@@^@@@@ ER CSF$@ @@@@ JNZ A0,CSFR @D@@@@JB )@@G@@ L,U A0,MSPKT . DO DGET$ @E@@@@ ERJC )@@G@@ MSCON$ . TRY DBDGET$ FIRST @E@@@@ JP JD )@@G@@ A0,DGETOK . DID THAT GO OKAY? @F@@@@ L A1,AJE )@@G@@0 . NO, GET EXEC INDICATOR @ @@@@ SSL A1,3JF )@@G@@0 @F@@@@ TG,U A1,043 . IS DBDGET$ OPERATIJG )@@G@@ONAL? @F@@@@ J MSCR . YES, SOMETHING'S WJH )@@G@@RONG @C@@@@ L,U A0,010 . NO @ @@@@ JI )@@G@@ S A0,MSPKT @ @@@@ L,U A0,MSPKT @G@@@@ JJ )@@G@@ ER MSCON$ . SO DO A REGULAR DGET$ THEN @ @@@@JK )@@G@@ JN A0,MSCR @F@@@@DGETOK L A0,*3,X11 JL )@@G@@ . WANNA FORK ANYTHING? @ @@@@ JZ A0,$+2 @D@@@@JM )@@G@@ ER FORK$ . YES, DO IT @H@@@@ SZJN )@@G@@ IOPAK+5 . INITIALIZE DGET$ DRUM ADDR TO ZERO @E@@@@JO )@@G@@ L,U A0,IOPAK . READ FIRST SEC @^@@@@ JP )@@G@@ ER IOW$@ @@@@ TZ,S1 IOPAK+3 @^@@@@ SLJQ )@@G@@J IOR @E@@@@ L,H1 A0,BUF+2 . FIRST DIR TRJR )@@G@@K @^@@@@ AN,U A0,1@F@@@@ S A0,FIRSTR JS )@@G@@ . SAVE ADDR OF FIRST TRK @E@@@@ LSSL A0,6 JT )@@G@@ . CONVERT TO SECTORS@H@@@@ S A0,NXSEC JU )@@G@@ . SET NXSEC = ADDR OF FIRST SECTOR @ @@@@ L,H2 A0,BJV )@@G@@UF+2 @F@@@@ LSSL A0,6 . NUMBER OF DIRECTORJW )@@G@@Y @E@@@@ S A0,QSEC . SECTORS WRITTEN JX )@@G@@@E@@@@ L,U A0,BUF+24 . SET UP TRACK INDEX@F@@@@JY )@@G@@ S A0,DX . WILL START WITH BUF+27 @E@@@@JZ )@@G@@ L A0,ENDWD . GET END SENTINEL @G@@@@ KA )@@G@@ S A0,BUF . STORE IN FIRST WORD OF BUFFER @F@@@@KB )@@G@@ S A0,BUF+27 . AND IN LAST (28TH) WORD @G@@@@KC )@@G@@ J DIR$ET . INITIALIZE AND SET UP ADDTBL KD )@@G@@@[@@@@. @E@@@@. DIRSEC ENTRANCE - RETRIEVE NEXT SECTOR OF DESIRED TYKE )@@G@@PE @[@@@@. @]@@@@DIRSEC*. @D@@@@ S X11,SAVX11KF )@@G@@ . STORE X11 @G@@@@ TZ GOTONE . KG )@@G@@HAVE A LEAD ITEM ALREADY? @G@@@@ J LINCOR KH )@@G@@ . YES, SEE IF USER WANTS MITM @]@@@@DIRSC2. @F@@@@ L KI )@@G@@ A2,NXSEC . GET ADDR OF NEXT SECTOR @F@@@@ JZKJ )@@G@@ A2,NOTINT . ERROR IF NOT INITIALIZED@F@@@@ TGKK )@@G@@ A2,QSEC . BEYOND LAST SECTOR? @G@@@@ J KL )@@G@@ EOF . YES, RETURN WITH EOF STATUS @G@@@@ KM )@@G@@ AND,U A2,077 . GET SECTOR ADDR WITHIN TRACK @F@@@@KN )@@G@@ JNZ A3,STRK . FIRST SECTOR IN TRACK? @G@@@@KO )@@G@@ S A2,IOPAK+5 . NO,STRK YES, READ TRACK KP )@@G@@@D@@@@ L A0,(1792,TRKBUF) . INTO TRKBUF @ @@@@ KQ )@@G@@ S A0,IOPAK+4@ @@@@ L,U A0,IOPAK @C@@@@ KR )@@G@@ ER IOW$ . DO IT @C@@@@ TZ,S1 IOPAKS )@@G@@K+3 . IO OK?@F@@@@ SLJ IOR . KT )@@G@@NOPE, RETURN IO STATUS @E@@@@NEWDX L A1,DX . KU )@@G@@GET TRACK INDEX @G@@@@ A,U A1,3 . INCREMKV )@@G@@ENT TO NEXT TRACK DESC @E@@@@ S A1,DX . KW )@@G@@SET NEW INDEX @E@@@@ L A1,0,A1 . GET TRKX )@@G@@ACK ADDR @F@@@@ JZ A1,NEWDX . IF ZERO, TRYKY )@@G@@ ANOTHER @E@@@@ JP A1,STRK . TRACK IN USEKZ )@@G@@? @H@@@@ TE A1,ENDWD . YES,STRK NO,CHECLA )@@G@@K FOR END OF TRACK@F@@@@ J NEWDX . NOT ENLB )@@G@@D, TRY ANOTHER @G@@@@ L,U A0,BUF . END OFLC )@@G@@ TRACK- RESET INDEX @ @@@@ S A0,DX @E@@@@ LD )@@G@@ L,U R1,27 . SET FOR 27-WORD BT@C@@@@ LXLE )@@G@@I,U A0,1 . OF DAS@E@@@@ L A1,(1,TRKBLF )@@G@@UF) . FROM TRKBUF TO BUF@ @@@@ BT A0,0,*A1 @[@@@@LG )@@G@@STRK. @E@@@@ . A2 HAS SECTOR ADDRLH )@@G@@@G@@@@ SSC A2,5 . POSITION FOR SECTOR 32 TLI )@@G@@EST @G@@@@ AND,U A2,1 . SET UP A3 AS INDEXLJ )@@G@@ TO FIRST @D@@@@ A,U A3,1 . OR SECOND LK )@@G@@@H@@@@ A A3,DX . WORD FOLLOWING TRACK ADDLL )@@G@@RESS IN DAS @F@@@@ SSL A2,31 . GET SECTOR NLM )@@G@@UMBER MOD 32@H@@@@ L A0,0,A3 . GET BIT MASKLN )@@G@@ FOR THESE 32 SECTORS @G@@@@ LSSL A0,0,A2 . LO )@@G@@ISOLATE BIT FOR THIS SECTOR @ @@@@ ON DEBUG>1 @ @@@@LP )@@G@@ S A0,SNAP+2 @ @@@@ L,U A0,SNAP @ @@@@LQ )@@G@@ ER SNAP$ @#@@@@ OFF @H@@@@ JPLR )@@G@@ A0,BUMP1 . IF BIT CLEAR, THIS SECTOR NOT IN USE@E@@@@LS )@@G@@ L A2,NXSEC . IN USE - GET ADDR @F@@@@ LT )@@G@@ AND,U A2,077 . ISOLATE SECTOR NUMBER @F@@@@ LU )@@G@@ MSI,U A3,28 . CONVERT TO WORD COUNT @F@@@@ LV )@@G@@ L A0,TRKBUF,A3 . GET FIRST WORD OF SECTOR@D@@@@/. LW )@@G@@ ACCORDING TO RCR, AT LEVEL 27-20-143, NORMAL@G@@@@. DIRECTORLX )@@G@@Y HOUSKEEPING MAY LEAVE SHREDS OF MAIN ITEMS LYING @F@@@@. ARLY )@@G@@OUND WITH DAS BITS SAYING THEY'RE IN USE. THEREFORE, @G@@@@. WELZ )@@G@@ HAVE TO SEARCH THE DGET$ FILE IGNORING MITMS & SNAGGING @G@@@@. MA )@@G@@ ONLY LITMS. IF THE USER WANTS MITMS, WE'LL HAVE TO USE DIRLNK @D@@@@MB )@@G@@. TO GET THEM, FEEDING IT LINKS FROM THE LITM.@[@@@@. @D@@@@MC )@@G@@ AND A0,LMASK . LEAD ITEM? @E@@@@ JZMD )@@G@@ A1,BUMP1 . NO,BUMP1 YES @A@@@@ L ME )@@G@@ A0,(1,TRKBUF) @F@@@@ AU A0,A3 . A1 = (MF )@@G@@1,TRKBUF+ITEMADDR)@ @@@@ LXM,U A0,LBUF @E@@@@ L,MG )@@G@@U R1,28 . BLOCK TRANSFER @D@@@@ BT MH )@@G@@ A0,0,*A1 . LITM TO LBUF@F@@@@ A,U A2,1 MI )@@G@@ . INCREMENT TO NEXT SECTOR@ @@@@ S A2,NXSEC MJ )@@G@@@^@@@@ L,U A0,1@E@@@@ S A0,GOTONE MK )@@G@@ . MARK LITM IN CORE @E@@@@ TNZ WANTL . ML )@@G@@USER WANTS LITM? @F@@@@ J GTMITM . NO, GOMM )@@G@@ GET HIM A MITM @F@@@@ L A0,(1,TRKBUF) . YES, BMN )@@G@@T HIM THIS LITM @ @@@@ AU A0,A3 @ @@@@ L MO )@@G@@ X11,SAVX11@F@@@@ LXM A0,2,X11 . GET USMP )@@G@@ER'S BUFFER ADDR @ @@@@ L,U R1,28 @G@@@@ BTMQ )@@G@@ A0,0,*A1 . BT LEAD ITEM TO USER BUFFER @F@@@@ MR )@@G@@ SZ A0 . SET LEAAD-ITEM FLAG, AND@C@@@@ MS )@@G@@ J 4,X11 . RETURN@F@@@@LINCOR. MT )@@G@@ . LEAD ITEM IS IN CORE @F@@@@ TNZ WANTMU )@@G@@M . DOES USER WANT MITMS? @F@@@@ J DIRSMV )@@G@@C2 . NO, GO FIND ANOTHER LITM@]@@@@GTMITM. @G@@@@ MW )@@G@@ L A0,HMANY . HOW MANY MITM'S PASSED SO FAR @G@@@@MX )@@G@@ TG,S4 A0,LBUF+9 . ANY MORE LEFT IN THIS LITM? MY )@@G@@@E@@@@ J NOMORM . NO, GO GET LITMS @G@@@@MZ )@@G@@ A,U A0,1 . YES, SHOW WE PASSED 1 MORE NA )@@G@@@ @@@@ S A0,HMANY @ @@@@ L A0,(1,0) NB )@@G@@@E@@@@LIT0 TZ LBUF+11,A0 . FIND NEXT LINK @ @@@@NC )@@G@@ J GOTIT @E@@@@ TLEM,U A0,16 ND )@@G@@ . END OF LITM 0? @E@@@@ J LIT0 . NE )@@G@@NO, KEEP GOING @E@@@@ TZ GOTL0 . YES, LNF )@@G@@ITM 1 INCOR?@C@@@@ J GOTL1 . YES @D@@@@NG )@@G@@ LMJ X11,DIRLNK . NO, GET IT @F@@@@ J NH )@@G@@ NOMORM . IF ERR, FORGET THIS FILE@ @@@@ + NI )@@G@@ ECODE @E@@@@ + L0BUF . PUT ITNJ )@@G@@ IN L0BUF @F@@@@ + LBUF . USE LBUF+0 ANK )@@G@@S LINK WORD @C@@@@ + 0 . WB @^@@@@NL )@@G@@ L,U A0,1@E@@@@ S A0,GOTL0 . NM )@@G@@MARK L1 INCOR @ @@@@GOTL1 L A0,(1,0) @E@@@@GOTL1A TZNN )@@G@@ L0BUF+1,A0 . LOOK FOR LINK @D@@@@ J NO )@@G@@ GOTIT2 . GOT LINK @E@@@@ TLEM,U A0,14 NP )@@G@@ . AT END OF L1? @E@@@@ J GOTL1A NQ )@@G@@ . NO, TRY NEXT LINK @F@@@@ . NR )@@G@@YES, FORGET THIS FILE @E@@@@NOMORM SZ LFLAG . NS )@@G@@GOTL0,HMANY=0 @E@@@@ SZ GOTONE . CLEAR NT )@@G@@LINCOR FLAG @E@@@@ J DIRSC2 . GET NEXT LITNU )@@G@@M @[@@@@. @D@@@@GOTIT A,U A0,LBUF+11 . FOR LINV )@@G@@0 @^@@@@ J $+2 @[@@@@. @E@@@@GOTIT2 A,U NW )@@G@@ A0,L0BUF+1 . FOR LI1 AND UP @D@@@@ L A1,0NX )@@G@@,A0 . PICK UP LINK@D@@@@ SZ 0,A0 NY )@@G@@ . MARK IT USED@G@@@@ S A1,MILINK . SAVE LNZ )@@G@@INK WORD FOR DIRLNK @ @@@@ L X11,SAVX11@F@@@@ OA )@@G@@ L A1,2,X11 . GET USER'S BUFFER ADDR @F@@@@ OB )@@G@@ TZ SEP . SEPARATE LI/MI BUFFERS? @F@@@@ OC )@@G@@ A,U A1,28 . YES, PUT MI IN BUFF+28 @E@@@@ OD )@@G@@ S A1,$+4 . STORE FOR DIRLNK @E@@@@ LMOE )@@G@@J X11,DIRLNK . LINK TO MAIN ITEM @F@@@@ J OF )@@G@@ NOMORM . IF ERR, FORGET THIS FILE@ @@@@ + OG )@@G@@ ECODE @D@@@@ + 0 . BUFFER ADDR OH )@@G@@@D@@@@ + MILINK . LINK WORD @^@@@@ OI )@@G@@ + 0 @ @@@@ L X11,SAVX11@E@@@@ L,OJ )@@G@@U A0,1 . SET MAIN-ITEM FLAG@C@@@@ J OK )@@G@@ 4,X11 . RETURN@[@@@@. @ @@@@MSCR L A1,AOL )@@G@@0 @H@@@@ LSSL A0,12 . GET ERROR STATUS -OM )@@G@@ IF IT'S 033, @H@@@@ SSL A0,30 . EXEC ON )@@G@@HAS RESET INITIAL RESERVE @G@@@@ TNE,U A0,033 OO )@@G@@ . IN MSPKT+3 TO NEEDED VALUE, @E@@@@ J TRYAGN OP )@@G@@ . SO TRY AGAIN @F@@@@DGETER L,U A0,1 OQ )@@G@@ . NO GOOD, SET ERROR TYPE @F@@@@ J ERREXT OR )@@G@@ . AND DO ERROR RETURN @F@@@@TRYAGN L A0,TRYCNT OS )@@G@@ . GET DGET$ ATTEMPT COUNT @E@@@@ A,U A0,1 OT )@@G@@ . INCREMENT COUNT @D@@@@ S A0,TRYCNT . OU )@@G@@STORE IT @E@@@@ TG,U A0,3 . THIRD ATTEMPOV )@@G@@T? @D@@@@ J DGETER . YES, QUIT @ @@@@OW )@@G@@ ON DIRSIZ>0 @^@@@@ AN,U A0,1@F@@@@ OX )@@G@@ JNZ A0,$+3 . IF FIRST TIME THRU, @H@@@@ OY )@@G@@ L,U A0,LOGMSG . TELL 'EM DIRSIZ GOTTA BE CHANGED OZ )@@G@@@^@@@@ ER CSF$@ @@@@ OFF DIRSIZ>0 @E@@@@PA )@@G@@ LMJ X11,DIREND . FREE DGET$ FILE @^@@@@ PB )@@G@@ + 0 @F@@@@ L X11,SAVX11 . RETRIEPC )@@G@@VE RETURN ADDR @H@@@@ J REASG . TRY REPD )@@G@@-ASSIGNING WITH PROPER RESERVE@[@@@@. @^@@@@IOR J 0 PE )@@G@@@^@@@@ L,U A0,2@ @@@@ L A1,IOPAK+3@ @@@@PF )@@G@@ J ERREXT @]@@@@BADMASK. @E@@@@ L PG )@@G@@ A1,A0 . GET MASK IN A1 @G@@@@ L,U A0,9PH )@@G@@ . SET 'BAD MASK' ERROR CODE @B@@@@ J PI )@@G@@ ERREXT . @[@@@@EOF. @F@@@@ L A0,FIRSTR PJ )@@G@@ . GET ADDR OF FIRST TR1CK @E@@@@ LSSL A0,6 PK )@@G@@ . CNVT 2 SECTORS @F@@@@ S A0,NXSEC PL )@@G@@ . STORE AS NEXT SECTOR @E@@@@ SZ GOTONE PM )@@G@@ . CLEAR LINCOR FLAG @E@@@@ SZ LFLAG . PN )@@G@@CLEAR GOTL0,HMANY @F@@@@ L,U A0,BUF+24 . RE-INIPO )@@G@@TIALIZE TRK INDEX @ @@@@ S A0,DX @D@@@@. NOW, IF SOPP )@@G@@MEONE GETS EOF RTN, THEN CALLS AGAIN, @A@@@@. THEY WILL START OVER APQ )@@G@@T BEGINNING @A@@@@. >>>WITHOUT<<< RE-INITIALIZING @G@@@@ L,PR )@@G@@U A0,3 . SET 'DIRSEC EOF' ERROR CODE @^@@@@ PS )@@G@@ SZ A1 @ @@@@ J ERREXT @[@@@@. @F@@@@PT )@@G@@CSFR XOR A0,(1*/33) . FILE ALREADY ASSIGNED? @E@@@@PU )@@G@@ JZ A1,RERUN . YES, MAY BE RERUN @E@@@@ PV )@@G@@ L A1,A0 . NO, A1 GETS STATUS@F@@@@ L,PW )@@G@@U A0,4 . A0 GETS CSF$ ERROR CODE @ @@@@ J PX )@@G@@ ERREXT @F@@@@RERUN TNZ NXSEC . ALREADPY )@@G@@Y INITIALIZED? @D@@@@ J DGETOK . NO, DOPZ )@@G@@ IT @E@@@@ SZ GOTONE . YES, CLEAR FLAGS QA )@@G@@@B@@@@ SZ LFLAG . @E@@@@ LA QB )@@G@@ A0,FIRSTR . GET FIRST TRK ADDR@E@@@@ LSSL A0,6QC )@@G@@ . CONVERT TO SECTORS@F@@@@ SA A0,NXSEC QD )@@G@@ . INITIALIZE NEXT SECTOR @F@@@@ L,U A0,BUF+24 QE )@@G@@ . INITIALIZE TRK INDEX @ @@@@ S A0,DX QF )@@G@@@C@@@@ J 5,X11 . RETURN@ @@@@BUMP1 L QG )@@G@@ A2,NXSEC @^@@@@ A,U A2,1@ @@@@ S QH )@@G@@ A2,NXSEC @ @@@@ J DIRSEC+1 @ @@@@BUMP64 L QI )@@G@@ A1,NXSEC @ @@@@ A,U A1,64 @ @@@@ XOR,U QJ )@@G@@ A1,63 @ @@@@ S A2,NXSEC @ @@@@ J QK )@@G@@ DIRSEC+1 @^@@@@NOTINT L,U A0,5@^@@@@ SZ A1 QL )@@G@@@F@@@@ERREXT L X11,SAVX11 . GET CORRECT RETURN POINT QM )@@G@@@ @@@@ DS A0,*1,X11 @ @@@@ J *0,X11 QN )@@G@@@[@@@@$(4) @#@@@@FREE '@FREE '@#@@@@SLASH '/ '@F@@@@TRYCNTQO )@@G@@ + 0 . DGET$ ATTEMPT COUNT @B@@@@CSFIM QP )@@G@@ '@ASG,T $$--DGET--$$,F/' @ @@@@INTRES ' /2000 . ' QQ )@@G@@@ @@@@LMASK + 1*/33 @#@@@@DIREC$FLAG* . @^@@@@LFLAG QR )@@G@@ + 0 @^@@@@MASK + 0 @F@@@@GOTONE* + QS )@@G@@ 0 . LEAD-ITEM-IN-CORE FLAG @G@@@@SEP + QT )@@G@@ 0 . SEPARATE LI/MI BUFFERS FLAG @ @@@@GOTL0 EQQU )@@G@@UF LFLAG,,S2 @ @@@@HMANY EQUF LFLAG,,H2 @ @@@@WANTM EQQV )@@G@@UF MASK,,H1 @ @@@@WANTL EQUF MASK,,H2 @^@@@@IOPAK '$QW )@@G@@$--DGET--$$'@^@@@@ + 0 @ @@@@ + R$,0QX )@@G@@,0 @ @@@@ + 28,BUF @^@@@@ + 0 QY )@@G@@@^@@@@TRKBUF RES 1792@^@@@@ECODE + 0 @^@@@@ QZ )@@G@@ + 0 @^@@@@MILINK + 0 @^@@@@SAVX11 + RA )@@G@@ 0 @^@@@@LBUF RES 28 @^@@@@L0BUF RES 28 @^@@@@RB )@@G@@BUF RES 28 @^@@@@NXSEC + 0 @^@@@@FIRSTR + RC )@@G@@ 0 @^@@@@QSEC + 0 @^@@@@DX + 0 RD )@@G@@@[@@@@/. @ @@@@DIREC$* + NXSEC @^@@@@ + RE )@@G@@ QSEC@^@@@@ + BUF @ @@@@ + IOPAK RF )@@G@@@ @@@@ + FIRSTR @G@@@@ + 0 RG )@@G@@ . DIRLNK MUST RETURN OWN ERRORS @G@@@@ + 0 RH )@@G@@ . TO KEEP RETURN POINTS STRAIGHT @ @@@@ENDWD - RI )@@G@@ 'ENDEND' @ @@@@ + TRKBUF @E@@@@ . ***************RJ )@@G@@********** ADD NOTHING ABOVE THIS LINE @[@@@@/. @D@@@@DGETP$FN$WD$RK )@@G@@* . TO ALLOW CHANING OF MSCON$ FUNCTION@#@@@@MSPKT + 015 @^@@@@RL )@@G@@ '$$--DGET--$$'@H@@@@PAKID$* + DIRSIZ . RM )@@G@@NECESSARY RESERVE RETURNED HERE @I@@@@ RN )@@G@@ . SHOULD CONTAIN PACKID IF DOING DGETP$ @F@@@@ + RO )@@G@@TRKBUF,DGET$BUF2 . BUFFERS FOR DBDGET$ @ @@@@ ONRP )@@G@@ DIRSIZ>0 @E@@@@LOGMSG '@LOG DIREC$ MSG - DIRSIZ SHOULD BE IRQ )@@G@@NCREASED . '@ @@@@ OFF DIRSIZ>0 @ @@@@ ON RR )@@G@@ DEBUG>1 @#@@@@SNAP 'NXTADR'@A@@@@ + 0700001,NXRS )@@G@@SEC @^@@@@ + 0 @#@@@@ OFF @#@@@@ RT )@@G@@ END ___ L *[@@@@*SDFF*@ @@@@. @MFD SDF OUTPUT ROUTINE RU )@@G@@@[@@@@. @F@@@@. CALLED IF W-OPTION IS SET. WRITES EACH QUALIFIER*FIRV )@@G@@LENAME(CYC) @ @@@@. INTO SDF FILE CALLED OUT$$$.@[@@@@. @#@@@@ RW )@@G@@ AXR$ @H@@@@ CONFIG . DEFINE CONFIRX )@@G@@GURATION PARAMETERS @D@@@@ EQUFS . RY )@@G@@DEFINE TAGS @I@@@@ ON WOPTOK . ************RZ )@@G@@**************************** @^@@@@BUFFA RES 28 @^@@@@BUFFB SA )@@G@@ RES 28 @B@@@@MSG* 'OUTPUT IN DATAFILE OUT$$$.' @#@@_@SB )@@G@@FILES ' '@^@@@@ RES 5 @ @@@@OUT$$$ '@ASG,T SC )@@G@@OUT$$$ . ' @#@@@@SDFF '*SDFF*'@^@@@@FCT* 'OUT$$$ ' @^@@@@SD )@@G@@ + 0 @ @@@@ + 010,0,0 @^@@@@ SE )@@G@@ + 28,0@^@@@@ + 0 @A@@@@ + SF )@@G@@ BUFFA,BUFFB @^@@@@ + 1,0 @ @@@@ + SG )@@G@@ 1,SDFF @^@@@@ + 1,0 @ @@@@ + 0500SH )@@G@@1,0,0 @[@@@@/$(1).@[@@@@. @C@@@@. SDF INITIALIZATION: SET UP FCT ANSI )@@G@@D OPEN SDFO @[@@@@. @E@@@@SDF000* LA,U A0,OUT$$$ . SJ )@@G@@ASSIGN OUT$$$ @^@@@@ ER CSF$@E@@@@ JN SK )@@G@@ A0,SDF010 . ERR$ IF NO GOOD @E@@@@ LA,U A0,FSL )@@G@@CT . OK, OPEN SDFO @ @@@@ LMJ X11,SDFOO SM )@@G@@@F@@@@ LMJ X11,SDFO . WRITE '*SDFF*' LABEL SN )@@G@@@E@@@@SDF010 ER ERR$ . GET OUT IF NO GOOD@ @@@@SO )@@G@@ LA,U A0,06 @F@@@@ SA,T1 A0,FCT+10 SP )@@G@@ . SET TO WRITE 6 WORDS @G@@@@ LA,U A0,FILES SQ )@@G@@ . STARTING WITH WORD OF BLANKS @E@@@@ SA,H2 A0,FCT+8 SR )@@G@@ . ALL SET, GO TO IT!@F@@@@ SR R15,SDFLOD SS )@@G@@ . SET SDF OPENED FLAG @F@@@@ J MFD200 ST )@@G@@ . RETURN TO PRINT ROUTINE @[@@@@. @^@@@@. SDF OUTPUT ROUTINE SU )@@G@@@[@@@@. @D@@@@SDF100* L,U R1,5 . BT 5 WORDS SV )@@G@@@E@@@@ L A0,(1,LINOUT+7) . FROM PRINT BUFFER @F@@@@SW )@@G@@ L A1,(1,FILES+1) . TO SDF OUTPUT BUFFER @D@@@@SX )@@G@@ BT A1,0,*A0 . DO THE BT @C@@@@ LASY )@@G@@,U A0,5 . BLANK @G@@@@ SA,S1 A0,FILES+1SZ )@@G@@ . BLANK OUT DISAB CHAR, IF ANY @D@@@@ LA,U A0,FTA )@@G@@CT . ADDR OF FCT @D@@@@ LMJ X11,SDFO TB )@@G@@ . WRITE IT OUT@^@@@@ ER ERR$@G@@@@ JNZ TC )@@G@@ A7,PR300 . IF BATCH, PRINT INFO, ALSO @[@@@@. @G@@@@TD )@@G@@. W-OPTION WAS USED IN DEMAND (SHORT LISTING) MODE. IF THE S-OPTION TE )@@G@@@F@@@@. WAS ALSO USED EXPLICITLY, PRINT THE INFO. IF NOT, JUST GO BACK TF )@@G@@@^@@@@. FOR ANOTHER FILE. @[@@@@. @E@@@@ TNZ SPT TG )@@G@@ . S-OPTION SET? @H@@@@ J MFD300 TH )@@G@@ . NO, GET NEXT FILE (NO PRINTING) @E@@@@ J TI )@@G@@ PR300 . RETURN TO MAIN SEG@I@@@@ OFF WOPTTJ )@@G@@OK . **************************************** @#@@@@ TK )@@G@@ END ___************************************* @^@@@@BUFFA RETL )@@G@@S 28 @^@@@@BUFFB RES 28 @B@@@@*[@@@@*SDFF*@ @@@@. @MFDTM )@@G@@ SORT INTERFACE ROUTINES@[@@@@. @F@@@@. SORT PROCEDURE ALTERS MAIN ITN )@@G@@TEM SECTOR 0, WORDS 14, 18, AND 19. @[@@@@. @A@@@@. WORD 14 IS USED TO )@@G@@TO SAVE FLAGS @[@@@@. @H@@@@. ------------------------------TP )@@G@@------------------------------------- @H@@@@. : SUBCODE : BAKTQ )@@G@@ : RDSC : TOTAL SIZE : @H@@@@. ------TR )@@G@@------------------------------------------------------------- @[@@@@TS )@@G@@. @G@@@@. SUBCODE IS FROM LEAD ITEM, 'BAK' IS BACKUP FLAG IN A13, ANTT )@@G@@D 'RDSC' @F@@@@. IS REMOVABLE-DISC FLAG IN A14. TOTAL SIZE IS NUMBERTU )@@G@@ ACCUMULATED@ @@@@. IN A15 BY 'CHECK' ROUTINE. @[@@@@. @G@@@@. WORDTV )@@G@@S 18 AND 19, WHICH CONTAIN THE TIME AND DATE OF LAST REFERENCE @G@@@@TW )@@G@@. AND OF CATALOGUING, ARE MODIFIED SO THAT THE DATES ARE MORE EASILY TX )@@G@@@]@@@@. SORTED. @[@@@@. @H@@@@. ------------------------------TY )@@G@@------------------------------------- @H@@@@. : YEAR : MONTZ )@@G@@ : DAY : TIME : @H@@@@. ------UA )@@G@@------------------------------------------------------------- @B@@@@UB )@@G@@. : : @B@@@@. :<-- THIS PORTIONUC )@@G@@ IS SORTED -->: @[@@@@. @#@@@@ AXR$ @H@@@@ COUD )@@G@@NFIG . DEFINE CONFIGURATION PARAMETERS @D@@@@UE )@@G@@ EQUFS . DEFINE TAGS @ @@@@ ONUF )@@G@@ SORTOK @E@@@@NREC + NFILES/2 . NUMBERUG )@@G@@ OF RECORDS @E@@@@NCHAR + 56*6 . CHAR PER RECUH )@@G@@ORD @[@@@@. @[@@@@$(1). @[@@@@. @A@@@@. CALL SORTF TO ASSIGN SUI )@@G@@ORT FILES @[@@@@. @]@@@@OPNSRT* . @F@@@@ SR R15,UJ )@@G@@SORTED . MARK SORT-SEG-LOADED @F@@@@ LA,U A0,NUK )@@G@@FILES . GET NUMBER OF FILES @H@@@@ TZ ZPT UL )@@G@@ . PRIVILEGED AND DOING EVERYTHING? @G@@@@ SAUM )@@G@@ A0,NREC . YES, BETTER INCREASE NREC @D@@@@ UN )@@G@@ DO SRTDBG , P$RINT (0101,('SORTF ')) @E@@@@ LMJ UO )@@G@@ X11,SORTF . ASSIGN SORT FILES @E@@@@ + NRECUP )@@G@@ . NUMBER OF RECORDS @G@@@@ + NCHAR UQ )@@G@@ . NUMBER OF CHAR PER RECORD @C@@@@ + 0 UR )@@G@@ . WB @G@@@@NOSORTF* R$OPN SORTBL . US )@@G@@OPEN SORT, RETURN TO FPOC @[@@@@. @F@@@@. DON'T NEED PARAMETER CUT )@@G@@ARD PROCESSING, SO REPLACE KPARCD WITH: @[@@@@. @ @@@@ROPN$* LMUU )@@G@@J X1,RSTRG$ @#@@@@ 'ROPN$ '@ @@@@ J RBPNUV )@@G@@$ @]@@@@RTMIN$*. @]@@@@RTMAX$*. @]@@@@RTPT$*. @]@@@@RTST$*UW )@@G@@. @]@@@@RTMT$*. @]@@@@RLBLK$*. @[@@@@. @^@@@@. RELEASE REUX )@@G@@CORD TO SORT@[@@@@. @]@@@@GOTREC* . @E@@@@ LA A0,FUY )@@G@@LAGS . GET LI/MI FLAGS @D@@@@ SA A0,MI0 UZ )@@G@@ . STORE IN MI0@D@@@@ LA,S3 A0,LI0+10 . VA )@@G@@GET SUBCODE @D@@@@ SA,S1 A0,MI0+14 . SAVE SUBCODEVB )@@G@@@F@@@@ SA,S2 A13,MI0+14 . SAVE RDSC AND BAK FLAGS VC )@@G@@@B@@@@ SA,S3 A14,MI0+14 . @D@@@@ DO VD )@@G@@ SRTDBG , P$RINT (0101,('RREL$ ')) @F@@@@ L,U A0,MI0 VE )@@G@@ . PASS THIS FILE TO SORT @B@@@@ R$REL VF )@@G@@ . @G@@@@ J CHK000 . GET NEXT FILVG )@@G@@E (SEG IS LOADED) @[@@@@. @B@@@@. DIRSEC EOF HAS OCCURRED,: DO THE SVH )@@G@@ORT @[@@@@. @]@@@@DOSORT* . @D@@@@ DO SRTDBG , PVI )@@G@@$RINT (0101,('RSORT$')) @G@@@@ R$SORT . VJ )@@G@@DO THE SORT, RETURN TO LPOC @]@@@@LPOC* . @D@@@@ DO VK )@@G@@ SRTDBG , P$RINT (0101,('LPOC ')) @[@@@@. @F@@@@. GET NEXT RECORD VL )@@G@@FROM SORT, AND JUMP TO PRINT ROUTINE WITH IT @[@@@@. @]@@@@SRTNXTVM )@@G@@* . @D@@@@ DO SRTDBG , P$RINT (0101,('RRET$ ')) @I@@@@VN )@@G@@ R$RET SRTEOF . GET NEXT RECORD - IF EOF, GO TVO )@@G@@O SRTEOF @^@@@@ LXI,U A0,1@ @@@@ L A1,(VP )@@G@@1,MI0)@ @@@@ L,U R1,56 @ @@@@ BT A1,0VQ )@@G@@,*A0 @ @@@@ L A0,MI0 @E@@@@ S A0,FVR )@@G@@LAGS . RESTORE FLAGS @E@@@@ LA,S1 A0,MI0+14 VS )@@G@@ . RETRIEVE SUBCODE @ @@@@ S,S3 A0,LI0+10 @F@@@@VT )@@G@@ LA,S2 A13,MI0+14 . RETRIEVE RDSC, BAK FLAGS@B@@@@VU )@@G@@ LA,S3 A14,MI0+14 . @E@@@@ LA,H2 A15,VV )@@G@@MI0+14 . RETRIEVE SIZE @I@@_@ J PR000 VW )@@G@@ . JUMP TO PRINT ROUTINE (SEG IS LOADED) @[@@@@. @A@@@@VX )@@G@@. EOF STATUS RECEIVED FROM SORT @[@@@@. @D@@@@SRTEOF TNZ VY )@@G@@ QANDF2 . QF OPTIONS? @F@@@@ J MFD600 VZ )@@G@@ . NO, RETURN TO MAIN SEG @G@@@@ J QF900 WA )@@G@@ . YES, RETURN FOR ANOTHER FILE @ @@@@ OFF SORTWB )@@G@@OK @#@@@@ END ___ . NUMBER OF CHAR PER RECORD @C@@@@WC )@@G@@ + 0 . WB @G@@@@NOSORTF* R$OPN WD )@@G@@ SORTBL . OPEN SORT, RETURN TO FPO*[@@@@*SDFF*@G@@@@. @MFDWE )@@G@@ PRINT ROUTINE - FORMS ONE-LINE SUMMARY LISTING FOR EACH FILE @[@@@@WF )@@G@@. @#@@@@ AXR$ @H@@@@ CONFIG WG )@@G@@ . DEFINE CONFIGURATION PARAMTERES @D@@@@ EQUFS WH )@@G@@ . DEFINE TAGS @[@@@@. @^@@@@P PROC 1,3 WI )@@G@@@^@@@@CHECK* NAME 0 @E@@@@ LA,U A0,P(1,1) WJ )@@G@@ . GET OPTION LETTER @G@@@@ DO P(1,2)='TOP' , TOP,U AWK )@@G@@1,P(1,3) . CHECK OPTION BIT @G@@@@ DO P(1,2)='TEP' , TWL )@@G@@EP,U A1,P(1,3) . CHECK OPTION BIT @G@@@@ EX ST,*A2 WM )@@G@@ . STORE LETTER IN PRINT LINE @#@@@@ END @[@@@@WN )@@G@@. @G@@@@WRNCHR EQU '?' . WARNING-ONLY DISABWO )@@G@@LED CHAR @F@@@@HDWCHR EQU '!' . HARDWARE-DISWP )@@G@@ABLED CHAR @F@@@@HDWBIT EQU 020 . HARDWARE-DISWQ )@@G@@ABLED BIT @G@@@@BBTCHR EQU '#' . BAD BACKUP TWR )@@G@@APE DISABLE CHAR @F@@@@BBTBIT EQU 04 . BAD-BAWS )@@G@@CKUP TAPE BIT @G@@@@BMICHR EQU '#' . BAD M.WT )@@G@@I. SECTOR 1 DISABLE CHAR@D@@@@LPSCHR EQU '\' . WU )@@G@@LAPSE CHAR @E@@@@NOBCHR EQU '"' . NO-BACKUP CHWV )@@G@@AR @F@@@@BNCCHR EQU '^' . BACKUP NOT CURRENTWW )@@G@@ CHAR @[@@@@. @C@@@@OTHTYP 'CARD' . 040 WX )@@G@@@C@@@@ '??' . 041 @C@@@@ 'PWY )@@G@@TP' . 042 @C@@@@ '??' WZ )@@G@@ . 043 @C@@@@ 'HSP' . 044 XA )@@G@@@C@@@@ 'MHSP' . 045 @C@@@@ '?XB )@@G@@?' . 046 @C@@@@ '9300' XC )@@G@@ . 047 @C@@@@ '1004' . 050 XD )@@G@@@C@@@@ '??' . 051 @C@@@@ '?XE )@@G@@?' . 052 @C@@@@ '??' XF )@@G@@ . 053 @C@@@@ '??' . 054 XG )@@G@@@C@@@@ '??' . 055 @C@@@@ '?XH )@@G@@?' . 056 @C@@@@ '0770' XI )@@G@@ . 057 @C@@@@ 'CONSOL' . 060 XJ )@@G@@@C@@@@ '??' . 061 @C@@@@ '?XK )@@G@@?' . 062 @C@@@@ '??' XL )@@G@@ . 063 @C@@@@ '??' . 064 XM )@@G@@@C@@@@ '??' . 065 @C@@@@ '?XN )@@G@@?' . 066 @C@@@@ '??' XO )@@G@@ . 067 @C@@@@ 'CTS' . 070 XP )@@G@@@C@@@@ 'WTS' . 071 @C@@@@ 'CXQ )@@G@@TMC' . 072 @C@@@@ 'C/SP' XR )@@G@@ . 073 @C@@@@ '??' . 074 XS )@@G@@@C@@@@ '??' . 075 @C@@@@ '?XT )@@G@@?' . 076 @C@@@@ 'ARB' XU )@@G@@ . 077 @ @@@@ ON SNAPOK @A@@@@SNAPKT 'MXV )@@G@@I0' . SNAP$ PACKET @D@@@@ + 28,MI0 . XW )@@G@@ASSUME MI0 @^@@@@ + 0 @ @@@@ OFF SNAPXX )@@G@@OK @[@@@@. @ @@@@. STORE TABLE FOR CAT OPTIONS @[@@@@. @C@@@@XY )@@G@@ST SA,S2 A0,LINOUT+1 . A @[@@@@. @C@@@@ XZ )@@G@@ SA,S3 A0,LINOUT+1 . AB @C@@@@ SA,S4 A0,LYA )@@G@@INOUT+1 . ABC @C@@@@ SA,S1 A0,LINOUT+1 . YB )@@G@@DABC @C@@@@ SA,S6 A0,LINOUT . EDABC @C@@@@ YC )@@G@@ SA,S5 A0,LINOUT . FEDABC@D@@@@ SA,S4 A0,LYD )@@G@@INOUT . GFEDABC @D@@@@ SA,S3 A0,LINOUT YE )@@G@@ . HGFEDABC @D@@@@ SA,S2 A0,LINOUT . IHGFEDYF )@@G@@ABC @D@@@@ SA,S1 A0,LINOUT . JIHGFEDABC @B@@_@YG )@@G@@/$(1),PR000* . START PRINT ROUTINE @[@@@@. @E@@@@. BETTER CONYH )@@G@@VERT THE CAT AND REF DATES BACK TO TDATE$ FORMAT@[@@@@. @E@@@@ YI )@@G@@ LA,U A2,1 . DO BOTH DATES @H@@@@PR010 LAYJ )@@G@@,H1 A0,MI0+18,A2 . PICK UP DATE IN YR,MON,DAY FORMAT @F@@@@YK )@@G@@ SA,T1 A0,MI0+18,A2 . STORE MON,DAY IN T1 @F@@@@YL )@@G@@ SSL A0,12 . GET YEAR ALONE IN A0 @G@@@@YM )@@G@@ SA,S3 A0,MI0+18,A2 . STORE IT IN TDATE$ FORMAT YN )@@G@@@F@@@@ JGD A2,PR010 . GO BACK FOR REF DATE YO )@@G@@@E@@@@ TZ QANDF2 . QF OPTIONS SET? @G@@@@YP )@@G@@ J PR030 . YES, DON'T BOTHER WITH TOTALS YQ )@@G@@@[@@@@. @#@@@@. INCREMENT TOTALS@[@@@@. @G@@@@ BUMP YR )@@G@@ PFCT . INCREMENT TOTAL FILE COUNT @D@@@@ TNYS )@@G@@Z TAP . TAPE FILE? @C@@@@ J $+4 YT )@@G@@ . NO @G@@@@ BUMP TFCT . YU )@@G@@INCREMENT TAPE FILE COUNT @I@@@@ JZ A7,PR020 YV )@@G@@ . IF DEMAND, DON'T CARE ABOUT BKP BLOCKS @G@@@@ JZ YW )@@G@@ A13,PR020 . IF NO BACKUP, CHECK J-OPTION @F@@@@ TNYX )@@G@@Z MI1+11 . REALLY GOT A BACKUP? @C@@@@ J YY )@@G@@ PR020 . NO @H@@@@ BUMP SECTOT,MI1YZ )@@G@@+9,,H2 . YES, INCREMENT BACKUP TAPE BLOCKS @D@@@@. CHECK FOR J-OPTIZA )@@G@@ON: IF SET, DON'T PRINT ANYTHING @[@@@@. @E@@@@PR020 TZ ZB )@@G@@ JPT . J-OPTION SET? @I@@@@ J MFD3ZC )@@G@@00 . YES - DON'T PRINT, JUST GET NEXT FILE @D@@@@PR030 ZD )@@G@@ E$DIT EDPACK . OPEN EDIT @G@@@@ TNZ ZE )@@G@@ ARB . ARBITRARY DEVICE FILE, OR @E@@@@ TZZF )@@G@@ TAP . CAT'D TAPE FILE? @F@@@@ J ZG )@@G@@ PR040 . YES, SKIP MAX GRAN STUFF@D@@@@ E$DECF ZH )@@G@@ 4,MI0+21,,H1 . MAX GRAN @F@@@@ LA,U A0,'T' ZI )@@G@@ . ASSUME TRACK GRANULARITY@E@@@@ TP MI0+13 ZJ )@@G@@ . POSITION GRAN? @D@@@@ LA,U A0,'P' ZK )@@G@@ . YES, SAY SO @#@@@@ E$CHAR @[@@@@. @A@@@@. EDIT CATALZL )@@G@@OGUE OPTION LETTERS @[@@@@. @E@@@@PR040 LA,S2 A1,MI0+17 ZM )@@G@@ . GET OPTION BITS @H@@@@ LA A2,(1,0) ZN )@@G@@ . SET TO STORE OPTIONS IN PRINT LINE @F@@@@ CHECK 'P',ZO )@@G@@'TOP',010 . CHECK FOR PUBLIC FILE @D@@@@ CHECK 'R',ZP )@@G@@'TEP',1 . READ-ONLY? @ @@@@ ON GVHUSH>1 @E@@@@ZQ )@@G@@ TNZ DLA . IS RUN PRIVILEGED?@G@@@@ ZR )@@G@@ J PR050 . NO, SKIP PRINT OF G/V OPTIONS @#@@@@ZS )@@G@@ OFF @D@@@@ CHECK 'V','TEP',020 . V-OPTIZT )@@G@@ON? @D@@@@ CHECK 'G','TEP',040 . G-OPTION? @D@@@@ZU )@@G@@PR050 CHECK 'W','TEP',2 . WRITE-ONLY? @C@@@@. EDIT A LETZV )@@G@@TER INDICATING FILE @ASG STATE: @C@@@@. BLANK - FILE NOT CURRENTLY AZW )@@G@@SSIGNED TO ANYONE @C@@@@. A - FILE ASSIGNED TO AT LEAST ONE RUN ZX )@@G@@@C@@@@. X - FILE EXCLUSIVELY ASSIGNED TO SOME RUN @D@@@@. C - (QZY )@@G@@F OPTIONS ONLY) FILE @ASG,C BY THIS RUN @D@@@@. U - (QF OPTIONS ONZZ )@@G@@LY) FILE @ASG,U BY THIS RUN @F@@@@. T - (QF OPTIONS ONLY) TEMPORARAA )@@G@@Y FILE ASSIGNED TO THIS RUN @[@@@@. @E@@@@ LA,T2 A0,MAB )@@G@@I0+17 . GET ASG COUNT @G@@@@ TZ QFASG AC )@@G@@ . ASG'D FOR QF OPTION DREAD? @F@@@@ AN,U A0,1AD )@@G@@ . YES, DON'T COUNT IT @F@@@@ JZ A0,PAE )@@G@@R060 . ASSIGNED TO ANYONE? @F@@@@ LA,U A0,'AF )@@G@@A' . YES, GET SET FOR 'A' @F@@@@ TEP,U A1,4AG )@@G@@ . IS IT EXCLUSIVELY ASG'D?@E@@@@ LA,U A0,'AH )@@G@@X' . YES, CHANGE TO 'X'@E@@@@ TZ UCOPT AI )@@G@@ . @ASG,U OR @ASG,C? @E@@@@ LA A0,UCOPT AJ )@@G@@ . YES, GET LETTER @E@@@@ TZ TEMP . AK )@@G@@TEMPORARY FILE? @E@@@@ LA,U A0,'T' . YES, GAL )@@G@@ET A 'T' @E@@@@ EX ST,*A2 . STORE PROPERAM )@@G@@ CHAR @[@@@@. @D@@@@. IF TAPE FILE, EDIT MODE BITS AND EQUIPMENT TYPAN )@@G@@E @[@@@@. @E@@@@PR060 TNZ TAP . CAT'D AO )@@G@@TAPE FILE? @F@@@@ J PR110 . NO, GET F-EQAP )@@G@@UIP TYPE @F@@@@ LA,S4 A1,MI0+21 . GET TAPE MODAQ )@@G@@E CODES @E@@@@ JZ A1,PR070 . IF ZERO, U12AR )@@G@@/16/20@E@@@@ LA,U A0,'O' . ASSUME ODD PARITY AS )@@G@@@D@@@@ TEP,U A1,040 . EVEN PARITY?@C@@@@ AT )@@G@@ LA,U A0,'E' . YES @F@@@@ EX ST,*AU )@@G@@A2 . STORE CORRECT LETTER @E@@@@ CHECK 'I',AV )@@G@@'TEP',2 . SOFT-TRANSLATE? @E@@@@ LA A0,A1 AW )@@G@@ . GET BITS IN A0 @F@@@@ AND,U A0,030 AX )@@G@@ . MASK OUT UNWANTED BITS @F@@@@ LA,U A0,'H' AY )@@G@@ . ASSUME HIGH DENSITY @E@@@@ TNE,U A1,020 AZ )@@G@@ . MEDIUM DENSITY? @C@@@@ LA,U A0,'M' . BA )@@G@@YES @D@@@@ TNE,U A1,010 . LOW DENSITY?@C@@@@BB )@@G@@ LA,U A0,'L' . YES @F@@@@ EX BC )@@G@@ ST,*A2 . STORE CORRECT LETTER @D@@@@ J BD )@@G@@ PR100 . CONTINUE @E@@@@PR070 . CODE FOR U12/16/20 MBE )@@G@@ODES SHOULD BE ADDED HERE @E@@@@PR100 LA,S3 A1,MI0+21 BF )@@G@@ . GET OTHER BITS @D@@@@ CHECK 'J','TEP',040 . BG )@@G@@J-OPTION? @E@@@@ LA,S1 A0,MI0+17 . GET EQUIPMENBH )@@G@@T CODE@F@@@@ LA A1,TAPTYP-1,A0 . GET TAPE EQUIP TYPBI )@@G@@E @F@@@@ J PR150 . PUT IT IN OUTPUT IBJ )@@G@@MAGE @[@@@@. @B@@@@. NOT A TAPE FILE - EDIT EQUIPMENT TYPE @[@@@@BK )@@G@@. @E@@@@PR110 LA,S1 A0,MI0+17 . GET EQUIPMENT CODEBL )@@G@@@E@@@@ TLE,U A0,040 . MASS STORAGE? @E@@@@BM )@@G@@ J PR120 . YES, HANDLE IT @G@@@@ BN )@@G@@ LA A1,OTHTYP-040,A0 . NO, SOME OTHER DEVICE TYPE @D@@@@BO )@@G@@ J PR150 . EDIT IT @[@@@@. @G@@@@BP )@@G@@. MASS STORAGE FILE - TAKE SUBCODE INTO ACCOUNT. IF REMOVABLE DISC, BQ )@@G@@@ @@@@. EDIT THE PACKID INSTEAD. @[@@@@. @H@@@@PR120 LA BR )@@G@@ A1,EQUCD-030,A0 . GET NORMAL MASS STORAGE EQUIP TYPE @D@@@@. BS )@@G@@ TNE,U A0,036 . F40/30 ? @E@@@@. J BT )@@G@@ PR130 . YES, CHECK SUBCODE@F@@@@ TE,U A0,0BU )@@G@@30 . F2/3/60 OR F14/24 ? @B@@@@ TNE,U A0,0BV )@@G@@35 . @F@@@@ J $+2 . YES, CBW )@@G@@HECK FOR SUBCODE @F@@@@ J PR140 . NO, NOBX )@@G@@RMAL EQUIP TYPE @E@@@@PR130 TNZ,S3 LI0+10 . SUBCODBY )@@G@@E PRESENT? @C@@@@ J PR140 . NO @E@@@@BZ )@@G@@ L,U A2,SUB35-1 . ASSUME F14/24 @E@@@@ CA )@@G@@ TNE,U A0,030 . REALLY F2/3/60? @C@@@@ L,CB )@@G@@U A2,SUB30-1 . YES @D@@@@. TNE,U A0,036 CC )@@G@@ . F40/F30? @C@@@@. L,U A2,SUB36-1 . CD )@@G@@YES @F@@@@ A,S3 A2,LI0+10 . ADD SUBCODE TO GETCE )@@G@@ INDEX@D@@@@ L A1,0,A2 . LOAD SUBTYPE@E@@@@CF )@@G@@PR140 AND A1,(0757777777777) . CHANGE 'F' TO 'D' @E@@@@ CG )@@G@@ L,S1 A0,MI0+13 . GET PCHAR FLAGS @G@@@@ TECH )@@G@@P,U A0,010 . BIT 33 SET (WORD ADDRESSABLE)?@E@@@@ CI )@@G@@ L A1,A2 . GET 'D' VERSION @F@@@@ JZCJ )@@G@@ A14,PR150 . IF FIXED, SKIP PACKID @H@@@@ TNCK )@@G@@Z,H2 MI1+17 . SHOULD HAVE A NONZERO PACK COUNT @G@@@@CL )@@G@@ J PR150 . BUT IF IT DOESN'T, SKIP PACKIDCM )@@G@@@I@@@@ ON NODMPK>0 . ************************CN )@@G@@**************** @G@@@@ LXM,U A1,'R ' . ADD ANCO )@@G@@ 'R' TO 'F14' OR 'F40' @F@@@@ TZ A7 . CP )@@G@@IF RUN IS DEMAND, DON'T @I@@@@ OFF . CQ )@@G@@**************************************** @F@@@@ LA A1,MCR )@@G@@I1+18 . PICK UP FIRST PACK ID @[@@@@. @F@@@@. FINALLY HACS )@@G@@VE EQUIP TYPE IN A1 - STORE IT IN THE PRINT IMAGE @[@@@@. @A@@@@CT )@@G@@PR150 LA A2,(' ') @ @@@@ DSC A1,30 CU )@@G@@@E@@@@ SA,S6 A1,LINOUT+1 . STORE EQUIP TYPE @A@@@@CV )@@G@@ SA A2,LINOUT+2 @F@@@@ E$COL 17 CW )@@G@@ . LEAVE ROOM FOR PACKID @D@@@@. EDIT TOTAL ASSIGN COUNT AND CX )@@G@@DATE LAST REFERENCED @[@@@@. @D@@@@ E$DECF 4,MI0+15,,CY )@@G@@H2 . ASG COUNT @^@@@@ E$COL 22 @E@@@@ E$CZ )@@G@@DAY1 MI0+18 . DATE LAST REF'D @E@@@@ TZ DA )@@G@@ TAP . CAT'D TAPE FILE? @F@@@@ J PR17DB )@@G@@0 . YES, PICK UP REEL NUMBER@E@@@@ TZ ARB DC )@@G@@ . ARBITRARY DEVICE? @F@@@@ J PR180 DD )@@G@@ . YES, GO ON TO QUALIFIER @[@@@@. @C@@@@. EDIT HIGHEST/TOTDE )@@G@@AL TRACKS (*UNL* IF UNLOADED) @[@@@@. @^@@@@ E$COL 36 DF )@@G@@@E@@@@ TN MI0+12 . IS FILE UNLOADED? @C@@@@DG )@@G@@ J PR160 . NO @E@@@@ E$FD1 DH )@@G@@ ('*UNL* ') . YES, PRINT *UNL* @E@@@@ J PR18DI )@@G@@0 . GO GET QUALIFIER @F@@@@PR160 E$DECF 4,MI0+14,,DJ )@@G@@H2 . TOTAL LOADED TRACKS @G@@@@ E$COL 31 DK )@@G@@ . BACK UP FOR HIGHEST TRACK @F@@@@ E$DECF 4,MIDL )@@G@@0+23,,H1 . HIGHEST TRACK REFERENCED@G@@@@ J PR18DM )@@G@@0 . GET QUALIFIER, FILENAME, ETC @[@@@@. @C@@@@. EDITDN )@@G@@ REEL NUMBEER FOR CATALOGUED TAPE FILE @[@@@@. @D@@@@PR170 TNDO )@@G@@Z,H2 MI0+20 . ANY REELS? @D@@@@ J PR18DP )@@G@@0 . NO, SKIP IT @E@@@@ E$COL 31 DQ )@@G@@ . YES, MOVE OVER @E@@@@ E$COPY 6,MI0+26 . DR )@@G@@INSERT REEL NUMBER@E@@@@. EDIT Q*F(C) PRECEDED BY A CHAR DENOTING DISABLDS )@@G@@ED STATUS @[@@@@. @^@@@@PR180 E$COL 42 @F@@@@ LADT )@@G@@,U A0,' ' . ASSUME NOT DISABLED @G@@@@ TNDU )@@G@@ MI0+11 . IS FILE DISABLED IN ANY WAY? @F@@@@ DV )@@G@@ J PR190 . NO, EDIT A SPACE HERE @F@@@@ DW )@@G@@ LA,S1 A1,MI0+11 . YES, GET DISABLE-BITS @G@@@@ DX )@@G@@ LA,U A0,WRNCHR . ASSUME WARNING-ONLY DISABLED @E@@@@DY )@@G@@ TEP,U A1,BBTBIT . BAD BACKUP TAPE? @F@@@@ DZ )@@G@@ LA,U A0,BBTCHR . YES, GET BAD-TAPE CHAR @F@@@@ EA )@@G@@ TZ BMI1 . BAD MAIN ITEM SECTOR 1? @F@@@@ EB )@@G@@ LA,U A0,BMICHR . YES, GET BAD-MI1 CHAR @E@@@@ EC )@@G@@ TEP,U A1,HDWBIT . HARDWARE-DISABLED?@E@@@@ LAED )@@G@@,U A0,HDWCHR . YES, GET CHAR @E@@@@PR190 E$CHAR EE )@@G@@ . STORE DISABLE-CHAR@[@@@@. @E@@@@. EXEC FILENEF )@@G@@AMES MAY HAVE @ SIGNS AND SPACES IMBEDDED WITHIN@G@@@@. THE QUALIFIER ANEG )@@G@@D FILENAME. MUST COUNT CHARACTERS, AND USE ECOPY$. @[@@@@. @D@@@@EH )@@G@@ DL A2,MI0+1 . GET QUAL @G@@@@ LMEI )@@G@@J X11,TRAIL . COUNT CHARS - TRAILING BLANKS @B@@@@ EJ )@@G@@ LA,U A0,MI0+1 . @G@@@@ LMJ X11,ECOPY$EK )@@G@@ . EDIT CORRECT NUMBER OF CHAR @D@@@@ E$CHAR '*' EL )@@G@@ . ASTERISK @D@@@@ DL A2,MI0+3 EM )@@G@@ . GET FILENAME@G@@@@ LMJ X11,TRAIL . COUNT EN )@@G@@CHARS - TRALING BLANKS @B@@@@ LA,U A0,MI0+3 . EO )@@G@@@G@@@@ LMJ X11,ECOPY$ . EDIT CORRECT NUMBER OF CEP )@@G@@HARS @D@@@@ E$CHAR '(' . OPEN PAREN @D@@@@EQ )@@G@@ E$DECV MI0+17,,T3 . F-CYCLE @D@@@@ E$ER )@@G@@CHAR ')' . CLOSE PAREN @I@@@@ ON WOPTES )@@G@@OK . **************************************** @[@@@@. ET )@@G@@@E@@@@. CHECK FOR W-OPTION: IF SET, WRITE Q*F(C) TO SDF FILE @[@@@@EU )@@G@@. @E@@@@ TZ WPT . W-OPTION SET? EV )@@G@@@H@@@@ J SDF100 . YES, JUMP TO SDF OUTPUT EW )@@G@@ROUTINE @]@@@@PR300* . @I@@@@ OFF WOPTOK EX )@@G@@ . **************************************** @H@@@@ JZ EY )@@G@@ A7,PR460 . IF DEMAND, SKIP ACCT, PROJ, ETC. @[@@@@. EZ )@@G@@@F@@@@. LONG LISTING - CONTINUE EDITING: ADD ACCOUNT, PROJ, DATE CAT'D FA )@@G@@@[@@@@. @ @@@@ DL A0,MI0+7 @E@@@@ DS FB )@@G@@ A0,LINOUT+12 . ACCOUNT NUMBER @^@@@@ E$COL 85 FC )@@G@@@D@@@@ E$COPY 12,MI0+5 . PROJECT-ID @^@@@@ FD )@@G@@ E$COL 98 @E@@@@ TZ TEMP . TEMPORFE )@@G@@ARY FILE? @E@@@@ J PR400 . YES, NO CAT FF )@@G@@DATE @F@@@@ E$DAY1 MI0+19 . NO, EDIT CATALOGUEFG )@@G@@ DATE @D@@@@ J PR410 . CONTINUE @E@@@@FH )@@G@@PR400 E$COPY 6,('') . SAY IT'S TEMPORARY@A@@@@. EDITFI )@@G@@ SECURE BACKUP INFORMATION @[@@@@. @G@@@@PR410 JNZ A13,FJ )@@G@@PR430 . IF THERE'S A BACKUP, GO GET IT@F@@@@ TNZ FK )@@G@@ BMI1 . BAD MAIN ITEM SECTOR 1? @D@@@@ J FL )@@G@@ PR420 . NO, CONTINUE@D@@@@ DL A0,('***BAFM )@@G@@D MI SE') . GET MSG @F@@@@ DS A0,LINOUT+18 . FN )@@G@@STORE IN PRINT LINE @E@@@@ LA A0,('C 1***') . FO )@@G@@GET END OF MSG @F@@@@ SA A0,LINOUT+20 . STORE FP )@@G@@IN PRINT LINE @G@@@@ J PR480 . CHECK FQ )@@G@@FOR LAPSES AND PRINT @[@@@@. @]@@@@. NO BACKUP @[@@@@. @D@@@@FR )@@G@@PR420 LA A0,('*NONE*') . NO BACKUP @A@@@@ LAFS )@@G@@ A1,(' ') @ @@@@ DSC A0,30 @A@@@@ FT )@@G@@ SA,S6 A0,LINOUT+17 @E@@@@ SA A1,LINOUT+18 FU )@@G@@ . STORE IN IMAGE @E@@@@ LA,U A0,NOBCHR . FV )@@G@@GET NO-BACKUP CHAR@F@@@@ SA,S6 A0,LINOUT+6 . STORE FW )@@G@@IN PRINT LINE @G@@@@ J PR480 . CHECK FX )@@G@@FOR LAPSES AND PRINT @[@@@@. @D@@@@. MAKE SURE BACKUP EXISTS BEFOFY )@@G@@RE TRYING TO EDIT IT @[@@@@. @G@@@@PR430 TNZ MI1+11 FZ )@@G@@ . IS THERE REALLY A BACKUP? @C@@@@ J PR42GA )@@G@@0 . NO @[@@@@. @H@@@@. EDIT BACKUP REEL NUMBER, FILGB )@@G@@E POSITION, BLOCK COUNT, AND CREATION TIME/DATE @[@@@@. @^@@@@ GC )@@G@@ E$SKIP 1 @D@@@@ E$COPY 6,MI1+11 . BACKUPGD )@@G@@ REEL @^@@@@ E$COL 114 @E@@@@ E$DECF 3,MI1+10,,GE )@@G@@T2 . BACKUP POSITION @^@@@@ E$COL 117 @D@@@@ GF )@@G@@ E$DECF 4,MI1+9,,H2 . SEC TRACKS @^@@@@ ON GG )@@G@@ DCFZ@^@@@@ E$SKIP 1 @D@@@@ E$DCFZ 2,MI1+8,,SGH )@@G@@1 . EDIT MONTH @E@@@@ E$DCFZ 2,MI1+8,,S2 . GI )@@G@@EDIT BACKUP DATE @^@@@@ OFF DCFZ@ @@@@ ON GJ )@@G@@ DCFZ<1 @^@@@@ SZ A0 @G@@@@ LA,S1 A1,MGK )@@G@@I1+8 . MONTH TAPE WRITTEN (TDATE$) @F@@@@ DI,U GL )@@G@@ A0,10 . GET FD DECIMAL NUMBER @ @@@@ AA,U GM )@@G@@ A0,060 @E@@@@ SA,S3 A0,LINOUT+20 . FOR OUTPUT IGN )@@G@@MAGE @ @@@@ AA,U A1,060 @A@@@@ SA,S4 A1,LGO )@@G@@INOUT+20 @G@@@@ LA,S2 A1,MI1+8 . DAY TAPE WRIGP )@@G@@TTEN (TDATE$) @^@@@@ SZ A0 @F@@@@ DI,U GQ )@@G@@ A0,10 . GET FD DECIMAL NUMBER @ @@@@ AA,U GR )@@G@@ A0,060 @E@@@@ SA,S5 A0,LINOUT+20 . FOR OUTPUT IGS )@@G@@MAGE @ @@@@ AA,U A1,060 @A@@@@ SA,S6 A1,LGT )@@G@@INOUT+20 @ @@@@ OFF DCFZ<1 @^@@@@ E$COL GU )@@G@@ 127 @G@@@@ E$TIME MI1+8 . EDIT IN TIME TAPE GV )@@G@@WRITTEN @G@@@@. ADD CHAR TO PRINT LINE INDICATING WHETHER BACKUP IS GW )@@G@@CURRENT OR NOT @[@@@@. @I@@@@PR460 LA,U A0,NOBCHR GX )@@G@@ . ASSUME NO BACKUP - GET NO-BACKUP CHAR @F@@@@ JZ GY )@@G@@ A13,PR470 . IF NO BACKUP, SAY SO @D@@@@ TP GZ )@@G@@ MI0+12 . UNLOADED? @G@@@@ J PR480 HA )@@G@@ . YES, BACKUP MUST BE CURRENT @G@@@@ LA,U A0,BHB )@@G@@NCCHR . GET BACKUP NOT CURRENT CHAR @G@@@@ TZ HC )@@G@@ MI0+10 . UPDATED SINCE BACKUP CREATED? @F@@@@PR470 SAHD )@@G@@,S6 A0,LINOUT+6 . STORE BACKUP STATUS @[@@@@. @ @@@@HE )@@G@@. CHECK FOR LAPSE ENTRIES @[@@@@. @F@@@@PR480 LA,T1 A1,MHF )@@G@@I0+12 . GET DESCRIPTOR FLAGS @E@@@@ LA,U A0,LHG )@@G@@PSCHR . GET LAPSE CHAR @F@@@@ TEP,U A1,0400 HH )@@G@@ . BIT 32 (LAPSE) SET? @G@@@@ SA,S6 A0,LINOUT+HI )@@G@@6 . YES, ADD CHAR TO OUTPUT LINE @F@@@@ LA,U A0,'HJ )@@G@@D' . GET TO-BE-DROPPED CHAR @G@@@@ TEP,U A1,0HK )@@G@@1 . BIT 24 SET (TO BE DROPPED)? @G@@@@ SA,S6 HL )@@G@@ A0,LINOUT+6 . YES, STORE IN OUTPUT IMAGE @[@@@@. @C@@@@HM )@@G@@. THE TIME HAS COME TO PRINT THE INFORMATION @[@@@@. @D@@@@ HN )@@G@@ P$RINT POUT . PRINT LINE @G@@@@ SZ HO )@@G@@ LINE2 . CLEAR NRP,NTP,NLPS,NSB FLAGS @ @@@@ ONHP )@@G@@ EXTRA @[@@@@. @G@@@@. DETERMINE WHETHER OR NOT ADDITIONAHQ )@@G@@L PRINT LINES ARE NEEDED TO EDIT @#@@@@. MORE STUFF. @[@@@@. HR )@@G@@@C@@@@ TNZ TAP . TAPE? @C@@@@ J HS )@@G@@ PR500 . NO @[@@@@. @E@@@@. TAPE FILE: SECOHT )@@G@@ND LINE NEEDED IF >1 REEL IN DIRECTORY @[@@@@. @G@@@@ LAHU )@@G@@,H2 A0,MI0+20 . GET NUMBER OF REELS CATALOGUED@D@@@@ HV )@@G@@ JZ A0,PR520 . SKIP IF NONE@D@@@@ AN,U HW )@@G@@ A0,1 . LESS ONE @G@@@@ SA A0,NTP HX )@@G@@ . SET NUMBER OF REELS LEFT TO DO@D@@@@ J PR52HY )@@G@@0 . CONTINUE @F@@@@PR500 TZ BMI1 HZ )@@G@@ . BAD MAIN ITEM SEC 1? @E@@@@ J PR520 IA )@@G@@ . YES, SKIP AHEAD @F@@@@ JZ A14,PR510 . IB )@@G@@REM DISC? NO,PR510 @[@@@@. @F@@@@. REMOVABLE DISC FILE: SECONDIC )@@G@@ LINE NEEDED IF >1 PACK IN DIRECTORY@[@@@@. @F@@@@ LA,T3 ID )@@G@@ A0,MI1+17 . YES, GET NUMBER OF PACKS@E@@@@ JZ IE )@@G@@ A0,PR510 . IF NONE, SKIP @G@@@@ AN,U A0,1IF )@@G@@ . BUT ONE HAS ALREADY BEEN DONE @G@@@@ SA IG )@@G@@ A0,NRP . STORE REMAINING PACK COUNT @[@@@@. @G@@@@IH )@@G@@. LAPSE ENTRIES AND ADDITIONAL BACKUP TAPES REQUIRE SECOND LINE, BUT II )@@G@@@B@@@@. DON'T DO IT IF DEMAND (SHORT LISTING). @[@@@@. @G@@@@PR510 IJ )@@G@@ JZ A7,PR520 . NO BACKUPS OR LAPSES IF DEMAND@F@@@@IK )@@G@@ LA,S2 A0,MI1+7 . SECURE BACKUP REEL COUNT@E@@@@IL )@@G@@ JZ A0,PR520 . IF NONE, SKIP @D@@@@ IM )@@G@@ AN,U A0,1 . LESS ONE @G@@@@ SA IN )@@G@@ A0,NSB . NUMBER OF BACKUPS LEFT TO DO @F@@@@ LAIO )@@G@@,S1 A0,MI0+12 . GET DESCRIPTOR BITS @D@@@@ TOIP )@@G@@P,U A0,04 . ANY LAPSES? @D@@@@ J PR52IQ )@@G@@0 . NO, GO ON @G@@@@ LA,T2 A0,MI1+7 IR )@@G@@ . GET NUMBEER OF LAPSE ENTRIES @D@@@@ SA A0,NLPS IS )@@G@@ . AND STORE IT@[@@@@. @H@@@@. IF ADDITIONAL LINES ARE NECEIT )@@G@@SSARY FOR ANY OF THE ABOVE REASONS, OVERLAY @G@@@@. THIS SEGMENT WITIU )@@G@@H 'PR2SG' AND JUMP TO IT. ALSO GO TO PR2SG IF THE QF @F@@@@. OPTIONS WEIV )@@G@@RE USED, SINCE THE FITEM$ GIVES ADDITIONAL INFORMATION@ @@@@. ABOUT SUCHIW )@@G@@ THINGS AS TAPES. @[@@@@. @G@@@@PR520 TNZ LINE2 IX )@@G@@ . ANYTHING TO PRINT ON 2ND LINE?@E@@@@ TZ QFITEM IY )@@G@@ . QF WITH FITEM$? @F@@@@ J $+2 IZ )@@G@@ . YES, PRINT MORE STUFF @C@@@@ J PR600 JA )@@G@@ . NOPE @I@@@@ L$OAD PR2SG,PMORE,1 . JUMP TO ADDIJB )@@G@@TIONAL-LINES PRINT ROUTINE @#@@@@ OFF @[@@@@. @G@@@@JC )@@G@@. IF MASS STORAGE EQUIPMENT TYPE WAS GIVEN IN SPEC3, AN ADDITIONAL LINE JD )@@G@@@G@@@@. IS PRINTED GIVING INITIAL RESERVE AND BREAKDOWN OF GRANULE COUNTJE )@@G@@S BY @#@@@@. EQUIPMENT TYPE. @[@@@@. @F@@@@PR600* TNZ TAP JF )@@G@@ . SKIP IF FILE IS TAPE @F@@@@ TNZ LIN2JG )@@G@@OP . OTHERWISE, HANDLE LIN2OP@E@@@@ J PR90JH )@@G@@0 . CHECK FOR SNAP$ @D@@@@ E$DIT EDPACK JI )@@G@@ . OPEN EDIT @^@@@@ E$COL 5 @E@@@@ E$JJ )@@G@@COPY 12,('INIT. RES.: ') . INITIAL RESERVE @D@@@@ E$DECV JK )@@G@@ MI0+20,,H1 . EDIT RESERVE@E@@@@ LA,U A0,'T' JL )@@G@@ . ASSUME TRACKS @D@@@@ TP MI0+13 JM )@@G@@ . POSITION? @C@@@@ LA,U A0,'P' . YES JN )@@G@@@G@@@@ E$CHAR . EDIT GRANULARITY INDICATJO )@@G@@OR @D@@@@ TP MI0+12 . LOADED FILE?@H@@@@JP )@@G@@ TZ,H2 MI0+14 . OR UNLOADED WITH GRANS LYING AJQ )@@G@@ROUND?@H@@@@ J $+2 . YES, BETTER PRINT JR )@@G@@THOSE GRANULES @F@@@@ J PR640 . NO, NOJS )@@G@@ GRANULE COUNT @[@@@@. @^@@@@. EDIT GRANULE COUNTS @[@@@@. JT )@@G@@@B@@@@ E$COPY 12,(' GRANULES: ') . @H@@@@ LX,U JU )@@G@@ X4,7 . INITIALIZE FOR NO. OF EQUIP TYPES @F@@@@PR610 JV )@@G@@ TNZ,H2 MI0+20,X4 . ANY GRANS ON THIS EQUIP?@F@@@@ JW )@@G@@ J PR630 . NO, TRY THE NEXT ONE @E@@@@ JX )@@G@@ E$COLN . GET CURRENT COLUMN@E@@@@ LAJY )@@G@@,U A1,122 . ASSUME BATCH MODE @D@@@@ TNZ JZ )@@G@@ A7 . DEMAND? @E@@@@ LA,U A1,62 KA )@@G@@ . YES, SHORTER LINES@E@@@@ TLE A0,A1 KB )@@G@@ . REACHED MAX YET? @F@@@@ J PR620 . KC )@@G@@NO, CONTINUE EDITING @F@@@@ P$RINT POUT . KD )@@G@@YES, PRINT CURRENT LINE @E@@@@ E$DIT EDPACK . KE )@@G@@AND START ANOTHER @F@@@@ E$COL 19 . START KF )@@G@@AT 19, AND GO ON @E@@@@PR620 E$FD1 EQUCD,X4 . GET EQKG )@@G@@UIP CODE @D@@@@ E$CHAR '=' . EDIT = SIGN KH )@@G@@@F@@@@ E$DECV MI0+20,X4,H2 . EDIT NO. OF GRANULES KI )@@G@@@F@@@@ E$SKIP 2 . MOVE OVER FOR NEXT ONE KJ )@@G@@@D@@@@PR630 JGD X4,PR610 . MORE TYPES? @E@@@@PR640 KK )@@G@@ P$RINT POUT . PRINT THE LINE @]@@@@/PR900 . KL )@@G@@@ @@@@ ON SNAPOK @[@@@@. @C@@@@. PERFORM SNAP$ OFKM )@@G@@ DIRECTORY ITEMS IF DESIRED @[@@@@. @E@@@@ LA A2,SKN )@@G@@NAP . GET SNAP FLAG @F@@@@ JZ A2,PR990 KO )@@G@@ . IF NO SNAP WANTED, GO ON@G@@@@ JNB A2,PR920 KP )@@G@@ . IF NO LEAD ITEM SNAP, PR920 @E@@@@ DO SORTOK>0 , KQ )@@G@@TZ SORT . SORT BEING DONE, @F@@@@ TZ QANDF2 KR )@@G@@ . AND QF OPTIONS NOT SET? @F@@@@ J PR910 KS )@@G@@ . NO, LINK NOT NEEDED @[@@@@. @F@@@@. SNAP OF LEAD ITEKT )@@G@@M IS WANTED, BUT SORT LOST IT, SO WE MUST USE @ @@@@. DIRLNK TO OBTAINKU )@@G@@ IT AGAIN. @[@@@@. @D@@@@ LMJ X11,DIRLNK . KV )@@G@@CALL DIRLNK @D@@@@ J DIRECERR . ERROR RETURNKW )@@G@@@D@@@@ + ECODE . ERROR CODE @E@@@@ KX )@@G@@ + LI0 . LEAD ITEM BUFFER @E@@@@ + KY )@@G@@ MI0+11 . LINK TO LEAD ITEM @C@@@@ + KZ )@@G@@ 0 . WB @D@@@@ LA A2,SNAP LA )@@G@@ . RELOAD A2 @[@@@@. @ @@@@. SNAP LEAD ITEM SECTOR 0 @[@@@@LB )@@G@@. @F@@@@PR910 LA,U A0,'LI0' . GET NAME FOR SNAP LC )@@G@@HEADER@F@@@@ SA,H1 A0,SNAPKT . STORE IN SNAP PACKLD )@@G@@ET @G@@@@ LA,U A0,LI0 . GET ADDR OF BUFFERLE )@@G@@ TO SNAP @F@@@@ SA,H2 A0,SNAPKT+1 . STORE IN SNALF )@@G@@P PACKET @F@@@@ LA,U A0,SNAPKT . GET ADDR OF LG )@@G@@SNAP$ PACKET@E@@@@ ER SNAP$ . SNAP LEAD ITLH )@@G@@EM @E@@@@PR920 TOP,U A2,02 . MI0 SNAP DESIRED? LI )@@G@@@D@@@@ J PR930 . NO, PR930 @[@@@@. LJ )@@G@@@ @@@@. SNAP MAIN ITEM SECTOR 0 @[@@@@. @B@@@@ LA,U LK )@@G@@ A0,'MI0' . @B@@@@ SA,H1 A0,SNAPKT . LL )@@G@@@B@@@@ LA,U A0,MI0 . @B@@@@ SA,H2 LM )@@G@@ A0,SNAPKT+1 . @B@@@@ LA,U A0,SNAPKT . LN )@@G@@@F@@@@ ER SNAP$ . SNAP MAIN ITEM SECTOR 0 LO )@@G@@@E@@@@PR930 TOP,U A2,04 . MI1 SNAP DESIRED? @D@@@@LP )@@G@@ J PR940 . NO, PR940 @E@@@@ TZLQ )@@G@@ BMI1 . BAD MI1 LINK? @E@@@@ J LR )@@G@@ PR940 . YES, SKIP SNAP$ @E@@@@ TNZ A14 LS )@@G@@ . REMOVABLE DISC? @E@@@@ TZ A13 LT )@@G@@ . OR HAS BACKUP? @G@@@@ J $+2 LU )@@G@@ . YES, SHOULD HAVE DECENT MI1 @E@@@@ J PR940 LV )@@G@@ . NO, DON'T SNAP MI1@[@@@@. @ @@@@. SNAP MAIN ITEM SECTOR LW )@@G@@1 @[@@@@. @B@@@@ LA,U A0,'MI1' . @B@@@@LX )@@G@@ SA,H1 A0,SNAPKT . @B@@@@ LA,U A0,MLY )@@G@@I1 . @B@@@@ SA,H2 A0,SNAPKT+1 . @B@@@@LZ )@@G@@ LA,U A0,SNAPKT . @F@@@@ ER SNAPMA )@@G@@$ . SNAP MAIN ITEM SECTOR 1 @D@@@@PR940 TZ QANDMB )@@G@@F2 . QF OPTIONS? @F@@@@ J PR960 MC )@@G@@ . YES, CANNOT SNAP GTB @E@@@@ TOP,U A2,010 MD )@@G@@ . GTB TO BE SNAPPED?@D@@@@ J PR960 . ME )@@G@@NO, GO ON @[@@@@. @^@@@@. SNAP GRANULE ITEMS @[@@@@. @F@@@@MF )@@G@@ LA,U A0,'GTB' . GET SNAP HEADER NAME @E@@@@MG )@@G@@ SA,H1 A0,SNAPKT . STORE IN SNAP$ PKT@F@@@@ MH )@@G@@ LA,U A0,MI0 . SET SNAP START ADDR @C@@@@ MI )@@G@@ SA,H2 A0,SNAPKT+1 . IN PKT@F@@@@PR950 TP MI0 MJ )@@G@@ . ANY MORE GRANULE ITEMS? @E@@@@ J PR96MK )@@G@@0 . NO, THAT'S ALL @G@@@@ LMJ X11,DIRLNKML )@@G@@ . YES, LINK TO NEXT GRANULE ITEM@D@@@@ J DIREMM )@@G@@CERR . ERROR RETURN@D@@@@ + ECODE MN )@@G@@ . ERROR CODE @F@@@@ + MI0 . PUT GRMO )@@G@@ANULE ITEM IN MI0 @E@@@@ + MI0 . LINK WMP )@@G@@ORD IS MI0+0@C@@@@ + 0 . WB @E@@@@MQ )@@G@@ LA,U A0,SNAPKT . GET SNAP$ PKT ADDR@C@@@@ MR )@@G@@ ER SNAP$ . DO IT @F@@@@ J PR95MS )@@G@@0 . AND GO BACK FOR MORE @[@@@@. @E@@@@. ALL SNAPS MT )@@G@@DONE - SKIP A LINE BEFORE PRINTING NEXT FILE @[@@@@. @D@@@@PR960 MU )@@G@@ P$RINT (0100,0) . SKIP A LINE @]@@@@PR990 . @#@@@@MV )@@G@@ OFF @E@@@@ J MFD300 . GET NEMW )@@G@@XT FILE @[@@@@. @F@@@@. TRAILING-BLANK COUNTING ROUTINE FOR QUALMX )@@G@@ AND FILENAME EDITING @[@@@@. @F@@@@TRAIL L,U A1,12 MY )@@G@@ . ASSUME 12-CHAR NAME @E@@@@ AND,U A3,077 MZ )@@G@@ . ISOLATE LAST CHAR @C@@@@ TE,U A4,5 NA )@@G@@ . BLANK?@H@@@@ J 0,X11 . NO, RETURN WNB )@@G@@ITH CHAR COUNT IN A1 @E@@@@ AN,U A1,1 . NC )@@G@@YES, 1 LESS CHAR @G@@@@ DSL A2,6 . GET NEND )@@G@@XT CHAR INTO POSITION @G@@@@ J TRAIL+1 . NE )@@G@@CHECK UNTIL NON-BLANK FOUND @#@@@@ END ___@@@ J NF )@@G@@)@@[#]@H@K)#K)HK#1)C]N1)C])@@@@@@@@@@@@@@@@@@@@@/K@@@6/,0@@@(0@@@@/K@@@;NG )@@G@@*4@@@@AA@@@@)@C[F@K)]^C])[@@@@@@@@@@/K@@@P!8@@@K^#0@@U:8@@@"%8@@@.R7@@@DNH )@@G@@ @@@@U C@@@@/^@@@/AB@@@@)@L[#]@-@K)]K^C]^C#=C]^C#0@@@@')@@@@*W@@@I')@@@@NI )@@G@@*W@@@N/K@@@R^30@@@/K@@@40W@@@NAC@@@@)@T[#]@-@K)CK^C^^[]@(]@C@@@@@@^70@@@NJ )@@G@@0@@@@E/K@@@4')@@@@/K@@@Z(W@@@A/#)@@4*W@@@EAD@@@@)@-[#]@)K)BK^C[4[]@P@@@@NK )@@G@@@@@@@@/K@@@1(*@@@@/K@@@4%0@@@@/K@@@$(0@@@@:8K@@[RZK@@NAE@@@@)@([F]@WK^[@NL )@@G@@K^C^O[]@O@@@*4@@@@/@@@@4/,0@@@/K@@@1/K@@@4/,0@#//K@@@1=8@@@CC)@@@@AF@@@@NM )@@G@@)@2[]K^C^=[]@H][H]@P][K@@@@@@@/K@@@@*0@@@@/K@@@@(0@@@@/K@@@@ @@@@@/K@@@]NN )@@G@@/KD@@@AG@@@@)@'[#][P]@GK)#K^C]4C]4C@)@@@@@ ^@@@@ @@@@M @@@@F/K@@[[*0@@@@NO )@@G@@ @@@@T 4@@@@/K@@@@AH@@@@)[][F]@1]@-@K)QK[]@D]@0@=8@@@KC4@@@G^$0@@@=8@@@KNP )@@G@@/K@@@@')@@@@/K@@[B(W@@@PR3@@@LAI@@@@)[F[E^C#^C#[]@1@K)#K@@@@/BK@[W*?@@@@NQ )@@G@@8#)@[H[CI@@M;?@@@GC@Y@@MC?I@@MC8)@@[C;K@@[AJ@@@@)[O[F]@P@K^[@K^[@K)#@@@@NR )@@G@@*0@@@@/#K@[%/B)@[W/#)@[%/ 0@[U/B)@[W/BK@[W/K@@[S(*@@@@AK@@@@)[X[EK)G^[]@NS )@@G@@CK^C 4C^0@@@/K@@@@/,0@@@/K@@[%;JK@[C^<0@@@/K@@[=>8@@]@CW@@@G/KD@@@AL@@@@NT )@@G@@)[&[]/S]@=/S]@?/S]@0K) K[]@)@@*W@@@]/KD@@@/K@@]X*4@@@@@@@@@@@@@@@H@@@@@@NU )@@G@@@@@@@@AM@@@@)[,[F@^[]@P@K^C[O[@@@@@@/K@@@4/K@@@](4@@@@/K@@@]/K@@]X(4@@@@NV )@@G@@/K@@[49"R@@@/K@@[7AN@@@@)[7[##@[]@-#@@^CA^CA^CAK@@@@@@9&)@@D+]K@@@+])@@[NW )@@G@@;AV)@@9,R@@@R]0@@[*W@@@SR]0@@@AO@@@@)[_[F@^[@K)CK^CA=C]=@@@@/K@@@49/@@@[NX )@@G@@9?@@@@/K@@]C*W@@@C/K@@[4/K@@['$'0@[]9')@[1AP@@@@)]C[F]@-@K^C#^C#^G@^[@K@NY )@@G@@/#)@@]/K@@@]/K@@]X:@@@@]*4@@@CC@@@@B/K@@[\/K@@[7*W@@@]AQ@@@@)]L[F]@D@^G@NZ )@@G@@[@K^@@@@@@@@N8K@@ /])@@]/K@@]X/K@@]S2]W)@@R#@@@#N8K@@ /K@@@]*)@@@@AR@@@@OA )@@G@@)]U[##@@K^C]^[]@1]@W(@6@@@@@@@:8K@@@C=K@@@C4@@@F/K@@]>(W@@@L/K@@@]2]?)@@OB )@@G@@R#@@@#AS@@@@)]+[#]@1][1@K)CK^C#^CBOCB)@@@@')@@@@C@K@@@CC@@@M/K@@]:(W@@@#OC )@@G@@/K@@@@')@@@@CW@@@GAT@@@@)]%[F@^C#^C][]@X@K)BK)G@(^G@@NC0@@@@/K@@]4(0@@@@OD )@@G@@%8@@@[RZ@@@N ^@@@I @@@@V/K@@@@AU@@@@)]3[F@K)]K)ZK)G^C#^[]@0@;:0@@A0@@@@HOE )@@G@@8]0@]8GB;@@OR'0@@ACB0@@V/K@K@@*0@@@@/K@@@@AV@@@@)]/[#]@1]@X@K)GK)G^C#@@@OF )@@G@@@@@@@@ @@@@V0@@@@G;:0@@A0@@@@HCB/@@N/@@@#]C0@@@@[B0@@IAW@@@@)#^[F][.]@D@OG )@@G@@K)GK^CC^[@K@/#K@@@/K@@@@/K@@#K')@@@@/K@@#G0@@@@G/K@@#K*0@@@@/K@K@@AX@@@@OH )@@G@@)#H[#]@!]] @K)CK^CC=[]@O@@@@@@(*@@@@/K@@@@')@@@@/K@@#O(W@@@O/K@@@@')@@@@OI )@@G@@CB0@@DAY@@@@)#P[F@K^[@K)LK^C@4C@=CC0/K@@@@*0@@@@(0@@@@/@@@@@/,0@@@/K@@#VOJ )@@G@@/K@@@@/,0@#"/K@@#VAZ@@@@)#Y[F@K)=^CD^C@L]@ ]@D@@/K@@#!(=@@@@AA0@@@O'0@@[OK )@@G@@RA0@@@A]0@@@O]0@@VR]0@@@/#)@#>BA@@@@)#$[#]]OK)>K)@^C@^C@=@@@@@@@@@/K@@#5OL )@@G@@(4@@@@AE0@@@O'0@@[RE0@@@A]0@@@O]0@@VR]0@@@BB@@@@)#\[#]]SK)&K)@^C@^CC4C#@OM )@@G@@@@@@@@0@@@@G/B)@@@AA0@@@O'0@@[RA0@@@A]0@@@O]0@@VR]0@@@BC@@@@)#7[#]]H]]WKON )@@G@@)$K)@K)%K):K)(K)?K@@@@@@@@C8@@@[/K@@^K')]@@@')]@@@[@K@@@OQ )@@G@@+@]@@@/K@@^G(@]@@@BF@@@@)^J[N@^@K^CFOCF-@@/@:@@[8KK@^^/S])@@[@H@@@C@M@@@OR )@@G@@/K@@^Q/@F@@@/^)@^O @@@@G/K@@^LBG@@@@)^T@E@)@@@*@(@Q@@@@@@@@@@@@@@@@@@@@@OS )@@G@@@@@@@@@@[@@@@@]@@MINSTAL@@#@@@@[]@@@/KF@@]BH@@@@@@^@@]@@A@@\@[=@@G@]O@@@OT )@@G@@@@@@@ @@@@^UCNT1 CNT2 FLAGS MRFLGS LINE2 OU )@@G@@FLAG3 FLAG4 FLAG5 OPTIONS ECODE LI0 OV )@@G@@MI1 MI0 DIRSEC REVT REVO REVG OW )@@G@@POLTRAN GOTONE DIRECERR DOSORT QF900 REVV OX )@@G@@DIRLNK ACMASK MFD$ PCT RPRL REVR OY )@@G@@DATREF REVD SZOPT SZLOD SZBAK UNCHEK OZ )@@G@@MFD500 RTOT VTOT GTOT TOT INS1 PA )@@G@@INS2 TMASK SPC INS3 POLINK POLISH PB )@@G@@CHK000 @@[@@@@@@@@@GALI @@[@@@@@@@@4LNKRTN @@[@@@@@@@[>PC )@@G@@CHK220 @@[@@@@@@@[%AAOPT @@[@@@@@@@[!FFOPT @@[@@@@@@@]#PD )@@G@@XXOPT @@[@@@@@@@]FKKOPT @@[@@@@@@@]KGBU @@[@@@@@@@]XPE )@@G@@SZCHK @@[@@@@@@@# UNOPT @@[@@@@@@@#MNSZOPT @@[@@@@@@@#OPF )@@G@@ J PR950 . AND GO BACK FOR MORE @[@@@@PG )@@G@@. @E@@@@. ALL SNAPS DONE - SKIP A LINE BEFOR)@@[##@L#@L#@L#@[]@ #@L#PH )@@G@@@K@@@@/KF@@[ @@@X,[@K@@#'=@@@@C@@@@@A#@@@#C@K@@#R#@@@@AA@@@@)@C[F#@K[@K^PI )@@G@@G[[@@@@@@@@@/K@@@N>8@@@C @@@@J/K@@#K/K@@@I=8@@@^>8@@@]R#FK@]A]0@WTAB@@@@PJ )@@G@@)@L[N#@K@^G[^G[^@@;CK@@ /@K@@YC@K@X"A#@@@H;?@@@M;*@@@L;G@@@] @@@@HP;@@@CPK )@@G@@[@@@@JAC@@@@)@V[M^G[^G[@@K@@@@/^@@@ZC@K@@G;GK@@AG8K@@0W8@@@E @@@@GC@)@@[PL )@@G@@G@K@X"C8K@@]?8K@@#AD@@@@)@>[F#@K()C-@]) G[^C@=@@;CK@@YR#K@@G/C@@@5'=@@@@PM )@@G@@R;@@X;/^@@#X'=@@@@R;@@@#[@)@@CAE@@@@)@,[EK[#@K()C-@^)]@@@@@@/@@@@8R#FK@#PN )@@G@@/G@@]/'=@@@@R;@@X;A#@@X;R;@@@C/K@@]/!8K@@R#@@@#AB@@@GO;@@@[/K@@]>AQ@@@@)]R[#@K)AK#1)G[#1)G[#1)G[@@@@@R;@@@[QB )@@G@@@@@@@@@@@@WU@@@@W6@@@@WQ/K@@]>/,0@@@/K@@])AR@@@@)]Z[##@L#@[#@L@^[#@L#@K@QC )@@G@@@@@@@@ @@@@I @@@@G/K@@]-$;@@@I/K@@]%*@G@W7R#@@@#A3@@@GAS@@@@)]$[F@ES]C[NQD )@@G@@@K^G[^G[@@@@R#V@@]R]0@WTA#K@WS @G@@@R#W@@@O;@@W7/K@@]:O;@@W>/K@@[IAT@@@@QE )@@G@@)]0[##@KK^C[=@/S#@KJA@0^@@@@@@@@@@WS@@@@@@@@@@WQ/K@@]>/,0@@@A#K@]6O;K@@WQF )@@G@@*@@@@JAU@@@@)]8[MK0^@@K@@@@@@@R;@@@[/K@@##:8@@@V;C@@@Y;*@@@GR#K@@G/KF@@^QG )@@G@@R;@@@[R]0@WT@@@@@@AV@@@@)#][F@K0^^G[[@K[#@K@@@@@R]0@WT@@@@@@/,0@@@/K@@#[QH )@@G@@!8@@@#A#@@@]O;@@@[R#@@@]/K@@#7AW@@@@)#F[N@[#@L@[@K0^@@;*@@@AR#@@X\/K@@#7QI )@@G@@R;@@@DR#K@@G/K@@#7R#K@@NR;@@@]/K@@@@/K@@@SAX@@@@)#P[##@L#@L#@K()C-)C]@@@QJ )@@G@@@@@@@@/K@@#7 @@@@HR;@@@#A#@@X1R;@@X% @@@@G @@@@IA#@@X,AY@@@@)#X[F#@[@[@KQK )@@G@@0^K^G[^G[@@@ @@@@G @@@@I/K@@@5(@@@X,/K@@#7R;@@@^R#K@@G/@K@#+-@@@@^AZ@@@@QL )@@G@@)#&[F#@KK0^ES]CS]]A@)-)CA#)@X,O;)@@[R#)@X,/KF@@ A#@@X1R;@@X%[@@@X,;*@@@AQM )@@G@@C@@@X\BA@@@@)#\[F@K0^[#@L@[#@K@@@@@@R]0@WT @@@@HR;@@@ /K@@[GA#)@X,-8K@@_QN )@@G@@O;K@[@R#K@X,/K@@[GBB@@@@)#8@M@)@@[A@)@@@@@,F/ ET--$$$$--DG @ASG,TQO )@@G@@@@@@@@/ @FREE /KFK@@9*FK@[BC@@@@)@C[Y@)@@@@@@@@@@@ET--$$$$--DG@@@@@@QP )@@G@@@@@@@@@@@@@@@@@@@@C@@@@@. /2000 BD@@@@)@N@Y@<1?C@])@@@@@)WQ@&@QQ )@@G@@)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@XM@@@@@@BE@@@@)X,[A@)@/S@JQR )@@G@@A@#1)@/S@@@@@@@@@@@@@@@K@@@@XM@@@@X0@@@@X,@@@@@@@@@@@@@@@@@@@@@@@@BF@@@@QS )@@G@@)X6[I@<1)@@/S@@@@@@@@@@@@@@@@@ET--$$$$--DG@@@@@H@@@@@Q5?65?6@@@@@@@@@@@@QT )@@G@@@@@@X\BG@@@@)X_@I@<[EK#))@@@*()CO0^ES]@@@@@@@@@@@@@@@@C@@@@@@@[@@@@@[@@QQU )@@G@@@W@@@Q@@^@@#@@Q@@@BH@@@@@@^@@ @@D@@C@@T@@D@@.@@@@@@@@ @@@@#'@@@@@@@@@@@@QV )@@G@@@@@@Y@R$ CSF$ MSCON$ FORK$ IOW$ DIR$ETQW )@@G@@ DIRLNK DGET$BUF2 DIRSIZ @C@@@@@@@@@@DIREND @@[@@@QX )@@G@@@@@@@@DIRINT @@[@@@@@@@@CDIRSEC @@[@@@@@@@[FDIREC$FLAG @@^@@@QY )@@G@@@@@@@GGOTONE @@^@@@@@@@@IDIREC$ @@^@@@@@@@X2DGETP$FN$WD$@@^@@@QZ )@@G@@@@@@X;PAKID$ @@^@@@@@@@X"SL A1,3 . SHIFT DIGIT RA )@@G@@INTO A1 @E@@@@ JGD A3,IN1758 . DO FOR ALL CRB )@@G@@HARS @[@@@@. @H@@@@)@@[M@^C [@K) K)V@/K@@@@*0@@@@/K@@@F%8@@@#C@@@@@RC )@@G@@&]0@@FODE & PE & CROR TYMFD ERAA@@@@)@E[#][0(@Y-@M)CKCCKECKDCKE@@@(@@@@[RD )@@G@@/,0@@@C@@@@@/,0@@@C8@@@@/,0@@@C/@@@@/K@@@@AB@@@@)@M[F@K)RK)O^CA^CBOCB)@@RE )@@G@@;C@@@MR#@@@F'=@@@@R#@@@@/,0@@@C8K@@GC@@@@[/,0@@@/K@@@RAC@@@@)@V@%EKJ*K[CRF )@@G@@KKCKK)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/K@@@@/@@@@@^<0@@@P;@@@@&'0@@@AD@@@@RG )@@G@@@@^@@]@@A@@+@[E@@[@[I@@@@@@@@@@@@@@)CNT1 CNT2 FLAGS RH )@@G@@MRFLGS LINE2 FLAG3 FLAG4 FLAG5 OPTIONS RI )@@G@@EDIT$ EDITR$ ECHAR$ ECOL$ ESKIP$ ECLEAR$ RJ )@@G@@EDPACK EMSG$ EOCTV$ EDECV$ EFD1$ ECODE RK )@@G@@EDITX$ ECOLN$ EMSGR$ EOCTF$ EDECF$ EDCFZ$ RL )@@G@@DOSORT MFD600 POUT PRINT$ LNKRTN CHK220 RM )@@G@@MFD700 DIRECERR @@[@@@@@@@@^U A0,015 . GET S1RN )@@G@@)@@[E()@-@]-)@C]A@]@CS@@A7@@W R;@@@#/@@@@ERV@@OB/^K@]MR;@@@CR7K@@@'=@@@@RO )@@G@@R;@@@@AA@@@@)@D[F#@[]@D]@C^[]@D]@C@@A#J@@ R#@K@@R#0@@#/K@@]K!8@@O[;C@@@ARP )@@G@@P#@K@@R#@K@[A7@@WAAB@@@@)@M[F]@C^G@@K)#^@@@@@@@@'^@@]T*4J@@#'=@@@@R;J@@@RQ )@@G@@&;)@@#R#K@WBA#J@@^&;@@@VR#@@@]AC@@@@)@V[N]@CK^[]@D@K@@O;@@[@R#J@@ A#H)@@RR )@@G@@/K@@@$/K@@@W%@@@@B/C@@@+/@@@@WR#I)@@Q#)@@]AD@@@@)@>[EK[]@D@]&@]A@@@@@@@@RS )@@G@@R;@@@WA#@@@[P;@@@]R;H@@@/K@@@R?@@K@[R#J@@ /K@@@WA#J@@ AE@@@@)@,[E^G@^G@^RT )@@G@@C@=[#@[#@@@@R#FK@#A[@@W^^@)@W#/K@@]Z(@@K@@*@@@@[^@K@W]/KF@@ AFJ@@^AF@@@@RU )@@G@@)@7[N@@^@()@CS@@@@RV.@@A*S@@OBRV.@@CR;K@O]/K@@[>=8)@]@+8K@#_;CK@@SR#K@@GRV )@@G@@/@@@]OAG@@@@)[[[M@()@]@O0@@@@@R#O)@@&9@@@[Q9@@@]/K@@[>!80@@SR7"@@@O;)@O]RW )@@G@@RR!@@@O#K@@IO#K@@JAH@@@@)[F[F#@@^G@[@K0@ES@@@@@@O;0@@[O;0@@]R#0@@[/K@@[RRX )@@G@@\@)@@H+@@@W K8)@W@P;)@@[+@K@W AI@@@@)[O[MK^@@^[#@@@@@@+@@@WC/K@@[)1@J@@@RY )@@G@@P#K@@IO;)@@[P;0@@[R;4@@@/K@@[E/K@@]O:84@@@AJ@@@@)[Y[MK@K[@ES@]A@@@R#)@@[RZ )@@G@@&9@@@[Q9@@@]/K@@[3A#@@@H/^K@]OW8@@@W @@@@G/GK@[LPBZ@@@AK@@@@)[*[EK0@^[#@SA )@@G@@[#@[#@@@@@@@P;0@@[R;4@@@+@@@WCN@)@W#N@K@W]/K@@]O9@^)@@N@)@WAA#)@[[AL@@@@SB )@@G@@)[1[E]&@]A@]^@KCK[@@@@@@A#J@@ R#0@@#O#@@@J;*0@@AO#0K@^R[@@W^P;0@@]A#K@@GSC )@@G@@PBZ@@@AM@@@@)['[N]@C@K@@@@@@@@R;J@@@A#J@@^&;@@@WR#F@@]/K@@]C:@@@@I;C@@@ASD )@@G@@;C)@@AP;)@@[R#)K@@AN@@@@)]^[N]@GK@K)]@@@@@N8K@@W&;@@@[R#F@@]&;K@@[O#K@@CSE )@@G@@T8K@@W/KF@@ '^@@]T*4J@@#'=@@@@AO@@@@)]I[M@(@@@CS@@@@@@9*FK@[R[@@W^R#VK@#SF )@@G@@R;@@@B/KFK@@9*FK@[R;K@@@R;@@@A/KF@@ M#H)@@AP@@@@)]S[U[]@C@@@/KFK@@9*FK@[SG )@@G@@ @@@@HR;@@@ /KFK@@9*FK@[R#X@@#R#K@@#R;@@@]/K@@@@/KFK@@AQ@@@@)@@@K/S@@@@@SH )@@G@@)W]@8@])@@@@@@@___@@[@@][____@[_____@@@@@@@@@@@@@@@@@@@@@@@@@@@@O]AR@@@@SI )@@G@@@@^@@]@@A@@^@@I@@#@@U@@@@@@@WD@@@@]8@@@)C4@@@B/K@@[F/,)@^^C8@@@@/K@@[]C8@@@@TE )@@G@@/]@@[FAK@@@@)[B[##@@K^[]] ]]D]@L@@@@@@@@@@/]@@[:CU@@@@'=@@@@R#@@@@/K@@[[TF )@@G@@/,)@#:&')@@UR[@@@/AL@@@@)[J[](@Y-@MCKACS@CKCCS@CKC@@@@/,0@@@C8@@@+/,0@@@TG )@@G@@C8@@@X/,0@@@C/@@@ /,0@@@C/@@@@AM@@@@)[R[EK)GK)PK)N^@(@%) G@@C8@@@@/K@@[)TH )@@G@@C8@@@@/]@@[(H'@@@[/,0@@@C@@@@G/,0@@@C/@@@NAN@@@@)[)[F@K^G@[@K0@^[@@@@@@@TI )@@G@@/K@@[Z/,)@#:&')@@VR[@@@./K@@[Z>8@@@KC4@@@B/K@@[(/,)@^^AO@@@@)[([#]] ]]D]TJ )@@G@@@L@K0@K]=]%@@@@@@@/K@@[,$9@@@J/,)@["R[@@@"/]@@]OC2@@@@'=@@@@R#@@@@AP@@@@TK )@@G@@)[1[E(@%) G@^[@K0@^[#@@@R[@@@_/K@@[3>8@@@CC4@@@B/K@@]O/,)@^^C8@@@@/K@@[4TL )@@G@@C8@@@@AQ@@@@)['[#@ES@C]@O)JK)D^C#@@@@@@@@@/,0@@@C/@@@ /,0@@@C/@@@@/K@@[3TM )@@G@@/K@@['$9@@@U/,)@["AR@@@@)]][F#@[][@K)RK)W^C =CB@C@^@@[/,0@@@/,0@@@C@^@@@TN )@@G@@/,0@@@/,0@@@C@^@@@/,0@@@C8@@@=AS@@@@)]F[F][X][0K)QK)-K)+^@@@/KE@@@/]@@]OTO )@@G@@H'@@@['=@@@@R#@@@@/,0@@@C@^@@[/,0@@@/,0@@@AT@@@@)]O[#]@H]@T@^C[-]]G([A@@TP )@@G@@@@@@@@C8@@@@[0@@@[C8@@@R*4@@@@C8@@@ /K@@]Z*0@@@@*0@@@@AU@@@@)]W[#]]L@K)>TQ )@@G@@K)]K)AK]=['^[C@@@@/,0@@@C/@@@@/K@@#$(0@@@@*0@@@@'=@@@@/@@@]Z'=@@@@AV@@@@TR )@@G@@)]=[]K)GK0@K)KK)XK)M^C]0@@@@@@/,0@@@C/@@@//,0@@@CW@@@D/,0@@@C8@@@(/,0@@@TS )@@G@@C/@@@ AW@@@@)]?[F][5][D][4K[]@!][4@@;C@@@AC^@@@D/,0@@@C/@@@,/K@@]':8@@@[TT )@@G@@C?@@@A/,0@@@C?@@@DAX@@@@)]5[#][CK)FK)XK)MK)WK)XK)M@@@@/,0@@@C4@@@C/,0@@@TU )@@G@@/,0@@@C)@@@D/,0@@@C/@@@//,0@@@AY@@@@)].[#][1][5][D][5@K)XK^CB@@@@@/,0@@@TV )@@G@@/K@@#G(@@@@F/K@@#G(4@@@C/,0@@@C?@@@E/,0@@@AZ@@@@)# [#][5][H][5@K)WK)XK)NTW )@@G@@K)-@@@R#@@@@/,0@@@C@@@@G/,0@@@/K@@#G(@@@@G/,0@@@C@@@@FBA@@@@)#H[#]]C(@Y-TX )@@G@@@MCKACS@CKCCKI)@@@C?@@@C/,0@@@C8@@@1/,0@@@C/@@@ /,0@@@C/@@@@'=@@@@BB@@@@TY )@@G@@)#P[F][CK)HK)X[@K)WK)X@@C*@@@E/,0@@@/K@@#-!8@@@I!8@@@DC4@@@A/,0@@@C/@@@]TZ )@@G@@/,0@@@BC@@@@)#Y[#][CK)HK0@K)KK)XK)MK)-@@@@R#@@@@/,0@@@CO@@@E/,0@@@C8@@@6UA )@@G@@/,0@@@C/@@@]/,0@@@BD@@@@)#&[#]]C(@/ CB4CD-]@?@@@@@@@@@C/@@@[/,0@@@C/@@@,UB )@@G@@'=@@@@R;K@@@&;@)@@R;@@@@'=@@@@BE@@@@)#,[F]@5][?@K^CCOCC)@@@@'=@@@@R#@@@@UC )@@G@@/K@@#;?@@@@HR;K@[@(@@@@NR;K@[//,0@@@/,0@@@BF@@@@)#7[E(@Y-@MCKACS@CKD)@@@UD )@@G@@C@@@@E/]E@@[H'@@@[/,0@@@C@^@@@/,0@@@C/@@@N/,0@@@C/@@@@BG@@@@)^@[E^@K)#K@UE )@@G@@K0@@@@@@@@@@[@@@@W/GE@@@C@G@@@/K@@^K*0@@@@/KE@@@/K@@#:$[@@@G;C@@@MBH@@@@UF )@@G@@)^D[#]]X@JA@))JA@0@JA@0@@@@@@@0@G@@@/KE@@[@@@@@@@@@@@W@@@@@@@@@@@@/K@@^LUG )@@G@@/,0@@@BI@@@@)^L[EES@C@O)O]&@]^ @@@@@C8K@@][@K@@#Q;K@@@&;K@W]:8@@@@&;K@W[UH )@@G@@/K@@^X:8@@@@/KE@@@BJ@@@@)^U[E(@*C]^ @-[KO)*K)(@@0@@@@G'=@@@@C8@@@@[WK@@^UI )@@G@@O;K@@[RZK@@^/K@@^Z @@@@H:8@@@@BK@@@@)^<@M@)@9@8@]=](K@@@@@@@@@]@@C@@]@@HUJ )@@G@@@@[@@C@@]@@C@@]@@Q@@[@@O@@[@@]/KE@@[/KE@@@BL@@@@@@^@@]@@A@@%@[U@@[@[Y@@@UK )@@G@@@@@@[@@@@@^>CNT1 CNT2 FLAGS MRFLGS LINE2 UL )@@G@@FLAG3 FLAG4 FLAG5 OPTIONS EDIT$ EDITR$ UM )@@G@@ECHAR$ ECOL$ ESKIP$ ECLEAR$ EDPACK EMSG$ UN )@@G@@EOCTV$ EDECV$ EFD1$ MI0 MI1 ETIME$ UO )@@G@@EDAY1$ EDAY2$ EDAY3$ EDITX$ ECOLN$ EMSGR$ UP )@@G@@FITEM CHEKPRTSG PR600 ECODE POUT PRINT$ UQ )@@G@@FREIM CSF$ EABT$ LOAD$ DIRLNK RDPKT UR )@@G@@MSCON$ PMORE @@[@@@@@@@@@ SR R15,DLA . US )@@G@@YES, SO SET DLOC$-ASG'D FLAG @E@@@@ LA A0,FTMPKT UT )@@G@@)@@@K@)@@@3]@OK)CK0@K)EJA@0@@@@@@@@@/,0@@@[@@@@@*W@@@TC8@[OS^$0@@@@@@@ KUU )@@G@@@@@@%GAA@@@@)@A[]/S#@@EK^*]^[S-@S-@^@@@@@@C@@@@@/K@@@@ROPN$ /?K@@@/,0@@EUV )@@G@@R;0@@@@@@@@@@@@@@[AB@@@@)@I[#]@5]@9]@5]@5]@4(@U-@Y-@)@/K@@@@/,0@@@R;@@@@UW )@@G@@[\)@@I[3K@@I[4@@@IC?@@@E[@@@@@AC@@@@)@Q[F][ ][C*]A@@CKA*K[@@A#@@@@R#@@@@UX )@@G@@M#W)@@N8K@@8R#K@@]&;@@@[@@@@@>/,0@@@/,0@@@AD@@@@)@Z[#]@5]@9]@5]@5]@5][H]UY )@@G@@@H][K@/K@@@@(0@@@@/K@@@@CB0@@IC\)@@IC3K@@IA\@@@EC4@@@IAE@@@@)@$@F][O@@@@UZ )@@G@@)@]@C(@U@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[@@@/K@@@@AF@@@@VA )@@G@@@@^@@]@@A@@Q@@2@@H@[&@@@@@@@@#@@@@@*CNT1 CNT2 FLAGS VB )@@G@@MRFLGS LINE2 FLAG3 FLAG4 FLAG5 OPTIONS VC )@@G@@SORTBL SORTF RSTRG$ RBPN$ MI0 LI0 VD )@@G@@RREL$ CHK000 RSORT$ RRET$ PR000 MFD600 VE )@@G@@QF900 OPNSRT @@[@@@@@@@@@NOSORTF @@[@@@@@@@@CROPN$ VF )@@G@@@@[@@@@@@@@ERTMIN$ @@[@@@@@@@@HRTMAX$ @@[@@@@@@@@HRTPT$ VG )@@G@@@@[@@@@@@@@HRTST$ @@[@@@@@@@@HRTMT$ @@[@@@@@@@@HRLBLK$ VH )@@G@@@@[@@@@@@@@HGOTREC @@[@@@@@@@@HDOSORT @@[@@@@@@@@QLPOC VI )@@G@@@@[@@@@@@@@RSRTNXT @@[@@@@@@@@R@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@VJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@)@@[S@@@@@@@UP TAPL BACK TOTAT=& G-OP-OPT=&VK )@@G@@V=& V REMOD=& FIXETRKS&:AA@@@@)@F@8@@@@@@@)@@@M(@Y-@M@/,0@@@C/@@@@VL )@@G@@S=& TAPE=& TOTALFILES:KS=& E BLOCAB@@@@)@][F#@[][[]@)K^C[4@K)H@VM )@@G@@/,0@@@C/@@@[/K@@@M(0@@@@/K@@@M:8@@@[CW@@@N/,0@@@C8@@@@AC@@@@)@F[]K)FK)BYVN )@@G@@)OK)N^C]4C 0@@@@@@/,0@@@/,0@@@C/@@@)/,0@@@C@GJ_"C0@@@@/,0@@@C/@@@(AD@@@@VO )@@G@@)@N[#][-][D#@[][[][>][D][X][*@C@@@@@/,0@@@/,0@@@C@@@@@/,0@@@C8@@@#/,0@@@VP )@@G@@C@@@@@AE@@@@)@V[#][D][X][!][D@K0@K)KK)W@@@C@@@@@/,0@@@C8@@@C/[0@@=/,0@@@VQ )@@G@@C@@@@@/,0@@@/,0@@@AF@@@@)@<[#][D][9][/(@Y-@M-)@-@)-@'@C@@@@@/,0@@@C8@@@HVR )@@G@@/,0@@@C/@@@@'=@@@@R#@@@@/,0@@@AG@@@@)@:[#][D#@[][[]@ ][D][X]@[][C@/,0@@@VS )@@G@@CC@@@@/,0@@@/,0@@@C^@@@@/,0@@@C8@@@#/,0@@@AH@@@@)@3[#][X]@[][D#@[][[]@ ]VT )@@G@@[D][O@/,0@@@/,0@@@CC@@@@/,0@@@C8@@@K/,0@@@C^@@@@/,0@@@AI@@@@)@;@V][9][.]VU )@@G@@]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/K@@@@'=@@@@R#@@@@AJ@@@@VV )@@G@@@@^@@]@@A@@-@[C@@[@[G@@@@@@@@M@@@@@"CNT1 CNT2 FLAGS VW )@@G@@MRFLGS LINE2 FLAG3 FLAG4 FLAG5 OPTIONS VX )@@G@@EDIT$ EDITR$ ECHAR$ ECOL$ ESKIP$ ECLEAR$ VY )@@G@@EDPACK EMSG$ EOCTV$ EDECV$ EFD1$ EQUCD VZ )@@G@@EDITX$ ECOLN$ EMSGR$ TOT RTOT VTOT WA )@@G@@GTOT SECTOT PFCT POUT PRINT$ MFD700 WB )@@G@@TOT000 @@[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WC )@@G@@)@8@0@@@@@@@)[#@S@@@@@@@$ . OUT$$@ASG,T $. OUT$$TAFILE IN DAWD )@@G@@OUTPUTAA@@@@)[A[K@@G^*[K@@@@@@@@[@[A@@[@@@@@@@@W@@@@@@@@W@@@@C@@@@@@@@@@WE )@@G@@ OUT$$$*SDFF*AB@@@@)[K@K@)@@@2()@-@M) G@^C]=C]0@@/,0@@@/,0@@@C8@@[BWF )@@G@@/G@@@A'=@@@@C8@@[#*[@@@@@@[@@@AC@@@@)@A[#]@0K0@ES@CS@CK]*KA)@@@@@@N8K@@ WG )@@G@@/K@@@@^<0@@@[^@@[JC8@@@.[W@@[LC8@@@A'=@@@@AD@@@@)@I[##@[#@@^G@]&@]^[U^[)WH )@@G@@@@@@@@'=@@@@/,0@@@C8@@[B[4@@@"C8@@@ M#W)@@R#K@[NR#@@[MAE@@@@)@Q@<]@.]@-]WI )@@G@@[[]@/@)[M@K(@WO@@@@@@@@@@@@@@@@@[@@"@@[@@B/K@@@@/K@@@@(W@@@M/ 0@@@AF@@@@WJ )@@G@@@@^@@]@@A@@L@@*@@^@@8@@@@@@@[O@@@@@UCNT1 CNT2 FLAGS WK )@@G@@MRFLGS LINE2 FLAG3 FLAG4 FLAG5 OPTIONS WL )@@G@@CSF$ SDFOO SDFO ERR$ MFD200 LINOUT WM )@@G@@PR300 MFD300 MSG @@@@@@@@@@@8FCT @@@@@@@@@@[BWN )@@G@@SDF000 @@[@@@@@@@@@SDF100 @@[@@@@@@@@H*[@@@@*SDFF*@D@@@@ M F WO )@@G@@D -- MASTER FILE DIRECTORY INFORMATION PROCESSOR@]@@@@SPACE 15 @F@@@@WP )@@G@@ M F D -- MASTER FILE DIRECTORY INFORMATION PROCESSOR @]@@@@WQ )@@G@@SPACE 5 @C@@@@ R. DUFF KURLAND @C@@@@WR )@@G@@ NEW YORK UNIVERSITY @C@@@@ WS )@@G@@ UHMC COMPUTER CENTER @E@@@@ 1 WASHINGTON SQUAREWT )@@G@@ VILLAGE - SUITE 1F @C@@@@ NEW YORK, NEW YORKWU )@@G@@ 10012@[@@@@SPACE @B@@@@ JANUARY, 1975@#@@@@WV )@@G@@4INTRODUCTION @]@@@@COLUMN 2 @E@@@@ @MFD IS A MASTER FILE DIRWW )@@G@@ECTORY LISTING PROCESSOR, @E@@@@ A PING-PONG EFFORT OF AT&T, SIAC, AWX )@@G@@ND NYU SYSTEMS STAFFS. @E@@@@ UOM'S @CATALOG WAS USED AS A BASIS FOR @MWY )@@G@@FD'S PREDECESSOR, @E@@@@ @WHURP. @WIPE REPLACED @WHURP WHEN MSCON$ AND WZ )@@G@@@SECURE CAME@F@@@@ ON THE SCENE, AND @WIPE WAS RENAMED @MFD AFTER LEVEL XA )@@G@@3.8 BECAUSE @ @@@@ NOBODY LIKED THE NAME @WIPE. @^@@@@4PRIVILEGED FEATURXB )@@G@@ES @E@@@@ THIS INFORMATION IS FOR USE BY INSTALLATION MANAGEMENTXC )@@G@@@G@@@@ AND SYSTEMS PROGRAMERS, AND IS NOT INTENDED FOR THE GENERAL USER.XD )@@G@@ IT @F@@@@ EXPLAINS CERTAIN FEATURES OF @MFD THAT ARE ONLY AVAILABLE TXE )@@G@@O @#@@@@ PRIVILEGED USERS.@[@@@@SPACE @G@@@@ WHEN IN PRIVILEGED MODEXF )@@G@@, THE 'Z' OPTION MAY BE USED TO DIRECT @MFD @F@@@@ TO LIST ALL FILESXG )@@G@@ IN THE DIRECTORY, HONORING ONLY THE SECONDARY @G@@@@ ATTRIBUTE OPTIONSXH )@@G@@ AND SPECIAL SPEC FIELD TESTS. THAT IS, NO CHECK ON @C@@@@ FILENAME, AXI )@@G@@CCOUNT, PROJECT, ETC., WILL BE DONE.@[@@@@SPACE @G@@@@ IN PRIVILEGED MODXJ )@@G@@E ONLY, THE 'QFK' OPTIONS USED TOGETHER WILL CAUSE @F@@@@ @MFD TO PRIXK )@@G@@NT THE READ AND WRITE KEYS OF THE FILE GIVEN IN SPEC1.@[@@@@SPACE @F@@@@XL )@@G@@ THE TAG 'PRVOPS' IN THE PROC ELEMENT MAY BE CHANGED TO DECLARE @B@@@@XM )@@G@@ ANY OPTION TO BE A PRIVILEGED OPTION. @D@@@@ THE 'Z' OPTION SHOULD AXN )@@G@@LWAYS BE IN THIS LIST. OTHER @C@@@@ LIKELY OPTIONS ARE 'I', 'C', 'Y', AXO )@@G@@ND 'X'. @^@@@@4@MFD GENERATION NOTES @G@@_@ SEVERAL ELEMENTS ARE INXP )@@G@@CLUDED IN THIS FILE FOR MAINTENANCE OF @MFD. @B@@_@ THEIR NAMES AND PXQ )@@G@@URPOSES ARE GIVEN BELOW:@[@@_@SPACE @]@@_@COLUMN 11 @B@@_@ SKEL THXR )@@G@@E @MFD MAINTENANCE SKELETON. @D@@_@ ALL SYMBOLICS ARE ASSUMED XS )@@G@@TO BE IN TPF$. @[@@_@SPACE @E@@_@ PCF THE PERMANENT CORRECTION FXT )@@G@@ILE NEEDED TO BRING THE @G@@_@ BASE LEVEL SYMBOLICS IN THIS FILXU )@@G@@E UP TO THE LATEST VERSION. @[@@_@SPACE @F@@_@ TCF AN EMPTY ELEMEXV )@@G@@NT PROVIDED FOR LOCAL SITE MODIFICATIONS @[@@_@SPACE @F@@_@ GEN ANXW )@@G@@ @ADD STREAM WHICH USES THE ABOVE ELEMENTS TO GENERATE@E@@_@ ANXX )@@G@@ @MFD ABSOLUTE. AS SHIPPED, IT WILL ASSEBLE @D@@_@ ALL THE XY )@@G@@ELEMENTS, CREATING A FULL LISTING. @[@@_@SPACE @]@@_@COLUMN 2 @F@@@@XZ )@@G@@ @MFD MAKES USE OF THE 'SORTF' SUBROUTINE, THE SYMBOLICS FOR WHICH@D@@@@YA )@@G@@ MAY BE FOUND IN ANOTHER FILE ON THIS RELEASE TAPE. @G@@@@ THIS ROUTINYB )@@G@@E CAME FROM THE UNIVERSITY OF MARYLAND, BUT WE HAVE MODIFIED@F@@@@ IT ATYC )@@G@@ NYU TO USE REMOVABLE DISCS FOR THE 'XB' SORT FILE IF THE @G@@@@ SIZE YD )@@G@@OF 'XB' IS GREATER THAN 3 POSITIONS, OR IF THERE IS NOT ENOUGH @G@@@@YE )@@G@@ FIXED MASS STORAGE TO HOLD IT. IN THIS CASE, 'XB' WILL BE ASSIGNED YF )@@G@@@F@@@@ ON F14, USING PACKID 'SORT01' (AND IF THE SIZE IS GREATER THAN 45YG )@@G@@@G@@@@ POSITIONS, 'SORT02' IS USED AS WELL). THIS MAY HAVE TO BE CHANGEYH )@@G@@D @#@@@@ AT MANY SITES. @[@@@@SPACE @E@@@@ USE OF THE 'B' OPTION WYI )@@G@@HEN COLLECTING @MFD IS ENCOURAGED. @[@@@@SPACE @F@@@@ IF YOU MAKE ANY MYJ )@@G@@ODIFICATIONS OR ENHANCEMENTS TO @MFD, PLEASE @E@@@@ LET US KNOW ABOUTYK )@@G@@ THEM. THEY MIGHT BE WORTH ADDING TO THE @#@@@@ RELEASED VERSION.@[@@@@YL )@@G@@SPACE @[@@@@SPACE @F@@@@ A GENERAL REDESIGN USING COMMON BANKS IS CONTEMYM )@@G@@PLATED, AS IS THE @H@@@@ ELIMINATION OF THE ADMITTEDLY AWKWARD SPEC FIELYN )@@G@@DS AND THE IMPLEMENTATION @B@@@@ OF AN @MFD 'LANGUAGE' TO REPLACE THYO )@@G@@EM. @^@@@@4USER DOCUMENTATION @G@@@@ USER DOCUMENTATION ON @MYP )@@G@@FD MAY BE FOUND IN THE ELEMENT 'MFD/NEWS' @F@@@@ IN THIS FILE. FOR EASEYQ )@@G@@ OF MAINTENANCE, IT IS NOT INCLUDED AS @^@@@@ PART OF THIS ELEMENT. YR )@@G@@___@@@ TO LIST ALL FILES IN THE DIRECTORY, HONOR*[@@@@*SDFF*@A@@@@. @MFDYS )@@G@@ INITIALIZATION - PHASE 1 @[@@@@. @G@@@@. ALL USE OF INFOR$ MUSTYT )@@G@@ BE COMPLETE BY THE END OF THIS ROUTINE, SINCE @G@@@@. INFOR$ IS COLLECYU )@@G@@TED IN THE INIT1 SEGMENT, WHICH GETS OVERLAYED AFTER @#@@@@. INITIALIZAYV )@@G@@TION. @[@@@@. @#@@@@ AXR$ @F@@@@ CONFIG YW )@@G@@ . DEFINE CONFIG PARAMETERS@E@@@@ EQUFS YX )@@G@@ . DEFINE EQUF'S @[@@@@. @D@@@@. REMOTE LOAD TABLYY )@@G@@E FOR C/Y OPTION SPEC MASK, ETC. @[@@@@. @E@@@@ACLD LA,S1 YZ )@@G@@ A0,0,X2 . GENERAL LOAD TABLE@ @@@@ LA,S2 A0,0ZA )@@G@@,X2 @ @@@@ LA,S3 A0,0,X2 @ @@@@ LA,S4 A0,0ZB )@@G@@,X2 @ @@@@ LA,S5 A0,0,X2 @ @@@@ LA,S6 A0,0ZC )@@G@@,X2 @ @@@@ LA,S1 A0,1,X2 @ @@@@ LA,S2 A0,1ZD )@@G@@,X2 @ @@@@ LA,S3 A0,1,X2 @ @@@@ LA,S4 A0,1ZE )@@G@@,X2 @ @@@@ LA,S5 A0,1,X2 @ @@@@ LA,S6 A0,1ZF )@@G@@,X2 @[@@@@. @^@@@@ ON NSSP@[@@@@. @C@@@@. INITZG )@@G@@IAL VALUES FOR REMOTE TEST INSTRUCTIONS @[@@@@. @B@@@@INITINS1 LAZH )@@G@@ A0,MI0 . @B@@@@INITINS2 LA A0,SPEC4 ZI )@@G@@ . @ @@@@INITINS3 TE A0,SPC @B@@@@INITMSK - 0 ZJ )@@G@@ . @B@@@@INITDTE DTE A0,SPEC4 . @[@@@@ZK )@@G@@. @E@@@@. TABLE OF LEGAL SPEC4-N FILENAME (TEST LOCATION) VALUES ZL )@@G@@@C@@@@. ALSO USED FOR SORT KEYS IF SORT IS CONFIGURED @[@@@@. @G@@@@ZM )@@G@@. -------------------------------------------------------------------ZN )@@G@@@G@@@@. 0 : SPEC VALUE (FIRST 3 CHAR) : J-DESIG :TEST INDEX: OFFZO )@@G@@SET :@G@@@@. -------------------------------------------------------ZP )@@G@@------------@[@@@@. @H@@@@. S5 = 0 IF 'DTE' IS TO BE ASSUMED, OTHERWZQ )@@G@@ISE = INDEX+1 INTO OPCODE TABLE @[@@@@. @[@@@@. @G@@@@. IF SZR )@@G@@ORT IS NOT CONFIGURED, TABLE WILL BE MADE UP OF 1-WORD ENTRIES @G@@@@ZS )@@G@@. IN THE ABOVE FORMAT...IF SORT IS CONFIGURED, ENTRIES WILL BE THREE ZT )@@G@@@G@@@@. WORDS LONG, WHERE FIRST WORD HAS ABOVE FORMAT, AND THE OTHER TWOZU )@@G@@ WORDS@ @@@@. HAVE THE FOLLOWING FORMAT: @[@@@@. @G@@@@. -------ZV )@@G@@------------------------------------------------------------@G@@@@. 1 :ZW )@@G@@ 03 : KEY TYPE : ORDER : MS BIT : 0 :@G@@@@ZX )@@G@@. -------------------------------------------------------------------ZY )@@G@@@G@@@@. 2 : 77 : WORD NUMBER : NUMBER OF BITS ZZ )@@G@@ :@G@@@@. -------------------------------------------------------AA )@@G@@------------@[@@@@. @F@@@@. AND ARE BOTH ZERO IF NO SORT IS AVAILABLAB )@@G@@E FOR THIS SPEC VALUE. @D@@@@. 'WORD NUMBER' HERE IS RELATIVE TO MI0&1 AC )@@G@@SORT RECORD @[@@@@. @#@@@@P PROC @D@@@@TB1* NAME AD )@@G@@ 0 . MI0 KEYS @D@@@@TB2* NAME 1 AE )@@G@@ . MI1 KEYS @ @@@@F FORM 18,6,6,6 @ @@@@SRT1 AF )@@G@@ FORM 6,6,6,6,12@ @@@@SRT2 FORM 6,12,18 @C@@@@ AG )@@G@@ F P(1,1),P(1,2),P(1,3),P(1,4) @ @@@@ ON SORTAH )@@G@@OK @F@@@@ DO P(1,4)=0 , GO ZERO . NO SORT FOR LI0,MIAI )@@G@@0,MI1 @G@@@@ DO P(1,2)=0 ,TYPE EQU 'A' . FULL WORD - ASSUMEAJ )@@G@@ ALPHA SORT @G@@@@ DO P(1,2)>0 ,TYPE EQU 'B' . PARTIAL WORDAK )@@G@@ - BINARY SORT @[@@@@. @C@@@@. SET MOST-SIGNIFICANT-BIT BASED ON AL )@@G@@J-DESIGNATOR@[@@@@. @F@@@@J EQU P(1,2) . AM )@@G@@PICK UP J-DESIGNATOR @F@@@@ DO (J=W)++(J=H1)++(J=XH1)++(J=T1AN )@@G@@)++(J=S1) ,MSBIT EQU 1 @F@@@@ DO J=S2 AO )@@G@@ ,MSBIT EQU 7 @F@@@@ DO (J=T2)++(J=S3) AP )@@G@@ ,MSBIT EQU 13 @F@@@@ DO (J=H2)++(J=XH2)++(J=S4) AQ )@@G@@ ,MSBIT EQU 19 @F@@@@ DO (J=T3)++(J=S5) AR )@@G@@ ,MSBIT EQU 25 @F@@@@ DO J=S6 AS )@@G@@ ,MSBIT EQU 31 @[@@@@. @C@@@@. GENERATE FIRST WORD OF SORT AT )@@G@@KEY PARAMETER @[@@@@. @B@@@@ SRT1 03,TYPE,'A',MSBIAU )@@G@@T,0 @[@@@@. @G@@@@ DO P(0,0)=0 ,WORD EQU P(1,4) . OFAV )@@G@@FSET IS RELATIVE TO MI0 @H@@@@ DO P(0,0)=1 ,WORD EQU P(1,4)+28 AW )@@G@@ . OFFSET IS FOR MI1 - CONVERT IT @[@@@@. @G@@@@. SET KEY LENGTH IAX )@@G@@N BITS, BASED ON J-DESIGNATOR AND TEST BEING DONE @E@@@@. IF WHOLE WAY )@@G@@ORD AND NOT 'DTE', 36 BITS. IF 'DTE', 72 BITS. @B@@@@. IF PARTIAL WORD,AZ )@@G@@ CORRECT NUMBER OF BITS @[@@@@. @G@@@@ DO (P(1,3)>DTE)**(J=BA )@@G@@0) ,BITS EQU 36 . WHOLE WORD @G@@@@ DO P(1,3)=DTE BB )@@G@@,BITS EQU 72 . TWO WORDS @F@@@@ DO J>T1 BC )@@G@@,BITS EQU 6 . SIXTH@F@@@@ DO (J=T1BD )@@G@@)++(J=T2)++(J=T3) ,BITS EQU 12 . THIRD@F@@@@ DO (J=H1BE )@@G@@)++(J=XH1)++(J=H2)++(J=XH2) ,BITS EQU 18 . HALF @[@@@@. @C@@@@. GENEBF )@@G@@RATE SECOND WORD OF SORT KEY PARAMETER @[@@@@. @A@@@@ SRBG )@@G@@T2 077,WORD,BITS @^@@@@ GO ETBL@#@@@@ZERO NABH )@@G@@ME @F@@@@ + 0D . NO SORT FOR THIS IBI )@@G@@TEM @#@@@@ETBL NAME @ @@@@ OFF SORTOK @#@@@@BJ )@@G@@ END @[@@@@. @E@@@@TBL4 TB1 'LI0',0,0,0 BK )@@G@@ . LEAD ITEM SECTOR 0@D@@@@QU TB1 'QUA',0,DTE,1 . BL )@@G@@QUALIFIER @D@@@@FI TB1 'FIL',0,DTE,3 . FILENAME BM )@@G@@@D@@@@ TB1 'PRO',0,DTE,5 . PROJECT-ID @ @@@@LI0X BN )@@G@@ EQU $-TBL4 @E@@@@ TB1 'MI0',0,0,0 . BO )@@G@@MAIN ITEM SECTOR 0@D@@@@ TB1 'ACC',0,DTE,7 . ACCOUNBP )@@G@@T @H@@@@SI TB1 'SIZ',H2,TG,14 . SPECIAL-TOT TRKS SBQ )@@G@@AVED IN MI0+14 @E@@@@ TB1 'EQU',S1,TE,17 . EQUIPMBR )@@G@@ENT CODE @D@@@@FCY TB1 'FCY',T3,TE,17 . F-CYCLE BS )@@G@@@F@@@@ TB1 'REF',H1,TLE,18 . DATE LAST REFERENCED BT )@@G@@@E@@@@ TB1 'CAT',H1,TLE,19 . DATE CATALOGUED @D@@@@BU )@@G@@ TB1 'REE',0,TE,26 . TAPE REEL @ @@@@MI0X EQBV )@@G@@U $-TBL4 @E@@@@ TB2 'MI1',0,0,0 . MAIN IBW )@@G@@TEM SECTOR 1@E@@@@ TB2 'BTB',H2,TG,9 . BACKUP TAPE BX )@@G@@BLOCKS@F@@@@ TB2 'BFP',T2,TE,10 . BACKUP FILE POSITIBY )@@G@@ON @D@@@@ TB2 'BAC',0,TE,11 . BACKUP REEL @C@@@@BZ )@@G@@ TB2 'PAC',0,TE,18 . PACKID@ @@@@TBL4L EQU CA )@@G@@ $-TBL4 @[@@@@. @C@@@@. TABLE OF OPCODE MNEMONICS AND OCTAL CODECB )@@G@@S @[@@@@. @^@@@@DTE EQU 0 @A@@@@OPCODE + CC )@@G@@ 'TZ ',0500000 @ @@@@TZ EQU $-OPCODE @A@@@@ + CD )@@G@@ 'TNZ',0510000 @ @@@@TNZ EQU $-OPCODE @A@@@@ CE )@@G@@ + 'TP ',0600000 @ @@@@TP EQU $-OPCODE @A@@@@CF )@@G@@ + 'TN ',0610000 @ @@@@TN EQU $-OPCODE CG )@@G@@@A@@@@ + 'TEP',0440000 @ @@@@TEP EQU $-OPCH )@@G@@CODE @A@@@@ + 'TOP',0450000 @ @@@@TOP EQU CI )@@G@@ $-OPCODE @A@@@@ + 'TE ',0520000 @ @@@@TE EQCJ )@@G@@U $-OPCODE @A@@@@ + 'TNE',0530000 @ @@@@TNE CK )@@G@@ EQU $-OPCODE @A@@@@ + 'TLE',0540000 @ @@@@CL )@@G@@TLE EQU $-OPCODE @A@@@@ + 'TNG',0540000 CM )@@G@@@ @@@@TNG EQU $-OPCODE @A@@@@ + 'TG ',0550CN )@@G@@000 @ @@@@TG EQU $-OPCODE @ @@@@OPCODL EQU $-OPCO )@@G@@CODE @[@@@@. @^@@@@. TABLE OF J-DESIGNATORS@[@@@@. @C@@@@JTAB CP )@@G@@ 'W' . 0 @C@@@@ 'H2' CQ )@@G@@ . 1 @C@@@@ 'H1' . CR )@@G@@2 @C@@@@ 'XH2' . 3 @C@@@@ CS )@@G@@ 'XH1' . 4 @C@@@@ 'T3' CT )@@G@@ . 5 @C@@@@ 'T2' . CU )@@G@@6 @C@@@@ 'T1' . 7 @C@@@@ CV )@@G@@ 'S6' . 10 @C@@@@ 'S5' CW )@@G@@ . 11 @C@@@@ 'S4' . CX )@@G@@12 @C@@@@ 'S3' . 13 @C@@@@ CY )@@G@@ 'S2' . 14 @C@@@@ 'S1' CZ )@@G@@ . 15 @ @@@@JTABL EQU $-JTAB @[@@@@. DA )@@G@@@ @@@@ ON SORTOK @F@@@@SRTHSP + 0 DB )@@G@@ . SORT-THIS-SPEC FLAG @#@@@@ OFF @ @@@@ DC )@@G@@ ON SNAPOK @F@@@@SNTHSP + 0 . DD )@@G@@SNAP-THIS-SPEC FLAG @#@@@@ OFF @H@@@@ OFF DE )@@G@@ NSSP . ************************************@[@@@@. DF )@@G@@@^@@@@OPERM 'OPTION ERROR'@^@@@@/$(1). SET OPTIONS @[@@@@. DG )@@G@@@D@@@@IN1000* L,U R15,1 . CONSTANT=+1 @F@@@@ DH )@@G@@ SA A5,OPTWRD . SAVE OPTIONS FOR INIT2 @F@@@@ DI )@@G@@ LSSL A5,10 . GET 'A' BIT IN POS. 35 @G@@@@ DJ )@@G@@ LX X11,(1,0) . INITIALIZE OPTION TABLE INDEX @E@@@@DK )@@G@@IN1001 JPS A5,IN1002 . IS OPTION SET? @F@@@@ DL )@@G@@ SR,T1 R15,OPTIONS,X11 . YES, SET OPTION FLAG @E@@@@IN1002DM )@@G@@ TLEM,U X11,25 . FINISHED YET? @D@@@@ J DN )@@G@@ IN1001 . NO, CONTINUE@ @@@@ ON SORTDO )@@G@@OK @E@@@@ TZ BPT . B-OPTION SET? DP )@@G@@@G@@@@ SR R15,SORT . YES, USER WANTS Q*F(C) SDQ )@@G@@ORT @ @@@@ OFF SORTOK @E@@@@ SA A4,ADR )@@G@@14 . SAVE DEMAND/BATCH @E@@@@ SZ A7 DS )@@G@@ . ASSUME INFOR OK @E@@@@ LA A0,(56,LI0) DT )@@G@@ . READ INFOR TABLE @E@@@@ LMJ X11,RINF$ . DU )@@G@@ANYTHING THERE? @H@@@@ SA A0,A7 . STORE DV )@@G@@PRINT PKT AS NO-INFOR FLAG @G@@@@ JZ A7,IN1003 DW )@@G@@ . IF NO INFOR, SKIP TO IN1005 @E@@@@ LA,U A0,0106 DX )@@G@@ . GET PROCESSOR NAME@D@@@@ LMJ X11,SINF$ DY )@@G@@ . IN A0,A1 @E@@@@ J $+2 . NONE? DZ )@@G@@ SKIP STORE @F@@@@ DS A0,PNAME . STORE PROCESEA )@@G@@SOR NAME @[@@@@. @]@@@@. SIGN ON @[@@@@. @D@@@@IN1003 E$EB )@@G@@DIT EDPACK . OPEN EDIT @F@@@@ E$FD2 PNAMEC )@@G@@E . EDIT PROCESSOR NAME @B@@@@ E$SKIP 1 ED )@@G@@ . @D@@@@ E$FD1 LEVEL . LEVEL EE )@@G@@NUMBER@B@@@@ E$SKIP 2 . @C@@@@ E$EF )@@G@@DAT2 . DATE @B@@@@ E$SKIP 2 EG )@@G@@ . @C@@@@ E$TD . TIME @E@@@@EH )@@G@@ P$RINT POUT . PRINT SIGNON LINE @[@@@@. EI )@@G@@@F@@@@. IF QF OPTIONS ARE SET, CLEAR THEM TO MAKE OTHER STUFF SIMPLER EJ )@@G@@@[@@@@. @E@@@@ TZ QPT . Q OPTION SETEK )@@G@@? @D@@@@ TNZ FPT . AND F, TOO? @D@@@@EL )@@G@@ J IN1004 . NO, GO ON @F@@@@ SZEM )@@G@@ QPT . YES, CLEAR THEM BOTH @B@@@@ SZEN )@@G@@ FPT . @D@@@@ SR R15,QANDF EO )@@G@@ . SET QF FLAG @[@@@@. @E@@@@. MAKE SURE THAT AT MOST 1 PRIMARY AEP )@@G@@TTRIBUTE OPTION IS SET @[@@@@. @D@@@@IN1004 LX X11,(1,0) EQ )@@G@@ . SET INDEX @E@@@@ SZ A1 . ER )@@G@@INITIALIZE TOTAL @E@@@@IN1005 TNZ,T1 OPTIONS,X11 . THIS OES )@@G@@PTION SET? @D@@@@ J IN1006 . NO, GO ON ET )@@G@@@E@@@@ LA,H2 A0,OPTIONS,X11 . GET ROUTINE ADDR @G@@@@EU )@@G@@ TE,U A0,G*[@@@@*SDFF*@B@@@@A USER'S GUIDE TO APL\1100 (PREV )@@G@@ELIMINARY) @#@@@@4INTRODUCTION @G@@@@ APL\1100 IS A CONVERSATIEW )@@G@@ONAL PROCESSOR FOR THE UNIVAC 1100 SERIES @F@@@@ OF COMPUTERS WHICH COMPEX )@@G@@ILES AND EXECUTES PROGRAMS WRITTEN IN THE @F@@@@ IVERSON APL LANGUAGE. EY )@@G@@THIS LANGUAGE WAS ORIGINALLY DESCRIBED @G@@@@ BY K. E. IVERSON IN HISEZ )@@G@@ BOOK 'A PROGRAMMING LANGUAGE'[1]. IN THIS @#@@@@ WORK, DR. IVERSONFA )@@G@@@F@@@@ NOTED THAT CONVENTIONAL MATHEMATICAL SYMBOLS DID NOT ENCOMPASS FB )@@G@@@G@@@@ MANY OF THE OPERATIONS WHICH ARE USED IN STATING ALGORITHMS, AND FC )@@G@@PRO- @G@@@@ CEEDED TO DEFINE A NOTATIONAL SYSTEM WHICH LACKED THESE DEFFD )@@G@@ICIENCIES. @G@@@@ THE SYSTEM HE DEFINED WAS CONCISE, SELF CONSISTENT, AFE )@@G@@ND SUFFICIENTLY @E@@@@ GENERAL TO BE ABLE TO DESCRIBE A WIDE CLASS OF FF )@@G@@PROBLEMS. @[@@@@0 @G@@@@ IN THE TIME SINCE THIS WORK WAS ORIGFG )@@G@@INALLY PUBLISHED, SEVERAL @G@@@@ COMPUTER SYSTEMS WHICH WOULD PROCESFH )@@G@@S THE APL LANGUAGE WERE DEVELOPED @G@@@@ [2] [3], AND SOME EVOLUTION IFI )@@G@@N THE LANGUAGE ITSELF TOOK PLACE; FEA- @G@@@@ TURES NEEDED FOR COMPUTFJ )@@G@@ER IMPLEMENTATION WERE ADDED, OTHER FEATURES @H@@@@ WERE DELETED, ANDFK )@@G@@ THE INTERPRETATION OF SOME OF THE SYMBOLS WAS CHANGED. @G@@@@ ALTHOFL )@@G@@UGH A FORMAL DEFINITION OF THE RESULTING COMPUTER LANGUAGE HAS @G@@@@FM )@@G@@ NOT YET BEEN PUBLISHED, THE MOST EXTENSIVE DESCRIPTION OF THE LANG- FN )@@G@@@G@@@@ UAGE AND ITS FEATURES IS CONTAINED IN PAKIN [4]. IT SHOULD BE NOFO )@@G@@TED @F@@@@ THAT A FEW EXTENSIONS HAVE BEEN MADE TO APL SINCE THE PUBLIFP )@@G@@CATION@G@@@@ OF [4], AND SOME OF THE FEATURES DESCRIBED IN IT ARE NOT YEFQ )@@G@@T OPERA- @F@@@@ TIONAL IN APL\1100. THESE DIFFERENCES ARE NOTED AT AFR )@@G@@PPROPRIATE @^@@@@ PLACES IN THIS MANUAL. @[@@@@0 @G@@@@ THIS MFS )@@G@@ANUAL IS INTENDED AS A REFERENCE TO THE APL\1100 SYSTEM @F@@@@ FOR UFT )@@G@@SERS, AND CORRESPONDS TO LEVEL 4.0 OF THE PROGRAM. INFORMA-@F@@@@ TION FU )@@G@@ABOUT PARTICULAR CHANGES AND NEW FEATURES MAY ALSO BE FOUND @G@@@@ IN THFV )@@G@@E APL WORKSPACE 1 APL1100. INFORMATION REQUIRED FOR INSTALLA- @F@@@@FW )@@G@@ TION MANAGEMENT AND SYSTEM PROGRAMMERS MAY BE FOUND IN COMPANION @G@@@@FX )@@G@@ DOCUMENTS. THIS VERSION OF THE MANUAL IS PRELIMINARY, AND IN SOME FY )@@G@@@F@@@@ CASES INCOMPLETE. WE ARE RELEASING IT AT THIS TIME BECAUSE OF A FZ )@@G@@@G@@@@ SIGNIFICANT DEMAND FROM USERS TO HAVE AVAILABLE INFORMATION SPECIGA )@@G@@- @A@@@@ FICALLY ABOUT THIS IMPLEMENTATION. @[@@@@0 @G@@@@ GB )@@G@@APL\1100 HAS BEEN DEVELOPED AT THE COMPUTER SCIENCE CENTER OF @G@@@@GC )@@G@@ THE UNIVERSITY OF MARYLAND (COLLEGE PARK CAMPUS), WITH PARTIAL SUPPORT GD )@@G@@@F@@@@ FROM NSF GRANT #GU-2061, AND HAS BEEN OPERATIONAL IN ONE FORM OR GE )@@G@@@G@@@@ ANOTHER SINCE JANUARY, 1971. A GREAT DEAL OF CREDIT IS DUE TO THGF )@@G@@E @G@@@@ MANY STUDENTS WHO WORKED ON THIS PROJECT AT VARIOUS TIMES: GG )@@G@@ GEORGE @F@@@@ MC HUGH, DAN MINTZ, JOE MAKSIN, RAY COOK, JOHN ROUNTRGH )@@G@@EE, AND MIKE@F@@@@ MC AMIS. ESPECIAL THANKS TO THE CENTER'S ASSOCIATE DGI )@@G@@IRECTOR, MR.@F@@@@ JOHN P. MENARD, WITHOUT WHOSE ENCOURAGEMENT WE WOULD GJ )@@G@@NEVER HAVE @^@@@@ GOTTEN OFF THE GROUND. @[@@@@0 @E@@@@0 GK )@@G@@ PEH 9/20/71 @E@@@@0 GL )@@G@@ COLLEGE PARK, MD. @^@@@@4DESK CALCULATOR USAGE GM )@@G@@@]@@@@3SIGNING ON @G@@@@ APL\1100 RUNS AS A NORMAL PROCESSOR UNDGN )@@G@@ER THE EXEC 8 SYSTEM; @G@@@@ IT CAN BE RUN FROM DEMAND (TELETYPE) OR IGO )@@G@@N THE BATCH MODE, ALTHOUGH IT @G@@@@ IS PRIMARILY DEMAND-ORIENTED. AFTEGP )@@G@@R FOLLOWING THE NORMAL EXEC 8 PRO- @G@@@@ CEDURES TO MAKE YOURSELF KNOWGQ )@@G@@N TO THE SYSTEM (I.E. TYPING A SITEID AND @F@@@@ A @RUN CARD), THE APL PGR )@@G@@ROCESSOR MAY BE INVOKED BY THE SINGLE CARD@[@@@@ IMAGE@[@@@@0 @^@@@@GS )@@G@@0 @APL @[@@@@0 @E@@@@0OR, IF YOU HAVE LOCKED YOUR LGT )@@G@@IBRARY NUMBER (SEE CHAPTER 4):@[@@@@0 @A@@@@0 @APL GU )@@G@@ / @[@@@@0 @E@@@@0WHERE IS THE PREVIOUSLY DEFINED PASGV )@@G@@SWORD. THE SYSTEM@G@@@@ WILL RESPOND WITH A SIGN-ON LINE, FOLLOWED BY OGW )@@G@@NE OF TWO SIGNALS - @]@@@@ EITHER @[@@@@0 @A@@@@ GX )@@G@@ CLEAR WS, OR @[@@@@0 @B@@@@ SAVED MM/DGY )@@G@@D/YY - HH:MM@[@@@@0 @G@@@@0THE 'CLEAR WS' MESSAGE IS THE NORMAL ONE;GZ )@@G@@ 'SAVED' ETC. INDICATES THAT @G@@@@ A WORKSPACE YOU SAVED USING ')CONTIHA )@@G@@NUE' (CHAPTER 4) HAS BEEN RESTORED @F@@@@ FOR YOU, ENABLING YOU TO CONTHB )@@G@@INUE YOUR PREVIOUS TERMINAL SESSION @F@@@@ FROM THE POINT YOU LEFT OFF. HC )@@G@@ IN EITHER CASE, YOU HAVE NOW ES- @F@@@@ TABLISHED YOURSELF IN THE DESHD )@@G@@K CALCULATOR MODE AND MAY START @^@@@@ ENTERING STATEMENTS. @^@@@@HE )@@G@@3ENTERING STATEMENTS @F@@@@ IN THE DESK CALCULATOR MODE, ANY HF )@@G@@STATEMENT TYPED IN IS @F@@@@ IMMEDIATELY EVALUATED AND (NORMALLY) THE HG )@@G@@RESULTS ARE DISPLAYED. @A@@@@ THUS, TYPING IN THE EXPRESSION @[@@@@HH )@@G@@0 @^@@@@ 3 + 4@[@@@@0 @G@@@@0(FOLLOWED, OF COUHI )@@G@@RSE, BY A CARRIAGE RETURN) WILL RESULT IN A DISPLAY @#@@@@ OF THE VALUHJ )@@G@@E 7. @[@@@@0 @G@@@@ THE SIMPLE STATEMENT ABOVE IS AN EXAMPLHK )@@G@@E OF THE USE OF THE @F@@@@ OPERATOR '+', THE DYADIC ADDITION OPERATOHL )@@G@@R. SO-CALLED 'PRIMITIVE@F@@@@ OPERATORS' ARE PROVIDED FOR ALL OF THE NOHM )@@G@@RMAL MATHEMATICAL OPERA-@G@@@@ TIONS, SUCH AS ADDITION, SUBTRACTION, MULHN )@@G@@TIPLICATION, ETC. IN ADDI- @F@@@@ TION, THE LANGUAGE CONTAINS PRIMITIHO )@@G@@VES FOR MANY OPERATIONS NEEDED@G@@@@ SPECIFICALLY TO DESCRIBE ALGORITHMSHP )@@G@@. IT IS THESE OTHER OPERATORS WHICH@]@@@@ SERVE PRI- @G@@@@ MARILY TO DHQ )@@G@@ISTINGUISH APL FROM OTHER PROGRAMMING LANGUAGES; THEY MAKE @F@@@@ IT UNHR )@@G@@NECESSARY (IN MOST INSTANCES) TO PROGRAM LOOPS, AND ENABLE @G@@@@ THE PHS )@@G@@ROGRAMMER TO SPECIFY WHAT IS TO BE DONE (HIS ALGORITHM) RATHER @C@@@@HT )@@G@@ THAN THE DETAILS OF HOW TO DO IT (A PROGRAM). @^@@@@3THE APL CHARACTERHU )@@G@@ SET. @F@@@@ BECAUSE OF THE WIDE RANGE OF OPERATIONS WHICH CAN BHV )@@G@@E DES-@G@@@@ CRIBED BY THE LANGUAGE, A GREAT MANY DIFFERENT SYMBOLS ARE HW )@@G@@NEEDED TO @H@@@@ SPECIFY THEM. INDEED ONE OF THE CRITICISMS OF APL HAHX )@@G@@S BEEN THAT THERE ARE @F@@@@ TOO MANY CHARACTERS REQUIRED. THIS OBJECHY )@@G@@TION IS EASILY ANSWERED,@G@@@@ HOWEVER, BY EXAMPLE. IN APL, THERE IS A HZ )@@G@@SINGLE CHARACTER WHICH MAY @F@@@@ BE USED TO SORT. ADMITTEDLY IT LOOIA )@@G@@KS PECULIAR, AND MAY BE DIFFI-@G@@@@ CULT TO REMEMBER AT FIRST. IN ALMOIB )@@G@@ST ANY OTHER LANGUAGE, HOWEVER, @F@@@@ A PROGRAMMER WOULD BE REQUIREIC )@@G@@D TO WRITE AN ENTIRE SUBROUTINE TO @G@@@@ DO WHAT APL DOES FOR HIM WITHID )@@G@@ THIS SINGLE SYMBOL. ANY APL USER IS @ @@@@ FREE TO RESTRICT HIMSELIE )@@G@@F TO @G@@@@ TO USING THE SUBSET OF CHARACTERS WHICH IS FOUND IN OTHER LIF )@@G@@ANGUAGES @E@@@@ BUT THE UNNECESSARY EXTRA PROGRAMMING INVOLVED SEEMS IG )@@G@@HARDLY@#@@@@ WORTH THE PRICE. @[@@@@0 @ @@@@ A NOTE TO THE NEOPHIH )@@G@@YTE @G@@@@ APL PROGRAMMER (ESPECIALLY APPLICABLE IF YOU ARE AN 'EXPERTII )@@G@@' IN SOME @G@@@@ OTHER LANGUAGE): ONCE YOU HAVE FAMILIARIZED YOURSELFIJ )@@G@@ WITH THE BASIC @G@@@@ ELEMENTS OF THE LANGUAGE, YOU SHOULD IMMEDIATELIK )@@G@@Y INVEST SOME TIME IN @F@@@@ LEARNING THE PROPER USE OF THE MORE ADVANIL )@@G@@CED TECHNIQUES. THIS @G@@@@ RELATIVELY SMALL INVESTMENT WILL PAY BIG IM )@@G@@DIVIDENDS IN ENABLING YOU TO @G@@@@ WRITE YOUR PROGRAMS QUICKLY AND EFFIN )@@G@@ORTLESSLY. MANY FORTRAN AND BASIC @G@@@@ PROGRAMMERS EXPEND A GREAT DEIO )@@G@@AL OF WASTED EFFORT BY MERELY TRANSLATING @G@@@@ WHAT THEY WOULD HAVE WRIP )@@G@@ITTEN IN THESE LANGUAGES TO APL. SUCH A TRANS- @F@@@@ LATION IS POSSIBLIQ )@@G@@E, OF COURSE, BUT IT ENTAILS MUCH MORE WORK THAN@C@@@@ NEEDED IF THE UNIIR )@@G@@QUE FEATURES OF APL ARE USED. @[@@@@0 @G@@@@ THE CHARACTER SIS )@@G@@ET NEEDED TO DESCRIBE ALL OF THE APL OPERA- @G@@@@ TIONS FAR EXCEEDSIT )@@G@@ THE NORMAL 64-CHARACTER SET AVAILABLE ON MOST COMPU- @G@@@@ TERS. A SPIU )@@G@@ECIAL CHARACTER SET HAS BEEN DEFINED, AND IT IS THE SET @F@@@@ USED IV )@@G@@IN ALL OF THE STANDARD APL LITERATURE. A TYPE BALL FOR THIS@F@@@@ CHARAIW )@@G@@CTER SET IS AVAILABLE FOR IBM TYPEWRITERS AS INPUT DEVICES, @F@@@@ MAKINIX )@@G@@G THE ENTIRE SET AVAILABLE TO THE PROGRAMMER WHO HAS ACCESS @A@@@@ TO SUIY )@@G@@CH A DEVICE. FOR PURPOSES OF @G@@@@ THIS MANUAL, WE WILL REFER TO THIS IZ )@@G@@SET AS THE 'REFERENCE' CHARACTER @[@@@@ SET. @[@@@@0 @G@@@@ JA )@@G@@ AS OF THIS WRITING, UNIVAC DOES NOT SUPPORT INPUT OF A CHARAC- @G@@@@JB )@@G@@ TER SET WHICH EXCEEDS 64 CHARACTERS, ALTHOUGH ASCII INPUT IS UNDER DE- JC )@@G@@@G@@@@ VELOPMENT. BECAUSE OF THIS, A SPECIAL CHARACTER SET HAS BEEN DEFJD )@@G@@INED @^@@@@ FOR 1100 SERIES USAGE. @G@@@@ IN THIS SET, THOSE APL CHARACJE )@@G@@TERS WHICH ALSO EXIST IN THE FIELDATA @F@@@@ AND/OR TELETYPE CHARACTJF )@@G@@ER SETS REMAIN UNCHANGED. THE ADDITIONAL @F@@@@ CHARACTERS NEEDED ARE DJG )@@G@@EFINED AS DIGRAPHS, I.E. TWO FIELDATA OR @F@@@@ TTY CHARACTERS IN COMBIJH )@@G@@NATION ARE USED TO REPRESENT A SINGLE APL @F@@@@ CHARACTER. THE FIRST CJI )@@G@@HARACTER OF MOST DIGRAPHS IS THE DOLLAR @F@@@@ SIGN, $. IN SOME CASESJJ )@@G@@, THE MASTER SPACE @ IS USED. THE PUNCHED@B@@@@ CARD CODE FOR THIS SET JK )@@G@@IS THE NORMAL @G@@@@ UNIVAC FIELDATA CODE. FROM TELETYPES, THE SAMEJL )@@G@@ GRAPHICS ARE USED, IF @G@@@@ THEY EXIST. IN DISTRIBUTED UNIVAC EXEC 8JM )@@G@@ SYSTEMS, SEVERAL CHARAC- @G@@@@ TERS WHICH EXIST ON TELETYPES ARE NJN )@@G@@ONETHELESS IGNORED BY EXEC 8 -- FOR @G@@@@ THESE, ALTERNATE CHARACTERS AJO )@@G@@RE DEFINED (THESE CHARACTERS CAN BE USED @G@@@@ ON THE 1108 SYSTEM AT MJP )@@G@@ARYLAND, HOWEVER). THROUGHOUT THE REMAINDER OF @G@@@@ THIS MANUAL, THE JQ )@@G@@FIELDATA CHARACTER SET WILL BE USED. A TRANSLATION @F@@@@ TABLE TO THJR )@@G@@E REFERENCE SET (DEFINED IN PAKIN [4]) IS INCLUDED IN @]@@@@ APPENDIX A.JS )@@G@@@]@@@@3DATA TYPES @F@@@@ APL IS PRIMARILY AN ARRAY-ORIENTED LANGJT )@@G@@UAGE -- A SINGLE @G@@@@ OPERATION MAY BE PERFORMED ON SEVERAL ELEMENTS JU )@@G@@OF AN ARRAY AT ONCE @G@@@@ (HENCE A REDUCTION IN THE NEED TO PROGRAMJV )@@G@@ LOOPS). SINCE THE LANGUAGE @F@@@@ ALLOWS ARRAYS OF DIFFERENT SIZES, OJW )@@G@@NE OF THE PROPERTIES OF AN APL@G@@@@ VARIABLE IS ITS SHAPE, WHICH CAN BEJX )@@G@@ FULLY SPECIFIED BY TWO QUANTITIES, @A@@@@ THE RANK AND THE DIMENSIONS. JY )@@G@@ @F@@@@ THE RANK OF AN APL ARRAY IS THE NUMBER OF SUBSCRIPT EXPRESSJZ )@@G@@IONS @F@@@@ NEEDED TO SPECIFY AN ELEMENT OR ELEMENTS OF IT. THE DIMENSKA )@@G@@IONS @F@@@@ SPECIFY THE RANGE OF VALUES THAT LEGAL SUBSCRIPT VALUES MAYKB )@@G@@ TAKE @C@@@@ ON. IN ADDITION, A VARIABLE MAY BE A SET OF @G@@@@ NUMBEKC )@@G@@RS OR CHARACTERS -- WE WILL CALL THE CHARACTER/NUMERIC PROPERTY @A@@@@KD )@@G@@ OF AN APL VARIABLE ITS 'MODE'. @#@@@@2 NUMERIC DATA @E@@@@ KE )@@G@@AN APL NUMBER MAY BE ANY COMBINATION OF DIGITS WITHOUT@B@@@@ INTERVENINGKF )@@G@@ BLANKS. THUS, 3 AND 500 ARE @F@@@@ VALID APL NUMBERS. APL\1100 WILL RKG )@@G@@ETAIN UP TO 18 SIGNIFICANT @E@@@@ DIGITS IN A NUMBER; POSITIONS AFTERKH )@@G@@ THE 18TH ARE IGNORED. @E@@@@ NORMALLY, NUMBERS ARE PRINTED OUT WITH ONKI )@@G@@LY 10 DIGITS, EVEN@E@@@@ IF MORE HAVE BEEN ENTERED. THE ADDITIONAL DIGIKJ )@@G@@TS CAN BE @C@@@@ PRINTED USING THE )DIGITS COMMAND (CHAPTER 4). @[@@@@KK )@@G@@0 @E@@@@ A SINGLE DECIMAL POINT IS ALLOWED IN AN APL NUMBER. AN KL )@@G@@@E@@@@ APL NUMBER FOLLOWED BY EXX (WHERE XX IS ANOTHER APL NUMBER)@F@@@@KM )@@G@@ AND NO INTERVENING SPACES INDICATES THAT THE NUMBER IS TO BE @E@@@@KN )@@G@@ MULTIPLIED BY THE POWER OF TEN SPECIFIED BY XX. HENCE @[@@@@0 KO )@@G@@@B@@@@0 3E2 3.0E1 AND 300 @[@@@@0 @A@@@@0ARE AKP )@@G@@LL VALID WAYS TO TYPE THE @^@@@@ NUMBER THREE HUNDRED. @E@@@@ APKQ )@@G@@L USES A SPECIAL CHARACTER TO INDICATE A NEGATIVE CON-@E@@@@ STANT; IN AKR )@@G@@PL\1100, IT IS THE AMPERSAND (&). USING THIS, @C@@@@ THE NUMBER 'MINUSKS )@@G@@ THREE' IS REPRESENTED BY @[@@@@0 @#@@@@0 &3 @[@@@@KT )@@G@@0 @E@@@@0ONE SHOULD KEEP IN MIND THAT THERE IS A SUBTLE DIFFERENCE KU )@@G@@@E@@@@ BETWEEN THIS AND TYPING -3. THE FIRST REPRESENTATION TELLS@E@@@@KV )@@G@@ APL TO CREATE A NUMBER WHOSE VALUE IS MINUS THREE; THE @F@@@@ SECONKW )@@G@@D CREATES A NUMBER WHOSE VALUE IS PLUS THREE AND SUBSE- @E@@@@ QUENTKX )@@G@@LY TAKES THE NEGATIVE OF IT. CONSEQUENTLY, TYPING IN @[@@@@0 @#@@@@KY )@@G@@0 -&3 @[@@@@0 @D@@@@0WILL RESULT IN A DISPLAY OF THE NUMKZ )@@G@@BER THREE, BUT @[@@@@0 @#@@@@0 &-3 @[@@@@0 @F@@@@LA )@@G@@0WILL RESULT IN A 'LEXICAL ERROR' REPORT (BECAUSE THE & WAS NOT @E@@@@LB )@@G@@ FOLLOWED IMMEDIATELY BY A DIGIT). IT SHOULD BE NOTED THAT @F@@@@ THE &LC )@@G@@ SIGN IS ACTUALLY PART OF THE NUMBER ITSELF. THIS DIS- @D@@@@ TINCTLD )@@G@@ION WILL BECOME CLEARER WHEN WE DISCUSS VECTORS.@[@@@@0 @C@@@@ TLE )@@G@@HE & SIGN MUST BE USED TO SPECIFY NEGATIVE@E@@@@ EXPONENTS -- E.G. ANOTHLF )@@G@@ER WAY TO TYPE THE NUMBER THREE @]@@@@ HUNDRED IS @[@@@@0 @^@@@@LG )@@G@@0 30000.0E&2 @[@@@@0 @F@@@@ NO DECIMAL POINTS ARE ALLOLH )@@G@@WED IN EXPONENTS. THE RANGE OF @F@@@@ EXPONENTS ALLOWED IN APL/1108LI )@@G@@ IS APPROXIMATELY PLUS OR MINUS @F@@@@ 307 (DEPENDING UPON THE PART LJ )@@G@@OF THE NUMBER TO THE LEFT OF THE @F@@@@ E). AN ATTEMPT TO SPECIFY A LK )@@G@@NUMBER OUT OF THIS RANGE (EXCEPT @E@@@@ FOR ZERO, OF COURSE) WILL RESLL )@@G@@ULT IN A 'LEXICAL ERROR'. @#@@@@2 CHARACTER DATA @F@@@@ CHARACTLM )@@G@@ER DATA IS INPUT TO APL BY ENCLOSING IT IN (SINGLE) @E@@@@ QUOTES -- TLN )@@G@@HUS 'A' OR 'ABC' ARE VALID CHARACTER DATA. IT @E@@@@ SHOULD BE NOTED TLO )@@G@@HAT ALTHOUGH SOME APL CHARACTERS MUST BE @E@@@@ ENTERED BY TYPING TWO FLP )@@G@@IELDATA CHARACTERS (E.G. $S OR $R), @F@@@@ SUCH DIGRAPHS ARE CONSIDERED LQ )@@G@@TO BE SINGLE CHARACTERS BY APL. @F@@@@ A SINGLE QUOTE MAY BE INCLUDELR )@@G@@D IN A CHARACTER STRING BY TYPING @A@@@@ TWO ADJACENT QUOTES. THUS TYLS )@@G@@PING @[@@@@0 @#@@@@0 'A''B' @[@@@@0 @E@@@@0RESULTS IN LT )@@G@@THE INPUT OF THE THREE CHARACTERS A, ', AND B. @E@@@@ UNLIKE OTHER APL LU )@@G@@SYSTEMS, APL\1100 DOES NOT PERMIT YOU TO @E@@@@ LEAVE OFF THE TRAILING LV )@@G@@QUOTE OF A LINE AND CONTINUE ON THE@C@@@@ NEXT LINE -- A 'LEXICAL ERRORLW )@@G@@' WILL RESULT. @A@@@@3THE SHAPE PROPERTIES OF APL DATA @E@@@@ ASLX )@@G@@ NOTED ABOVE, APL IS ESSENTIALLY AN ARRAY LANGUAGE; AN@E@@@@ APL VARIABLLY )@@G@@E GENERALLY CONSISTS OF A COLLECTION OF SEVERAL @F@@@@ NUMBERS OR CHARACLZ )@@G@@TERS WHICH ARE MANIPULATED AS A UNIT. SINCE @E@@@@ THE REMAINING DISMA )@@G@@CUSSION IS APPLICABLE TO DATA OF ANY MODE,@E@@@@ WE WILL REFER TO THE INMB )@@G@@DIVIDUAL PIECES OF DATA IN AN APL @E@@@@ VARIABLE AS 'ELEMENTS', WHICHMC )@@G@@ MAY BE EITHER NUMBERS OR @]@@@@ CHARACTERS.@[@@@@0 @F@@@@ THMD )@@G@@E SIMPLEST KIND OF APL VARIABLE IS THE SCALAR -- IT HAS @E@@@@ ZERO ME )@@G@@RANK (NO DIMENSIONS) AND HAS ONE ELEMENT. EXAMPLES OF@]@@@@ SCALARS AREMF )@@G@@@[@@@@0 @D@@@@0 12.6 AND 'X' . MG )@@G@@@[@@@@0 @E@@@@ THE NEXT MOST COMPLEX DATA SHAPE IS THE VECTOR. VMH )@@G@@ECTORS@E@@@@ CONSIST OF A SET OF ELEMENTS WHICH ARE ORDERED ALONG A MI )@@G@@@F@@@@ SINGLE COORDINATE -- THEY HAVE RANK 1, AND THEIR LENGTH IS THE MJ )@@G@@@A@@@@ NUMBER OF ELEMENTS IN THE VECTOR. @[@@@@0 @E@@@@ NUMERIC MK )@@G@@VECTORS ARE ENTERED BY TYPING A LIST OF SEVERAL @C@@@@ NUMBERS SEPARATEDML )@@G@@ BY AT LEAST ONE BLANK. THUS @[@@@@0 @^@@@@0 2 3 5E12 MM )@@G@@@[@@@@0 @F@@@@0IS A THREE-ELEMENT VECTOR. AT THIS POINT, THE NEED FMN )@@G@@OR THE & @B@@@@ SIGN SHOULD BECOME APPARENT -- THE VECTOR@[@@@@0 MO )@@G@@@#@@@@0 &2 3 @[@@@@0 @F@@@@0IS A SINGLE ENTITY CONTAININGMP )@@G@@ TWO VALUES, MINUS TWO AND PLUS @^@@@@ THREE. THE EXPRESSION @[@@@@MQ )@@G@@0 @#@@@@0 -2 3 ,@[@@@@0 @E@@@@0HOWEVER, CAUSES APL TO MR )@@G@@NEGATE THE ENTIRE VECTOR, WITH THE @B@@@@ RESULT BEING MINUS TWO AND MIMS )@@G@@NUS THREE. @[@@@@0 @E@@@@ CHARACTER VECTORS ARE ENTERED AS A STRMT )@@G@@ING OF CHARACTERS @ @@@@ ENCLOSED IN QUOTES, THUS @[@@@@0 @^@@@@MU )@@G@@0 'ABCDEF' @[@@@@0 @A@@@@0IS A SIX-ELEMENT CHARACTER VEMV )@@G@@CTOR. @[@@@@0 @E@@@@ WE NOTE THAT IT IS POSSIBLE TO HAVE A VECTORMW )@@G@@ CONTAINING @F@@@@ ONLY ONE ELEMENT. EVEN THOUGH SCALARS ALSO HAVE ONE MX )@@G@@ELEMENT, @F@@@@ A ONE-ELEMENT VECTOR IS A DIFFERENT QUANTITY, AS ITS MY )@@G@@RANK IS @E@@@@ ONE RATHER THAN ZERO AS FOR A SCALAR. ONE-ELEMENT VEMZ )@@G@@CTORS @D@@@@ ARE CREATED BY APL AS THE RESULT OF SOME OPERATION @F@@@@NA )@@G@@ AND CANNOT BE LITERALLY TYPED IN. IT IS ALSO POSSIBLE TO HAVE @E@@@@NB )@@G@@ A VECTOR OF ZERO ELEMENTS. ALTHOUGH SUCH A NUMERIC 'NULL @E@@@@ VECTONC )@@G@@R' CANNOT BE LITERALLY TYPED IN, THE CHARACTER 'NULL @E@@@@ VECTOR' CANND )@@G@@ BE CREATED BY TYPING TWO ADJACENT QUOTES (WITH @E@@@@ NOTHING BETWEEN TNE )@@G@@HEM). NULL VECTORS PRINT AS BLANK LINES. @[@@@@0 @F@@@@ MATRICNF )@@G@@ES ARE RANK 2 ARRAYS. APL\1100 WILL PRINT MATRICES IN@F@@@@ A COLUMNAR NG )@@G@@FORMAT. THE SECOND (COLUMN) SUBSCRIPT RUNS FROM LEFT @F@@@@ TO RIGHT ONNH )@@G@@ THE PAGE, THE FIRST (ROW) INDEX VARIES FROM TOP TO @F@@@@ BOTTOM. NUNI )@@G@@MERIC ARRAYS WILL BE PRINTED WITH AT LEAST TWO BLANKS @G@@@@ BETWEEN ELENJ )@@G@@MENTS IN EACH ROW, AND WITH THE DECIMAL POINTS (IF ANY) @G@@@@ ALIGNNK )@@G@@ED. CHARACTER ARRAYS ARE PRINTED WITHOUT INTERVENING BLANKS. @[@@@@NL )@@G@@0 @F@@@@ APL\1100 ALLOWS THE CREATION OF VARIABLES UP TO RANK 6NM )@@G@@3. @F@@@@ WHEN AN ARRAY OF GREATER THAN RANK 2 IS PRINTED, IT IS PRINNN )@@G@@TED @F@@@@ AS A SET OF MATRICES ONE PER PLANE. THE PLANES ARE SEPARATNO )@@G@@ED @F@@@@ FROM EACH OTHER BY BLANK LINES. ARRAYS OF MATRIX OR GREATENP )@@G@@R RANK@G@@@@ CANNOT BE LITERALLY TYPED IN AS CAN VECTORS AND SCALARS. TNQ )@@G@@HEY ARE @E@@@@ INSTEAD CREATED BY APL AS THE RESULT OF A SPECIFIC OPNR )@@G@@ERA- @E@@@@ TION (SUCH AS RESHAPE). WE WILL DEFER THE DISCUSSION OF NS )@@G@@@D@@@@ THESE QUANTITIES UNTIL WE COVER THE SO-CALLED 'MIXED'@]@@@@ OPERANT )@@G@@TORS. @#@@@@3APL OPERATORS @F@@@@ NOW THAT WE KNOW HOW TO ENTER DATA NU )@@G@@INTO APL, WE CAN BEGIN TO @G@@@@ DISCUSS HOW WE CAN INSTRUCT APL TO NV )@@G@@PERFORM SOME USEFUL COMPUTATIONS @G@@@@ ON THE DATA. AN APL PRIMITIVNW )@@G@@E OPERATOR IS A SYMBOL WHICH INDICATES @G@@@@ WHAT KIND OF COMPUTATIONX )@@G@@N IS TO BE DONE ON DATA (OPERANDS). WE HAVE @F@@@@ ALREADY SEEN AN ENY )@@G@@XAMPLE OF THE USE OF AN OPERATOR -- THE APL @]@@@@ STATEMENT @[@@@@NZ )@@G@@0 @^@@@@0 3 + 2@[@@@@0 @G@@@@0INSTRUCTS THE SYSOA )@@G@@TEM TO TAKE THE SUM OF 3 AND 2; THE OPERATOR IN THIS @G@@@@ CASE IS THEOB )@@G@@ '+' SIGN, AND ITS OBVIOUS MEANING IS ADDITION. NOTICE @G@@@@ THAT OC )@@G@@IN THIS EXAMPLE, THE '+' SIGN SPECIFIES THAT THE TWO OPERANDS @G@@@@OD )@@G@@ (THREE AND TWO) ARE TO BE ADDED TO EACH OTHER. OBVIOUSLY, IF ONE IS OE )@@G@@@G@@@@ GOING TO DO ADDITION, THERE MUST BE TWO NUMBERS TO ADD -- IT MAKEOF )@@G@@S NO @G@@@@ SENSE TO SAY 'ADD 5', SINCE ONE MUST BE ABLE TO ADD 5 TO SOG )@@G@@OMETHING @F@@@@ ELSE. OPERATORS WHICH REQUIRE TWO OPERANDS ARE CALLEOH )@@G@@D 'DYADIC' @G@@@@ OPERATORS, THOSE WHICH REQUIRE ONLY ONE OPERAND ARE 'OI )@@G@@MONADIC', AND @G@@@@ THOSE WHICH HAVE NO OPERANDS ARE 'NILADIC' (THEOJ )@@G@@RE IS ONLY ONE NILADIC @F@@@@ PRIMITIVE, THE 'GO TO' OPERATOR WHICH WILOK )@@G@@L BE DISCUSSED LATER.) @[@@@@0 @G@@@@ IN ADDITION TO THEIR OL )@@G@@MONADIC/DYADIC PROPERTIES, APL OPERATORS @F@@@@ MAY BE FURTHER CLASSIFIOM )@@G@@ED AS BEING 'SCALAR' OR 'MIXED'. THIS @F@@@@ CLASSIFICATION IS BASEDON )@@G@@ UPON THE MANNER IN WHICH THE OPERATOR IS @G@@@@ APPLIED TO THE INDIVIDUOO )@@G@@AL ELEMENTS OF AN OPERAND. SCALAR OPERATORS ARE@G@@@@ APPLIED TO EACH IOP )@@G@@NDIVIDUAL ELEMENT OF AN OPERAND, AND THE SHAPE OF @G@@@@ THE RESULT OQ )@@G@@IS RELATED TO THE SHAPE OF THE OPERANDS IN A RELATIVELY @G@@@@ STRAIOR )@@G@@GHTFORWARD FASHION. THE RESULTS OF MIXED OPERATORS, HOWEVER, @G@@@@OS )@@G@@ ARE NOT SO SIMPLE. MIXED OPERATORS ARE USED TO IN SOME FASHION MANI- OT )@@G@@@G@@@@ PULATE THE SHAPE OF DATA. THEY MAY BE USED, FOR EXAMPLE, TO SELEOU )@@G@@CT @G@@@@ CERTAIN ELEMENTS OUT OF AN OPERAND, TO COMBINE TWO OPERANDSOV )@@G@@ INTO ONE, @G@@@@ TO SORT AN OPERAND IN SOME SEQUENCE, ETC. WHILE THE OW )@@G@@RULES FOR DETER- @F@@@@ MINING THE SHAPE OF THE RESULT OF A SCALAR OPEROX )@@G@@ATOR ARE THE SAME @G@@@@ REGARDLESS OF THE SCALAR OPERATOR USED, THE RESOY )@@G@@ULTS OF A MIXED OPERA- @B@@@@ TOR DEPEND UPON THE OPERATOR ITSELF. OZ )@@G@@@[@@@@0 @G@@@@ FOR EACH APL OPERATOR, THERE ARE SPECIFIC REQPA )@@G@@UIREMENTS ABOUT @E@@@@ THE RANK AND DIMENSIONS OF THE OPERANDS -- THESPB )@@G@@E ARE CALLED@G@@@@ 'CONFORMABILITY' REQUIREMENTS. IF TWO OPERANDS MEET PC )@@G@@THE SHAPE REQUIRE-@G@@@@ MENTS FOR A PARTICULAR OPERATION TO BE PERFORMEPD )@@G@@D ON THEM, THEY ARE @G@@@@ SAID TO BE 'CONFORMABLE'. AN ATTEMPT TO PE )@@G@@PERFORM AN OPERATION ON TWO @G@@@@ OPERANDS WHICH ARE NOT CONFORMABLE PF )@@G@@WILL RESULT IN AN ERROR MESSAGE, @C@@@@ USUALLY EITHER 'LENGTH ERROR'PG )@@G@@ OR 'RANK ERROR'. @ @@@@2 DYADIC SCALAR OPERATORS @G@@@@ DYAPH )@@G@@DIC SCALAR OPERATORS ARE USED FOR THE NORMAL ARITHMETIC @G@@@@ OPERAPI )@@G@@TIONS IN THE LANGUAGE. SOME OF THEM ARE ADD (+), SUBTRACT (-), @G@@@@PJ )@@G@@ MULTIPLY (#), DIVIDE (%), EXPONENTIATE (*), AND LOGARITHM ($*). A PK )@@G@@@F@@@@ GREAT MANY OTHERS ARE PROVIDED; THEY ARE DISCUSSED IN DETAIL PL )@@G@@@#@@@@ IN CHAPTER 5. @[@@@@0 @G@@@@ THE TWO OPERANDS OF APM )@@G@@ DYADIC SCALAR OPERATOR MUST HAVE THE @G@@@@ SAME RANK AND DIMENSIONPN )@@G@@S, UNLESS ONE OF THEM IS A SCALAR OR A 1-ELEMENT@G@@@@ VECTOR. THE PARTPO )@@G@@ICULAR OPERATOR IS THEN APPLIED BY COMBINING THE ELE- @G@@@@ MENTS OF EAPP )@@G@@CH OPERAND ONE BY ONE. AS AN EXAMPLE, THE APL STATEMENT: @[@@@@0 PQ )@@G@@@B@@@@0 3 4 5 6 + 0 &2 3 4 @[@@@@0 @#@@@@0HAS TPR )@@G@@HE RESULT @[@@@@0 @ @@@@0 3 2 8 10 @[@@@@0 PS )@@G@@@G@@@@0WHICH IS OBTAINED BY ADDING 3 + 0, 4 + &2, 5 + 3 AND 6 + 4. WHENPT )@@G@@ ONE @G@@@@ OF THE OPERANDS IS A SCALAR OR ONE-ELEMENT VECTOR IT IS 'EXPU )@@G@@TENDED', @G@@@@ I.E. IT IS TREATED AS IF IT HAD THE SAME SHAPE AS THEPV )@@G@@ OTHER OPERAND. @#@@@@ THE STATEMENT @[@@@@0 @ @@@@0 PW )@@G@@ 6# 4 1 0 2 @[@@@@0 @^@@@@0THUS GIVES THE RESULT @[@@@@0 PX )@@G@@@ @@@@0 24 6 0 12 @[@@@@0 @G@@@@ THE SAME PY )@@G@@ELEMENT BY ELEMENT COMBINATION RULES WHEN THE OPER- @A@@@@ ANDS ARE MAPZ )@@G@@TRICES OR HIGHER RANK. @ @@@@2 MONADIC SCALAR OPERATORS @G@@@@ QA )@@G@@ MONADIC SCALAR OPERATORS ALSO OPERATE ELEMENT-BY-ELEMENT ON @E@@@@QB )@@G@@ THEIR OPERANDS. A MONADIC OPERATOR HAS ONLY ONE OPERAND, @G@@@@ WHICHQC )@@G@@ IS WRITTEN TO ITS RIGHT. ALTHOUGH THE SAME SYMBOLS ARE USED FOR @F@@@@QD )@@G@@ BOTH MONADIC AND DYADIC OPERATORS, THEY ARE NONETHELESS DIFFERENT@C@@@@QE )@@G@@ OPERATORS. ONE CAN TELL WHETHER A GIVEN SYMBOL@G@@@@ REPRESENTS A DYADQF )@@G@@IC OR MONADIC OPERATOR BY THE PRESENCE OR ABSENCE @A@@@@ OF A LEFT OQG )@@G@@PERAND. THE STATEMENT @[@@@@0 @ @@@@0 3 4 - 1 2 QH )@@G@@@[@@@@0 @G@@@@0IS AN INSTANCE OF THE DYADIC OPERATOR 'SUBTRACT', ANDQI )@@G@@ GIVES THE RESULT @[@@@@0 @ @@@@0 2 2. @[@@@@QJ )@@G@@0 @#@@@@0THE STATEMENT @[@@@@0 @ @@@@0 -4 QK )@@G@@5 @[@@@@0 @G@@@@0IS AN INSTANCE OF THE MONADIC OPERATOR NEGATE (QL )@@G@@TAKE THE NEGATIVE OF), @#@@@@ AND THE RESULT IS@[@@@@0 @ @@@@0 QM )@@G@@ &4 &5 @[@@@@0 @G@@@@0MONADIC OPERATORS ARE PROVIDEQN )@@G@@D TO NEGATE (-), EXTRACT THE SIGN OF A @G@@@@ NUMBER (#), GET THE ABSQO )@@G@@OLUTE VALUE ($!), AND MANY OTHER THINGS. @B@@@@ FOR A DETAILED DIQP )@@G@@SCUSSION, SEE CHAPTER 5.@D@@@@3NAMED VARIABLES; THE SPECIFICATION ($S) OQQ )@@G@@PERATOR @G@@@@ THE BEST METHOD OF LEARNING HOW TO USE APL ISQR )@@G@@ TO PLAY WITH IT. @G@@@@ YOU CAN NOW TYPE IN VARIOUS KINDS OF SIMPLE STAQS )@@G@@TEMENTS, AND EXAMINE @G@@@@ THE ANSWERS IMMEDIATELY. THIS SHOULD GIVQT )@@G@@E YOU A FEELING FOR WHAT EACH @F@@@@ OF THE OPERATORS DOES. WHEN YOU GEQU )@@G@@T TO THE POINT OF DOING SOME @D@@@@ SERIOUS WORK, HOWEVER, SOMETHING MOQV )@@G@@RE IS NEEDED. @[@@@@0 @G@@@@ WHEN ONE IS USING A DESK CAQW )@@G@@LCULATOR, IT IS OFTEN THE CASE THAT @F@@@@ INTERMEDIATE RESULTS NEED TO QX )@@G@@BE SAVED AND LATER USED AGAIN; THE @G@@@@ PAPER AND PENCIL BECOME EXTREQY )@@G@@MELY HANDY FOR THIS PURPOSE. MOST PRO- @G@@@@ GRAMMING LANGUAGES PROVQZ )@@G@@IDE A MECHANISM BY WHICH SUCH RESULTS MAY BE @G@@@@ GIVEN A NAME AND RA )@@G@@SAVED -- IN SUBSEQUENT CALCULATIONS, ONE NEED ONLY @F@@@@ TO REFER TORB )@@G@@ THE NAME AND THE APPROPRIATE DATA IS USED. APL IS NO@G@@@@ EXCEPTION TRC )@@G@@O THIS, AND THE 'SPECIFICATION' OR 'REPLACEMENT' OPERATOR @A@@@@ ($S) RD )@@G@@IS USED FOR THIS PURPOSE. @[@@@@0 @G@@@@ APL NAMES MAY BRE )@@G@@E ANY COMBINATION OF LETTERS AND DIGITS (NO @G@@@@ INTERVENING SPACERF )@@G@@S). THE FIRST CHARACTER MUST BE A LETTER, AND THE @G@@@@ NAME CAN BERG )@@G@@ FROM 1 TO 72 CHARACTERS IN LENGTH. APL NAMES MAY BE USED @G@@@@ FOR ORH )@@G@@THER THINGS THAN DATA, BUT WE WILL DEFER THIS TO A LATER TIME. @[@@@@RI )@@G@@0 @F@@@@ APL DATA DESCRIBED BY NAME ARE CALLED 'NAMED VARIABRJ )@@G@@LES'. @G@@@@ ALTHOUGH IT WAS IMPLIED ABOVE THAT A NAME IS ATTACHED BY APRK )@@G@@L TO DATA, @G@@@@ IN REALITY, THE SPECIFICATION OPERATOR ATTACHES THE DRL )@@G@@ATA TO THE NAME. @G@@@@ THE SPECIFICATION OPERATOR IS DYADIC, AND TAKESRM )@@G@@ A NAME ON THE LEFT AND @D@@@@ AN APL EXPRESSION ON THE RIGHT. THUS THERN )@@G@@ STATEMENT @[@@@@0 @ @@@@0 A$S 3 4 5 @[@@@@0 RO )@@G@@@G@@@@0SPECIFIES THE VECTOR QUANTITY 3 4 5 AS THE VALUE OF THE NAMED VARRP )@@G@@IABLE @F@@@@ 'A'. SUBSEQUENTLY, THE NAME MAY BE USED WHENEVER THE DATA RQ )@@G@@IS @^@@@@ WANTED -- TYPING IN @[@@@@0 @^@@@@0 RR )@@G@@ 3 # A@[@@@@0 @ @@@@0RESULTS IN A RESPONSE OF @[@@@@0 @ @@@@RS )@@G@@0 9 12 15 @[@@@@0 @ @@@@0JUST AS IF ONE HAD TYPERT )@@G@@D @[@@@@0 @ @@@@0 3# 3 4 5 @[@@@@0 @[@@@@RU )@@G@@0 @G@@@@ THE NAME 'REPLACEMENT' IS SOMETIMES USED FOR THIS ORV )@@G@@PERATOR TO @F@@@@ POINT UP THE FACT THAT THE DATA TO THE RIGHT OF THE $RW )@@G@@S OPERATOR @G@@@@ 'REPLACES' ANY DATA WHICH HAD PREVIOUSLY BEEN ASSOCIARX )@@G@@TED WITH THE SAME @G@@@@ NAME. IF ONE HAD SPECIFIED 3 4 5 AS THE VALUE RY )@@G@@OF 'A' AS ABOVE, AND @^@@@@ THEN SUBSEQUENTLY TYPED@[@@@@0 @ @@@@RZ )@@G@@0 A$S 'XYZ' @[@@@@0 @F@@@@0THEN OLD VALUE OF A (3 SA )@@G@@4 5) WOULD BE 'REPLACED' BY THE NEW VALUE @G@@@@ (THE CHARACTER VECTOR 'SB )@@G@@XYZ'). IF ONE THEN ATTEMPTED THE STATEMENT @[@@@@0 @^@@@@0 SC )@@G@@ 3 # A@[@@@@0 @F@@@@0APL WOULD RESPOND WITH A 'DOMAIN ERSD )@@G@@ROR' MESSAGE -- THIS RESULTS @F@@@@ BECAUSE A IS NOW A CHARACTER VECTORSE )@@G@@, AND AN ATTEMPT TO MULTIPLY @C@@@@ CHARACTERS BY A NUMBER IS CLEARLY MSF )@@G@@EANINGLESS. @[@@@@0 @G@@@@ AN ATTEMPT TO REFERENCE A NAME WHICHSG )@@G@@ HAD NO VALUE ASSIGNED TO @G@@@@ IT (I.E. HAS NEVER BEEN ON THE LEFTSH )@@G@@ OF A SPECIFICATION OPERATOR) WILL @ @@@@ RESULT IN A 'VALUE ERROR'. SI )@@G@@@^@@@@3SIMPLE APL STATEMENTS @E@@@@ AN APL STATEMENT IS A ONE-LINE CSJ )@@G@@OLLECTION OF OPERATORS @E@@@@ AND OPERANDS WHICH INSTRUCT APL TO COMPUTSK )@@G@@E SOMETHING. OF @F@@@@ COURSE, AN ARBIRTARY COLLECTION OF OPERATORS ANSL )@@G@@D OPERANDS IS NOT @D@@@@ SUFFICIENT, THERE ARE A FEW RULES AS TO HOW THESM )@@G@@Y MUST@F@@@@ APPEAR IN ORDER FOR APL TO UNDERSTAND THEM. THIS SET OF RUSN )@@G@@LES @F@@@@ COMPRISES THE 'SYNTAX' OF THE APL LANGUAGE, AND IF YOU TYPESO )@@G@@ IN @F@@@@ A STATEMENT WHICH VIOLATES THESE RULES, APL WILL CHASTISE YSP )@@G@@OU @E@@@@ APPROPRIATELY WITH THE ERROR MESSAGE 'SYNTAX ERROR'. MOST SQ )@@G@@@F@@@@ ERROR MESSAGES ALSO RESULT IN THE OFFENDING STATEMENT'S BEING SR )@@G@@@F@@@@ TYPED BACK AT YOU WITH THE POSITION OF THE ERROR APPROPRIATELY SS )@@G@@@F@@@@ MARKED. AT THE PRESENT TIME, APL\1100 DOES THIS FOR MOST, BUT ST )@@G@@@E@@@@ NOT ALL, ERRORS. IN A FEW CASES, THE EXACT POSITION OF THE@F@@@@SU )@@G@@ ERROR IS NOT MARKED, FUTURE VERSIONS OF APL\1100 WILL MARK THE @A@@@@SV )@@G@@ POSITION OF THE ERROR IN ALL CASES.@[@@@@0 @F@@@@ THERE IS NO LISW )@@G@@MIT TO THE NUMBER OF OPERATIONS WHICH CAN BE @E@@@@ DONE ON A LINE SASX )@@G@@VE THE NUMBER OF CHARACTERS YOU CAN TYPE. @F@@@@ UNLIKE FORTRAN AND OTHESY )@@G@@R LANGUAGES, THERE IS NO PREFERENCE FOR @E@@@@ DOING (SAY) MULTIPLICATSZ )@@G@@IONS BEFORE ADDITIONS. INSTEAD, THE@F@@@@ OPERATIONS ARE DONE IN ORDER TA )@@G@@FROM RIGHT TO LEFT. THIS STRICT @E@@@@ RIGHT-TO-LEFT SEQUENCE MAY BETB )@@G@@ ALTERED BY THE USE OF PAREN- @D@@@@ THESES -- THE FOLLOWING EXAMPLES DTC )@@G@@EMONSTRATE THIS: @[@@@@0 @ @@@@0 5 # (4 + 8) % 2 4 @[@@@@TD )@@G@@0 @F@@@@0GIVES THE RESULT 30 15. THE QUANTITY 4 + 8 IS FIRST EVALUTE )@@G@@ATED @E@@@@ GIVING THE SCALAR 12. THIS IS THEN EXTENDED TO A 2-ELEMENTTF )@@G@@@F@@@@ VECTOR, AND DIVIDED BY THE TWO-ELEMENT VECTOR 2 4, GIVING THE TG )@@G@@@E@@@@ VECTOR RESULT 6 3 . MULTIPLICATION BY 5 THEN GIVES THE@#@@@@TH )@@G@@ FINAL ANSWER. @[@@@@0 @D@@@@ IF ONE HAD LEFT OUT THE PARENTHETI )@@G@@SES, AND TYPED @[@@@@0 @ @@@@0 5 # 4 + 8 % 2 4 @[@@@@TJ )@@G@@0 @F@@@@0THE RESULT WOULD BE 40 30; 8 % 2 4 IS 4 2; 4 + 4 2 IS 8 6 ATK )@@G@@ND @^@@@@ 5 # 8 6 GIVES 40 30. @[@@@@0 @F@@@@ THE SPECIFICATTL )@@G@@ION OPERATOR MAY BE USED FREELY AS OFTEN AS @A@@@@ DESIRED ON A LINETM )@@G@@. THE STATEMENT @[@@@@0 @ @@@@0 2 + B $S 1 + A $S 3@[@@@@TN )@@G@@0 @F@@@@0CAUSES THREE THINGS TO HAPPEN -- THE VALUE 3 IS ASSIGNED TOTO )@@G@@ THE @E@@@@ VARIABLE A, THE VALUE 4 (1 + A) IS ASSIGNED TO B, AND THE TP )@@G@@@B@@@@ RESULT 6 (2 + B) IS FINALLY PRINTED. @[@@@@0 @F@@@@ WETQ )@@G@@ NOTE AT THIS POINT THAT THE RESULT OF A STATEMENT NEED NOT @G@@@@ ALWAYTR )@@G@@S BE IMMEDIATELY PRINTED. IF THE LAST (LEFTMOST) OPERATION DONE @E@@@@TS )@@G@@ IN A STATEMENT IS A SPECIFICATION, THE RESULT IS NOT TYPED.@^@@@@ THUS TT )@@G@@THE STATEMENT @[@@@@0 @A@@@@0 C $S 2 + B $S 1 + A $S 3 TU )@@G@@@[@@@@0 @F@@@@0WILL RESULT IN THE VALUE 6 BEING ASSIGNED TO C, BUT ITV )@@G@@T WILL NOT @F@@@@ BE PRINTED. IF YOU WISH TO REASSURE YOURSELF THAT C TW )@@G@@IS INDEED @#@@@@ SIX, YOU CAN TYPE@[@@@@0 @]@@@@0 C@[@@@@TX )@@G@@0 @B@@@@0BY ITSELF, AND APL WILL RESPOND WITH 6. @[@@@@0 @G@@@@TY )@@G@@ ALTHOUGH THE SPECIFICATION OPERATOR MAY BE USED WITHIN PARENTHESESTZ )@@G@@@G@@@@ EXTREME CAUTION SHOULD BE EXERCISED AS THE RESULT CAN BE UNPREDICUA )@@G@@TABLE.@G@@@@ THE EFFECTS OF SPECIFICATION WITHIN PARENTHESES ARE DISCUSSUB )@@G@@ED IN DETAIL@B@@@@ BELOW IN THE SECTION ON 'SIDE EFFECTS'. @#@@@@3SUBSCUC )@@G@@RIPTING @E@@@@ ALTHOUGH AT THIS POINT IT IS TOO EARLY TO DELVE INUD )@@G@@TO THE@E@@@@ FINER POINTS OF MIXED OPERATORS, THE SUBSCRIPTING OPERATOR UE )@@G@@@F@@@@ IS RELATIVELY EASY TO UNDERSTAND AND CAN BE OF USE EVEN AT THIS UF )@@G@@@#@@@@ EARLY STAGE. @[@@@@0 @E@@@@ WE HAVE NOTED THAT VECTORSUG )@@G@@ AND ARRAYS MAY BE CREATED AND@F@@@@ COMPUTATIONS PERFORMED ON ALL ELEMEUH )@@G@@NTS OF SUCH A VARIABLE AT @E@@@@ ONE TIME. THERE ARE TIMES, HOWEVERUI )@@G@@, WHEN WE WOULD LIKE TO @G@@@@ REFER TO A SPECIFIC ELEMENT OR GROUP OF EUJ )@@G@@LEMENTS RATHER THAN AN @#@@@@ ENTIRE OPERAND. @[@@@@0 @E@@@@UK )@@G@@ THE ELEMENTS OF A VECTOR MAY BE CONSIDERED TO ALL BE @E@@@@ NUMBEUL )@@G@@RED -- AT THE PRESENT TIME, WE WILL ASSUME THAT THIS @F@@@@ NUMBERING AUM )@@G@@LWAYS STARTS WITH 1 (ORIGIN-1 INDEXING) -- IF THERE @E@@@@ ARE THREE EUN )@@G@@LEMENTS IN A VECTOR, THEY ARE THEN OBVIOUSLY THE@F@@@@ FIRST, THE SECONDUO )@@G@@, AND THE THIRD. A PARTICULAR ONE OF THEM IS @E@@@@ REFERENCED BY PUTUP )@@G@@TING ITS SUBSCRIPT NUMBER (ITS 'INDEX') IN@D@@@@ SQUARE BRACKETS -- THUSUQ )@@G@@ IF WE HAVE PREVIOUSLY TYPED @[@@@@0 @^@@@@0 A $S 6 5 12, UR )@@G@@@[@@@@0 @^@@@@0THE RESULT OF TYPING @[@@@@0 @#@@@@0 AUS )@@G@@[2] @[@@@@0 @F@@@@0IS 5, SINCE 5 IS THE SECOND ELEMENT OF A. ELEMUT )@@G@@ENTS OF A MAY @D@@@@ ALSO BE CHANGED IN THIS MANNER -- IF WE WERE TOUU )@@G@@ TYPE @[@@@@0 @^@@@@0 A[1] $S 3 @[@@@@0 @F@@@@0AND TUV )@@G@@HEN EXAMINE A, IT WOULD NO LONGER BE 6 5 12, BUT WOULD BE @F@@@@ 3 5 1UW )@@G@@2 INSTEAD. TYPING A[4] WOULD RESULT IN AN 'INDEX ERROR' @A@@@@ SINCEUX )@@G@@ A HAS ONLY THREE ELEMENTS. @[@@@@0 @E@@@@ THE QUANTITY WITHIN UY )@@G@@THE SUBSCRIPT BRACKETS NEED NOT BE A@G@@@@ SINGLE NUMBER AS GIVEN ABOVE.UZ )@@G@@ IT MAY BE ANY VALID APL EXPRESS- @E@@@@ ION, WHICH WHEN EVALUATVA )@@G@@ED, RESULTS IN A VALUE (OR SET OF @F@@@@ VALUES) WHICH IS A LEGAL SUBSVB )@@G@@CRIPT. THUS, INSTEAD OF WRITING @D@@@@ A[2], WE COULD HAVE DONE IT TVC )@@G@@HE HARD WAY, BY WRITING:@[@@@@0 @^@@@@0 A[A[3] - 10].@[@@@@VD )@@G@@0 @F@@@@0SINCE THE VALUE OF A[3] IS 12, A[3] - 10 IS 2, AND THE FINAVE )@@G@@L @ @@@@ RESULT IS AGAIN A[2] OR 5. @[@@@@0 @E@@@@ IF THE QVF )@@G@@UANTITY WITHIN THE BRACKETS IS NOT A SCALAR, BUT@F@@@@ (SAY) A VECTOR, TVG )@@G@@HEN THE RESULT IS A VECTOR. THE SUBSCRIPTING @E@@@@ IS DONE FOR EACH VH )@@G@@SUBSCRIPT VALUE. AN EXAMPLE OF THIS IS @[@@@@0 @A@@@@0 (VI )@@G@@'ABCDEFG') [6 1 4 5] @[@@@@0 @C@@@@0WHICH RESULTS IN THE RESPONSEVJ )@@G@@ FADE . @E@@@@ VECTORS HAVE ONLY ONE SUBSCRIPT EXPRESSION, MATVK )@@G@@RICES HAVE @E@@@@ TWO, ETC. SUBSCRIPT EXPRESSIONS ARE SEPARATED FROM OVL )@@G@@NE @E@@@@ ANOTHER BY SEMICOLONS. THE NUMBER OF SUBSCRIPT EXPRESSIONSVM )@@G@@@ @@@@ WHICH ARE NEEDED TO CHOOSE @D@@@@ A SINGLE ELEMENT FROM AN ARRAVN )@@G@@Y IS THE RANK OF THE @F@@@@ ARRAY. ONE OF THE DIFFERENCES BETWEEN A VO )@@G@@SCALAR (RANK 0) AND A @F@@@@ ONE-ELEMENT VECTOR (RANK1) CAN NOW BE SEVP )@@G@@EN. IF B SAY, IS A @E@@@@ ONE-ELEMENT VECTOR, THEN WE CAN WRITE B[1VQ )@@G@@], AND WE WILL GET@F@@@@ THE (SINGLE) VALUE SAVED IN B. IF B WERE A SCAVR )@@G@@LAR, HOWEVER, @E@@@@ TYPING B[1] WOULD RESULT IN A 'RANK ERROR', SINVS )@@G@@CE SCALARS, @B@@@@ BEING RANK ZERO, HAVE NO SUBSCRIPTS. @]@@@@3SIGNIVT )@@G@@NG OFF@F@@@@ AT THIS POINT, YOU SHOULD BE ABLE TO USE APL AS A SIMPLEVU )@@G@@ DESK @D@@@@ CALCULATOR. IF YOU HAVEN'T ALREADY DONE SO, YOU @F@@@@VV )@@G@@ SHOULD NOW TURN ON A TERMINAL AND START TYPING AT IT -- IF YOU @F@@@@VW )@@G@@ DO SOMETHING WRONG, IT WILL TELL YOU, AND YOU CAN EASILY TRY @ @@@@VX )@@G@@ AGAIN UNTIL YOU GET IT RIGHT.@[@@@@0 @E@@@@ WHEN YOU HAVE FINISHVY )@@G@@ED, YOU SHOULD TELL APL THAT YOU'RE @^@@@@ GOING AWAY BY TYPING @[@@@@VZ )@@G@@0 @#@@@@0 )OFF @[@@@@0 @F@@@@0IF YOU HAVE SOME NAMED WA )@@G@@VARIABLES WHICH YOU WOULD LIKE TO SAVE @G@@@@ SO THEY ARE AVAILABLE TWB )@@G@@HE NEXT TIME YOU USE APL, TYPE )CONTINUE @F@@@@ INSTEAD OF )OFF. WC )@@G@@ IF YOU USE )CONTINUE, YOUR VARIABLES (WHICH @G@@@@ APL HAS BEEN SAVIWD )@@G@@NG FOR YOU IN A PLACE CALLED YOUR 'ACTIVE WORKSPACE') @G@@@@ WILL BE SAVWE )@@G@@ED ON DRUM IN A SPECIAL WORKSPACE WHOSE NAME IS CONTINUE. @F@@@@ THE NWF )@@G@@EXT TIME YOU SIGN ON (WITH AN @APL CARD), THE SYSTEM WILL @F@@@@ REMEMWG )@@G@@BER YOU, AND RETRIEVE YOUR CONTINUE WORKSPACE SO THAT YOU @F@@@@ CAN RWH )@@G@@ESUME FROM THE POINT AT WHICH YOU STOPPED. IT SHOULD BE @E@@@@ NOTEDWI )@@G@@ THAT YOUR WORKSPACES (YOU MAY SAVE OTHERS, TOO, SEE @F@@@@ CHAPTER 4) WJ )@@G@@ARE UNIQUELY YOUR OWN, EVEN THOUGH SOME OTHER USER @F@@@@ MAY HAVE A WK )@@G@@WORKSPACE WITH THE SAME NAME. APL DISTINGUISHES YOU @F@@@@ FROM EVERYOWL )@@G@@NE ELSE BY REMEMBERING BOTH THE ACCOUNT NUMBER AND @F@@@@ PROJECT ID WM )@@G@@FIELDS FROM YOUR @RUN CARD. THUS, IF YOU RUN LATER @F@@@@ WITH A CHANWN )@@G@@GE IN EITHER OF THESE FIELDS, APL WILL NOT BE ABLE @F@@@@ TO IDENTIFYWO )@@G@@ YOU, AND YOU WILL NOT BE ABLE TO GET AT YOUR WORK- @F@@@@ SPACES. (CWP )@@G@@HAPTER 4 CONTAINS INFORMATION ON OVERRIDING THIS, @]@@@@ HOWEVER.) WQ )@@G@@@[@@@@0 @E@@@@ UNLIKE OTHER APL IMPLEMENTATIONS, THE USE OF THE )WR )@@G@@OFF OR@E@@@@ )CONTINUE COMMANDS DOES NOT TERMINATE YOUR DIALOG WITH THE WS )@@G@@@E@@@@ COMPUTER, IT ONLY TERMINATES YOUR APL SESSION, AND RETURNS @F@@@@WT )@@G@@ CONTROL TO EXEC 8. YOU MAY THEN USE ANY OF THE OTHER EXEC 8 @E@@@@WU )@@G@@ PROCESSORS (SUCH AS BASIC OR THE TEXT EDITOR). WHEN YOU @G@@@@ FINALWV )@@G@@LY DECIDE TO TERMINATE ALL COMMUNICATION WITH THE COMPUTER @D@@@@WW )@@G@@ YOU SHOULD TYPE A NORMAL EXEC 8 @FIN CARD IMAGE. @]@@@@3TUTORIALS WX )@@G@@@E@@@@ TO HELP YOU IN UNDERSTANDING HOW THE APL OPERATORS WORK,@E@@@@WY )@@G@@ SEVERAL TUTORIALS ARE AVAILABLE. THE WORKSPACE 1 APLCOURSE@F@@@@ CONTAWZ )@@G@@INS FUNCTIONS WHICH WILL DRILL YOU IN THE USE OF SELECTED @E@@@@ APL OXA )@@G@@PERATORS BY ASKING YOU FOR THE RESULTS OF VARIOUS APL @C@@@@ EXPRESSIONSXB )@@G@@. TO ACCESS THIS WORKSPACE, TYPE @[@@@@0 @ @@@@0 )LOAD 1XC )@@G@@ APLCOURSE @[@@@@0 @F@@@@0THE SYSTEM WILL RESPOND WITH A TIME AND DXD )@@G@@ATE MESSAGE TELLING @F@@@@ YOU WHEN THIS WORKSPACE WAS LAST CHANGED.XE )@@G@@ WHEN THE SYSTEM IS @F@@@@ AGAIN READY TO ACCEPT INPUT FROM YOU (THEXF )@@G@@ CARRIAGE WILL INDENT @#@@@@ SIX SPACES) TYPE @[@@@@0 @^@@@@0 XG )@@G@@ DESCRIBE @[@@@@0 @D@@@@0YOU WILL THEN BE GIVEN INSTRUCTIONSXH )@@G@@ WHICH ARE SELF @#@@@@ EXPLANATORY. @[@@@@0 @F@@@@ ONCE YOXI )@@G@@U HAVE MASTERED THE EXERCISES IN 1 APLCOURSE, YOU CAN @D@@@@ EXAMINE THEXJ )@@G@@ MORE ADVANCED EXAMPLES IN THE WORKSPACES @F@@@@ 1 ADVANCEDEX AND 1 WSFNXK )@@G@@S. IN FACT, ALMOST EVERY WORKSPACE IN @F@@@@ LIBRARY 1 CONTAINS EXAMXL )@@G@@PLES WHICH YOU CAN EXAMINE IN ORDER TO @F@@@@ LEARN HOW TO USE APL. XM )@@G@@TO DETERMINE WHAT THESE WORKSPACES ARE, @^@@@@ ALL YOU NEED TO DO IS: XN )@@G@@@[@@@@0 @^@@@@0 )LIB 1@[@@@@0 @C@@@@0AND THE SYSXO )@@G@@TEM WILL GIVE YOU A LIST OF THEM. @^@@@@4FUNCTION DEFINITION @]@@@@XP )@@G@@3GENERAL @F@@@@ ALTHOUGH APL IS QUITE USEFUL AS A DESK CALCULXQ )@@G@@ATOR, ONLY A@G@@@@ FRACTION OF ITS CAPABILITIES ARE USED IN THIS MANNER.XR )@@G@@ THE PRIMITIVE @F@@@@ OPERATORS WHICH ARE PROVIDED ARE GENERAL IN NATXS )@@G@@URE. WHEN SOLVING@G@@@@ A SPECIFIC PROBLEM, THE CASE OFTEN OCCURS THAT XT )@@G@@ONE DOES A PARTICULAR @F@@@@ SEQUENCE OF OPERATIONS REPEATEDLY, AND COXU )@@G@@ULD MAKE GOOD USE OF A @G@@@@ SINGLE OPERATOR WHICH DID THIS SEQUENCE OXV )@@G@@F OPERATIONS WITHOUT HAVING @G@@@@ TO RETYPE THEM EACH TIME THEY WERE XW )@@G@@USED. APL PROVIDES THE CAPABILITY @F@@@@ TO CREATE SPECIALIZED OPERATOXX )@@G@@RS FOR THIS PURPOSE; THEY ARE CALLED@F@@@@ 'FUNCTIONS' AND ARE ROUGHLY AXY )@@G@@NALAGOUS TO SUBROUTINES IN OTHER @]@@@@ LANGUAGES. @[@@@@0 @G@@@@XZ )@@G@@ IN DISCUSSING APL NAMES IN CHAPTER 2, WE MENTIONED THAT NAMES YA )@@G@@@G@@@@ COULD BE USED FOR OTHER THINGS BESIDES DATA; FUNCTIONS ARE OBJECTYB )@@G@@S @G@@@@ WHICH ARE ALSO REFERRED TO BY NAME. JUST LIKE PRIMITIVE OPYC )@@G@@ERATORS, @G@@@@ FUNCTIONS MAY BE DYADIC, MONADIC OR NILADIC. IN ADDIYD )@@G@@TION, A FUNCTION @G@@@@ MAY OR MAY NOT HAVE A VALUE. THESE PROPERTIES YE )@@G@@ARE DETERMINED WHEN @ @@@@ THE FUNCTION IS DEFINED. @[@@@@0 YF )@@G@@@G@@@@ WHENEVER WE REFER TO A NAMED VARIABLE, APL TREATS IT AS IYG )@@G@@F WE @G@@@@ HAD ACTUALLY RE-TYPED THE DATA AT THAT POINT. IN A SIMILARYH )@@G@@ FASHION, @G@@@@ WHENEVER WE REFERENCE A FUNCTION NAME, APL REACTS AS YI )@@G@@IF WE HAD TYPED @F@@@@ THE INDIVIDUAL LINES OF THE FUNCTION AT THAT POYJ )@@G@@INT. THUS, WE CAN@G@@@@ CONSIDER VARIABLES AS NAMES FOR OPERANDS, AND FYK )@@G@@UNCTIONS AS NAMES FOR @]@@@@ OPERATORS. @[@@@@0 @G@@@@ A FYL )@@G@@UNCTION IS DEFINED BY ENTERING THE 'FUNCTION DEFINITION @F@@@@ MODE'YM )@@G@@, TYPING IN THE LINES OF INSTRUCTIONS WHICH DEFINE WHAT THE @G@@@@ FUNCTYN )@@G@@ION IS TO DO, AND THEN LEAVING FUNCTION DEFINITION MODE (RETURN- @G@@@@YO )@@G@@ ING TO DESK CALCULATOR MODE). WHILE WE ARE IN FUNCTION DEFINITION MODEYP )@@G@@@G@@@@ WE ARE DEFINING WHAT SHOULD BE DONE WHEN WE REFERENCE THE NAME OFYQ )@@G@@ THE @G@@@@ FUNCTION. CONSEQUENTLY, THE APL STATEMENTS TYPED IN ARE NOYR )@@G@@T IMMEDI- @G@@@@ ATELY EXECUTED (AS IN DESK CALCULATOR MODE). INSTEADYS )@@G@@, THEY ARE SAVED @G@@@@ UNTIL WE RETURN TO DESK CALCULATOR MODE AND ATTYT )@@G@@EMPT TO USE THE FUNCTION@[@@@@0 @G@@@@ THE APL STATEMENTS INYU )@@G@@ A FUNCTION ARE NUMBERED, AND EXECUTED IN @G@@@@ NUMERICAL ORDER. ANY AYV )@@G@@PL NUMBER GREATER THAN ZERO MAY BE USED AS A @F@@@@ LINE NUMBER IN THYW )@@G@@E FUNCTION DEFINITION MODE. LINE NUMBER ZERO IS@F@@@@ RESERVED FOR THE YX )@@G@@FUNCTION HEADER LINE (SEE BELOW). LINE 1.5, FOR@F@@@@ EXAMPLE, COMES BEYY )@@G@@TWEEN LINES 1 AND 2. IN THE FUNCTION DEFINITION@G@@@@ MODE, IT IS NOT RYZ )@@G@@EQUIRED THAT LINES BE TYPED IN IN ORDER, OR THAT ALL @G@@@@ POSSIBLE LIZA )@@G@@NE NUMBERS BE USED. IT IS PERFECTLY ACCEPTABLE TO HAVE @G@@@@ A LINZB )@@G@@E 999 WITHOUT HAVING LINES 1 THROUGH 998. WHEN A FUNCTION IS @G@@@@ZC )@@G@@ CLOSED, HOWEVER, APL WILL RENUMBER ALL OF THE STATEMENTS IN IT, AND ZD )@@G@@@E@@@@ GIVE THEM SEQUENTIAL INTEGER LINE NUMBERS. CONSEQUENTLY, @A@@@@ZE )@@G@@ WHEN THE FUNCTION IS RE-OPENED, @D@@@@ THE LINE NUMBERS MAY HAVE CHAZF )@@G@@NGED FROM THEIR VALUES @G@@@@ WHEN IT WAS ORIGINALLY DEFINED. THEY WILZG )@@G@@L REMAIN IN THE PROPER NUMERI-@^@@@@ CAL SEQUENCE, HOWEVER. @[@@@@0 ZH )@@G@@@E@@@@ SINCE A DEFINED FUNCTION IS EQUIVALENT TO A PRIMITIVE @F@@@@ZI )@@G@@ OPERATOR, IT MAY BE USED FREELY JUST AS IF IT WERE PRIMITIVE. @F@@@@ZJ )@@G@@ IN PARTICULAR, A FUNCTION MAY BE USED IN THE BODY OF ANOTHER @D@@@@ZK )@@G@@ FUNCTION, OR EVEN IN ITS OWN BODY. APL FUNCTIONS ARE@F@@@@ RECURSIVE TZL )@@G@@O A DEPTH LIMITED ONLY BY THE SIZE OF A WORKSPACE. @B@@@@3DEFINING A ZM )@@G@@NEW FUNCTION: THE HEADER LINE @G@@@@ TO DEFINE A NEW FUNCTION, YZN )@@G@@OU FIRST TYPE THE APL SYMBOL $F @G@@@@ (WHICH OPENS FUNCTION DEFINITZO )@@G@@ION), AND THEN TYPE (ON THE SAME LINE) @G@@@@ THE 'FUNCTION HEADER'. ZP )@@G@@ THE 'FUNCTION HEADER' TELLS APL WHAT THE NAME @F@@@@ OF THE FUNCTION IZQ )@@G@@S TO BE, WHETHER OR NOT IT IS TO HAVE A RESULT, @G@@@@ WHETHER IT IS NILZR )@@G@@ADIC, MONADIC OR DYADIC, AND WHETHER IT IS TO HAVE @^@@@@ ANY 'LOCAL ZS )@@G@@VARIABLES'. @[@@@@0 @D@@@@ THE GENERAL FORM OF A FUNCTION HEZT )@@G@@ADER IS: @[@@@@0 @F@@@@0 $F $S ; ; ETC.@[@@@@0 @]@@@@0WHERE: @[@@@@0 @F@@@@ZV )@@G@@ $F CAUSES THE SYSTEM TO ENTER FUNCTION DEFINI- @A@@@@ZW )@@G@@0 TION MODE. @[@@@@0 @F@@@@ ZX )@@G@@ IS THE NAME TO BE USED FOR THE RESULT OF @F@@@@ ZY )@@G@@ THE FUNCTION, IF IT HAS ONE. IF THE FUNC- @F@@@@ ZZ )@@G@@ TION HAS NO RESULT, THEN AND THE @E@@@@ AA )@@G@@ $S WHICH FOLLOWS IT SHOULD BE OMITTED. @[@@@@0 @E@@@@ IS A NAME USED TO REPRESENT THE LEFT @F@@@@ AC )@@G@@ ARGUMENT (IF THE FUNCTION IS DYADIC). IF @F@@@@ AD )@@G@@ THE FUNCTION HAS NO LEFT ARGUMENT (I.E. IT @E@@@@ AE )@@G@@ IS NILADIC OR MONADIC), THEN THIS IS @ @@@@ OMIAF )@@G@@TTED. @[@@@@0 @D@@@@ IS THE NAME OF THE FUNCTIONAG )@@G@@. @[@@@@0 @F@@@@ IS THE NAME OF THE RIGHT ARAH )@@G@@GUMENT. IF THE @E@@@@ FUNCTION HAS NONE (I.E. IT AI )@@G@@IS NILADIC),@B@@@@ THEN THIS IS OMITTED.@[@@@@0 AJ )@@G@@@G@@@@ ; ETC. ARE NAMES TO BE USED FOR 'LOCAL VARIABLESAK )@@G@@' @E@@@@ OF THE FUNCTION (SEE BELOW). YOU MAY AL )@@G@@@E@@@@ DECLARE AS MANY LOCAL VARIABLES AS YOU @E@@@@AM )@@G@@ WISH, OR NONE AT ALL. THE NAME TO BE @E@@@@ AN )@@G@@ USED FOR EACH LOCAL VARIABLE MUST BE @F@@@@ AO )@@G@@ SEPARATED FROM WHATEVER APPEARS TO ITS LEFT @C@@@@ AP )@@G@@ ON THE LINE BY A SEMICOLON.@[@@@@0 @F@@@@ TO AVOID CONFUAQ )@@G@@SING TWO NAMES WITH A SINGLE VERY LONG NAME, @E@@@@ THE ARGUMENT AND AR )@@G@@FUNCTION NAMES MUST BE SEPARATED FROM EACH@ @@@@ OTHER BY AT LEAST ONE BAS )@@G@@LANK. @^@@@@3THE BODY OF A FUNCTION @F@@@@ WHEN YOU HAVE TYPED IAT )@@G@@N YOUR FUNCTION HEADER LINE (AND HIT@C@@@@ CARRIAGE RETURN), THE SYSTEM AU )@@G@@WILL RESPOND WITH @[@@@@0 @^@@@@ [1] @[@@@@0 AV )@@G@@@G@@@@0AND WAIT FOR YOU TO TYPE THE FIRST LINE. THIS (AND ANY OTHER LINAW )@@G@@ES YOU@G@@@@ TYPE IN) MAKE UP THE 'BODY' OF THE FUNCTION. THEY ARE THE AX )@@G@@MEANS BY @G@@@@ WHICH YOU TELL APL WHAT IT SHOULD DO WHENEVER THE FUNAY )@@G@@CTION IS REFERRED @[@@@@ TO. @[@@@@0 @G@@@@ A MINIMAL AMOUNAZ )@@G@@T OF CHECKING FOR CORRECTNESS IS DONE AS LINES @G@@@@ ARE TYPED IN, ANDBA )@@G@@ IF AN ERROR IS DETECTED, AN APPROPRIATE MESSAGE WILL @G@@@@ BE DISPLAYEBB )@@G@@D. THE SYSTEM WILL THEN PROMPT YOU BY PRINTING THE LINE @G@@@@ NUMBEBC )@@G@@R FOR THE NEXT LINE IT EXPECTS TO READ (IF YOU HAD AN ERROR OR @G@@@@BD )@@G@@ DIDN'T TYPE ANYTHING, IT MAY ASK FOR THE SAME LINE AGAIN). YOU ARE NOTBE )@@G@@@G@@@@ REQUIRED TO GIVE IT THE LINE IT WANTS, THE PROMPTING IS MERELY TOBF )@@G@@ SAVE @F@@@@ YOU THE TROUBLE OF TYPING SEQUENTIAL LINE NUMBERS. TO TYPEBG )@@G@@ IN A @F@@@@ DIFFERENTLY NUMBERED LINE, YOU NEED ONLY TYPE THE LINE NUMBBH )@@G@@ER EN-@G@@@@ CLOSED IN BRACKETS BEFORE YOU TYPE IN THE TEXT OF THE LINE.BI )@@G@@ IN FACT, @G@@@@ IF YOU CHANGE YOUR MIND, YOU COULD TYPE IN SEVERAL LIBJ )@@G@@NE NUMBERS (EACH @G@@@@ ENCLOSED IN BRACKETS) ON THE SAME LINE BEFORE YBK )@@G@@OU ACTUALLY TYPE THE @B@@@@ THE TEXT OF THE STATEMENT. APL WILL BL )@@G@@@D@@@@ ACCEPT THE LAST (RIGHTMOST) LINE NUMBER TYPED AS THE @#@@@@ DESIRBM )@@G@@ED ONE. @B@@@@3LINE DELETION, INSERTION AND RETYPING @G@@@@ BN )@@G@@ WHENEVER A LINE NUMBER IS TYPED BEFORE ENTERING A STATEMENT, @G@@@@BO )@@G@@ THEN THAT IS THE LINE NUMBER WHICH IS USED FOR THAT STATEMENT. IF IT BP )@@G@@@G@@@@ IS THE SAME AS THE LINE NUMBER OF A STATEMENT WHICH ALREADY EXISTBQ )@@G@@S, @F@@@@ THE OLD STATEMENT EFFECTIVELY DISAPPEARS, AND THE NEW ONE IBR )@@G@@S USED@G@@@@ INSTEAD. LINES MAY BE INSERTED BETWEEN OTHER LINES MERELY BS )@@G@@BY TYPING @G@@@@ A LINE NUMBER WHICH IS IN BETWEEN THE LINE NUMBERS DEBT )@@G@@SIRED. IT IS NOT @G@@@@ POSSIBLE TO DELETE A LINE BY ONLY TYPING ITS LIBU )@@G@@NE NUMBER AND HITTING @G@@@@ CARRIAGE RETURN. INSTEAD OF ACCEPTING SUBV )@@G@@CH AN EMPTY LINE, APL WILL @G@@@@ PROMPT YOU AGAIN WITH THE SAME LINEBW )@@G@@ NUMBER. THIS FEATURE IS TO PRO- @F@@@@ TECT YOU FROM ACCIDENTALLY DEBX )@@G@@LETING A LINE. TO DELETE A LINE IN @G@@@@ APL\1100, YOU MUST ENTER THE BY )@@G@@LAMP (COMMENT) SYMBOL $:, AND THEN HIT @G@@@@ CARRIAGE RETURN. A LINBZ )@@G@@E WHICH CONTAINS THIS SYMBOL AND NOTHING ELSE @C@@@@ IS CONSIDERED VACCA )@@G@@UOUS, AND WILL BE DELETED. @B@@@@3CLOSING THE DEFINITION OF A FUNCTIOCB )@@G@@N @G@@@@ ONCE YOU HAVE COMPLETED TYPING THE DEFINITION OF YOCC )@@G@@UR FUNC- @G@@@@ TION, YOU CLOSE IT AND RETURN TO DESK CALCULATOR MODECD )@@G@@ BY AGAIN TYPING @G@@@@ THE FUNCTION DEFINITION CHARACTER $F. THIS CHACE )@@G@@RACTER MAY APPEAR ON @G@@@@ THE SAME LINE AS TEXT WHICH HAS BEEN TYPECF )@@G@@D IN, OR ON A LINE BY ITSELF. @E@@@@ ANYTHING TYPED TO THE RIGHT OF THE CG )@@G@@$F WILL BE IGNORED. @[@@@@0 @G@@@@ IF A $F APPEARS AS A CH )@@G@@CHARACTER CONSTANT (I.E. WITHIN QUOTES), @G@@@@ IT WILL NOT CAUSE THE FCI )@@G@@UNCTION TO BE CLOSED. IN ADDITION, A $F TYPED @G@@@@ AFTER A LAMP $: WCJ )@@G@@ILL BE CONSIDERED AS PART OF THE COMMENT, AND THE @B@@@@ FUNCTION DECK )@@G@@FINITION WILL REMAIN OPEN. @B@@@@3REOPENING THE DEFINITION OF A FUNCTCL )@@G@@ION @G@@@@ IT OFTEN OCCURS THAT ONE WISHES TO CHANGE SOMETHINGCM )@@G@@ IN A FUNC- @G@@@@ TION AFTER HAVING PREVIOUSLY DEFINED IT; THIS IS DONECN )@@G@@ BY TYPING THE @E@@@@ FUNCTION DEFINITION CHARACTER ($F) FOLLOWED BY CO )@@G@@THE NAME @^@@@@ OF THE FUNCTION ITSELF @F@@@@ (SINCE THE FUNCTION HASCP )@@G@@ ALREADY BEEN DEFINED, ITS HEADER LINE @G@@@@ SHOULD NOT BE RETYPED).CQ )@@G@@ IN THE USUAL FASHION, THE SYSTEM WILL PROMPT @G@@@@ YOU WITH THE NUMBCR )@@G@@ER OF THE NEXT LINE IT EXPECTS YOU TO TYPE; SINCE YOU @G@@@@ ARE RE-OPENCS )@@G@@ING AN OLD FUNCTION, IT INITIALLY ASSUMES THAT YOU WISH TO @G@@@@ ADD NCT )@@G@@EW LINES TO THE END OF WHAT IS ALREADY THERE. THE LINE NUMBER @F@@@@CU )@@G@@ TYPED OUT WILL BE ONE GREATER THAN THE NUMBER OF LINES ALREADY IN@#@@@@CV )@@G@@ THE FUNCTION. @[@@@@0 @G@@@@ IT IS POSSIBLE TO RE-OPEN ACW )@@G@@N OLD FUNCTION, DO SOME EDITING, @G@@@@ AND CLOSE IT AGAIN ALL IN ONECX )@@G@@ LINE. TO DO THIS, RE-OPEN THE FUNCTION @G@@@@ IN THE NORMAL FASHION (CY )@@G@@$F FOLLOWED BY THE FUNCTION NAME), TYPE THE @F@@@@ EDITING INFORMATICZ )@@G@@ON ON THE SAME LINE (WHICH MAY BE A LINE NUMBER @G@@@@ FOLLOWED BY THE TDA )@@G@@EXT OF A STATEMENT) AND THEN CLOSE THE DEFINITION @G@@@@ BY TYPING TDB )@@G@@HE $F. ANY EDITING COMMAND (SEE BELOW) MAY BE TYPED AFTER @G@@@@ THE NDC )@@G@@AME OF THE FUNCTION. APL WILL SCAN THE LINE, AND WHEN AN EDITING @G@@@@DD )@@G@@ COMMAND IS DETECTED, PERFORM IT. IT WILL THEN RETURN TO THE ORIGINAL DE )@@G@@@G@@@@ LINE (IF POSSIBLE) AND CONTINUE SCANNING FOR ANOTHER EDITING COMMDF )@@G@@AND @G@@@@ (WHICH WILL BE DONE), OR THE CLOSING $F, OR THE END OF THE DG )@@G@@STATEMENT. @G@@@@ IF THE $F IS NOT ON THE LINE, APL WILL REMAIN IN THE DH )@@G@@FUNCTION DEFINI- @G@@@@ TION MODE AND PROMPT YOU WITH THE LINE NUMBER ODI )@@G@@F THE NEXT STATEMENT @]@@@@ IT EXPECTS.@]@@@@REMAIN 5 @ @@@@3FUNCTDJ )@@G@@ION EDITING COMMANDS @G@@@@ APL PROVIDES SEVERAL COMMANDS TO DK )@@G@@MAKE FUNCTION EDITING EASIER. @G@@@@ FUNCTION EDITING COMMANDS ARE ENCLODL )@@G@@SED IN BRACKETS. APL DISTINGUISHES @G@@@@ THEM FROM SUBSCRIPTS BECAUSE DM )@@G@@THEY MUST APPEAR AT THE BEGINNING (LEFT @F@@@@ SIDE) OF A TYPED LINE. DN )@@G@@ A FUNCTION COMMAND WHICH APPEARS ANYWHERE@G@@@@ AFTER APL TEXT HAS BEENDO )@@G@@ TYPED ON A LINE WILL USUALLY RESULT IN THE @^@@@@ MESSAGE 'DEFN ERRDP )@@G@@OR'. @[@@@@0 @G@@@@ THE SIMPLEST OF THE FUNCTION EDITING CODQ )@@G@@MMANDS, LEFT BRACKET, @G@@@@ LINE NUMBER, RIGHT BRACKET HAS ALREADY BEDR )@@G@@EN INTRODUCED. IT MEANS @G@@@@ 'ASSIGN THE SPECIFIED STATEMENT NUMDS )@@G@@BER TO THE FOLLOWING STATEMENT'. @G@@@@ THE OTHERS ARE LISTED BELOW. DT )@@G@@ NOTE THAT ALTHOUGH THESE EDITING COMMANDS@G@@@@ HAVE THE SAME FORMAT ASDU )@@G@@ THE EDITING COMMANDS ON OTHER APL SYSTEMS, @C@@@@ THE MEANING OF SODV )@@G@@ME OF THEM DIFFERS SLIGHTLY. @[@@@@0 @D@@@@ ["] DW )@@G@@DISPLAY THE ENTIRE FUNCTION. @E@@@@ [N"] DISPLAY LINEDX )@@G@@ 'N' OF THE FUNCTION. @F@@@@ [N"M] DISPLAY 'M' LINES,DY )@@G@@ STARTING FROM LINE 'N'.@G@@@@ ["N] PREPARE TO CHANGE DZ )@@G@@SELECTED PORTIONS OF LINE @F@@@@ 'N'. LINE CEA )@@G@@HANGING IS COVERED BELOW. @B@@@@2 EDITING A LINE: THE LINE CHANGE MOEB )@@G@@DE @G@@@@ THE EDITING COMMAND ["N] CAUSES APL TO ENTER THE LIEC )@@G@@NE CHANGE @G@@@@ MODE FOR LINE 'N'. IN THIS MODE, SMALL PORTIONS OF AED )@@G@@ STATEMENT MAY BE @E@@@@ CHANGED WITHOUT HAVING TO RETYPE THE ENTIRE STAEE )@@G@@TEMENT. @[@@@@0 @F@@@@ WHEN THE FUNCTION EDITING COMMANDEF )@@G@@ ["N] IS DETECTED, THE @G@@@@ LINE IS DISPLAYED, AND THE SYSTEM THEN WAEG )@@G@@ITS FOR A LINE CHANGE COMMAND @#@@@@ OF THE FORM. @[@@@@0 @C@@@@EH )@@G@@ A) /// OR @C@@@@ B) // OR @B@@@@ C) ///EJ )@@G@@ G @[@@@@0 @F@@@@ THE FIRST NON-BLANK APL CHARACTER ON THE LEK )@@G@@INE ( / IN THE @ @@@@ EXAMPLES ABOVE) IS USED AS A @G@@@@ DELIMITER TEL )@@G@@O SEPARATE STRING 1 FROM STRING 2 AND (POSSIBLY) TO MARK @G@@@@ THE EEM )@@G@@ND OF STRING 2. APL WILL SCAN THE DISPLAYED STATEMENT FOR AN @G@@@@EN )@@G@@ OCCURENCE OF THE CHARACTERS WHICH MAKE UP STRING 1. WHEN THE MATCH EO )@@G@@@G@@@@ IS DETECTED, THE OCCURENCE OF STRING 1 IN THE STATEMENT IS CHANGEEP )@@G@@D TO @G@@@@ STRING 2. IF FORM 'A' ABOVE IS USED, THE REMAINDER OF THE EQ )@@G@@STATEMENT @G@@@@ IS UNCHANGED. IF FORM 'B' IS USED, THE REMAINDER OF ER )@@G@@THE STATEMENT @G@@@@ (AFTER STRING 2) IS BLANKED. IF ANY NON-BLANK ES )@@G@@CHARACTER FOLLOWS THE @F@@@@ THIRD DELIMITER, THEN ALL OCCURENCES OF SET )@@G@@TRING 1 IN THE LINE ARE @G@@@@ CHANGED TO STRING 2 (INSTEAD OF JUST THE EU )@@G@@FIRST). AFTER EDITING THE @F@@@@ LINE, THE NEW VERSION OF THE LINE IEV )@@G@@S AGAIN DISPLAYED, AND APL IS @G@@@@ PREPARED TO ACCEPT ANOTHER CHANGE CEW )@@G@@OMMAND FOR THAT LINE. ANY NUMBER @G@@@@ OF SUCH CHANGES MAY BE MADE TEX )@@G@@O A LINE -- EACH TIME A CHANGE IS MADE, @G@@@@ THE NEW LINE WILL BE REEY )@@G@@-DISPLAYED. A BLANK LINE (CARRIAGE RETURN) @G@@@@ SIGNALS APL TO ACEZ )@@G@@CEPT THE MOST RECENTLY DISPLAYED VERSION OF THE LINE @D@@@@ AND RETURN FA )@@G@@TO THE NORMAL FUNCTION DEFINITION MODE. @[@@@@0 @G@@@@ IN FB )@@G@@THE LINE CHANGE MODE, ANY PORTION OF THE TYPED LINE, INCLU- @G@@@@ DING FC )@@G@@THE LINE NUMBER, MAY BE CHANGED. SINCE THE LINE IS NOT INSERTED @G@@@@FD )@@G@@ INTO THE FUNCTION UNTIL ONE LEAVES THE LINE CHANGE MODE, THIS FEATURE FE )@@G@@@G@@@@ MAY BE USED TO PRODUCE A COPY OF A PARTICULAR STATEMENT WITH A CHFF )@@G@@ANGED @G@@@@ LINE NUMBER, WITHOUT DESTROYING THE ORIGINAL STATEMENT. STFG )@@G@@RINGS 1 AND @F@@@@ 2 MAY CONTAIN ANY NUMBER OF CHARACTERS (EXCEPT THAT SFH )@@G@@TRING 1 MUST@A@@@@ HAVE AT LEAST ONE). A LINE MAY BE @F@@@@ LENGTHENED FI )@@G@@BY A CHANGE COMMAND TO A MAXIMUM OF 132 CHARACTERS; @G@@@@ AN ATTEMPT FJ )@@G@@TO LENGTHEN A LINE BEYOND THIS WILL RESULT IN A 'LENGTH @]@@@@ ERRORFK )@@G@@'. @#@@@@2 LOCKED FUNCTIONS@G@@@@ IT IS SOMETIMES DESIRABLE TFL )@@G@@O KEEP SECRET THE EXACT STATEMENTS @G@@@@ WHICH COMPRISE A FUNCTION. TFM )@@G@@HIS IS DONE BY LOCKING THE FUNCTION DEFI- @G@@@@ NITION. A LOCKED FUNCTFN )@@G@@ION MAY BE USED IN THE SAME MANNER AS ANY OTHER @G@@@@ FUNCTION, HOWEVERFO )@@G@@, ANY ATTEMPT TO RE-OPEN IT WILL RESULT IN A 'DEFN @F@@@@ ERROR'. INFP )@@G@@ ADDITION, WHEN AN ERROR OCCURS IN THE EXECUTION OF @F@@@@ A LOCKED FUFQ )@@G@@NCTION, THE STATEMENT WHICH CAUSED THE ERROR WILL @G@@@@ NOT BE DISPFR )@@G@@LAYED, ALTHOUGH THE FUNCTION NAME AND LINE NUMBER WILL. @F@@@@ AS A FS )@@G@@CONSEQUENCE, IT IS IMPOSSIBLE TO DISPLAY THE CONTENTS OF A @#@@@@ LOCKEFT )@@G@@D FUNCTION. @[@@@@0 @D@@@@ A FUNCTION IS LOCKED BY USING THE LOCFU )@@G@@K SYMBOL, $K@G@@@@ INSTEAD OF THE NORMAL FUNCTION DEFINITION SYMBOL $F. FV )@@G@@ THE $K MAY BE @G@@@@ USED EITHER TO OPEN OR CLOSE THE DEFINITION (ORFW )@@G@@ BOTH). A PREVIOUSLY @G@@@@ DEFINED UNLOCKED FUNCTION MAY BE LOCKED BFX )@@G@@Y RE-OPENING ITS DEFINITION @G@@@@ USING $K IN PLACE OF $F. SINCE A LFY )@@G@@OCKED FUNCTION MAY NEVER BE DIS- @F@@@@ PLAYED OR CHANGED AGAIN, ONE FZ )@@G@@SHOULD NOT LOCK A FUNCTION UNLESS AN@D@@@@ UNLOCKED COPY OR PRINTOUT OF GA )@@G@@IT EXISTS ELSEWHERE. @#@@@@3CORRECTING ERRORS@F@@@@ WHEN THE FUNGB )@@G@@CTION DEFINITION MODE IS ENTERED, A COMPLETE @F@@@@ COPY OF THE FUNCTGC )@@G@@ION IS MADE. THE ORIGINAL COPY IS KEPT ALSO, @F@@@@ AND IT IS NOT REPGD )@@G@@LACED BY THE EDITED COPY UNTIL THE FUNCTION @F@@@@ DEFINITION MODE IGE )@@G@@S CLOSED. WHEN THE DEFINITION MODE IS OPEN, @F@@@@ ANY LINE MAY BE CGF )@@G@@HANGED, INCLUDING THE FUNCTION HEADER LINE. @F@@@@ SINCE THE ORIGINAGG )@@G@@L COPY OF A FUNCTION IS NOT DISTURBED, IT IS @F@@@@ POSSIBLE TO MAKE GH )@@G@@A COPY OF A FUNCTION BY OPENING IT, CHANGING @F@@@@ ITS NAME (ON THE GI )@@G@@HEADER LINE), AND CLOSING. BY CHANGING THE @F@@@@ NAME, YOU HAVE DEGJ )@@G@@FINED AN ENTIRELY NEW FUNCTION, AND THE ORIGI- @D@@@@ NAL COPY (WITH THGK )@@G@@E OLD NAME) WILL REMAIN UNDISTURBED.@[@@@@0 @F@@@@ THIS FEATUREGL )@@G@@ CAN BE USED WHEN ERRORS HAVE BEEN MADE WHILE @F@@@@ EDITING WHICH AREGM )@@G@@ SO SEVERE AS TO MAKE IT WORTHWHILE TO DIS- @F@@@@ CARD THE EDITED FGN )@@G@@UNCTION COMPLETELY AND REVERT TO THE ORIGINAL @F@@@@ COPY. ONE CAN CHGO )@@G@@ANGE THE NAME OF THE FUNCTION BEING EDITED AND @F@@@@ LEAVE THE DEFINITGP )@@G@@ION MODE. THE RESULT WILL BE THAT BOTH THE @F@@@@ ORIGINAL FUNCTIONGQ )@@G@@ AND THE RENAMED ONE WILL EXIST IN THE WORK- @F@@@@ SPACE. THE RENAMGR )@@G@@ED ONE MAY THEN BE DISCARDED USING )ERASE, @E@@@@ AND ANOTHER ATTEMGS )@@G@@PT MADE TO EDIT THE ORIGINAL FUNCTION. @[@@@@0 @F@@@@ A SIMIGT )@@G@@LAR FEATURE EXISTS WHILE IN THE LINE CHANGE MODE. @F@@@@ IN THE LINEGU )@@G@@ CHANGE MODE, ANYTHING ON THE LINE MAY BE CHANGED @F@@@@ INCLUDING TGV )@@G@@HE LINE NUMBER. THE TEXT OF THE EDITED LINE IS NOT @F@@@@ INCORPORATEGW )@@G@@D INTO THE BODY OF THE FUNCTION UNTIL ONE LEAVES THE @F@@@@ LINE CHANGEGX )@@G@@ MODE (BY ENTERING A BLANK LINE). CONSEQUENTLY, ONE @F@@@@ CAN DISCARDGY )@@G@@ THE RESULTS OF A BADLY EDITED LINE BY CHANGING ITS @#@@@@ LINE NUMBERGZ )@@G@@. @[@@@@0 @ @@@@3ARGUMENTS AND LOCAL VARIABLES@F@@@@ SINCE HA )@@G@@A DEFINED FUNCTION WILL ACT LIKE A PRIMITIVE OPERATOR @G@@@@ WHEN REFEREHB )@@G@@NCED, IT IS CLEAR THAT IT MUST HAVE DATA TO OPERATE ON. @G@@@@ WHEN HC )@@G@@A DYADIC FUNCTION IS USED, FOR EXAMPLE, WE TYPE THE LEFT OPERAND, @F@@@@HD )@@G@@ THE FUNCTION NAME, AND THE RIGHT OPERAND, JUST AS WE WOULD FOR A @F@@@@HE )@@G@@ PRIMITIVE. SINCE THE FUNCTION MUST BE ABLE TO OPERATE ON THESE @F@@@@HF )@@G@@ OPERANDS (WHICH ARE CALLED ITS ARGUMENTS) THERE MUST BE A WAY @F@@@@HG )@@G@@ TO REFER TO THEM WITHIN THE BODY OF THE FUNCTION. THE LEFT AND @C@@@@HH )@@G@@ RIGHT ARGUMENT NAMES ARE USED FOR THIS PURPOSE.@[@@@@0 @E@@@@ HI )@@G@@WHENEVER IT IS NECESSARY IN THE BODY OF A FUNCTION TO @G@@@@ REFER TO THHJ )@@G@@E VALUE OF AN ARGUMENT, WE USE THE NAME WE HAVE DEFINED @F@@@@ FOR THK )@@G@@HIS PURPOSE ON THE FUNCTION HEADER LINE. WHEN THE FUNCTION @F@@@@ IS ENHL )@@G@@TERED, APL WILL AUTOMATICALLY CREATE VARIABLES WITH THESE @E@@@@ NAMESHM )@@G@@, AND ASSIGN TO THEM THE VALUES OF THE LEFT AND RIGHT@F@@@@ OPERANDS. HN )@@G@@THESE NAMES MAY THEN BE USED IN THE BODY OF THE FUNC-@G@@@@ TION TO REFHO )@@G@@ERENCE THE DATA. NAMED VARIABLES CREATED IN THIS MANNER @F@@@@ HAVE HP )@@G@@NO SIGNIFICANCE EXCEPT WHEN THE FUNCTION IS BEING EXECUTED; @F@@@@ THEY HQ )@@G@@ARE CREATED WHEN IT STARTS AND DISCARDED WHEN IT FINISHES. @[@@@@0 HR )@@G@@@G@@@@ THE VARIABLES CREATED FOR THE ARGUMENTS OF A FUNCTION ARE NOHS )@@G@@T @G@@@@ THE SAME AS THE OPERANDS USED ON THE LINE IN WHICH THE FUNCHT )@@G@@TION IS @G@@@@ CALLED, THEY ARE COPIES OF THESE OPERANDS. A SPECIFIHU )@@G@@CATION OPERATOR @G@@@@ IN THE FUNCTION BODY MAY HAVE ONE OF THESE NAMEHV )@@G@@S AS ITS LEFT ARGU- @G@@@@ MENT, BUT THE VALUES OF THE ORIGINAL OPERHW )@@G@@ANDS WILL NOT BE AFFECTED @]@@@@ BY THIS. @[@@@@0 @G@@@@ HX )@@G@@JUST AS WE MUST HAVE SOME METHOD OF REFERENCING THE ARGUMENTS @F@@@@HY )@@G@@ OF A FUNCTION, WE MUST ALSO BE ABLE TO SPECIFY WHAT ITS RESULT IS@G@@@@HZ )@@G@@ TO BE, AND THE RESULT NAME IS USED FOR THIS PURPOSE. IF THE FUNC- IA )@@G@@@F@@@@ TION HAS A RESULT, THEN SOMEWHERE IN THE BODY OF A FUNCTION, THE IB )@@G@@@G@@@@ VALUE MUST BE SPECIFIED BY STORING THE DESIRED VALUE IN THE RESULIC )@@G@@T @F@@@@ VARIABLE. AS FOR ARGUMENT NAMES, THE NAME USED FOR THE RESID )@@G@@ULT @E@@@@ HAS NO SIGNIFICANCE UNLESS THE FUNCTION IS BEING EXECUTED. IE )@@G@@@[@@@@0 @F@@@@ VARIABLES LIKE THE ARGUMENTS AND RESULT, WHICH AIF )@@G@@RE CREATED @F@@@@ AND DESTROYED AS WE ENTER AND LEAVE A FUNCTION, ARE CIG )@@G@@ALLED 'LOCAL@G@@@@ VARIABLES'. IT SOMETIMES HAPPENS THAT A REASONABLY CIH )@@G@@OMPLEX FUNCTION @F@@@@ MAY HAVE NEED TO SAVE SEVERAL INTERMEDIATE RESUII )@@G@@LTS, AND NATURALLY@G@@@@ THE SPECIFICATION OPERATOR IS USED FOR THIS. WIJ )@@G@@E ARE FREE TO USE ANY @F@@@@ NAMED VARIABLE (INCLUDING RESULT AND ARGUIK )@@G@@MENTS) FOR THIS PURPOSE,@G@@@@ BUT IF THESE RESULTS HAVE NO SIGNIFICANCEIL )@@G@@ EXCEPT INTERNALLY TO THE @G@@@@ FUNCTION, WE USUALLY DECLARE THE VAIM )@@G@@RIABLE NAMES TO BE USED AS LOCAL @F@@@@ VARIABLES ON THE FUNCTION HEAIN )@@G@@DER LINE. THESE VARIABLES WILL THEN@C@@@@ BE DISCARDED WHEN THE FUNCTIOIO )@@G@@N TERMINATES. @ @@@@3MASKING OF VARIABLE NAMES @F@@@@ SINCE IP )@@G@@A FUNCTION IS USED IN THE SAME FASHION AS A PRIMITIVE @F@@@@ OPERATOR, AIQ )@@G@@ND SINCE WE MAY USE PRIMITIVE OPERATORS IN THE BODY OF@F@@@@ A FUNCTION IR )@@G@@IT IS CLEAR THAT WE MAY REFER TO FUNCTIONS IN THE BODY@G@@@@ OF OTHER FUIS )@@G@@NCTIONS. WE CAN, IN FACT EVEN REFER TO A FUNCTION IN ITS @G@@@@ OWN BIT )@@G@@ODY, BUT WE MUST BE CAREFUL THAT THERE IS SOME WAY THAT IT WILL @C@@@@IU )@@G@@ EVENTAULLY FINISH, AND NOT CALL ITSELF FOREVER.@[@@@@0 @G@@@@ IV )@@G@@EACH TIME A FUNCTION IS CALLED, ITS LOCAL VARIABLES ARE CREATED. @F@@@@IW )@@G@@ IF A FUNCTION THEN PROCEEDS TO CALL ANOTHER FUNCTION, THE LOCAL @G@@@@IX )@@G@@ VARIABLES FOR THE SECOND FUNCTION ARE ALSO CREATED. SINCE THE FIRST IY )@@G@@@G@@@@ FUNCTION HAS NOT FINISHED, HOWEVER, ITS LOCAL VARIABLES STILL EXIIZ )@@G@@ST, @F@@@@ AND MAY BE REFERRED TO BY THEIR NAMES IN THE SECOND FUNCTIOJA )@@G@@N. IF@G@@@@ SOME OF THE LOCAL VARIABLES OF THE SECOND FUNCTION HAVE NAMJB )@@G@@ES WHICH @F@@@@ ARE THE SAME AS NAMES USED ELSEWHERE, THE MOST RECENTJC )@@G@@ DEFINITION @G@@@@ (I.E. THAT OF THE FUNCTION BEING IMMEDIATELY EXECUTEDJD )@@G@@) OF THE NAME @G@@@@ IS USED, AND THE OTHERS ARE 'MASKED'. THIS WILJE )@@G@@L BE TREATED IN MORE @F@@@@ DETAIL WHEN WE COVER THE EXECUTION OF APLJF )@@G@@ PROGRAMS AND )SI AND @#@@@@ )SIV COMMANDS. @#@@@@4SYSTEM COMMANDS JG )@@G@@@G@@@@ IN ADDITION TO THE COMPUTATIONAL FACILITIES OF THE APL LANGUJH )@@G@@AGE @F@@@@ ITSELF, APL\1100 PROVIDES A NUMBER OF FACILITIES FOR SAVINGJI )@@G@@ AND @G@@@@ COPYING FUNCTIONS AND DATA, COMMUNICATING WITH THE COMPUTERJJ )@@G@@ OPERATOR, @F@@@@ AND MISCELLANEOUS OTHER THINGS. THESE FACILITIES AREJK )@@G@@ ACCESSED @F@@@@ THROUGH THE USE OF APL 'SYSTEM COMMANDS'. AN APL SYJL )@@G@@STEM COMMAND@F@@@@ STARTS WITH A RIGHT PARENTHESIS, FOLLOWED BY THE NAMEJM )@@G@@ OF THE @F@@@@ COMMAND, AND ANY OTHER INFORMATION WHICH MIGHT BE REQJN )@@G@@UIRED BY THE@^@@@@ SPECIFIC COMMAND USED. @ @@@@3WORKSPACES AND LIBRARIEJO )@@G@@S @G@@@@ WHILE AN APL TERMINAL SESSION IS UNDERWAY, NAMED VARIAJP )@@G@@BLES AND @F@@@@ FUNCTIONS ARE STORED IN YOUR 'ACTIVE WORKSPACE', WHICJQ )@@G@@H IS ESTAB- @F@@@@ LISHED WHEN YOUR @APL CARD IS PROCESSED. THE NORMAL JR )@@G@@SIZE OF A @G@@@@ WORKSPACE IS APPROXIMATELY 32K CHARACTERS, ENOUGH TO JS )@@G@@CONTAIN A GREAT @G@@@@ MANY FUNCTIONS AND VARIABLES. IN ADDITION TO TJT )@@G@@HE ACTIVE WORKSPACE, @G@@@@ APL ESTABLISHES A 'LIBRARY' OF WORKSPACESJU )@@G@@ ON DRUM, AND YOU MAY SAVE @G@@@@ MANY DIFFERENT WORKSPACES IN THIS LJV )@@G@@IBRARY AND RETRIEVE THEM FOR USE @G@@@@ AT ANY TIME. MANY OF THE APLJW )@@G@@ SYSTEM COMMANDS ARE CONCERNED WITH THE @B@@@@ MAINTENANCE OF LIBRARIEJX )@@G@@S OF WORKSPACES. @#@@@@2LIBRARY NUMBERS @F@@@@ AN INDIVIDUAL LIBRJY )@@G@@ARY OF WORKSPACES IS MAINTAINED FOR EACH @F@@@@ DIFFERENT APL\1100 USERJZ )@@G@@, AND THESE ARE DISTINGUISHED FROM EACH @G@@@@ OTHER BY 'LIBRARY NUMBEKA )@@G@@RS'. UNLESS EXPLICITLY INSTRUCTED OTHERWISE, @F@@@@ APL COMPUTES YOURKB )@@G@@ LIBRARY NUMBER AUTOMATICALLY FROM THE ACCOUNT @G@@@@ NUMBER AND PROJECKC )@@G@@T FIELDS OF YOUR @RUN CARD. UNDER NORMAL CIRCUM- @G@@@@ STANCES, YOKD )@@G@@U WILL NEVER NEED TO KNOW OR USE YOUR OWN LIBRARY NUMBER, @F@@@@ BUT AKE )@@G@@ SYSTEM FUNCTION (CHAPTER 6) IS AVAILABLE WHICH WILL GIVE IT@G@@@@ TO YOKF )@@G@@U. A LIBRARY NUMBER MUST BE USED IF YOU WISH TO ACCESS WORK- @G@@@@KG )@@G@@ SPACES IN LIBRARIES OTHER THAN YOUR OWN. LIBRARY NUMBERS FOR INDI- KH )@@G@@@F@@@@ VIDUAL APL USERS START FROM 1000; NUMBERS 1 THROUGH 999 ARE USED KI )@@G@@@G@@@@ FOR PUBLIC LIBRARIES IN WHICH WORKSPACES OF GENERAL INTEREST (SUCKJ )@@G@@H @ @@@@ AS THE TUTORIALS) ARE SAVED. @#@@@@2WORKSPACE NAMES @G@@@@KK )@@G@@ EACH WORKSPACE SAVED IN A LIBRARY MUST BE NAMED, AND THE NAME KL )@@G@@@F@@@@ IS ASSIGNED WHEN THE WORKSPACE IS ORIGINALLY SAVED. A WORKSPACE KM )@@G@@@F@@@@ NAME IS ANY COMBINATION OF APL LETTERS AND DIGITS, STARTING WITH KN )@@G@@@F@@@@ A LETTER. A MAXIMUM OF 12 CHARACTERS IS PERMITTED IN A WORKSPACE KO )@@G@@@F@@@@ NAME; CHARACTERS AFTER THE TWELFTH WILL BE ACCEPTED BUT IGNORED. KP )@@G@@@A@@@@3WORKSPACE AND LIBRARY COMMANDS @F@@@@ IN THE DISCUSSION KQ )@@G@@BELOW INDICATES AN OPTIONAL LIBRARY@F@@@@ NUMBER; IF THE LIBRARY KR )@@G@@NUMBER IS OMITTED, YOUR PRIVATE LIBRARY @G@@@@ NUMBER IS ASSUMED. IS ALSO OPTIONAL, AND INDICATES THE WORK- @E@@@@ SPACE NAME. IF IS OMITTED, THE NAME OF THE ACTIVE@^@@@@ WORKSPACE IS USED. KU )@@G@@@]@@@@2)CLEAR @E@@@@ THIS COMMAND ERASES THE CONTENTS OF THE KV )@@G@@ACTIVE WORK-@E@@@@ SPACE AND SETS ALL WORKSPACE PARAMETERS (E.G. 'WIDTH'KW )@@G@@ AND @A@@@@ DIGITS) TO THEIR DEFAULT VALUES. @A@@@@2)SAVE : @D@@@@ THIS COMMAND SAVES THE ACTIVE WORKSPACE OKY )@@G@@N DRUM@F@@@@ AS INDICATED. A CLEAR WORKSPACE MAY NOT BE SAVED. IN ADDIKZ )@@G@@- @F@@@@ TION, IF A WORKSPACE NAMED ALREADY EXISTS, THEN THLA )@@G@@E @E@@@@ ACTIVE WORKSPACE MUST HAVE THE SAME NAME (IF IT DOES NOT, LB )@@G@@@F@@@@ )WSID MAY BE USED, SEE BELOW). MUST BE YOUR OWN LIBRARY LC )@@G@@@F@@@@ NUMBER (IN WHICH CASE IT CAN BE OMITTED) OR A PUBLIC (1-999) LD )@@G@@@F@@@@ LIBRARY NUMBER. YOU MAY NOT SAVE WORKSPACES IN OTHER USER'S LE )@@G@@@E@@@@ LIBRARIES. THE PASSWORD SPECIFICATION, IF GIVEN, LOCKS THE@F@@@@LF )@@G@@ ENTIRE WORKSPACE, AND THAT WORKSPACE CAN BE RELOADED ONLY IF @E@@@@LG )@@G@@ THE IDENTICAL PASSWORD IS SPECIFIED ON THE )LOAD COMMAND. @F@@@@ IF NOLH )@@G@@ PASSWORD IS DESIRED, BOTH THE COLON AND SHOULD @F@@@@ BE OMLI )@@G@@ITTED. ONCE THE PASSWORD HAS BEEN ESTABLISHED, IT WILL @E@@@@ REMAILJ )@@G@@N UNTIL IT IS EXPLICITLY CHANGED BY A )SAVE WITH A @E@@@@ DIFFERENT PLK )@@G@@ASSWORD; IT IS NOT NECESSARY TO PUT THE PASSWORD@E@@@@ ON EVERY )SAVE. LL )@@G@@THE LOCK MAY BE REMOVED BY )SAVE ING WITH @E@@@@ A BLANK PASSWORD - I.E.LM )@@G@@ THE COLON IS TYPED ON THE )SAVE @A@@@@ COMMAND, BUT NOTHING FOLLOWS LN )@@G@@IT. @A@@@@2)LOAD : @E@@@@ THIS COMMANLO )@@G@@D LOADS THE ACTIVE WORKSPACE WITH A COPY @D@@@@ OF THE SPECIFIED WORKSPLP )@@G@@ACE (AND DESTROYS THE PREVIOUS@F@@@@ CONTENTS OF THE ACTIVE WORKSPACE, ILQ )@@G@@F ANY). IF THE WORKSPACE @E@@@@ WAS LOCKED WHEN IT WAS SAVED, THEN LR )@@G@@THE CORRECT PASSWORD @E@@@@ IS NEEDED TO LOAD IT. YOU MAY LOAD WORKSLS )@@G@@PACES BELONGING TO@E@@@@ OTHER USERS (PROVIDED YOU KNOW THEIR LIBRARY NULT )@@G@@MBER AND @^@@@@ PASSWORD, IF ANY). @]@@@@2)LIB @F@@@@ LU )@@G@@ THIS COMMAND LISTS THE NAMES OF THE WORKSPACES SAVED IN @E@@@@ THE GLV )@@G@@IVEN LIBRARY. IT IS ESPECAILLY USEFUL IN EXAMINING @F@@@@ THE PUBLIC LW )@@G@@LIBRARIES (SUCH AS LIBRARY 1) FOR PROGRAMS OF INTEREST@#@@@@2)WSID @F@@@@ THIS COMMAND IS USED TO PRINT AND/OR CHANGE THE NAME LY )@@G@@OF @D@@@@ THE ACTIVE WORKSPACE. IF IS OMITTED, THE @F@@@@LZ )@@G@@ NAME OF THE ACTIVE WORKSPACE IS PRINTED. IF IS GIVEN, @F@@@@MA )@@G@@ THE NAME OF THE ACTIVE WORKSPACE IS CHANGED TO , AND @F@@@@MB )@@G@@ ITS OLD NAME IS PRINTED. THIS COMMAND HAS NO EFFECT ON ANY- @B@@@@MC )@@G@@ THING OTHER THAN THE ACTIVE WORKSPACE. @A@@@@2)DROP :MD )@@G@@ @F@@@@ THIS COMMAND ERASES THE SPECIFIED WORKSPACE FROME )@@G@@M DRUM. @F@@@@ IF GIVEN, MAY BE YOUR OWN OR A PUBLIC LIBRARY MF )@@G@@NUMBER. @F@@@@ ONLY THE PERSON WHO ORIGINALLY )SAVE'D A PUBLIC WORKSMG )@@G@@PACE MAY @G@@@@ )DROP IT OR )SAVE IN IT A SECOND TIME. THE ACTIVE WMH )@@G@@ORKSPACE IS NOT @ @@@@ AFFECTED BY THIS COMMAND. @D@@@@2)COPY : ETC... @E@@@@ THIS COMMAND COPIMJ )@@G@@ES THE OBJECTS (VARIABLES OR FUNC- @E@@@@ TIONS) SPECIFIED BY THE NAMESMK )@@G@@ ETC. FROM THE GIVEN@E@@@@ WORKSPACE ON DRUM TO THE ACTIVE WORML )@@G@@KSPACE, WITHOUT ERASING @E@@@@ THE ACTIVE WORKSPACE. IF NO LIST OF OBJEMM )@@G@@CTS ... @E@@@@ IS GIVEN, THEN EVERY OBJECT IN THE WORKSPACE ISMN )@@G@@ COPIED. @F@@@@ IF AN OBJECT IN THE ACTIVE WORKSPACE HAS THE SAME NAMMO )@@G@@E AS ONE @E@@@@ OF THE COPIED OBJECTS, THE OBJECT IN THE ACTIVE WORKSMP )@@G@@PACE @E@@@@ IS ERASED. IF THIS WOULD RESULT IN ERASURE OF A FUNCTION MQ )@@G@@@E@@@@ OR VARIABLE IN THE STATE INDICATOR, THE OBJECT IN QUESTION @^@@@@MR )@@G@@ WILL NOT BE COPIED. @D@@@@2)PCOPY : ETC... @E@@@@ THIS IS IDENTICAL TO THE )COPY COMMAND, EXCEPT MT )@@G@@THAT @F@@@@ OBJECTS IN THE ACTIVE WORKSPACE ARE PROTECTED. IF AN OBJECMU )@@G@@T @F@@@@ TO BE COPIED ALREADY EXISTS IN THE ACTIVE WORKSPACE, IT WILMV )@@G@@L @F@@@@ REMAIN, AND THE SIMILARLY NAMED OBJECT IN THE SPECIFIED WORMW )@@G@@K- @ @@@@ SPACE WILL NOT BE COPIED. @ @@@@2)ERASE EMX )@@G@@TC... @F@@@@ THIS COMMAND DELETES THE NAMED OBJECTS FROM THE ACTIVMY )@@G@@E @E@@@@ WORKSPACE. IF A NAMED OBJECT IS IN THE STATE INDICATOR, ITMZ )@@G@@@G@@@@ WILL NOT BE ERASED. THIS COMMAND HAS NO EFFECT ON WORKSPACES SAVNA )@@G@@ED @]@@@@ ON DRUM. @ @@@@3WORKSPACE PARAMETER COMMANDS @D@@@@ NB )@@G@@ASSOCIATED WITH EACH WORKSPACE ARE A NUMBER OF @^@@@@ PARAMETERS WHICH NC )@@G@@CON- @G@@@@ TROL CERTAIN OPTIONAL FEATURES OF APL WHEN THE PARTICULAR WND )@@G@@ORKSPACE @G@@@@ IS ACTIVE. THESE PARAMETERS ARE SET TO CERTAIN DEFAUNE )@@G@@LT VALUES WHEN @G@@@@ )CLEAR IS DONE. THEY MAY BE SUBSEQUENTLY CHANGNF )@@G@@ED EITHER BY SYSTEM @F@@@@ COMMANDS OR BY THE EXECUTION OF CERTAIN FNG )@@G@@UNCTIONS. THE FUNCTIONS@G@@@@ WHICH CORRESPOND TO THESE COMMANDS ARE FONH )@@G@@UND IN THE WORKSPACE WSFNS @#@@@@ IN LIBRARY 1. @]@@@@2)ORIGIN NI )@@G@@@E@@@@ SETS THE INDEX ORIGIN FOR SUBSCRIPTING AND CERTAIN @C@@@@NJ )@@G@@ OTHER OPERATORS. MAY BE ZERO OR ONE. THE @E@@@@ NORMAL DEFAULT VANK )@@G@@LUE IS 1, I.E. THE SUBSCRIPT FOR THE FIRST@F@@@@ ELEMENT IN AN ARRAY IS NL )@@G@@UNITY. IN ORIGIN 0, SUBSCRIPT VALUES @^@@@@ RANGE UPWARD FROM ZERO.NM )@@G@@@]@@@@2)WIDTH @F@@@@ SETS THE MAXIMUM NUMBER OF APL CHARACTERSNN )@@G@@ TO BE PRINTED @E@@@@ ON A SINGLE LINE. IF AN OUTPUT LINE EXCEEDS THNO )@@G@@IS VALUE, IT@F@@@@ WILL BE CONTINUED ON AS MANY ADDITIONAL LINES AS ARE NP )@@G@@NEEDED. @F@@@@ CONTINUED LINES WILL BE INDENTED BY FOUR SPACES. THENQ )@@G@@ DEFAULT @E@@@@ VALUES FOR A CLEAR WORKSPACE ARE 72 FOR DEMAND RUNS ANR )@@G@@ND 132@F@@@@ FOR BATCH RUNS. ONCE A WORKSPACE IS )SAVE'D, ITS WIDTH REMNS )@@G@@AINS @E@@@@ WITH IT, HOWEVER, AND WILL NOT BE AFFECTED BY THE BATCH/ NT )@@G@@@D@@@@ DEMAND STATUS OF A @RUN WHICH MAY LATER )LOAD IT. @[@@@@0 NU )@@G@@@F@@@@ THE SPECIFIED WIDTH IS MEASURED IN APL CHARACTERS, NOT NV )@@G@@@F@@@@ FIELDATA CHARACTERS. SINCE IT IS POSSIBLE FOR A LINE CONTAINING NW )@@G@@@F@@@@ (SAY) 72 APL CHARACTERS TO CONTAIN MORE THAN 72 FIELDATA CHARAC- NX )@@G@@@E@@@@ TERS (BECAUSE OF DIGRAPHS), IT IS POSSIBLE THAT SOME LINES @F@@@@NY )@@G@@ NEAR THE SPECIFIED WIDTH IN LENGTH MIGHT BE DOUBLY INDENTED. @]@@@@NZ )@@G@@2)DIGITS @E@@@@ THIS CONTROLS THE NUMBER OF SIGNIFICANT DIGITS OA )@@G@@OF A @E@@@@ NUMBER WHICH APL WILL NORMALLY PRINT. THE DEFAULT VALUE ISOB )@@G@@@E@@@@ 10. INTERNAL CALCULATIONS IN APL ARE ALWAYS DONE WITH AS @E@@@@OC )@@G@@ MANY (UP TO 18) DIGITS AS EXIST IN THE NUMBER; THE WIDTH @F@@@@ PARAMOD )@@G@@ETER ONLY CONTROLS THE NUMBER OF DIGITS WHICH ARE PRINTED. @[@@@@0 OE )@@G@@@]@@@@2)FUZZ @F@@@@ THIS COMMAND CONTROLS THE AMOUNT OF 'FUZZIOF )@@G@@NG' APPLIED TO @F@@@@ CERTAIN OPERATIONS SUCH AS CEILING AND COMPARISOG )@@G@@ONS. THE VALUE @G@@@@ IS THE NUMBER OF BITS TO BE DISCARDED WHEN DOINOH )@@G@@G THESE OPERATIONS; @F@@@@ THE DEFAULT VALUE IS 12. SETTING FUZZ TOOI )@@G@@ ZERO WILL TURN FUZZING @D@@@@ COMPLETELY OFF. FOR MORE DETAILS, SEE CHOJ )@@G@@APTER 6. @[@@@@0 @#@@@@2)SYMBOLS @F@@@@ THIS CONTROLOK )@@G@@S THE NUMBER OF DIFFERENT SYMBOLIC NAMES FOR @F@@@@ VARIABLES AND FUNOL )@@G@@CTIONS WHICH MAY BE USED. IN A CLEAR WS, THIS @F@@@@ VALUE IS 256, MEAOM )@@G@@NING THAT 256 DISTINCT SYMBOLS OF 4 OR FEWER @F@@@@ CHARACTERS (OR A ON )@@G@@LESSER NUMBER OF LONGER NAMES) MAY BE REFERENCED@F@@@@ IN THE WORKSPACE.OO )@@G@@ THE SPACE USED BY THE SYMBOL TABLE IS TAKEN @F@@@@ AWAY FROM THE ACTOP )@@G@@IVE WORKSPACE. IF A LARGER WORKSPACE IS NEEDED,@F@@@@ THIS COMMAND MAY OQ )@@G@@BE USED TO SHRINK THE SYMBOL TABLE. IF MORE @F@@@@ NAMES ARE TO BE ROR )@@G@@EFERENCED, THE SYMBOL TABLE MAY CORRESPONDINGLY @F@@@@ BE EXPANDED (AT TOS )@@G@@HE EXPENSE OF THE ACTIVE WS). THE )SYMBOLS @C@@@@ COMMAND MAY NOT BOT )@@G@@E USED EXCEPT IN A CLEAR WS. @[@@@@0 @^@@@@3INFORMATIONAL COMMANDS OU )@@G@@@F@@@@ THE INFORMATIONAL SYSTEM COMMANDS SERVE MAINLY TO INFORM YOU OV )@@G@@@C@@@@ OF THE STATUS OF OBJECTS IN YOUR WORKSPACE. @[@@@@2)FNS @F@@@@OW )@@G@@ THIS COMMAND PRODUCES A LIST OF THE NAMES OF ALL FUNCTIONS @ @@@@OX )@@G@@ IN THE ACTIVE WORKSPACE. @[@@@@2)VARS@G@@@@ THIS COMMAND PRODUOY )@@G@@CES A LIST OF THE NAMES OF ALL THE VARIABLES @ @@@@ IN THE ACTIVE WOROZ )@@G@@KSPACE. @#@@@@2)SI AND )SIV @F@@@@ THESE COMMANDS BOTH PRODPA )@@G@@UCE A DISPLAY OF THE CURRENT 'STATE @F@@@@ INDICATOR'. THE STATE INDICAPB )@@G@@TOR IS USED BY APL TO KEEP TRACK @G@@@@ OF CALLS UPON FUNCTIONS FROM PC )@@G@@OTHER FUNCTIONS. EACH TIME A FUNCTION @F@@@@ IS CALLED, THE NAME ANDPD )@@G@@ LINE NUMBER OF THE CALLING FUNCTION ARE @F@@@@ RECORDED. IT IS SOMETIPE )@@G@@MES THE CASE THAT SOMETHING (FOR EXAMPLE @F@@@@ AN ERROR) CAUSES APL TOPF )@@G@@ BE UNABLE TO PROCEED AT SOME POINT. WHEN@F@@@@ THIS HAPPENS, EXECUTIONPG )@@G@@ OF THE FUNCTION IN WHICH THE STOP OCCURS @F@@@@ IS SUSPENDED, AND CONTRPH )@@G@@OL RETURNS TO THE DESK CALCULATOR MODE. @F@@@@ SINCE FUNCTIONS MAY CALPI )@@G@@L OTHER FUNCTIONS, THERE MAY BE A CHAIN @F@@@@ OF FUNCTIONS WHICH HAVEPJ )@@G@@ PARTIALLY COMPLETED THEIR EXECUTION, EACH@E@@@@ OF WHICH WAS TEMPORARILPK )@@G@@Y HALTED WHILE ANOTHER FUNCTION @E@@@@ WAS CALLED. THIS CHAIN OF FUPL )@@G@@NCTION NAMES AND LINE NUMBERS @F@@@@ COMPRISES THE STATE INDICATOR. THEPM )@@G@@ MOST RECENTLY HALTED FUNCTION@E@@@@ IS SAID TO BE 'SUSPENDED', OTHERS IPN )@@G@@N THE CHAIN (BACK TO THE@B@@@@ DESK CALCULATOR MODE) ARE 'PENDANT'. PO )@@G@@@[@@@@0 @F@@@@ SINCE EACH HALT IN A FUNCTION CAUSES A RETURN TOPP )@@G@@ THE DESK @F@@@@ CALCULATOR MODE, IT IS POSSIBLE TO GENERATE AN ENTIREPQ )@@G@@LY NEW CHAIN@F@@@@ OF PENDANT/SUSPENDED FUNCTIONS ON TOP OF AN OLD ONE. PR )@@G@@ EACH SUCH @F@@@@ CHAIN STARTS FROM THE DESK CALCULATOR MODE AND TERMINPS )@@G@@ATES IN A @F@@@@ SUSPENDED FUNCTION. TO DISTINGUISH THESE CHAINS, THEPT )@@G@@ SUSPENDED @F@@@@ (MOST RECENT) FUNCTION IN A CHAIN HAS AN ASTERISK APPPU )@@G@@ENDED TO ITS@A@@@@ NAME IN THE DISPLAY OF THE SI. @[@@@@0 @F@@@@PV )@@G@@ THE )SIV COMMAND DIFFERS FROM )SI IN THAT IN ADDITION TO THE@G@@@@PW )@@G@@ FUNCTION NAMES AND LINE NUMBERS, )SIV ALSO PRINTS THE NAMES OF THE PX )@@G@@@G@@@@ LOCAL VARIABLES ACTIVATED AT EACH FUNCTION CALL. THE MOST RECENTPY )@@G@@LY @F@@@@ SUSPENDED FUNCTION APPEARS ON THE TOP LINE OF THE DISPLAY, PZ )@@G@@SUC- @G@@@@ CESSIVELY OLDER FUNCTION CALLS ARE IN ORDER DOWN THE PAGE. QA )@@G@@ IF THE @F@@@@ STATE INDICATOR IS EMPTY, BOTH )SI AND )SIV WILL RESPQB )@@G@@OND WITH A @]@@@@ BLANK LINE.@^@@@@3COMMUNICATIONS COMMANDS@F@@@@ QC )@@G@@APL\1100 PROVIDES SEVERAL COMMANDS WHICH ENABLE YOU TO CON- @F@@@@ VERSEQD )@@G@@ WITH THE CENTRAL SITE COMPUTER OPERATOR, AND WITH OTHER @D@@@@ APL UQE )@@G@@SERS WHO ARE SIGNED ON AT THE SAME TIME YOU ARE.@]@@@@2)OPR @G@@@@QF )@@G@@ THIS COMMAND DISPLAYS THE YOU TYPE IN ON THE OPERATORS QG )@@G@@@F@@@@ CONSOLE, AND THEN WAITS FOR HIM TO REPLY TO YOU. APL IS NOT PRE-QH )@@G@@@G@@@@ PARED TO ACCEPT MORE INPUT FROM YOU WHILE THE OPERATOR IS REPLYINQI )@@G@@G. @G@@@@ THE TELETYPE CARRIER WILL REMAIN AT THE FAR LEFT UNTIL THE QJ )@@G@@OPERATOR @]@@@@ RESPONDS. @[@@@@0 @G@@@@ IF YOU BECOME IMPAQK )@@G@@TIENT, YOU CAN CONTINUE YOUR APL SESSION BY @F@@@@ HITTING BREAK-CARQL )@@G@@RIAGE RETURN. YOU WILL NOT, HOWEVER, BE ABLE @F@@@@ TO SEND THE OPERAQM )@@G@@TOR ANOTHER SUCH MESSAGE UNTIL HE REPLIES TO THE@F@@@@ FIRST ONE. IN ADQN )@@G@@DITION, ALTHOUGH YOU CAN CONTINUE IN APL, YOU @F@@@@ WILL NOT BE ABLE QO )@@G@@TO EXECUTE ANY OTHER EXEC 8 PROCESSOR UNTIL THE @F@@@@ OPERATOR REPLIES.QP )@@G@@ TYPING )OFF OR )CONTINUE WHILE AN OPERATOR @F@@@@ REQUEST IS OUTSTAQQ )@@G@@NDING WILL RESULT IN A GRACEFUL EXIT FROM APL, @F@@@@ BUT THE INABILITYQR )@@G@@ TO PROCESS ANY FURTHER EXEC 8 CONTROL CARDS. @G@@@@ FOR THIS REASON, QS )@@G@@YOU SHOULD RESTRICT YOUR USAGE OF )OPR TO CASES IN @F@@@@ WHICH YOU AQT )@@G@@RE RELATIVELY SURE THAT THE MACHINE IS NOT RUNNING @]@@@@ UNATTENDED.QU )@@G@@@#@@@@2)OPRN @F@@@@ THIS COMMAND DISPLAYS THE SPECIFIED QV )@@G@@ ON THE OPERATOR'S@D@@@@ CONSOLE, BUT DOES NOT CAUSE APL TO WAIT FQW )@@G@@OR A REPLY. @]@@@@2)PORTS @G@@@@ THIS COMMAND WILL PRODUCE A LIQX )@@G@@ST OF THE RUNID'S AND @RUN CARD @G@@@@ PROJECT FIELDS FOR ALL TERMINQY )@@G@@AL USERS USING APL AT THE TIME. RUNID'S @F@@@@ THUS OBTAINED MAY BE USQZ )@@G@@ED IN )MSG COMMANDS TO ADDRESS MESSAGES TO@G@@@@ OTHER USERS. AT THE PRRA )@@G@@ESENT TIME, THE )PORTS COMMAND IS UNDER DEVELOP-@ @@@@ MENT AND IS NOT ORB )@@G@@PERATIONAL. @^@@@@2)MSG @G@@@@ THE SPECIFIED TEXTRC )@@G@@ IS TRANSMITTED TO THE TERMINAL USER WITH THE @G@@@@ GIVEN RUNID, AND RD )@@G@@APL PAUSES TO AWAIT A REPLY. THIS COMMAND IS NOT @#@@@@ YET OPERATIRE )@@G@@ONAL. @^@@@@2)MSGN @G@@@@ THIS COMMAND SENDS THE TRF )@@G@@EXT TO THE SPECIFIED USER AND DOES NOT @C@@@@ WAIT FOR A REPLY. IT IRG )@@G@@S NOT YET OPERATIONAL. @^@@@@3MISCELLANEOUS COMMANDS @#@@@@2)OFF: @G@@@@ THIS COMMAND IS USED TO TERMINATE AN APL WORK SESSION,RI )@@G@@ AND THE @E@@@@ ACTIVE WORKSPACE IS DISCARDED. IF A PASSWORD (INDICARJ )@@G@@TED BY@G@@@@ THE COLON) IS PROVIDED, THEN THE LIBRARY NUMBER USED FOR THRK )@@G@@IS SESSION @F@@@@ IS LOCKED, I.E. APL WILL NOT ALLOW THIS LIBRARY NUMBERL )@@G@@R TO BE USED@F@@@@ AGAIN UNLESS THE IDENTICAL PASSWORD IS USED ON THE PRRM )@@G@@OCESSOR CALL@#@@@@ CARD -- E.G. @[@@@@0 @B@@@@ RN )@@G@@ @APL / @[@@@@0 @F@@@@0AN ATTEMPT TO USE A LOCKED LIRO )@@G@@BRARY NUMBER WITHOUT THE PASSWORD OR@F@@@@ WITH THE WRONG PASSWORD WILL RP )@@G@@RESULT IN THE MESSAGE 'NUMBER NOT IN@G@@@@ SYSTEM'. ONCE A PASSWORD HASRQ )@@G@@ BEEN ESTABLISHED, IT REMAINS IN FORCE @G@@@@ UNTIL CHANGED BY AN )OFRR )@@G@@F (OR )CONTINUE) WITH A DIFFERENT PASSWORD; @F@@@@ IT IS NOT NECESSARS )@@G@@RY TO RE-SPECIFY THE PASSWORD AT EACH )OFF. A @E@@@@ PASSWORD MAY BE RRT )@@G@@EMOVED BY CHANGING IT TO BLANKS, I.E. @[@@@@0 @ @@@@ RU )@@G@@ )OFF : @[@@@@0 @G@@@@0THE COLON IS NOT USED EXCEPT WHEN SRV )@@G@@PECIFYING (OR CLEARING) A PASSWORD. @^@@@@2)CONTINUE: @G@@@@RW )@@G@@ THIS COMMAND, LIKE )OFF, ALSO TERMINATES AN APL WORK SESSION, RX )@@G@@@F@@@@ BUT THE ACTIVE WORKSPACE IS NOT DESTROYED. THE ACTIVE WORKSPACE RY )@@G@@@F@@@@ IS SAVED IN A SPECIAL WORKSPACE RESERVED FOR YOU, WHOSE NAME IS RZ )@@G@@@F@@@@ CONTINUE. WHEN AN APL SESSION HAS BEEN TERMINATED BY )CONTINUE, SA )@@G@@@F@@@@ APL WILL AUTOMATICALLY RE-)LOAD THE CONTINUE WORKSPACE AT THE SB )@@G@@@#@@@@ NEXT APL SESSION.@ @@@@4THE APL PRIMITIVE OPERATORS @ @@@@3PRIMISC )@@G@@TIVE SCALAR OPERATORS @F@@@@ AS MENTIONED PREVIOUSLY, THE PRIMITSD )@@G@@IVE SCALAR OPERATORS ACT@F@@@@ ELEMENT BY ELEMENT ON THEIR OPERANDS. INSE )@@G@@ THE CASE OF THE DYADIC @F@@@@ SCALARS, BOTH OPERANDS MUST HAVE THE SAMESF )@@G@@ RANK AND DIMENSIONS, @F@@@@ UNLESS ONE OF THEM IS A SCALAR OR ONE-ELESG )@@G@@MENT VECTOR, IN WHICH @F@@@@ CASE IT IS EXTENDED TO MATCH THE DIMENSIOSH )@@G@@NS OF THE OTHER OPERAND.@F@@@@ IN MOST CASES, THE MONADIC AND DYADIC OPESI )@@G@@RATORS WHICH SHARE THE @E@@@@ SAME SYMBOL ARE CLOSELY RELATED (FOR EXAMSJ )@@G@@PLE, + AND -). @[@@@@0 @F@@@@ A SCALAR OPERATOR MAY, IN GENESK )@@G@@RAL, HAVE ONLY A SPECIFIC SET @F@@@@ OF VALUES FOR ITS OPERANDS; THIS ISSL )@@G@@ CALLED ITS 'DOMAIN', AND AN @F@@@@ ATTEMPT TO VIOLATE THESE RULES WILLSM )@@G@@ RESULT IN A 'DOMAIN ERROR'. @F@@@@ AS AN EXAMPLE, ADDITION IS AN UNDEFSN )@@G@@INED OPERATION ON CHARACTERS, @F@@@@ HENCE THE DOMAIN OF THE ADDITION OPSO )@@G@@ERATOR IS THE SET OF VALID APL@]@@@@ NUMBERS. @[@@@@0 @F@@@@ SP )@@G@@AN ADDITIONAL PROPERTY OF DYADIC OPERATORS IS A QUANTITY @G@@@@ CALLESQ )@@G@@D THEIR 'IDENTITY' ELEMENT. WHEN AN OPERATOR HAS ITS IDENTITY @G@@@@SR )@@G@@ AS THE APPROPRIATE OPERAND, THE VALUE OF THE RESULT IS THE SAME AS SS )@@G@@@G@@@@ THAT OF THE OTHER OPERAND, I.E. IT IS AS IF THE OPERATOR DID NOTHST )@@G@@ING. @F@@@@ EXAMPLES OF IDENTITY OPERATORS ARE MULTIPLICATION BY ONE, ASU )@@G@@ND THE@F@@@@ ADDITION OF ZERO. AN IDENTITY ELEMENT MAY BE A LEFT IDENTISV )@@G@@TY, A @G@@@@ RIGHT IDENTITY, OR BOTH. FOR EXAMPLE, ZERO IS THE IDENTITYSW )@@G@@ ELEMENT @B@@@@ FOR ADDITION. SINCE THE EXPRESSIONS @[@@@@0 SX )@@G@@@B@@@@ 0 + X AND @[@@@@0 @ @@@@ SY )@@G@@ X + 0 @[@@@@0 @F@@@@0BOTH GIVE X AS A RESULT, IT ISZ )@@G@@S CLEAR THAT THE ZERO IS BOTH A LEFT@G@@@@ AND A RIGHT IDENTITY. ON THETA )@@G@@ OTHER HAND, ALTHOUGH ZERO IS ALSO THE @G@@@@ IDENTITY ELEMENT FOR SUTB )@@G@@BTRACTION, IT IS A RIGHT IDENTITY ONLY, E.G. @#@@@@ IN THE EXPRESSIONTC )@@G@@@[@@@@0 @ @@@@ X - 0 @[@@@@0 @F@@@@0THE RTD )@@G@@ESULT IS X, AND WE SEE THAT ZERO IS A RIGHT IDENTITY, BUT @[@@@@0 TE )@@G@@@ @@@@ 0 - X @[@@@@0 @F@@@@0IS NOT X, IT IS MTF )@@G@@INUS X; THUS ZERO IS NOT A LEFT IDENTITY. THE @F@@@@ IDENTITY ELEMENTSTG )@@G@@ OF THE SCALAR DYADS CAN BE PRODUCED BY CERTAIN @F@@@@ USES OF THE REDUCTH )@@G@@TION AND INNER PRODUCT OPERATORS (SEE BELOW). @[@@@@0 @F@@@@ TI )@@G@@THE PROPERTIES OF THE SCALAR OPERATORS ARE SUMMARIZED IN @G@@@@ TABLETJ )@@G@@S 5.1 AND 5.2. IN THESE TABLES, THE DOMAINS FOR THE OPERANDS @F@@@@TK )@@G@@ AND OF THE RESULT ARE GIVEN IN THE COLUMNS HEADED O AND R. THE @C@@@@TL )@@G@@ ENTRIES IN THESE COLUMNS ARE CODED AS FOLLOWS: @[@@@@0 @B@@@@ TM )@@G@@ N NUMERIC; ANY APL NUMBER @[@@@@0 @^@@@@ I INTN )@@G@@TEGER @[@@@@0 @F@@@@ L LOGICAL; AN APL INTEGER RESTRICTTO )@@G@@ED TO THE VALUES @B@@@@ 0 (FALSE) AND 1 (TRUE) @[@@@@TP )@@G@@0 @ @@@@ C CHARACTER @[@@@@0 @C@@@@ (N) TQ )@@G@@ REFER TO FOOTNOTE N OF THE TABLE@[@@@@0 @G@@@@ IT SHOULD BETR )@@G@@ NOTED THAT SINCE THE BOOLEAN TRUTH VARIABLES ARE @F@@@@ REPRESENTEDTS )@@G@@ BY NUMBERS, THEY MAY BE USED IN CALCULATIONS IN THE @B@@@@ SAME FASHIOTT )@@G@@N AS ANY OTHER APL NUMBER. @[@@@@0 @[@@@@EJECT @D@@@@ TU )@@G@@ TABLE 5.1 PRIMITIVE DYADIC SCALARS @[@@@@0 @F@@@@0...........TV )@@G@@......................................................@F@@@@0: SYMBOL : TW )@@G@@ DOMAIN : IDENTITY : NAME/DEFINITION :@F@@@@0: : TX )@@G@@ O R : : :@F@@@@0:........:.TY )@@G@@...........:.........................................:@F@@@@0: + : TZ )@@G@@ N N : O LR : ADD :@F@@@@0: : UA )@@G@@ : : :@F@@@@0: - : UB )@@G@@ N N : O R : SUBTRACT :@F@@@@0: : UC )@@G@@ : : :@F@@@@0: : UD )@@G@@ : : :@F@@@@0: # : UE )@@G@@ N N : 1 LR : MULTIPLY :@F@@@@0: : UF )@@G@@ : : :@F@@@@0: % : UG )@@G@@ N N : 1 R : DIVIDE: NOTE O%0 IS :@F@@@@0: : UH )@@G@@ : : DEFINED TO BE 1 :@F@@@@0: : UI )@@G@@ : : :@F@@@@0: $C : UJ )@@G@@ N N : &8E307 LR : MAXIMUM - RESULT IS :@F@@@@0: : UK )@@G@@ : : THE GREATER OF VALUES :@F@@@@0: : UL )@@G@@ : : OF THE OPERANDS :@F@@@@0: : UM )@@G@@ : : :@F@@@@0: $L : UN )@@G@@ N N : 8E307 LR : MINIMUM - RESULT IS :@F@@@@0: : UO )@@G@@ : : THE LESSER OF THE :@F@@@@0: : UP )@@G@@ : : VALUES OF THE OPERANDS :@F@@@@0: : UQ )@@G@@ : : :@F@@@@0: * : UR )@@G@@(1) N : 1 R : POWER. RAISES LEFT :@F@@@@0: : US )@@G@@ : : OPERAND TO POWER :@F@@@@0: : UT )@@G@@ : : SPECIFIED BY RIGHT :@F@@@@0: : UU )@@G@@ : : OPERAND :@F@@@@0: : UV )@@G@@ : : :@F@@@@0: $* : UW )@@G@@ N N : NONE : LOGARITHM TO ANY BASE. :@F@@@@0: : UX )@@G@@ : : TAKES LOG OF RIGHT :@F@@@@0: : UY )@@G@@ : : OPERAND TO BASE GIVEN :@F@@@@0: : UZ )@@G@@ : : BY LEFT OPERAND :@F@@@@0: : VA )@@G@@ : : :@F@@@@0: $! : VB )@@G@@(2) N : 0 L : RESIDUE - FOR POSITIVE :@F@@@@0: : VC )@@G@@ : : INTEGERS, THE REMAINDER:@F@@@@0: : VD )@@G@@ : : OF THE RIGHT OPERAND :@F@@@@0: : VE )@@G@@ : : DIVIDED BY THE LEFT. :@F@@@@0: : VF )@@G@@ : : FOR GENERALIZED DEFI- :@F@@@@0: : VG )@@G@@ : : NITION, SEE NOTE (2). :@F@@@@0: : VH )@@G@@ : : :@F@@@@0: $T : VI )@@G@@(3) N : NONE : TRIGONOMETRIC AND :@F@@@@0: : VJ )@@G@@ : : HYPERBOLIC (I.E. CIR- :@F@@@@0: : VK )@@G@@ : : CULAR) FUNCTIONS. THE :@F@@@@0: : VL )@@G@@ : : EXACT FUNCTION (E.G. :@F@@@@0: : VM )@@G@@ : : SIN, COS) DEPENDS ON :@F@@@@0: : VN )@@G@@ : : THE LEFT ARGUMENT - :@F@@@@0: : VO )@@G@@ : : SEE NOTE 3. :@F@@@@0:..........VP )@@G@@......................................................@[@@@@EJECT @[@@@@VQ )@@G@@0 @B@@@@ TABLE 5.1 (CONTINUED) @[@@@@0 @F@@@@VR )@@G@@0.................................................................@F@@@@VS )@@G@@0: SYMBOL : DOMAIN : IDENTITY : NAME/DEFINITION :@F@@@@VT )@@G@@0: : O R : : :@F@@@@VU )@@G@@0:........:............:..........................................@F@@@@VV )@@G@@0: : : : :@F@@@@VW )@@G@@0: $A : L L : 1 LR : BOOLEAN AND :@F@@@@VX )@@G@@0: : : : :@F@@@@VY )@@G@@0: $O : L L : 0 LR : BOOLEAN OR :@F@@@@VZ )@@G@@0: : : : :@F@@@@WA )@@G@@0: @A : L L : NONE : NAND :@F@@@@WB )@@G@@0: : : : :@F@@@@WC )@@G@@0: @O : L L : NONE : NOR :@F@@@@WD )@@G@@0: : : : :@F@@@@WE )@@G@@0: < : N L : O L(4) : LESSTHAN :@F@@@@WF )@@G@@0: : : : :@F@@@@WG )@@G@@0: $< : N L : 1 L(4) : LESSTHAN OR EQUAL :@F@@@@WH )@@G@@0: : : : :@F@@@@WI )@@G@@0: = : N,C L : 1 LR(4) : EQUAL (5) :@F@@@@WJ )@@G@@0: : : : :@F@@@@WK )@@G@@0: $= : N,C L : 0 LR(4) : UNEQUAL (5) :@F@@@@WL )@@G@@0: : : : :@F@@@@WM )@@G@@0: $> : N L : 1 R(4) : GREATER THAN OR EQUAL :@F@@@@WN )@@G@@0: : : : :@F@@@@WO )@@G@@0: > : N L : 0 R(4) : GREATER THAN :@F@@@@WP )@@G@@0:...............................................................:@[@@@@WQ )@@G@@0 @^@@@@ NOTES FOR TABLE 5.1 @[@@@@0 @E@@@@0(1) IF THE LEFT WR )@@G@@OPERAND OF THE POWER (*) IS NEGATIVE, THEN@F@@@@ APL\1100 WILL ATTEMPT TWS )@@G@@O GIVE A REAL-VALUED RESULT; IF THE RESULT@F@@@@ IS A COMPLEX NUMBER, A WT )@@G@@DOMAIN ERROR WILL RESULT. HENCE &27*1%3 @F@@@@ WILL YIELD THE CUBE ROOWU )@@G@@T OF &27, I.E. &3, BUT &27*0.5 WILL GIVE @E@@@@ A DOMAIN ERROR, AS THE WV )@@G@@SQUARE ROOT OF &27 IS IMAGINARY. @[@@@@0 @F@@@@0(2) THE GENERAL WW )@@G@@DEFINITION OF THE RESIDUE FUNCTION FOR LEFT AND @A@@@@ RIGHT OPERANDS L WX )@@G@@AND R IS GIVEN BY @[@@@@0 @C@@@@ L NON-ZERO R-($WY )@@G@@!L)#$LR%$!L @[@@@@0 @A@@@@ L ZERO,R$>0 R @[@@@@WZ )@@G@@0 @C@@@@ L ZERO,R<0 DOMAIN ERROR @[@@@@0 XA )@@G@@@F@@@@0(3) PERMISSIBLE VALUES FOR THE LEFT ARGUMENT OF THE GENERALIZED XB )@@G@@@F@@@@ CIRCULAR FUNCTION OPERATOR $T ARE THE INTEGERS &7 TO 7, WHERE XC )@@G@@@F@@@@ THE NEGATIVE VALUES CORRESPOND TO THE INVERSES OF THE POSITIVE XD )@@G@@@F@@@@ VALUES. IN ADDITION, THE LEFT ARGUMENT VALUES FOR THE HYPERBOLICXE )@@G@@@F@@@@ FUNCTIONS DIFFER FROM THE CORRESPONDING VALUES FOR THE NORMAL XF )@@G@@@F@@@@ TRIGONOMETRIC VALUES BY FOUR. THE TABLE BELOW GIVES THE FUNCTIONXG )@@G@@@F@@@@ OF THE RIGHT OPERAND R FOR EACH OF THE ALLOWED VALUES OF THE LEFTXH )@@G@@@]@@@@ OPERAND L: @[@@@@0 @F@@@@0...................................XI )@@G@@..............................@F@@@@0: $TL L>0 L<0 : $XJ )@@G@@TL L>0 L<0 :@F@@@@0:..............................:...XK )@@G@@.............................:@F@@@@0: 0 (L-R*2)*.5 SAME : XL )@@G@@4 (1+R*2)*.5 (&1+R*2)*.5 :@F@@@@0: : XM )@@G@@ :@F@@@@0: 1 SIN R ARCSIN R : XN )@@G@@5 SINH R ARCSINH R :@F@@@@0: : XO )@@G@@ :@F@@@@0: 2 COS R ARCLOS R : XP )@@G@@6 COSH R ARCCOSH R :@F@@@@0: : XQ )@@G@@ :@F@@@@0: 3 TAN R ARCTAN R : XR )@@G@@7 TANH R ARCTANH R :@F@@@@0:..................................XS )@@G@@.............................:@[@@@@0 @F@@@@0(4) THE REDUCTION IDENXT )@@G@@TITIES FOR THE RELATIONAL OPERATORS ARE @G@@@@ MEANINGFUL ONLY WHEN THXU )@@G@@ESE OPERATORS ARE APPLIED TO LOGICAL OPERANDS @F@@@@ (I.E. 0 AND 1). XV )@@G@@IN THESE CASES, THEY ARE EQUIVALENT TO BOOLEAN @F@@@@ FUNCTIONS OF TWO XW )@@G@@OPERANDS, FOR EXAMPLE $= IS EQUIVALENT TO THE @^@@@@ EXCLUSIVE OR FUNCXX )@@G@@TION. @[@@@@0 @G@@@@0(5) THE DYADIC PRIMITIVE OPERATORS = AND $= ARXY )@@G@@E SUBJECT TO FUZZING @D@@@@ WHEN APPLIED TO NUMERIC ARGUMENTS (SEE CHXZ )@@G@@APTER 6). @[@@@@0 @[@@@@EJECT @D@@@@ TABLE 5.2 PRYA )@@G@@IMITIVE MONADIC SCALARS @[@@@@0 @F@@@@0.............................YB )@@G@@....................................@F@@@@0: SYMBOL : DOMAIN : YC )@@G@@ NAME/DEFINITION :@F@@@@0: : O R : YD )@@G@@ :@F@@@@0:..........:...............:.YE )@@G@@...................................:@F@@@@0: + : N N : YF )@@G@@ PLUS. HAS THE SAME EFFECT AS :@F@@@@0: : : YG )@@G@@ ADDING ZERO TO THE OPERAND, :@F@@@@0: : : YH )@@G@@ I.E. +R IS EQUIVALENT TO 0+R :@F@@@@0: : : YI )@@G@@ :@F@@@@0: - : N N : YJ )@@G@@ NEGATE. CHANGES THE SIGN OF THE :@F@@@@0: : : YK )@@G@@ OPERAND. -R IS EQUIVALENT TO :@F@@@@0: : : YL )@@G@@ 0-R :@F@@@@0: : : YM )@@G@@ :@F@@@@0: # : N N : YN )@@G@@ SIGN. 1, 0 OR &1 DEPENDING ON :@F@@@@0: : : YO )@@G@@ WHETHER THE OPERAND IS POSITIVE, :@F@@@@0: : : YP )@@G@@ ZERO OR NEGATIVE :@F@@@@0: : : YQ )@@G@@ :@F@@@@0: % : N N : YR )@@G@@ RECIPROCAL. %R IS EQUIVALENT :@F@@@@0: : : YS )@@G@@ TO 1%R :@F@@@@0: : : YT )@@G@@ :@F@@@@0: $C : N I : YU )@@G@@ CEILING. THE SMALLEST INTEGER :@F@@@@0: : : YV )@@G@@ GREATER THAN THE OPERAND. THIS :@F@@@@0: : : YW )@@G@@ OPERATOR IS SUBJECT TO FUZZING :@F@@@@0: : : YX )@@G@@ (CHAPTER 6) :@F@@@@0: : : YY )@@G@@ :@F@@@@0: $L : N I : YZ )@@G@@ FLOOR. THE LARGEST INTEGER :@F@@@@0: : : ZA )@@G@@ NOT GREATER THAN THE OPERAND. :@F@@@@0: : : ZB )@@G@@ FOR POSITIVE OPERANDS, THIS :@F@@@@0: : : ZC )@@G@@ AMOUNTS TO TRUNCATION. THIS :@F@@@@0: : : ZD )@@G@@ OPERATOR IS ALSO AFFECTED BY :@F@@@@0: : : ZE )@@G@@ FUZZING :@F@@@@0: : : ZF )@@G@@ :@F@@@@0: * : N N : ZG )@@G@@ EXPONENTION. THE NUMBER 'E' :@F@@@@0: : : ZH )@@G@@ (BASE OF NATURAL LOGARITHMS) :@F@@@@0: : : ZI )@@G@@ RAISED TO THE SPECIFIED POWER :@F@@@@0: : : ZJ )@@G@@ :@F@@@@0: $* : N N : ZK )@@G@@ NATURAL LOGARITHM OF THE OPERAND :@F@@@@0: : : ZL )@@G@@ :@F@@@@0: $! : N N : ZM )@@G@@ MAGNITUDE :@F@@@@0: : : ZN )@@G@@ :@F@@@@0: ! : N N : ZO )@@G@@ FACTIONAL. GENERALIZED (VIA THE :@F@@@@0: : : ZP )@@G@@ GAMMA FUNCTION) TO NON-INTEGER :@F@@@@0: : : ZQ )@@G@@ OPERANDS. NEGATIVE INTEGER :@F@@@@0: : : ZR )@@G@@ OPERANDS GIVE DOMAIN ERRORS :@F@@@@0:..........:...............:.ZS )@@G@@...................................:@[@@@@EJECT @[@@@@0 @B@@@@ ZT )@@G@@ TABLE 5.2 (CONTINUED) @[@@@@0 @F@@@@0.................ZU )@@G@@................................................@F@@@@0: SYMBOL : DZV )@@G@@OMAIN : NAME/DEFINITION :@F@@@@0: : O ZW )@@G@@ R : :@F@@@@0:..........:.....ZX )@@G@@..........:....................................:@F@@@@0: : ZY )@@G@@ : :@F@@@@0: ? : N ZZ )@@G@@ N : ROLL. A RANDOM INTEGER CHOSEN :@F@@@@0: : AA )@@G@@ : FROM THE SET $IR. ?6 6 IS EQUIVA-:@F@@@@0: : AB )@@G@@ : LENT TO THE RANDOM ROLL OF :@F@@@@0: : AC )@@G@@ : A PAIR OF DICE. THE PSEUDO- :@F@@@@0: : AD )@@G@@ : RANDOM NUMBER SEQUENCE USED MAY :@F@@@@0: : AE )@@G@@ : BE ALTERED BY THE SETLINK :@F@@@@0: : AF )@@G@@ : FUNCTION IN THE WORKSPACE 1 WSFNS:@F@@@@0: : AG )@@G@@ : :@F@@@@0: $T : N AH )@@G@@ N : PI TIMES THE RIGHT OPERAND :@F@@@@0: : AI )@@G@@ : :@F@@@@0: $N : L AJ )@@G@@ L : NOT. THE BOOLEAN NOT OPERATOR :@F@@@@0:..........:.....AK )@@G@@..........:....................................:@^@@@@3COMPOUND OPERATORAL )@@G@@S @G@@@@ APL\1100 PROVIDES THREE GENERALIZED PRIMITIVE OPERATORAM )@@G@@S WHICH @G@@@@ ARE USED IN CONJUNCTION WITH DYADIC SCALAR OPERATORS.AN )@@G@@ THESE OPERA- @G@@@@ TORS APPLY THE SPECIFIED DYADIC SCALAR OPERATORAO )@@G@@S TO THE OPERANDS IN @F@@@@ A MANNER OTHER THAN THE STRICTLY ELEMENT-AP )@@G@@BY-ELEMENT APPLICATION @G@@@@ OF THE DYADS THEMSELVES, AND PRODUCE RESUAQ )@@G@@LTS WHOSE RANK AND DIMEN- @G@@@@ SIONS DIFFER FROM THOSE OF THE OPERAR )@@G@@ANDS. THESE OPERATORS ARE REDUC- @D@@@@ TION (A GENERALIZATION OF THEAS )@@G@@ MATHEMATICAL SUM AND @D@@@@ PRODUCT OPERATORS), INNER PRODUCT, AND OUAT )@@G@@TER PRODUCT.@]@@@@2REDUCTION @G@@@@ REDUCTION IS A MONADIC OPERATIAU )@@G@@ON INDICATED BY THE / CHARACTER. @F@@@@ IT IS ALWAYS DONE IN CONJUNCTAV )@@G@@ION WITH A PRIMITIVE DYADIC SCALAR @G@@@@ OPERATOR, WHICH IS WRITTEN IMAW )@@G@@MEDIATELY TO THE LEFT OF THE /. THUS, @G@@@@ A REDUCTION WITH RESPECAX )@@G@@T TO ADDITION IS WRITTEN AS +/. A REDUCTION @D@@@@ WITH RESPECT TO TAY )@@G@@HE CEILING WOULD BE WRITTEN $C/. @[@@@@0 @G@@@@ THE MOST OBVAZ )@@G@@IOUS EXAMPLE OF REDUCTION IS ITS APPLICATION TO A @G@@@@ VECTOR. A BA )@@G@@REDUCTION WITH RESPECT TO SOME OPERATOR IS EQUIVALENT TO @F@@@@ HAVINBB )@@G@@G WRITTEN THE OPERATOR BETWEEN EACH ELEMENT OF THE VECTOR. @#@@@@ FOR EBC )@@G@@XAMPLE, @[@@@@0 @ @@@@ +/ 2 3 4 @[@@@@0 BD )@@G@@@ @@@@0IS EQUIVALENT TO WRITING @[@@@@0 @ @@@@ BE )@@G@@ 2 + 3 + 4 @[@@@@0 @F@@@@0THUS, +/ APPLIED TO A VECTOR IS THE SUM OBF )@@G@@F ALL ELEMENTS OF THE @F@@@@ VECTOR. THE APPLICATION OF THE SPECIFIEDBG )@@G@@ OPERATOR TAKES PLACE IN@F@@@@ THE NORMAL APL ORDER OF RIGHT-TO-LEFT. TBH )@@G@@O DEMONSTRATE THIS, WE @]@@@@ NOTE THAT @[@@@@0 @D@@@@ BI )@@G@@ %/ 3 5 IS THREE FIFTHS, BUT @[@@@@0 @B@@@@ BJ )@@G@@ %/ 3 3 5 IS FIVE. @[@@@@0 @G@@@@ IT IS AT THIS POINBK )@@G@@T THAT THE REDUCTION IDENTITY ELEMENT OF THE @G@@@@ DYADIC SCALAR OPEBL )@@G@@RATORS PLAYS A ROLE. SINCE THE DEFINITION OF THE @G@@@@ IDENTITY ELBM )@@G@@EMENT IS THAT IT DOES ESSENTIALLY NOTHING TO THE RESULT, @G@@@@ WE CABN )@@G@@N CONSIDER THAT THE PRESENCE OF THE IDENTITY ELEMENT IS IMPLIED @F@@@@BO )@@G@@ IN A REDUCTION. USING THE (NON-APL) CONVENTION THAT THE IDENTITY@G@@@@BP )@@G@@ IS IN PARENTHESES (BECAUSE IT IS NOT 'REALLY' THERE), THE TWO EXAMPLES BQ )@@G@@@ @@@@ ABOVE COULD BE REWRITTEN AS: @[@@@@0 @C@@@@ +/ 2 3 4BR )@@G@@ (0) AND %/ 3 3 5 (1) @[@@@@0 @G@@@@0NOW CONSIDER THE CASE TBS )@@G@@HAT THE OPERANDS WERE TWO-ELEMENT VECTORS; WE @#@@@@ WOULD THEN HAVE BT )@@G@@@[@@@@0 @B@@@@ +/ 2 3 AND %/ 3 3 @[@@@@0 BU )@@G@@@ @@@@0OR ADDING THE IDENTITIES: @[@@@@0 @C@@@@ +/ 2 3 (BV )@@G@@0) %/ 3 3 (1) @[@@@@0 @^@@@@0WHICH IS EQUIVALENT TO BW )@@G@@@[@@@@0 @C@@@@ 2 + 3 (+0) AND 3 % 3 (%1) @[@@@@BX )@@G@@0 @G@@@@0CONTINUING THIS PROCESS THE FOLLOWING DEFINITIONS SHOULD BEBY )@@G@@ CLEAR. @[@@@@0 @G@@@@0(A) THE RESULT OF REDUCING A ONE-ELEMENTBZ )@@G@@ OPERAND HAS THE VALUE OF @G@@@@ THE OPERAND ITSELF (REGARDLESS OF TCA )@@G@@HE DYAD USED IN THE REDUCTION), AND @[@@@@0 @F@@@@0(B) THE RESULT OFCB )@@G@@ REDUCING A NULL (ZERO-ELEMENT) OPERAND IS THE @G@@@@ REDUCTION IDENTITCC )@@G@@Y OF THE SPECIFIED DYAD IF IT EXISTS (OR A DOMAIN @^@@@@ ERROR IF ITCD )@@G@@ DOES NOT). @[@@@@0 @F@@@@ THE NAME REDUCTION ARISES BECAUSE THCE )@@G@@E RANK OF THE OPERAND IS@G@@@@ REDUCED BY ONE TO GIVE THE RANK OF THE RECF )@@G@@SULT. THUS, THE REDUCTION @G@@@@ OF A VECTOR IS A SCALAR, THE REDUCTCG )@@G@@ION OF A MATRIX IS A VECTOR, ETC. @F@@@@ (IN THIS CONTEXT, A SCALAR OPCH )@@G@@ERAND ACTS LIKE A VECTOR, I.E. THE @F@@@@ REDUCTION OF A SCALAR IS A SCCI )@@G@@ALAR). REDUCTION IS NORMALLY ALONG @F@@@@ THE LAST COORDINATE OF AN ARRCJ )@@G@@AY (CLEARLY FOR VECTORS THE LAST @F@@@@ COORDINATE IS THE ONLY COORDICK )@@G@@NATE), AND 'REDUCES IT AWAY'. IF WE@ @@@@ HAD A MATRIX M OF VALUES CL )@@G@@@[@@@@0 @#@@@@ 1 2 3 @#@@@@ 4 5 6 @[@@@@0 CM )@@G@@@C@@@@0THEN THE REDUCTION +/M WOULD BE EQUIVALENT TO @[@@@@0 @^@@@@CN )@@G@@ 1 + 2 + 3 @[@@@@0 @^@@@@ 4 + 5 + 6 @[@@@@CO )@@G@@0 @G@@@@0GIVING THE VECTOR RESULT 6 15. REDUCTION MAY BE SPECIFICALCP )@@G@@LY APPLIED @G@@@@ ALONG ANY COORDINATE OF AN ARRAY. IF THE SYMBOL $/ ICQ )@@G@@S USED INSTEAD @F@@@@ OF /, THEN REDUCTION TAKES PLACE ALONG THE FIRSCR )@@G@@T COORDINATE OF AN@E@@@@ ARRAY. IN OUR EXAMPLE ABOVE, +$/M WOULD BE EQUCS )@@G@@IVALENT TO @[@@@@0 @#@@@@ 1 2 3 @#@@@@ + + + CT )@@G@@@#@@@@ 4 6 6 ,@[@@@@0 @C@@@@0YIELDING THE VECTOR RESULT 5 CU )@@G@@7 9 . @[@@@@0 @F@@@@ REDUCTION ALONG AN ARBITRARY CCV )@@G@@OORDINATE MAY BE SPECIFIED BY @F@@@@ PUTTING THE COORDINATE SUBSCRIPT NUCW )@@G@@MBER IN BRACKETS AFTER THE @F@@@@ REDUCTION OPERATOR, E.G. +/[1] CX )@@G@@SIGNIFIES REDUCTION ALONG THE @G@@@@ FIRST COORDINATE. THE QUANTITY WITCY )@@G@@HIN THE BRACKETS MAY BE ANY APL @F@@@@ EXPRESSION WHICH EVALUATES TOCZ )@@G@@ AN INTEGER. IF THIS VALUE DOES NOT@F@@@@ SPECIFY ONE OF THE COORDINATEDA )@@G@@S OF THE RIGHT OPERAND (I.E. IS NOT @F@@@@ A DIGIT IN THE SET $I$R$RY, FDB )@@G@@OR RIGHT OPERAND Y), AN INDEX ERROR @#@@@@ WILL RESULT. @#@@@@2INNERDC )@@G@@ PRODUCT @G@@@@ THE APL INNER PRODUCT IS A DYADIC OPERATION, ANDDD )@@G@@ REQUIRES THAT @F@@@@ TWO SCALAR DYADIC OPERATORS BE SPECIFIED. THE DE )@@G@@DECIMAL POINT IS @G@@@@ USED TO INDICATE AN INNER PRODUCT, AND THE TWO DF )@@G@@DYADIC OPERATORS MUST @G@@@@ APPEAR DIRECTLY TO THE LEFT AND RIGHT OF DG )@@G@@THE POINT (WITHOUT INTER- @G@@@@ VENING BLANKS). THE ORDINARY MATRIDH )@@G@@X INNER OR DOT PRODUCT OF MATHE- @G@@@@ MATICS IS A SPECIAL CASE OF TDI )@@G@@HE USE OF THE APL INNER PRODUCT OPERATOR, @^@@@@ AND WOULD BE WRITTEN ASDJ )@@G@@@[@@@@0 @^@@@@ +.# @[@@@@0 @G@@@@ FOR CODK )@@G@@NFORMABILITY, THE RIGHTMOST DIMENSION OF THE LEFT OPERAND @G@@@@ MUST DL )@@G@@EQUAL THE LEFTMOST DIMENSION OF THE RIGHT OPERAND; IN EFFECT, @G@@@@DM )@@G@@ A REDUCTION TAKES PLACE ALONG THIS INNERMOST COORDINATE. THE DIMEN- DN )@@G@@@E@@@@ SIONS OF THE RESULT ARE OBTAINED BY CATENATING THE DIMEN- @F@@@@DO )@@G@@ SIONS OF THE LEFT AND RIGHT OPERANDS, STRIKING OUT THE INNERMOST @F@@@@DP )@@G@@ DIMENSIONS OF EACH. FOR EXAMPLE, FOR LEFT AND RIGHT OPERANDS OF @F@@@@DQ )@@G@@ DIMENSIONS 7 2 5 AND 5 3 RESPECTIVELY, THE DIMENSIONS OF THE @F@@@@DR )@@G@@ RESULT WOULD BE 7 2 3 . IF ONE OF THE OPERANDS IS A SCALAR, IT@F@@@@DS )@@G@@ IS EXTENDED IN THE USUAL FASHION. IF ONE OF THE INNER DIMENSIONS@F@@@@DT )@@G@@ OF AN OPERAND IS ONE, IT WILL BE EXTENDED (IF NECESSARY) TO MATCH@G@@@@DU )@@G@@ THE INNER DIMENSION OF THE OTHER OPERAND (THIS EXTENSION IS NOT YET DV )@@G@@@#@@@@ OPERATIONAL). @[@@@@0 @G@@@@ IN THE INNER PRODUCT OPEDW )@@G@@RATION, SELECTED ELEMENTS OF THE LEFT @F@@@@ AND RIGHT OPERAND ARE CDX )@@G@@OMBINED PAIRWISE USING THE DYADIC OPERATOR@F@@@@ SPECIFIED ON THE RIGHT DY )@@G@@TO FORM VECTORS. THESE VECTORS ARE THEN @G@@@@ REDUCED USING THE OPERADZ )@@G@@TOR SPECIFIED ON THE LEFT OF THE INNER PRO- @G@@@@ DUCT. FORMALLY SEA )@@G@@TATED, IF A AND B ARE THE LEFT AND RIGHT OPERANDS @F@@@@ OF +.# AND EB )@@G@@C IS THE RESULT, THEN THE DIMENSION OF C IS GIVEN BY @[@@@@0 @A@@@@EC )@@G@@ (&1$^$RA),1$^$RB@[@@@@0 @F@@@@0IF WE SAY THAT A ED )@@G@@HAS RANK N (I.E. N SUBSCRIPTS) AND B HAS RANK M,@B@@@@ THEN THE VALUE OFEE )@@G@@ THE SPECIFIC ELEMENT @[@@@@0 @B@@@@ C[A1;A2;...AN-1;B2;BEF )@@G@@3...BM] @[@@@@0 @F@@@@0(NOTICE THAT COORDINATES AN AND B1 ARE REEG )@@G@@DUCED OUT) IS EQUAL TO @[@@@@0 @C@@@@ +/A[A1;A2...AN-1;]#BEH )@@G@@[;B2;B3...BM] @[@@@@0 @G@@@@ IF THE LENGTH OF THE COORDINATEI )@@G@@E OVER WHICH THE REDUCTION TAKES @G@@@@ PLACE (THE INNERMOST COORDINAEJ )@@G@@TE OF THE OPERANDS) IS ZERO, THE RESULT @F@@@@ IS AN ARRAY OF VALUES EEK )@@G@@QUAL TO THE REDUCTION IDENTITY OF THE LEFT@ @@@@ OPERATOR (IF IT EXISTS)EL )@@G@@. @[@@@@0 @#@@@@2OUTER PRODUCT @F@@@@ THE APL OUTER PRODEM )@@G@@UCT OPERATION IS ALSO DYADIC, AND REQUIRES@F@@@@ THAT A SINGLE DYADIC SCEN )@@G@@ALAR OPERATOR BE SPECIFIED WITH IT. THE @ @@@@ OUTER PRODUCT IS SPECIFEO )@@G@@IED BY@[@@@@0 @^@@@@ $..X@[@@@@0 @G@@@@0WHEREEP )@@G@@ X IS ANY DYADIC SCALAR OPERATOR. NOTE THAT THIS IS SIMILAR TO @G@@@@EQ )@@G@@ THE SPECIFICATION FOR INNER PRODUCT EXCEPT THAT THE LEFT OPERATOR IS ER )@@G@@@#@@@@ THE DIGRAPH $. @[@@@@0 @G@@@@ THE RESULT OF AN OUTER PES )@@G@@RODUCT OPERATION ON THE OPERANDS A AND @ @@@@ B IS AN ARRAY OF DIMENSET )@@G@@IONS @[@@@@0 @ @@@@ ($RA),$RB @[@@@@0 @F@@@@EU )@@G@@0WHICH IS OBTAINED BY APPLYING THE SPECIFIED DYADIC OPERATION TO @F@@@@EV )@@G@@ EVERY PAIR OF ELEMENTS OF A AND B. IN ADDITION TO OBVIOUS APPLI-@F@@@@EW )@@G@@ CATIONS USING ARITHMETIC OPERATIONS, THIS OPERATION IS EXTREMELY @F@@@@EX )@@G@@ USEFUL IN GENERATING MASKS OF VARIOUS TYPES. FOR EXAMPLE, THE @]@@@@EY )@@G@@ EXPRESSION @[@@@@0 @A@@@@ ($IN)$..=$IN @[@@@@EZ )@@G@@0 @E@@@@0WILL GENERATE AN N BY N IDENTITY MATRIX, AND THE EXPRESSIONFA )@@G@@@[@@@@0 @A@@@@ ($IN)$..< $IM @[@@@@0 @F@@@@FB )@@G@@0RESULTS IN AN N BY M MATRIX WITH 1'S ON AND ABOVE THE PRINCIPAL @ @@@@FC )@@G@@ DIAGONAL AND ZEROS BELOW IT. @#@@@@3MIXED OPERATORS @^@@@@2RESHAPE $R FD )@@G@@(DYADIC RHO)@G@@@@ THIS OPERATOR IS USED TO CREATE VARIABLES OF A SFE )@@G@@PECIFIC SHAPE @F@@@@ AND INITIALIZE THEIR VALUES. THE LEFT ARGUMENTFF )@@G@@ MUST BE A NUMERIC@G@@@@ VECTOR OR SCALAR. THE RANK OF THE RESULT IS EQFG )@@G@@UAL TO THE NUMBER OF @G@@@@ ELEMENTS OF THE LEFT ARGUMENT, AND THE DIFH )@@G@@MENSIONS OF THE RESULT ARE @G@@@@ GIVEN BY ITS VALUES. THE VALUES OFFI )@@G@@ THE RESULT ARE SET BY TAKING THE @E@@@@ VALUES OF THE RIGHT ARGUMENT FJ )@@G@@CYCLICALLY IN ROW-MAJOR ORDER.@[@@@@0 @#@@@@ EXAMPLES: @E@@@@FK )@@G@@0 3 2 $R 'ABCDEF' YIELDS THE 3 BY 2 MATRIX @[@@@@0 FL )@@G@@@ @@@@0 ABC @ @@@@0 DEF FM )@@G@@@[@@@@0 @D@@@@0THE EXPRESSION 5 $R 6 1 GIVES THE 5-ELEMENT VECTOR FN )@@G@@@[@@@@0 @^@@@@0 6 1 6 1 6@[@@@@0 @^@@@@2SIZE $R (MOFO )@@G@@NADIC RHO) @F@@@@ THIS OPERATOR CAN BE CONSIDERED THE INVERSE OF TFP )@@G@@HE RESHAPE @G@@@@ (DYADIC $R) OPERATOR. IT RETURNS A VECTOR WHOSE LENGFQ )@@G@@TH IS THE RANK @F@@@@ OF THE RIGHT ARGUMENT, AND WHOSE VALUES ARE THEFR )@@G@@ CORRESPONDING @]@@@@ DIMENSIONS.@[@@@@0 @B@@@@ EXAMPLE: IFFS )@@G@@ C IS SPECIFIED BY @A@@@@0 C $S 3 2 $R 'ABCDEF'@[@@@@FT )@@G@@0THEN @ @@@@0 $RC IS 3 2 . @[@@@@0 @F@@@@ SINCE FU )@@G@@A SCALAR HAS ZERO RANK, MONADIC $R APPLIED TO A SCALAR@D@@@@ YIELDS A VEFV )@@G@@CTOR OF ZERO LENGTH, I.E. A 'NULL VECTOR'.@A@@@@2INDEX GENERATOR $I (MONFW )@@G@@ADIC IOTA) @G@@@@ THIS OPERATOR GENERATES A VECTOR OF SEQUENTIAL IFX )@@G@@NTEGERS. THE @G@@@@ OPERAND MUST BE A ONE-ELEMENT NUMERIC QUANTITY,FY )@@G@@ (SCALAR OR VECTOR) @F@@@@ AND THE LENGTH OF THE RESULT WILL BE EQUAFZ )@@G@@L TO THE VALUE OF THE @G@@@@ OPERAND. THE VALUES OF THE RESULT INCREAGA )@@G@@SE BY UNITY STARTING FROM @#@@@@ THE INDEX ORIGIN.@[@@@@0 @E@@@@GB )@@G@@ EXAMPLES: IN ORIGIN 1, $I6 IS 1 2 3 4 5 6 . @A@@@@0IN ORGC )@@G@@IGIN ZERO, $I3 IS 0 1 2 . @[@@@@0 @ @@@@2INDEX OF $I (DYADIC IOTGD )@@G@@A) @F@@@@ THIS OPERATOR REQUIRES A VECTOR LEFT ARGUMENT, AND THEGE )@@G@@ RIGHT@F@@@@ ARGUMENT MAY BE OF ANY SHAPE. THE RESULT IS AN ARRAY OF INGF )@@G@@TEGERS@F@@@@ WHICH TELLS THE POSITION OF EACH ELEMENT OF THE RIGHT ARGUMGG )@@G@@ENT IN@F@@@@ THE LEFT. THIS RESULT IS AN ARRAY OF INTEGERS WHICH HAS THGH )@@G@@E SAME@F@@@@ SHAPE AS THE RIGHT ARGUMENT, AND EACH INTEGER IS THE INDEX GI )@@G@@OF THE@F@@@@ FIRST OCCURRENCE IN THE LEFT ARGUMENT OF A VALUE EQUAL TO TGJ )@@G@@HE @F@@@@ CORRESPONDING ELEMENT OF THE RIGHT ARGUMENT. IF NO VALUE IGK )@@G@@N THE @F@@@@ LEFT ARGUMENT CORRESPONDS, THEN THE RESULT IS 1 + $RL FOR LGL )@@G@@EFT @]@@@@ ARGUMENT L.@[@@@@0 @B@@@@ EXAMPLES: 3 6 2.4 $IGM )@@G@@ 6 IS 2 @[@@@@0 @A@@@@0AND IF R IS THE TWO BY THREE MATRIX@[@@@@GN )@@G@@0 @^@@@@0 OLD @^@@@@0 NEW @ @@@@GO )@@G@@0THEN 'ABCDEF' $IC @[@@@@0 @^@@@@0IS THE MATRIX 7 7 4 GP )@@G@@@^@@@@0 7 5 7 @[@@@@0 @F@@@@ THE DYADIC IOTA OPGQ )@@G@@ERATION MAY BE CONSIDERED AS THE INVERSE @F@@@@ OF SUBSCRIPTING. FOR EGR )@@G@@XAMPLE, IF V IS A VECTOR CONSISTING OF @F@@@@ ALL OF THE LETTERS OF TGS )@@G@@HE ALPHABET, AND A IS ANY ALPHABETIC @]@@@@ ARRAY, THEN@[@@@@0 GT )@@G@@@^@@@@0 V[V$IA]@C@@@@0IS A, REGARDLESS OF THE ORIGINAL SGU )@@G@@HAPE OF A. @[@@@@0 @^@@@@2RAVEL , (MONADIC) @F@@@@ THE RAGV )@@G@@VEL OPERATOR YIELDS A VECTOR RESULT WHOSE VALUES ARE @D@@@@ THE VALUES GW )@@G@@OF THE RIGHT OPERAND IN ROW-MAJOR ORDER. @[@@@@0 @^@@@@2CATENATE ,GX )@@G@@ (DYADIC) @G@@@@ THE CATENATE OPERATOR JOINS ITS TWO ARGUMENTS ALGY )@@G@@ONG A COORDI- @F@@@@ NATE. THE COORDINATE MAY BE AN EXISTING ONE (IGZ )@@G@@N WHICH CASE IT @F@@@@ IS LENGTHENED) OR A NEW COORDINATE ADDED FOR THHA )@@G@@IS PURPOSE. THE @F@@@@ SIMPLEST CASE OCCURS IF THE ARGUMENTS ARE SCALAHB )@@G@@RS OR VECTORS; THE@G@@@@ RESULT IS A VECTOR OBTAINED BY JOINING THE TWO HC )@@G@@OPERANDS END TO END. @#@@@@ AS AN EXAMPLE, @[@@@@0 @^@@@@0 HD )@@G@@ 'ABC','XYZ' @[@@@@0 @B@@@@0GIVES THE VECTOR RESULT 'ABCXYZ' HE )@@G@@. @[@@@@0 @F@@@@ SIMILARLY, MATRICES AND ARRAYS OF HIGHER RHF )@@G@@ANK MAY BE JOINED @F@@@@ ALONG THEIR LAST COORDINATE. IF WE HAVE 2 BY 3HG )@@G@@ MATRICES A AND @]@@@@ B WHERE @[@@@@0 @B@@@@0A IS 1 2 3 AHH )@@G@@ND B IS 7 8 9 @B@@@@0 4 5 6 10 11 12 HI )@@G@@@[@@@@0 @A@@@@0THEN A,B IS THE 2 BY 6 MATRIX @[@@@@0 @ @@@@HJ )@@G@@0 1 2 3 7 8 9@ @@@@0 4 5 6 10 11 12@[@@@@HK )@@G@@0 @F@@@@0TWO ARRAYS MAY BE JOINED BY CATENATION ALONG ANY COORDINATEHL )@@G@@. TO @F@@@@ CATENATE ALONG A COORDINATE OTHER THAN THE LAST, THE COORDIHM )@@G@@NATE @F@@@@ MUST BE ENCLOSED IN BRACKETS IN THE USUAL FASHION FOLLOWINGHN )@@G@@ THE @F@@@@ OPERATOR. THE MATRICES ABOVE WOULD BE JOINED ALONG THEIR FHO )@@G@@IRST @F@@@@ COORDINATE BY A,[1]B WHICH WOULD RESULT IN THE 4 BY 3 MATHP )@@G@@RIX @[@@@@0 @^@@@@0 1 2 3 @^@@@@0 4 5 HQ )@@G@@ 6 @^@@@@0 7 8 9 @^@@@@0 10 11 12 @[@@@@HR )@@G@@0 @E@@@@ CATENATION ALONG AN EXISTING COORDINATE IS ALLOWED IF:HS )@@G@@@G@@@@0 (A) BOTH ARGUMENTS HAVE THE SAME RANK, AND THEIR DIMENSIONHT )@@G@@S @E@@@@0 ARE EQUAL FOR ALL BUT THE SELECTED COORDINATE HU )@@G@@@F@@@@0OR; (B) THE RANK THE ARGUMENTS DIFFERS BY ONE. IN THIS CASE, HV )@@G@@@F@@@@0 THE OPERAND OF LOWER RANK IS EXTENDED BY CONSIDERING HW )@@G@@@F@@@@0 THAT IT HAS AN EXTRA DIMENSION OF LENGTH 1 WHICH IS HX )@@G@@@F@@@@0 THE SELECTED COORDINATE. ALL OTHER DIMENSIONS OF BOTHHY )@@G@@@A@@@@0 OPERANDS MUST BE EQUAL @F@@@@0OR; (C) ONE OF THE OHZ )@@G@@PERANDS IS A SCALAR. IN THIS CASE, THE @F@@@@0 SCALAR IS EXIA )@@G@@TENDED TO HAVE THE SAME DIMENSIONS AS THE @F@@@@0 OTHER ARGUMEIB )@@G@@NT EXCEPT THAT THE SELECTED COORDINATE HAS@B@@@@0 AN ASSUMED DIC )@@G@@IMENSION OF UNITY.@[@@@@0 @F@@@@ THE CATENATION OF TWO OPERANDSID )@@G@@ BY CREATING A NEW COORDINATE @F@@@@ IS CALLED LAMINATION. LAMINATION IIE )@@G@@S INDICATED WHEN THE VALUE OF @F@@@@ THE COORDINATE SELECTING EXPRESSIONIF )@@G@@ IS A NON-INTEGER; THE NEW @F@@@@ COORDINATE WILL BE INSERTED BETWEENIG )@@G@@ THE COORDINATES WHOSE INDICES@F@@@@ BRACKET THIS VALUE. IT WILL BE OF IH )@@G@@LENGTH TWO, WHERE THE LOWER @F@@@@ VALUE SELECTS ELEMENTS OF THE LEFT II )@@G@@OPERAND. AS AN EXAMPLE, IF @C@@@@ A AND B ARE AS ABOVE, THEN (IN OIJ )@@G@@RIGIN 1) @[@@@@0 @^@@@@0 A,[1.5]B @[@@@@0 @ @@@@IK )@@G@@0YIELDS THE 2 BY 2 BY 3 ARRAY:@[@@@@0 @^@@@@0 1 2 3 IL )@@G@@@^@@@@0 7 8 9 @[@@@@0 @^@@@@0 4 5 6 IM )@@G@@@^@@@@0 10 11 12 @[@@@@0 @D@@@@ LAMINATION OF TWO IN )@@G@@ARRAYS IS ALLOWED IF EITHER @[@@@@0 @E@@@@0 (A) BOTH ARRAYS IO )@@G@@HAVE IDENTICAL RANK AND DIMENSIONS, @F@@@@0OR; (B) ONE OF THE OPERANDIP )@@G@@S IS A SCALAR, IN WHICH CASE IT IS @E@@@@0 EXTENDED TO THE SAIQ )@@G@@ME DIMENSIONS AS THE OTHER. @[@@@@0 @ @@@@2TAKE ^ (ALTERNATE: @TIR )@@G@@) @F@@@@ THE DYADIC OPERATOR TAKE BEARS A SIMILARITY TO THE RIS )@@G@@ESHAPE@F@@@@ (DYADIC RHO) OPERATOR IN THAT THE LEFT OPERAND SPECIFIES THIT )@@G@@E @F@@@@ RANK AND DIMENSIONS OF THE RESULT, AND THE VALUES OF THE REIU )@@G@@SULT @G@@@@ ARE TAKEN FROM THE RIGHT OPERAND; IT DIFFERS IN THE MANNER IV )@@G@@IN WHICH @F@@@@ THE VALUES ARE CHOSEN. THE LEFT ARGUMENT MUST BE A VIW )@@G@@ECTOR WHOSE @F@@@@ LENGTH IS EQUAL TO THE RANK OF THE RIGHT ARGUMENT (EXIX )@@G@@CEPT THAT @F@@@@ SCALARS AND ONE-ELEMENT VECTORS ARE EXTENDED). IN ITIY )@@G@@S SIMPLEST @G@@@@ FORM, THE RESULT IS OBTAINED BY TAKING THE FIRST 'N' IZ )@@G@@ELEMENTS ALONG @F@@@@ EACH COORDINATE OF THE RIGHT OPERAND, WHERE 'N'JA )@@G@@ IS THE ELEMENT OF@F@@@@ THE LEFT ARGUMENT WHICH CORRESPONDS TO THAT COOJB )@@G@@RDINATE. IN THE @B@@@@ SIMPLE CASE OF A VECTOR, FOR INSTANCE, @[@@@@JC )@@G@@0 @A@@@@0 3 ^ 'ABCDEF' IS 'ABC'@[@@@@0 @ @@@@0AND IJD )@@G@@F C IS THE MATRIX @[@@@@0 @#@@@@0 1 2 3@#@@@@0 JE )@@G@@ 4 5 6@#@@@@0 7 8 9@[@@@@0 @A@@@@0THEN 2 2 ^ C JF )@@G@@ IS THE MATRIX @[@@@@0 @#@@@@0 1 2 @#@@@@0 3JG )@@G@@ 4 @[@@@@0 @F@@@@0IF THE VALUE OF AN ELEMENT IN THE LEFT ARGUMENTJH )@@G@@ IS NEGATIVE, THEN@F@@@@ THE RESULT IS OBTAINED BY TAKING THE LAST N EJI )@@G@@LEMENTS INSTEAD OF@^@@@@ THE FIRST N . THUS, @[@@@@0 @B@@@@0 JJ )@@G@@ &3^ 'ABCDEF' IS 'DEF' , AND @[@@@@0 @A@@@@0 2 &2^C IJK )@@G@@S 2 3 @A@@@@0 5 6 @[@@@@0 JL )@@G@@@G@@@@ IT IS POSSIBLE FOR A VALUE N OF THE LEFT ARGUMENT TO EXCEEJM )@@G@@D @G@@@@ THE SIZE OF THE CORRESPONDING DIMENSION OF THE RIGHT ARGUMEJN )@@G@@NT. IN @G@@@@ THIS CASE (CALLED 'OVERTAKE'), THE RESULT IS FILLED WJO )@@G@@ITH ZEROS (IF @F@@@@ NUMERIC) OR BLANKS (IF CHARACTER). THUS, WITH JP )@@G@@ C AS ABOVE, @[@@@@0 @B@@@@0 2 4 ^ C IS 1 2 3JQ )@@G@@ 0 @B@@@@0 4 5 6 0 @[@@@@0 @C@@@@JR )@@G@@0OVERTAKE IS NOT YET OPERATIONAL IN APL\1100. @[@@@@0 @ @@@@2DROP JS )@@G@@ $^ (ALTERNATE: @D) @G@@@@ THE DYADIC OPERATOR DROP IS SIMILAJT )@@G@@R TO TAKE; THE NUMBER OF @F@@@@ ELEMENTS SPECIFIED IN THE LEFT ARGUJU )@@G@@MENTS ARE DROPPED OFF OF THE @E@@@@ LEFT (OR RIGHT) OR THE SPECIFIED COJV )@@G@@ORDINATE. FOR EXAMPLE, @[@@@@0 @A@@@@0 3$^ 'ABCDEF' IS 'DEFJW )@@G@@'. @[@@@@0 @A@@@@2UPGRADE $U AND DOWNGRADE $D @F@@@@ JX )@@G@@THE UPGRADE AND DOWNGRADE OPERATORS ARE MONADIC PRIMITIVES @F@@@@ WHICHJY )@@G@@ ARE USED FOR SORTING THEIR VECTOR RIGHT ARGUMENTS. THE @F@@@@ RESULJZ )@@G@@T OF AN UPGRADE IS THE PERMUTATION VECTOR OF INDICES WHICH @F@@@@ WOULDKA )@@G@@ ORDER THE RIGHT ARGUMENT IN ASCENDING SEQUENCE; DOWNGRADE @ @@@@ SORTSKB )@@G@@ IN DESCENDING SEQUENCE.@[@@@@0 @E@@@@ EXAMPLES: $U 7 2.6 3KC )@@G@@ 3 12 IS 2 3 4 1 5 @[@@@@0 @F@@@@ THE UPGRADE AND DOKD )@@G@@WNGRADE OPERATORS CAN BE USED TO EFFECT @F@@@@ 'MESHING', AN OPERATIONKE )@@G@@ DEFINED IN DR. IVERSON'S ORIGINAL WORK ON@F@@@@ APL [1], BUT NOT INCLUDKF )@@G@@ED AS A PRIMITIVE IN APL\1100. IF A AND@F@@@@ B ARE VECTORS OF THE SKG )@@G@@AME MODE, AND P IS A LOGICAL VECTOR @ @@@@ (ZEROS AND ONES ONLY), KH )@@G@@THEN @[@@@@0 @^@@@@0 (B,A)[$U$DP] @[@@@@0 @F@@@@0IS A KI )@@G@@VECTOR CONSISTING OF ELEMENTS OF A WHEREVER THERE WERE @F@@@@ ZEROSKJ )@@G@@ IN THE MASK P AND ELEMENTS OF B WHERE THERE WERE ONES. @F@@@@ THIS KK )@@G@@ASSUMES THAT THE NUMBERS OF ZEROS AND ONES IN P ARE EQUAL @B@@@@ TO THKL )@@G@@E NUMBER OF ELEMENTS IN A AND B. @[@@@@0 @A@@@@2COMPRESS / AND KM )@@G@@ $/ (DYADIC) @F@@@@ THE COMPRESS OPERATOR COMPRESSES ITS RIGHTKN )@@G@@ OPERAND ALONG A @F@@@@ SPECIFIED COORDINATE BY STRIKING OUT ELEMENTS AKO )@@G@@S SPECIFIED BY THE@F@@@@ LEFT OPERAND. THE LEFT OPERAND MUST BE A LOGICKP )@@G@@AL VECTOR (I.E. @E@@@@ ONLY 1'S OR 0'S) WHOSE LENGTH IS EQUAL TO THE LKQ )@@G@@ENGTH OF THE@F@@@@ SELECTED COORDINATE. THE LEFT OPERAND IS USED AS A LKR )@@G@@OGICAL MASK @F@@@@ AND IS MATCHED AGAINST THE RIGHT ARGUMENT. WHEREVER KS )@@G@@THERE IS A @F@@@@ 1 IN THE LEFT OPERAND, THE CORRESPONDING ELEMENT OF TKT )@@G@@HE RIGHT @F@@@@ OPERAND WILL BE USED; A 0 IN THE LEFT OPERAND WILL CAKU )@@G@@USE THE COR-@F@@@@ RESPONDING ELEMENT(S) OF THE RIGHT OPERAND TO BE STRIKV )@@G@@CKEN OUT. @[@@@@0 @#@@@@ EXAMPLES @[@@@@0 @A@@@@0 KW )@@G@@ 1 0 1 / 'ABC' IS 'AC' @[@@@@0 @^@@@@0AND, IF X IS GIVEN BY KX )@@G@@@[@@@@0 @ @@@@0 X $S 3 2 $R $I 6 @[@@@@0 @[@@@@0THEN KY )@@G@@@B@@@@0 1 0 / X IS THE VECTOR 1 3 5 .@[@@@@0 @G@@@@ KZ )@@G@@THE / SYMBOL SPECIFIES COMPRESSION ALONG THE LAST COORDINATE, @F@@@@LA )@@G@@ AND $/ IS COMPRESSION ALONG THE FIRST. IN ADDITION, A PARTICULAR@G@@@@LB )@@G@@ COORDINATE MAY BE SELECTED BY SUBSCRIPTING THE OPERATOR (SEE BELOW). LC )@@G@@@^@@@@2EXPAND \ AND $\ @F@@@@ THE EXPAND OPERATOR IS A DYADILD )@@G@@C OPERATOR WHICH CAN BE CON- @F@@@@ SIDERED AS AN INVERSE TO COMPRESS. LE )@@G@@ IT TOO TAKES A LOGICAL VECTOR@F@@@@ AS ITS LEFT OPERAND AND MATCHES THILF )@@G@@S OPERAND AGAINST THE RIGHT @F@@@@ OPERAND. INSTEAD OF DELETING ELEMELG )@@G@@NTS AS COMPRESS DOES, HOWEVER,@F@@@@ EXPAND INSERTS ELEMENTS; EVERYWHERELH )@@G@@ A ONE APPEARS IN THE LEFT @F@@@@ OPERAND, THE CORRESPONDING ELEMENT LI )@@G@@OF THE RIGHT OPERAND IS TAKEN,@F@@@@ WHEREVER A ZERO APPEARS, A FILLER ELJ )@@G@@LEMENT IS INSERTED. IF THE @F@@@@ RIGHT OPERAND IS NUMERIC, THE FILLELK )@@G@@R ELEMENT IS ZERO; A BLANK IS @A@@@@ THE FILLER FOR CHARACTER OPERANDS. LL )@@G@@@[@@@@0 @G@@@@ ALTHOUGH NULL DATA SUCH AS $IO OR '' HAVE THLM )@@G@@E PROPERTY OF @F@@@@ MODE (NUMERIC OR CHARACTER), THE EXPAND OPERATOLN )@@G@@R IS THE ONLY APL @F@@@@ OPERATOR FOR WHICH THE MODE IS USED (IN DETERMILO )@@G@@NING THE FILL @F@@@@ CHARACTER). ONE OF THE USES OF THIS FEATURE ISLP )@@G@@ IN DETERMINING @E@@@@ WHETHER A GIVEN OPERAND IS NUMERIC OR CHARACTERLQ )@@G@@ - E.G. THE @]@@@@ EXPRESSION @[@@@@0 @^@@@@0 0=0\0$RX LR )@@G@@@[@@@@0 @E@@@@0WILL BE TRUE IF X IS NUMERIC, FALSE IF X IS CHARACTERLS )@@G@@. @[@@@@0 @F@@@@ AS FOR COMPRESS, THE \ SYMBOL SPECIFIES EXLT )@@G@@PANSION ALONG THE @F@@@@ LAST COORDINATE, $\ ALONG THE FIRST, AND \[N] ALU )@@G@@LONG THE N'TH. @A@@@@2REVERSE $V AND @V (MONADIC) @F@@@@ LV )@@G@@THE REVERSE OPERATOR CAUSES THE ELEMENTS ALONG THE SPECIFIED@C@@@@ COORDLW )@@G@@INATE TO HAVE THEIR ORDER REVERSED, E.G. @[@@@@0 @ @@@@0 $LX )@@G@@V 1 2 3 IS 3 2 1@[@@@@0 @F@@@@0$V AND @V SPECIFY REVERSAL ALONG THLY )@@G@@E FIRST AND LAST COORDINATES, @F@@@@ RESPECTIVELY. THE REVERSE OPERATORLZ )@@G@@ MAY BE SUBSCRIPTED IN THE @ @@@@ USUAL FASHION, I.E. $V[N]. @ @@@@MA )@@G@@2ROTATE $V AND @V (DYADIC)@F@@@@ THE RESULT OF A ROTATION IS A MB )@@G@@VARIABLE OBTAINED BY PERMUTING@F@@@@ (CIRCULARLY SHIFTING) THE ELEMENTS MC )@@G@@OF THE RIGHT OPERAND; THE @F@@@@ AMOUNT AND DIRECTION OF THE ROTATIOMD )@@G@@N IS SPECIFIED BY THE LEFT @F@@@@ ARGUMENT WHICH MUST BE A VECTOR OF ME )@@G@@LENGTH EQUAL TO THE LENGTH @F@@@@ OF THE SELECTED COORDINATE. IF THEMF )@@G@@ LEFT ARGUMENT IS POSITIVE, @F@@@@ A LEFT CIRCULAR SHIFT IS DONE, A NEMG )@@G@@GATIVE LEFT OPERAND VALUE @F@@@@ INDUCES A RIGHT CIRCULAR SHIFT. INMH )@@G@@ THE SIMPLE CASE OF A VECTOR, @#@@@@ WE WOULD HAVE @[@@@@0 @A@@@@MI )@@G@@0 2 $V 'ABCDEF' OR @C@@@@0 &4 $V 'ABCDEF' MJ )@@G@@ BOTH RESULTING IN@[@@@@0 @^@@@@0 'CDEFAB' @[@@@@0 MK )@@G@@@F@@@@ IN THE CASE OF A MATRIX RIGHT OPERAND, EACH ROW ($V) OR ML )@@G@@@G@@@@ COLUMN (@V) IS ROTATED BY THE AMOUNT SPECIFIED BY THE CORRESPONDIMM )@@G@@NG @D@@@@ ELEMENT OF THE LEFT OPERAND, E.G. IF X IS THE MATRIX @[@@@@MN )@@G@@0 @#@@@@0 1 2 3 @#@@@@0 4 5 6 @[@@@@0 @[@@@@MO )@@G@@0THEN @^@@@@ &1 1 $V X @[@@@@0 @#@@@@0IS 3 1 2 MP )@@G@@@#@@@@0 5 6 4 @[@@@@0 @F@@@@0THE OPERAND IS EXTENDED TO ARMQ )@@G@@RAYS OF HIGHER RANK IN THE OBVIOUS @F@@@@ FASHION, AND A COORDINATE MAYMR )@@G@@ BE SPECIFIED BY INDEXING, I.E. @E@@@@ $V[N] . SINGLE-ELEMENT LEFT MS )@@G@@OPERANDS ARE EXTENDED WHERE @]@@@@ NECESSARY. @#@@@@2TRANSPOSE $X MT )@@G@@@F@@@@ THE RESULT OF A DYADIC TRANSPOSE OPERATION IS OBTAINED BY MU )@@G@@@F@@@@ INTERCHANGING THE SUBSCRIPTS OF THE RIGHT OPERAND ACCORDING TO MV )@@G@@@F@@@@ A PATTERN SPECIFIED BY THE LEFT OPERAND. THE LEFT ARGUMENT MUST MW )@@G@@@F@@@@ BE A VECTOR OF LENGTH EQUAL TO THE RANK OF THE RIGHT ARGUMENT, MX )@@G@@@F@@@@ AND EACH VALUE OF THE LEFT OPERAND MUST BE AN INTEGER WHICH CAN MY )@@G@@@F@@@@ SPECIFY A COORDINATE OF THE RIGHT OPERAND. IF WE CALL THE LEFT MZ )@@G@@@E@@@@ OPERAND L AND THE RIGHT R, THEN THE I'TH COORDINATE OF R @F@@@@NA )@@G@@ BECOMES THE L[I]TH COORDINATE OF THE RESULT. AS AN EXAMPLE, @E@@@@NB )@@G@@ ORDINARY MATRIX TRANSPOSITION OF R WOULD BE INDICATED BY @[@@@@0 NC )@@G@@@^@@@@0 2 1 $V R @[@@@@0 @F@@@@0I.E. THE 1ST COORDINATEND )@@G@@ OF R BECOMES THE 2ND (L[1] IS 2) COORDI- @F@@@@ NATE OF THE RESULT AND NE )@@G@@THE 2ND COORDINATE OF R BECOMES THE 1ST @ @@@@ (V[2] IS 1) OF THE RESUNF )@@G@@LT. @[@@@@0 @F@@@@ IT IS NOT NECESSARY FOR THE INDEX OF EVERYNG )@@G@@ COORDINATE OF @E@@@@ THE RESULT TO BE PRESENT AS A VALUE IN THE LEFTNH )@@G@@ ARGUMENT --@]@@@@ FOR EXAMPLE@[@@@@0 @^@@@@0 1 1 $V R NI )@@G@@@[@@@@0 @F@@@@0WOULD HAVE AS ITS RESULT THE VECTOR WHICH FORMS THE PNJ )@@G@@RINCIPAL @ @@@@ DIAGONAL OF THE MATRIX R. @[@@@@0 @E@@@@ NK )@@G@@THE MONADIC TRANSPOSE OPERATOR IS SIMILAR IN EFFECT TO@F@@@@ DYADIC TRANNL )@@G@@SPOSE; THE LAST TWO COORDINATES OF THE RIGHT OPERAND @#@@@@ ARE TRANSPONM )@@G@@SED. @ @@@@2MEMBERSHIP $E (DYADIC) @F@@@@ THE MEMBERSHIP OPENN )@@G@@RATOR RETURNS A LOGICAL VALUE OF TRUE (1) @F@@@@ FOR EACH ELEMENT OF THENO )@@G@@ LEFT OPERAND WHICH APPEARS ANYWHERE IN @F@@@@ THE RIGHT OPERAND, AND NP )@@G@@FALSE (0) FOR ELEMENTS OF THE LEFT OPERAND@F@@@@ WHICH DO NOT OCCUR IN TNQ )@@G@@HE RIGHT. OBVIOUSLY, THE OPERANDS MAY @E@@@@ HAVE ANY SHAPE, AND THENR )@@G@@ RESULT IS A VARIABLE OF 0'S AND 1'S@C@@@@ WHOSE SHAPE IS THE SHAPE OF TNS )@@G@@HE LEFT OPERAND. @[@@@@0 @F@@@@ THE COMPARISON HAS THE PROPERTNT )@@G@@IES OF THE DYADIC EQUALITY @F@@@@ OPERATOR, I.E. IF BOTH ARGUMENTS ARNU )@@G@@E NUMERIC, THE COMPARISON IS @F@@@@ SUBJECT TO FUZZING, AND CHARACTERS NV )@@G@@AND NUMBERS ARE ALWAYS CON- @^@@@@ SIDERED TO BE UNEQUAL. @[@@@@0 NW )@@G@@@E@@@@ ALTHOUGH THE MEMBERSHIP OPERATOR $E IS SIMILAR IN MANY@F@@@@NX )@@G@@ RESPECTS TO THE DYADIC IOTA ($I) ONE SHOULD NOTE THAT IN ADDI- @F@@@@NY )@@G@@ TION TO THE FACT THAT $I RETURNS AN INDEX WHILE $E RESULTS IN @F@@@@NZ )@@G@@ A TRUE/FALSE INDICATION, THE RESULT OF $I HAS THE SHAPE OF THE @E@@@@OA )@@G@@ RIGHT OPERAND, WHILE THE RESULT OF $E HAS THE SHAPE OF ITS @#@@@@ LEFT OB )@@G@@OPERAND. @A@@@@2ENCODE @B AND DECODE $B (DYADIC) @G@@@@ THE DEOC )@@G@@CODE AND ENCODE ARE UNIQUE AMONG THE MIXED OPERATORS IN @F@@@@ THAT OD )@@G@@THEIR FUNCTION IS PRIMARILY ARITHMETIC, RATHER THAN ONLY @G@@@@ SELECOE )@@G@@TION OR RESHAPING OF THEIR OPERANDS. THEY ARE USED TO CHANGE @D@@@@OF )@@G@@ THE NUMBER SYSTEM USED TO REPRESENT THEIR OPERANDS. @[@@@@0 @^@@@@OG )@@G@@1ENCODE (REPRESENTATION)@[@@@@0 @F@@@@ IN THE SIMPLEST CASE, THOH )@@G@@E ENCODE (@B) OPERATOR TAKES A ONE- @F@@@@ ELEMENT NUMERIC RIGHT OPERANDOI )@@G@@ AND EXPRESSES IT IN THE NUMBER @G@@@@ SYSTEM SPECIFIED BY THE LEFT OJ )@@G@@OPERAND. THE LEFT OPERAND IS NORMALLY @F@@@@ A VECTOR, AND DEFINES TOK )@@G@@HE POSITIONAL NUMBER SYSTEM USED TO REPRE-@G@@@@ SENT THE RIGHT OPERAND OL )@@G@@(THE ENCODE OPERATOR IS ALSO REFERRED TO AS @F@@@@ 'REPRESENTATION')OM )@@G@@. FOR EXAMPLE, IF WE WANTED TO REPRESENT A NUM-@G@@@@ BER WHICH WAS IN ON )@@G@@SECONDS AS HOURS, MINUTES AND SECONDS, THE APPRO- @E@@@@ PRIATE LEFTOO )@@G@@ ARGUMENT WOULD BE 24 60 60 . FOR EXAMPLE, @[@@@@0 @A@@@@0 OP )@@G@@ 24 60 60 @B 10921 @[@@@@0 @^@@@@0IS 3 2 1 OQ )@@G@@@[@@@@0 @G@@@@0AND THE REPRESENTATION OF THE NUMBER 576 IN THE OCTALOR )@@G@@ NUMBER SYSTEM @]@@@@ IS GIVEN BY@[@@@@0 @A@@@@0 OS )@@G@@ 8 8 8 8 @B 576 @[@@@@0 @B@@@@0WHICH GIVES 1 1 0 0 OT )@@G@@ . @[@@@@0 @G@@@@ WHEN THE RIGHT OPERAND IS A SCALAR, THE REOU )@@G@@SULT IS A VECTOR OF @F@@@@ LENGTH EQUAL TO THE LEFT OPERAND. IN THEOV )@@G@@ GENERAL CASE OF A RIGHT@F@@@@ OPERAND OF ARBITRARY RANK, THE DIMENSIONSOW )@@G@@ OF THE RESULT ARE GIVEN@F@@@@ BY THE RULES FOR OUTER PRODUCT - THE RANKOX )@@G@@ OF THE RESULT BEING ONE@C@@@@ GREATER THAN THE RANK OF THE RIGHT OPERANOY )@@G@@D. @[@@@@0 @G@@@@ AT THE PRESENT TIME, APL\1100 WILL ONLY ACOZ )@@G@@CEPT A RIGHT OPERAND @F@@@@ OF LENGTH 1, AND THE RESULT IS A VECTOR RPA )@@G@@EGARDLESS OF THE RIGHT @F@@@@ OPERAND RANK. SINCE THIS WILL CHANGE WHEPB )@@G@@N THE IMPLEMENTATION OF @F@@@@ ENCODE IS COMPLETE, ONE SHOULD NOT AT THIPC )@@G@@S TIME WRITE FUNCTIONS @F@@@@ WHICH DEPEND UPON THE RESULT'S BEING A VEPD )@@G@@CTOR. IF NECESSARY, @E@@@@ ONE CAN GUARANTEE THAT THE RESULT IS A VEPE )@@G@@CTOR BY EITHER: @[@@@@0 @F@@@@0 (A) FORCING THE RIGHT OPERANPF )@@G@@D TO BE A SCALAR BY PRECEDING @ @@@@0 IT WITH ''$R OR @[@@@@PG )@@G@@0 @D@@@@0 (B) RAVELING (,) THE RESULT BEFORE USING IT. @[@@@@PH )@@G@@0 @#@@@@1DECODE (BASE) @[@@@@0 @G@@@@ THE DECODE OPERATOPI )@@G@@R IS THE INVERSE OF ENCODE. GIVEN A VECTOR @F@@@@ RIGHT OPERAND, ITPJ )@@G@@ EVALUATES IT IN THE NUMBER SYSTEM SPECIFIED BY @F@@@@ THE (VECTOR) LEFTPK )@@G@@ OPERAND. THE RANK OF THE RESULT IS ONE LESS @F@@@@ THAN THE RANK OF PL )@@G@@THE RIGHT OPERAND - I.E. A VECTOR RIGHT OPERAND @F@@@@ YIELDS A SCALAR RPM )@@G@@ESULT. EACH ELEMENT IN THE LEFT OPERAND CORRE- @F@@@@ SPONDS TO AN ELEMPN )@@G@@ENT IN THE RIGHT OPERAND (I.E. A POSITION IN THE@G@@@@ NUMBER SYSTEM); OPO )@@G@@NE-ELEMENT LEFT OPERANDS ARE EXTENDED. A CONVER- @F@@@@ SION FROM HPP )@@G@@OURS, MINUTES AND SECONDS TO SECONDS WOULD BE GIVEN BY@[@@@@0 @ @@@@PQ )@@G@@0 24 60 60 $B 3 2 1 @[@@@@0 @^@@@@0RESULTING IN 10921 . PR )@@G@@@[@@@@0 @F@@@@ THE VALUE OF THE NUMBER 1 1 0 0 IN THE BASE 8 PS )@@G@@(OCTAL) NUM-@^@@@@ BER SYSTEM IS GIVEN BY @[@@@@0 @^@@@@0 8PT )@@G@@ $B 1 1 0 0 @[@@@@0 @^@@@@0WHOSE RESULT IS 576 .@[@@@@0 @F@@@@PU )@@G@@ AS OF THIS WRITING, THE DECODE OPERATOR ACCEPTS ONLY SCALAR @F@@@@PV )@@G@@ OR VECTOR RIGHT OPERANDS, YIELDING A SCALAR RESULT. THE EXTEN- @G@@@@PW )@@G@@ SION TO RIGHT OPERANDS OF ARBITRARY RANK WILL BE AVAILABLE SHORTLY. PX )@@G@@@^@@@@2DEAL ? OR $Q (DYADIC) @^@@@@ THE EXPRESSION @[@@@@0 PY )@@G@@@#@@@@0 I?N @[@@@@0 @F@@@@0YIELDS A VECTOR OF I INTEGERSPZ )@@G@@ SELECTED RANDOMLY (WITHOUT REPLACE-@F@@@@ MENT) FROM THE SET $IN . THEQA )@@G@@ NAME DEAL IS APPROPRIATE SINCE THE @]@@@@ EXPRESSION @[@@@@0 @#@@@@QB )@@G@@0 52?52 @[@@@@0 @D@@@@0CORRESPONDS TO THE RANDOM DEAL OF AQC )@@G@@ DECK OF CARDS. @A@@@@2EXECUTE (UNQUOTE) $E (MONADIC) @F@@@@ QD )@@G@@THE UNQUOTE OPERATOR TAKES A CHARACTER VECTOR OR SCALAR AS @F@@@@ ITS RQE )@@G@@IGHT OPERAND. THIS CHARACTER STRING IS THEN TREATED AS IF @F@@@@ IT WEQF )@@G@@RE AN APL STATEMENT, AND EXECUTED. THE VALUE OF THE UNQUOTE@F@@@@ OPERAQG )@@G@@TOR IS THE VALUE OF THE UNQUOTED STATEMENT. AS AN EXAMPLE, @^@@@@ CONSIQH )@@G@@DER THE FOLLOWING:@[@@@@0 @#@@@@0 A$S'3+'@^@@@@0 CQI )@@G@@$S$EA,'5' @[@@@@0 @F@@@@0THE CHARACTER VARIABLE A IS CATENATED WITQJ )@@G@@H THE CHARACTER 'S', @F@@@@ YIELDING '3+5', WHICH IS THEN EXECUTED ASQK )@@G@@ A STATEMENT. THE RE- @D@@@@ SULTING VALUE OF C IS THE NUMERIC QUANTITQL )@@G@@Y EIGHT. @[@@@@0 @B@@@@3SUBSCRIPTING (INDEXING) OF OPERATORS QM )@@G@@@[@@@@0 @F@@@@ THE COMPOUND OPERATOR REDUCTION AND SEVERAL OF TQN )@@G@@HE MIXED @F@@@@ OPERATORS ACT ALONG A PARTICULAR COORDINATE OF THE RIQO )@@G@@GHT OPERAND.@F@@@@ IN MOST CASES, UNIQUE CHARACTERS HAVE BEEN DEFINED WHQP )@@G@@ICH INDICATE@F@@@@ WHETHER THESE OPERATIONS ARE TO TAKE PLACE ALONG THE QQ )@@G@@LAST COORDI-@B@@@@ NATE (THE USUAL CASE), OR THE FIRST. @[@@@@0 QR )@@G@@@F@@@@ IN DEALING WITH ARRAYS OF RANK GREATER THAN 2, ONE MAY WISH QS )@@G@@@F@@@@ TO APPLY ONE OF THESE OPERATORS ALONG ONE OF THE INTERIOR COORDI-QT )@@G@@@F@@@@ NATES. EVEN WHEN WORKING WITH MATRICES, IT MAY SOMETIMES BE QU )@@G@@@F@@@@ DESIRABLE TO WRITE FUNCTIONS WHICH MAY APPLY SUCH AN OPERATOR QV )@@G@@@F@@@@ TO EITHER THE FIRST OR THE SECOND COORDINATE, DEPENDING UPON THE QW )@@G@@@F@@@@ VALUE OF SOME VARIABLE. TO ACCOMPLISH THIS PURPOSE, SUCH OPERA- QX )@@G@@@ @@@@ TORS MAY BE SUBSCRIPTED. @[@@@@0 @G@@@@ THE GENERAL QY )@@G@@FORM FOR SUBSCRIPTING AN OPERATOR IS TO IMMEDIATELY @F@@@@ FOLLOW THE QZ )@@G@@SYMBOL FOR THE OPERATOR BY A SUBSCRIPT EXPRESSION EN- @B@@@@ CLOSED IN SRA )@@G@@QUARE BRACKETS. FOR EXAMPLE: @[@@@@0 @ @@@@0 /[3] OR $RB )@@G@@V[I+6]@[@@@@0 @F@@@@0THE QUANTITY IN BRACKETS MUST EVALUATE TO AN INRC )@@G@@TEGER IN THE SET @[@@@@0 @#@@@@0 $I $R X@[@@@@0 @G@@@@RD )@@G@@0FOR RIGHT OPERAND X , THAT IS, IT MUST SPECIFY ONE OF THE COORDI- RE )@@G@@@F@@@@ OF THE RIGHT OPERAND; THE ONLY EXCEPTION TO THIS IS LAMINATION, RF )@@G@@@F@@@@ DISCUSSED ABOVE. SUBSCRIPTING OF OPERATORS IS ORIGIN DEPENDENT; RG )@@G@@@E@@@@ AN ILLEGAL SUBSCRIPT VALUE RESULTS IN AN 'INDEX ERROR'. @ @@@@RH )@@G@@4THE EXECUTION OF APL PROGRAMS@#@@@@3PSEUDO-VARIABLES @F@@@@ THERE RI )@@G@@ARE SEVERAL QUANTITIES IN APL\1100 WHICH ARE WRITTEN @F@@@@ AND USED ASRJ )@@G@@ IF THEY WERE THE NAMES OF VARIABLES, BUT ARE NOT. @F@@@@ THESE ARE TRK )@@G@@HE INPUT/OUTPUT PSEUDO-VARIABLES QUAD ( " OR $W) AND @F@@@@ QUOTE QUAD RL )@@G@@($" OR $H) AND DEBUGGING AIDS FOR FUNCTIONS CALLED THE@ @@@@ STOPVECTOR RM )@@G@@AND TRACEVECTOR. @[@@@@0 @^@@@@3TERMINAL INPUT/OUTPUT @#@@@@2MIXEDRN )@@G@@ OUTPUT @F@@@@ AS WE HAVE SEEN, APL\1100 WILL ALWAYS IMMEDIATELRO )@@G@@Y PRINT THE @F@@@@ FINAL RESULT OF A LINE AS LONG AS THE LAST (LEFTMOST)RP )@@G@@ OPERATION @F@@@@ ON A LINE IS NOT SPECIFICATION. IT OFTEN HAPPENS, HORQ )@@G@@WEVER, THAT @F@@@@ WE WOULD LIKE TO PRINT SEVERAL DIFFERENT THINGS ON A RR )@@G@@LINE, PAR- @F@@@@ TICULARLY A MIXTURE OF CHARACTERS AND NUMBERS. IF SERS )@@G@@VERAL EX- @F@@@@ PRESSIONS ON A LINE ARE SEPARATED BY SEMICOLONS, THENRT )@@G@@ APL\1100 @E@@@@ WILL PRINT EACH OF THE EXPRESSIONS ON THE SAME LINE. RU )@@G@@ AS AN@F@@@@ EXAMPLE, IF THE VALUES OF X AND Y ARE THREE AND FIVE, RRV )@@G@@ESPEC-@ @@@@ TIVELY, THEN THE STATEMENT @D@@@@0 'THERE WERE ';X;'RW )@@G@@ SUCCESSES IN ';Y;'TRIES' @B@@@@0WOULD CAUSE THE PRINTING OF THE LINRX )@@G@@E @[@@@@0 @B@@@@0 THERE WERE 3 SUCCESSES IN 5 TRIES @[@@@@RY )@@G@@0 @#@@@@2EVALUATED OUTPUT @F@@@@ ALTHOUGH THE VALUE OF ANY APL RZ )@@G@@EXPRESSION CAN BE PRINTED BY @F@@@@ PUTTING IT ON ITS OWN LINE, IT SOMESA )@@G@@TIMES HAPPENS (PARTICULARLY @F@@@@ IN DEBUGGING) THAT WE WISH TO EXPLISB )@@G@@CITLY CAUSE CERTAIN QUANTITIES@F@@@@ TO BE PRINTED. THIS IS DONE BY USISC )@@G@@NG THE PSEUDOVARIABLE QUAD @#@@@@ (SYMBOL " OR $W).@[@@@@0 @F@@@@SD )@@G@@ WHENEVER THE " SYMBOL APPEARS TO THE LEFT OF A SPECIFICATION@F@@@@SE )@@G@@ ($S) SYMBOL, THE SPECIFIED VALUE IS IMMEDIATELY PRINTED. THIS @D@@@@SF )@@G@@ SYMBOL MAY APPEAR ANYWHERE IN A LINE, FOR EXAMPLE: @[@@@@0 @ @@@@SG )@@G@@0 A$S (3 + "$S 5)%2 @[@@@@0 @F@@@@0WOULD CAUSE THE VALUE 5SH )@@G@@ TO BE PRINTED, AND THE VALUE FOUR WOULD @^@@@@ BE ASSIGNED TO 'A'. SI )@@G@@@[@@@@0 @#@@@@2EVALUATED INPUT @F@@@@ IT OFTEN HAPPENS THAT ONSJ )@@G@@E DOES NOT KNOW THE VALUES OF ALL @F@@@@ PARAMETERS AT THE TIME A FUNCSK )@@G@@TION IS WRITTEN; SOME VALUES REMAIN @G@@@@ TO BE SUPPLIED AT THE TIME THSL )@@G@@E FUNCTION IS USED. THE QUAD PSEUDO- @F@@@@ VARIABLE (WITHOUT A FOLSM )@@G@@LOWING SPECIFICATION SYMBOL) IS USED FOR @F@@@@ THIS. SINCE THIS SYMBOSN )@@G@@L (") REPRESENTS A PSEUDOVARIABLE, IT MAY @F@@@@ BE PLACED IN A STATEMENSO )@@G@@T AT THE POINT AT WHICH THE UNKNOWN VALUE @F@@@@ IS NEEDED, JUST AS A NOSP )@@G@@RMAL VARIABLE WOULD BE. WHEN APL\1100 @F@@@@ REACHES THE POINT AT WHSQ )@@G@@ICH IT NEEDS THE VALUE, IT WILL PRINT THE @F@@@@ QUAD SYMBOL FOLLOWED BYSR )@@G@@ A COLON, AND WAIT FOR THE REQUIRED VALUE @F@@@@ TO BE TYPED IN. ONCE TSS )@@G@@HE VALUE IS TYPED IN, APL\1100 WILL THEN @F@@@@ PROCEED TO USE IT JUST ST )@@G@@AS IF A NORMAL VARIABLE WERE USED INSTEAD @]@@@@ OF " . @[@@@@0 SU )@@G@@@F@@@@ WHEN APL\1100 IS WAITING FOR EVALUATED INPUT, ANY VALID APL SV )@@G@@@F@@@@ STATEMENT MAY BE TYPED IN; IT MAY CONTAIN FUNCTION CALLS AND EVENSW )@@G@@@F@@@@ OTHER QUADS. THE STATEMENT TYPED IN WILL BE EVALUATED AND ITS SX )@@G@@@C@@@@ FINAL RESULT USED IN THE ORIGINAL STATEMENT. @[@@@@0 @G@@@@SY )@@G@@ THE QUAD-COLON WHICH IS OUTPUT WHEN APL NEEDS INPUT IS CALLED SZ )@@G@@@F@@@@ THE 'SIGNAL FLAG FOR EVALUATED INPUT'. THIS FLAG MAY BE CHANGED TA )@@G@@@F@@@@ THROUGH THE USE OF THE SFEI FUNCTION IN THE WORKSPACE 1 WSFNS. TB )@@G@@@[@@@@0 @F@@@@ IF AN ERROR IS DETECTED AND ONE DOES NOT CARE TOTC )@@G@@ SUPPLY THE @F@@@@ REQUESTED INPUT, TYPING A NILADIC GO TO ($G) WILL CAUTD )@@G@@SE APL\1100 @A@@@@ TO SUSPEND EXECUTION (SEE BELOW). @F@@@@ THIS ESCAPETE )@@G@@ FROM EVALUATED INPUT IS ESPECIALLY USEFUL WHEN A @ @@@@ FUNCTION ISTF )@@G@@ IN AN INPUT LOOP.@[@@@@0 @#@@@@2STRING OUTPUT @G@@@@ WHEN TTG )@@G@@HE QUAD SYMBOL IS USED FOR OUTPUT, THE SPECIFIED RESULT @G@@@@ IS IMTH )@@G@@MEDIATELY PRINTED. TO DEFER THE OUTPUT OF PARTICULAR INFORMA- @G@@@@TI )@@G@@ TION, THE QUOTE-QUAD ($" OR $H) PSEUDOVARIABLE MAY BE USED INSTEAD. TJ )@@G@@@F@@@@ APL\1100 BUILDS THE IMAGE OF A LINE TO BE PRINTED CHARACTER BY TK )@@G@@@F@@@@ CHARACTER IN A SPECIAL PRINT BUFFER. WHEN THE QUOTE-QUAD SYMBOL TL )@@G@@@F@@@@ IS USED FOR OUTPUT, EACH OUTPUT OPERATION ADDS NEW INFORMATION TOTM )@@G@@@F@@@@ THE END OF THE CURRENT LINE IMAGE, BUT THE IMAGE IS NOT PRINTED TN )@@G@@@F@@@@ UNTIL IT IS FORCED TO BE BY ONE OF THE FOLLOWING CONDITIONS: TO )@@G@@@[@@@@0 @F@@@@0 (A) THE BUFFER IS FILLED WITH THE NUMBER OF CHATP )@@G@@RACTERS @C@@@@0 SPECIFIED BY THE WIDTH OF THE WS. @[@@@@TQ )@@G@@0 @E@@@@0 (B) ANY OUTPUT OPERATION OTHER THAN QUOTE-QUAD OCCURSTR )@@G@@@F@@@@0 (SUCH AS AN ERROR REPORT, QUAD OUTPUT OR THE SIGNAL TS )@@G@@@B@@@@0 FLAG FOR EVALUATED INPUT). @[@@@@0 @F@@@@0 TT )@@G@@(C) A REQUEST FOR QUOTE-QUAD INPUT (SEE BELOW) OCCURS. @[@@@@0 TU )@@G@@@G@@@@0THIS FEATURE MAY BE USED TO BUILD PRINT IMAGES IN SUCCESSIVE STATTV )@@G@@E- @F@@@@ MENTS SUCH AS IN LOOPS; THE SEVERAL STATEMENTS MAY EVEN BE TW )@@G@@IN @F@@@@ DIFFERENT FUNCTIONS. IN ADDITION, IT MAY BE USED IN CONJUNTX )@@G@@CTION @G@@@@ WITH QUOTE-QUAD INPUT (SEE BELOW) FOR A 'TYPE AND READ' CAPTY )@@G@@ABILITY. @[@@@@0 @#@@@@2STRING INPUT @G@@@@ WHEN NO SPECTZ )@@G@@IFICATION SYMBOL APPEARS IMMEDIATELY TO THE RIGHT @F@@@@ OF THE QUOTUA )@@G@@E-QUAD SYMBOL, APL\1100 INTERPRETS THIS AS A REQUEST @F@@@@ FOR CHARACTUB )@@G@@ER STRING INPUT. UNDER NORMAL CIRCUMSTANCES (I.E. THE@F@@@@ PRINT BUFFEUC )@@G@@R IS EMPTY), IT WILL LEAVE THE CARRIER POSITIONED AT @F@@@@ THE FAR LEFUD )@@G@@T MARGIN AND WAIT FOR DATA TO BE TYPED IN. ON TELE- @F@@@@ TYPES, APL UE )@@G@@WILL SIGNAL ITS READINESS TO ACCEPT INPUT BY CAUSING @F@@@@ THE PRINT BUF )@@G@@ASKET TO AUDIBLY JUMP. THE LINE OF INPUT TYPED IN @G@@@@ RESPONSE TOUG )@@G@@ THIS WILL BE ACCEPTED AS A CHARACTER VECTOR OR SCALAR; @C@@@@ TRAILUH )@@G@@ING BLANK CHARACTERS WILL BE SURPRESSED. @[@@@@0 @F@@@@ IF THEUI )@@G@@ PRINT BUFFER IS NOT EMPTY (I.E. THE REQUEST FOR INPUT@G@@@@ HAS BEEN PRUJ )@@G@@ECEDED BY A QUOTE-QUAD OUTPUT OPERATION), THEN A QUOTE- @F@@@@ QUAD UK )@@G@@INPUT REQUEST WILL CAUSE THE BUFFER CONTENTS TO BE PRINTED @G@@@@ AND TUL )@@G@@HE SYSTEM WILL WAIT FOR FURTHER INPUT TO BE TYPED ON THE SAME @F@@@@UM )@@G@@ LINE (TYPE AND READ). APL\1100 ALWAYS ACCEPTS THE ENTIRE LINE AS@G@@@@UN )@@G@@ IT APPEARS VISUALLY -- I.E. THE RESULT OF THE INPUT OPERATION WILL UO )@@G@@@F@@@@ BE A CHARACTER VECTOR, THE LEFT PORTION OF WHICH WILL CONSIST OF UP )@@G@@@F@@@@ THE CHARACTERS WHICH WERE TYPED OUT, THE RIGHT PORTION OF WHICH UQ )@@G@@@B@@@@ WILL CONSIST OF THE CHARACTERS TYPED IN. @[@@@@0 @^@@@@3FUNCTUR )@@G@@ION DEBUGGING AIDS@G@@@@ ASSOCIATED WITH EVERY DEFINED FUNCTION AREUS )@@G@@ TWO PSEUDO-VARIABLES @F@@@@ CALLED THE STOPVECTOR AND THE TRACEVECTORUT )@@G@@. THESE ARE VECTORS OF @E@@@@ NUMBERS WHICH CORRESPOND TO THE LINE NUMBUU )@@G@@ERS OF THE DEFINED@F@@@@ FUNCTION. THE NAMES OF THE TRACE AND STOPVECTOUV )@@G@@R FOR A GIVEN @G@@@@ FUNCTION ARE THE CHARACTERS T$M OR S$M FOLLUW )@@G@@OWED BY THE FUNCTION @F@@@@ NAME -- THUS THE NAME OF THE TRACEVECTOR UX )@@G@@FOR A FUNCTION NAMED @F@@@@ FRANG IS T$MFRANG. THE VALUE OF THE TRAUY )@@G@@CE (OR STOP) VECTOR FOR @F@@@@ A GIVEN FUNCTION IS THE VECTOR OF STATEMEUZ )@@G@@NT NUMBERS FOR WHICH THE@G@@@@ TRACE (OR STOP) FLAG IS 'ON'. WHEN A FUNVA )@@G@@CTION IS INITIALLY DEFINED, @E@@@@ BOTH OF THESE FLAGS ARE OFF FOR ALLVB )@@G@@ LINES OF THE FUNCTION. @[@@@@0 @F@@@@ THE SPECIFICATION OPERATVC )@@G@@OR IS USED TO SET THE TRACE AND STOP@G@@@@ FLAGS. WHENEVER THE NAME OF VD )@@G@@THE TRACE OR STOPVECTOR OF A FUNCTION @F@@@@ APPEARS ON THE LEFT OF VE )@@G@@A SPECIFICATION, THE LINES WHOSE NUMBERS @F@@@@ APPEAR IN THE RIGHT ARGVF )@@G@@UMENT ARE FLAGGED, AND THE FLAGS FOR ALL @F@@@@ OTHER LINES ARE TURNED VG )@@G@@OFF. ANY VALUE IN THE RIGHT ARGUMENT @F@@@@ WHICH DOES NOT CORRESPOVH )@@G@@ND TO A LINE OF THE FUNCTION IS IGNORED. @#@@@@ FOR EXAMPLE, @[@@@@VI )@@G@@0 @A@@@@0 S$MFRANG $S 1 7 5 3 @[@@@@0 @F@@@@0WILL VJ )@@G@@TURN ON THE STOP FLAG FOR LINES 1, 3, 5 AND 7 OF FUNCTION @F@@@@ FRANGVK )@@G@@, AND CLEAR THE STOP FLAGS FOR ALL OTHER STATEMENTS. THE @B@@@@ STOPVVL )@@G@@ECTOR COULD BE CLEARED BY EITHER @[@@@@0 @D@@@@0 S$MFRANVM )@@G@@G $S 0 OR S$MFRANG $S $IO @[@@@@0 @#@@@@2THE STOPVECTOR VN )@@G@@@F@@@@ AS MENTIONED ABOVE, THE STOPVECTOR IS A VECTOR OF INTEGERS VO )@@G@@@F@@@@ WHICH INDICATES THE STATEMENTS IN A FUNCTION WHOSE STOP FLAGS VP )@@G@@@F@@@@ ARE ON. WHENEVER THE STOP FLAG IS ON FOR A LINE, APL\1100 WILL VQ )@@G@@@F@@@@ SUSPEND EXECUTION WHEN IT REACHES THAT LINE, BEFORE EXECUTING IT.VR )@@G@@@F@@@@ IT WILL PRINT THE FUNCTION NAME AND LINE NUMBER, AND THEN RETURN VS )@@G@@@F@@@@ TO THE DESK CALCULATOR MODE. SINCE THE FUNCTION IS SUSPENDED, VT )@@G@@@F@@@@ ALL OF ITS LOCAL VARIABLES ARE ACTIVE, AND THEIR VALUES MAY BE VU )@@G@@@F@@@@ EXAMINED AND/OR CHANGED AT WILL USING NORMAL APL STATEMENTS. VV )@@G@@@D@@@@ FOR MORE DETAILS ON SUSPEND FUNCTIONS, SEE BELOW. @[@@@@0 VW )@@G@@@#@@@@2THE TRACEVECTOR @F@@@@ THE TRACEVECTOR OF A FUNCTION IS THEVX )@@G@@ SET OF LINE NUMBERS @F@@@@ OF THAT FUNCTION FOR WHICH THE TRACE FLAGVY )@@G@@ IS ON. WHENEVER APL @E@@@@ 1100 PROCESSES A LINE WHOSE TRACE FLAG ISVZ )@@G@@ ON, THE FUNCTION @F@@@@ NAME AND LINE NUMBER TOGETHER WITH THE LAST (LEWA )@@G@@FTMOST) VALUE @F@@@@ COMPUTED ON THE LINE WILL BE PRINTED. APL\1100WB )@@G@@ WILL CONTINUE @C@@@@ EXECUTION AFTER PRINTING THIS INFORMATION. WC )@@G@@@[@@@@0 @F@@@@ THE TRACEVECTOR IS REFERENCED IN THE SAME FASHIOWD )@@G@@N AS THE @F@@@@ STOPVECTOR; ITS NAME STARTS WITH THE CHARACTERS T$M WE )@@G@@ RATHER THAN@E@@@@ S$M . BOTH THE TRACEVECTOR AND THE STOPVECTOR MAY BEWF )@@G@@ USED @ @@@@ FREELY IN ANY APL EXPRESSION.@[@@@@0 @[@@@@0 @A@@@@WG )@@G@@3THE BRANCHING OR GOTO OPERATOR $G @#@@@@2MONADIC BRANCHING@G@@@@ WH )@@G@@THE NORMAL SEQUENCE OF EXECUTION OF THE STATEMENTS IN A FUNC- @G@@@@WI )@@G@@ TION IS SEQUENTIAL; THE STATEMENTS OF THE FUNCTION BODY ARE EXECUTED WJ )@@G@@@G@@@@ ONE AFTER THE OTHER UNTIL THE LAST ONE, THEN THE FUNCTION TERMINAWK )@@G@@TES @F@@@@ AND CONTROL RETURNS TO THE POINT AT WHICH THE FUNCTION NAMEWL )@@G@@ WAS @F@@@@ REFERENCED. THIS STRICT SEQUENTIAL EXECUTION OF THE LINES WM )@@G@@OF A @E@@@@ FUNCTION CAN BE ALTERED BY THE USE OF THE GOTO OPERATOR. WN )@@G@@@[@@@@0 @F@@@@ THE MONADIC GOTO OPERATOR, $G, ACCEPTS A NUMERICWO )@@G@@ SCALAR OR @G@@@@ VECTOR AS ITS RIGHT ARGUMENT. WHEN EXECUTED, IT CAUSWP )@@G@@ES CONTROL OF @F@@@@ THE PROGRAM TO PASS DIRECTLY TO THE LINE WHOSE WQ )@@G@@VALUE IS THE FIRST@C@@@@ (OR ONLY) OF THE ARGUMENT. THUS THE STATEMENT WR )@@G@@@[@@@@0 @#@@@@0 $G 6 @[@@@@0 @F@@@@0WILL CAUSE CONTROWS )@@G@@L TO PASS TO LINE 6. THIS CAN ONLY BE USED TO @F@@@@ TRANSFER CONTROL WT )@@G@@TO A LINE IN THE SAME FUNCTION. IF THE RIGHT @G@@@@ ARGUMENT IS NOT AWU )@@G@@ LEGAL LINE NUMBER OF THE FUNCTION BEING EXECUTED @F@@@@ THE FUNCTIOWV )@@G@@N WILL TERMINATE AT THAT POINT AND CONTROL WILL RETURN@F@@@@ TO THE PLACWW )@@G@@E FROM WHICH IT WAS CALLED. THIS FEATURE IS USUALLY @F@@@@ USED TO CAUWX )@@G@@SE A RETURN WITHOUT PASSING THROUGH THE LAST LINE OF @G@@@@ THE FUNCTIOWY )@@G@@N. BY CONVENTION, SUCH A RETURN IS GENERATED BY A GOTO @#@@@@ LINE WZ )@@G@@ZERO, I.E. @[@@@@0 @#@@@@0 $GO @[@@@@0 @A@@@@0ALWAYXA )@@G@@S CAUSES EXIT FROM A FUNCTION.@[@@@@0 @F@@@@ WHEN THE RIGHT ARGXB )@@G@@UMENT OF THE BRANCHING OPERATOR IS A NULL @G@@@@ VECTOR, THE GOTO IS IGNXC )@@G@@ORED (I.E. IS EQUIVALENT TO A NO-OPERATION), @F@@@@ AND CONTROL PASSEXD )@@G@@S TO THE LEFT OF THE GOTO ON THE SAME LINE. IN @F@@@@ THIS CASE, THE VAXE )@@G@@LUE OF THE GOTO OPERATION IS CONSIDERED TO BE @F@@@@ A NULL VECTOR. IXF )@@G@@F THERE IS NOTHING TO THE LEFT OF THE GOTO, THEN@G@@@@ CONTROL PASSES TOXG )@@G@@ THE NEXT STATEMENT IN THE NORMAL SEQUENTIAL FASHION. @[@@@@0 @F@@@@XH )@@G@@ BECAUSE THE RIGHT ARGUMENT OF THE BRANCHING OPERATOR CAN BE @F@@@@XI )@@G@@ ANY APL EXPRESSION, IT CAN BE USED IN CONJUNCTION WITH OTHER APL @G@@@@XJ )@@G@@ OPERATORS TO CREATE SEVERAL DIFFERENT TYPES OF CONDITIONAL BRANCHES. XK )@@G@@@[@@@@0 @^@@@@ THE CONSTRUCTION @[@@@@0 @B@@@@0 $XL )@@G@@G N# $I @[@@@@0 @F@@@@0IS OFTEN USED TO EFFECTXM )@@G@@ AN 'IF' CONDITION, WHERE THE COMBINATION @E@@@@ OF OPERATORS #$I IS REAXN )@@G@@D AS 'IF'. THUS, THE STATEMENT @[@@@@0 @ @@@@0 $G 6 #$XO )@@G@@I A < 3 @[@@@@0 @F@@@@0CAN BE READ AS 'GO TO LINE SIX IF A IS LEXP )@@G@@SS THAN THREE'. IF A @F@@@@ WERE NOT LESS THAN THREE, CONTROL WILL COXQ )@@G@@NTINUE SEQUENTIALLY. @F@@@@ NOTICE THAT SINCE THE MONADIC INDEX GENERXR )@@G@@ATOR $I IS ORIGIN DEPEN-@D@@@@ DENT, THIS CONSTRUCTION IS VALID ONLY IN XS )@@G@@ORIGIN 1. @[@@@@0 @D@@@@ OTHER CONSTRUCTIONS USEFUL IN BRANCHXT )@@G@@ING ARE: @[@@@@0 @C@@@@0(1) $G N $ V @[@@@@0 @F@@@@0 CONTROL WOULD PASS TO THE FIRST STATEXV )@@G@@MENT IF N WERE @F@@@@0 ZERO, THE SECOND IF N WERE 1, ETC. TXW )@@G@@HIS IS ORIGIN @^@@@@0 INDEPENDENT. @[@@@@0 @E@@@@0(2) XX )@@G@@$G (,)/N,M@[@@@@0 @F@@@@XY )@@G@@0 CONTROL WOULD GO TO N IF THE FIRST LOGICAL EXPRESSION @F@@@@XZ )@@G@@0 WERE TRUE. IF NOT, THEN CONTROL WOULD TO TO M IF THE @F@@@@YA )@@G@@0 SECOND LOGICAL EXPRESSION WERE TRUE. IF NEITHER WERE @F@@@@YB )@@G@@0 TRUE, THE ARGUMENT OF THE $G WOULD BE NULL, AND CONTROL@A@@@@YC )@@G@@0 WOULD PASS TO THE LEFT. @[@@@@0 @^@@@@2THE NILADIC BRANCYD )@@G@@H @E@@@@ ALTHOUGH NILADIC (NO-ARGUMENT) FUNCTIONS CAN EASILY BEYE )@@G@@@F@@@@ DEFINED, THE ONLY APL PRIMITIVE OPERATOR WHICH CAN APPEAR WITHOUTYF )@@G@@@G@@@@ A RIGHT ARGUMENT IS $G. WHEN USED IN THIS CONTEXT, THE $G OPERATYG )@@G@@OR @F@@@@ ESSENTIALLY MEANS STOP. CONTROL IMMEDIATELY RETURNS TO THEYH )@@G@@ DESK @F@@@@ CALCULATOR MODE, AND ALL PENDANT FUNCTIONS AND LOCAL VARIABYI )@@G@@LES @F@@@@ ARE ERASED FROM THE STATE INDICATOR BACK TO THE LAST SUSPENYJ )@@G@@DED @F@@@@ FUNCTION. WE HAVE ALREADY DISCUSSED HOW THIS MAY BE USED TYK )@@G@@O @F@@@@ ESCAPE FROM AN EVALUATED INPUT LOOP. IT CAN ALSO APPEAR INYL )@@G@@ ANY @E@@@@ FUNCTION OR ON A LINE OF TEXT BEING UNQUOTED BY THE EXECUTEYM )@@G@@@#@@@@ ($E) OPERATOR. @[@@@@0 @A@@@@2RESUMPTION OF SUSPENDED FUNCTYN )@@G@@IONS @F@@@@ AS MENTIONED PREVIOUSLY IN THE DISCUSSION OF THE )SI AYO )@@G@@ND @F@@@@ )SIV COMMANDS, IT IS POSSIBLE FOR THE EXECUTION OF AN APL FYP )@@G@@UNC- @F@@@@ TION TO BE SUSPENDED WHILE IT IS EXECUTING -- THIS MAY BE BYQ )@@G@@ECAUSE@F@@@@ OF AN ERROR IN A STATEMENT, OR BECAUSE THE STOPVECTOR HAS BYR )@@G@@EEN @F@@@@ SET FOR DEBUGGING PURPOSES. IF THE ERROR IS MINOR, IT MAY YS )@@G@@BE @F@@@@ POSSIBLE TO CORRECT IT BY RE-OPENING THE FUNCTION DEFINITIOYT )@@G@@N AND @F@@@@ CORRECTING THE STATEMENT; ONE MIGHT THEN WANT TO CONTINUE EYU )@@G@@XECU- @F@@@@ TION OF THE FUNCTION FROM THE POINT AT WHICH IT WAS STOPPEDYV )@@G@@, @F@@@@ OR PERHAPS EVEN FROM A PREVIOUS LINE. WHENEVER A SUSPENDEDYW )@@G@@ FUNC-@F@@@@ TION IS IN THE STATE INDICATOR, A MONADIC $G MAY BE EXECUTEYX )@@G@@D IN @G@@@@ DESK CALCULATOR MODE, AND THE FUNCTION WILL RESUME AT THE SYY )@@G@@PECIFIED @F@@@@ LINE NUMBER. IF ONE DESIRES INSTEAD TO ABORT EXECUTIYZ )@@G@@ON OF THE @F@@@@ FUNCTION ENTIRELY, A 'STOP' FUNCTION (NILADIC $G) WILZA )@@G@@L CLEAR THE @F@@@@ STATE VECTOR BACK TO THE PREVIOUS SUSPENDED FUNCTION,ZB )@@G@@ IF THERE @]@@@@ WAS ONE. @[@@@@0 @]@@@@3LABELS @F@@@@ ZC )@@G@@BECAUSE DEFINED FUNCTIONS ARE ALMOST ALWAYS LIABLE TO BE @F@@@@ CHANGZD )@@G@@ED (BECAUSE OF AN ERROR OR TO ADD A NEW FEATURE), IT IS @F@@@@ USUALZE )@@G@@LY UNWISE TO USE ABSOLUTE LINE NUMBERS AS ARGUMENTS TO THE @F@@@@ BRANCZF )@@G@@HING OPERATOR. INSERTION OR DELETION OF LINES OF THE FUNC- @F@@@@ TION ZG )@@G@@WILL CAUSE THE LINE NUMBERS TO CHANGE, AND GOTO'S WHICH @F@@@@ REFERZH )@@G@@ENCED THE OLD LINE NUMBERS WILL NO LONGER OPERATE PROPERLY. @[@@@@0 ZI )@@G@@@F@@@@ TO ALLEVIATE THIS CONDITION, APL\1100 ALLOWS LABEL VARIABLESZJ )@@G@@@F@@@@ TO BE SPECIFIED FOR THE LINES OF A FUNCTION. WHEN A LINE IS ZK )@@G@@@F@@@@ LABELED, ITS LABEL VARIABLE WILL ALWAYS HAVE THE CORRECT VALUE ZL )@@G@@@F@@@@ REGARDLESS OF WHETHER LINES ARE INSERTED OR DELETED AT A LATER ZM )@@G@@@F@@@@ TIME. BRANCHING OPERATORS WHICH REFERENCE THE LABEL VARIABLES ZN )@@G@@@F@@@@ INSTEAD OF ACTUAL LINE NUMBERS WILL THEN NOT HAVE TO BE MODIFIED ZO )@@G@@@ @@@@ IF THE LINE NUMBERS CHANGE. @[@@@@0 @F@@@@ WHEN SPECIFIZP )@@G@@ED, A LABEL MUST BE THE LEFTMOST VARIABLE NAME @F@@@@ ON A LINE, AND ITZQ )@@G@@ MUST BE SEPARATED FROM THE TEXT OF THE LINE @D@@@@ BY A COLON. A TYZR )@@G@@PICAL LABELED LINE IN A FUNCTION IS @[@@@@0 @B@@@@0 [3] GETZS )@@G@@X: X $S 3 + 4 #$I Z @[@@@@0 @F@@@@0A BRANCH TO THIS LINE ELSEWHEZT )@@G@@RE IN THE FUNCTION WOULD THEN BE @[@@@@0 @#@@@@0 $G GETXZU )@@G@@@[@@@@0 @F@@@@0 LABELS ARE LOCAL VARIABLES IN FUNCTIONS. THEY ZV )@@G@@ARE CREATED @E@@@@ AND THEIR VALUES ASSIGNED WHEN THE FUNCTION IS ENTEREZW )@@G@@D, AND@F@@@@ DESTROYED WHEN THE FUNCTION TERMINATES. SINCE LABELS ARE AZX )@@G@@PL @F@@@@ SCALAR VARIABLES, THEY MAY BE USED FREELY IN ANY COMPUTATIOZY )@@G@@N. @F@@@@ FOR OBVIOUS REASONS, THEY SHOULD NOT APPEAR ON THE LEFT OF ZZ )@@G@@A @ @@@@ SPECIFICATION OPERATION. @[@@@@0 @A@@@@3SYSTEM FUNCAA )@@G@@TIONS -- THE $Y OPERATOR@F@@@@ THE SYSTEM FUNCTION OPERATOR $Y IS AAB )@@G@@N OPERATOR WHICH MAY @F@@@@ BE USED TO OBTAIN CERTAIN INFORMATION ABOAC )@@G@@UT THE TERMINAL SESSION,@F@@@@ THE WORKSPACE AND THE APL SYSTEM ITSELF. AD )@@G@@ THE SYSTEM FUNCTION @F@@@@ OPERATOR IS MONADIC, AND TAKES A 1-ELEMENAE )@@G@@T NUMERIC RIGHT OPERAND.@F@@@@ THE VALUE OF THE RIGHT OPERAND DETERMINESAF )@@G@@ WHAT INFORMATION IS @F@@@@ RETURNED. ANY RIGHT ARGUMENT OTHER THAN AG )@@G@@ONE OF THE VALUES TABU- @F@@@@ LATED BELOW WILL RESULT IN A DOMAIN ERRORAH )@@G@@. WHERE A SYSTEM FUNC- @F@@@@ TION RETURNS A TIME VALUE, THE TIME IS INAI )@@G@@ UNITS OF SIXIETHS OF @F@@@@ A SECOND. THE ALLOWED ARGUMENTS FOR THE AJ )@@G@@SYSTEM FUNCTION OPERATOR@[@@@@ ARE: @[@@@@0 @E@@@@0 $Y19 ACCAK )@@G@@UMULATED KEYING TIME -- AMOUNT OF TIME THE@E@@@@0 TERMINAL AL )@@G@@HAS BEEN WAITING TO ACCEPT INPUT. @[@@@@0 @F@@@@0 $Y20 TIMAM )@@G@@E OF DAY IN 60'THS OF A SECOND PAST MIDNIGHT. @[@@@@0 @F@@@@0 AN )@@G@@$Y21 AMOUNT OF COMPUTER TIME USED SO FAR IN THE APL @E@@@@0 AO )@@G@@ SESSION. THIS MAY BE MEMORY TIME OR CPU TIME@F@@@@0 AP )@@G@@ DEPENDING ON THE INSTALLATION. ONLY TIME SPENT @F@@@@0 AQ )@@G@@ IN APL IS COUNTED, THIS IS NOT THE TOTAL COMPUTER @A@@@@0 AR )@@G@@ TIME FOR THE RUN. @[@@@@0 @F@@@@0 $Y22 AMOUNT OF AVAILAS )@@G@@ABLE STORAGE IN THE WORKSPACE, IN @F@@@@0 CHARACTERS. A AT )@@G@@CLEAR WORKSPACE IS APPROXIMATELY @ @@@@0 32K CHARACTERS.AU )@@G@@@[@@@@0 @D@@@@0 $Y24 TIME OF DAY THE APL SESSION STARTED. AV )@@G@@@[@@@@0 @F@@@@0 $Y25 THE CURRENT DATE, A SIX DIGIT DECIMAL NAW )@@G@@UMBER OF @A@@@@0 THE FORM MMDDYY. @[@@@@0 @F@@@@AX )@@G@@0 $Y26 THE LINE NUMBER OF THE CURRENTLY EXECUTING LINE @F@@@@AY )@@G@@0 OF A FUNCTION. THIS IS THE SAME AS ($Y27)[1]. @[@@@@AZ )@@G@@0 @F@@@@0 $Y27 THE VECTOR OF LINE NUMBERS IN THE STATE INDICBA )@@G@@ATOR. @[@@@@0 @F@@@@0 $Y28 THE TYPE OF RUN AND TERMINAL DEVIBB )@@G@@CE BEING USED -- @F@@@@0 5 IS A BATCH RUN, 6 IS A DEMAND RBC )@@G@@UN. OTHER VALUES @ @@@@0 ARE UNDEFINED. @[@@@@0 @F@@@@BD )@@G@@0 $Y29 THE LIBRARY NUMBER FOR THIS SESSION. WHEN EXAMIN- @F@@@@BE )@@G@@0 ING THE VALUE OF THIS NUMBER, ONE SHOULD BE SURE @F@@@@BF )@@G@@0 THAT THE )DIGITS SPECIFICATION OF THE WORKSPACE @F@@@@BG )@@G@@0 IS AT LEAST 10, OR ALL OF THE DIGITS IN THIS NUMBER@A@@@@BH )@@G@@0 MIGHT NOT BE PRINTED.@[@@@@0 @G@@@@ IN ADDITION BI )@@G@@TO THE ABOVE, A NUMBER OF NON-PRIMITIVE FUNCTIONS @F@@@@ OF A SIMILABJ )@@G@@R NATURE MAY BE FOUND IN THE WORKSPACE 1 WSFNS. THESE@F@@@@ FUNCTIONS MBK )@@G@@AY BE USED TO, FOR EXAMPLE, CHANGE THE WIDTH, DIGITS @B@@@@ OR ORIGIN SBL )@@G@@PECIFICATIONS OF A WORKSPACE. @]@@@@3FUZZING @G@@@@ BECAUSE OF TBM )@@G@@HE NATURE OF ELECTRONIC COMPONENTS, FEW COMPUTERS @F@@@@ DO ARITHMETBN )@@G@@IC IN THE DECIMAL NUMBER SYSTEM, AND THE UNIVAC 1100 @F@@@@ SERIES IS NBO )@@G@@O EXCEPTION TO THIS; ARITHMETIC IN A UNIVAC 1100 IS @F@@@@ DONE IN THEBP )@@G@@ BINARY NUMBER SYSTEM. APL, HOWEVER, IS DESIGNED @F@@@@ FOR USE BY BQ )@@G@@HUMANS, WHO USE THE DECIMAL SYSTEM - CONSEQUENTLY, @E@@@@ IT ACTS AS BR )@@G@@IF IT WERE DOING ITS COMPUTATIONS IN DECIMAL. @[@@@@0 @F@@@@ BS )@@G@@THIS DIFFERENCE IN NUMBER SYSTEMS IS NOT NOTICEABLE WHEN @F@@@@ DEALIBT )@@G@@NG WITH INTEGERS; ALL INTEGERS CAN BE REPRESENTED EXACTLY @F@@@@ IN BOBU )@@G@@TH SYSTEMS. APL\1100 REPRESENTS ALL INTEGERS OF FEWER THAN @F@@@@ 18 DIBV )@@G@@GITS EXACTLY, LARGER VALUES ARE KEPT TO 18 DIGIT ACCURACY. @[@@@@0 BW )@@G@@@F@@@@ IT IS NOT POSSIBLE, HOWEVER, TO REPRESENT ALL DECIMAL FRAC- BX )@@G@@@F@@@@ TIONS EXACTLY IN THE BINARY NUMBER SYSTEM, THE DECIMAL VALUE ONE-BY )@@G@@@G@@@@ TENTH, FOR EXAMPLE, IS A CONTINUING FRACTION IN THE BINARY SYSTEMBZ )@@G@@, @^@@@@ AND THE EXPRESSION @[@@@@0 @^@@@@0 0.1# 10CA )@@G@@.0 @[@@@@0 @F@@@@0MAY DIFFER SLIGHTLY FROM THE EXPECTED VALUE OF CB )@@G@@1 . IF APL WERE @F@@@@ TO DO ALL OF ITS CALCULATIONS EXACTLY, THEN SOMCC )@@G@@E RESULTS MIGHT @E@@@@ NOT BE EXACTLY AS DESIRED - FOR EXAMPLE, THE EXCD )@@G@@PRESSION @[@@@@0 @^@@@@0 1 = 0.1# 10.0@[@@@@0 @F@@@@CE )@@G@@0WOULD BE FALSE, WHILE FOR MOST APPLICATIONS, ONE WOULD WANT IT @]@@@@CF )@@G@@ TO BE TRUE.@[@@@@0 @F@@@@ TO ALLEVIATE THIS CONDITION, A TECHNCG )@@G@@IQUE CALLED 'FUZZING' IS@F@@@@ USED. IF TWO QUANTITIES ARE EQUAL TO WITCH )@@G@@HIN A SPECIFIED PERCEN- @E@@@@ TAGE ERROR, THEY ARE TREATED AS IF THEY WCI )@@G@@ERE EXACTLY EQUAL.@F@@@@ FUZZING IS APPLIED TO ALL OF THE RELATIONAL OPECJ )@@G@@RATORS (=, $=, @F@@@@ >, <, ETC.), WHEN USED AS SCALARS, AS PART OF ACK )@@G@@ COMPOUND OPERA- @E@@@@ TION, OR WHEN IMPLICIT AS IN THE DYADIC 'INDEX CL )@@G@@OF' ($I) AND@G@@@@ 'MEMBERSHIP' ($E) OPERATORS. IN ADDITION, IT IS USEDCM )@@G@@ IN THE CEIL- @F@@@@ ING AND FLOOR OPERATORS, AND IN THE EVALUATION CN )@@G@@OF INDICES FOR @#@@@@ SUBSCRIPTING. @[@@@@0 @E@@@@ ONE SHCO )@@G@@OULD REALIZE THAT ALTHOUGH FUZZING DOES GIVE THE@F@@@@ DESIRED RESULT INCP )@@G@@ MOST CASES, IT DESTROYS THE TRANSITIVITY OF @E@@@@ THE EQUALITY RELACQ )@@G@@TION - E.G. IT IS POSSIBLE TO HAVE THREE @F@@@@ VARIABLES A, B AND C SCR )@@G@@UCH THAT A=B IS TRUE, B=C IS TRUE, BUT @F@@@@ C=A IS NOT TRUE. SINCECS )@@G@@ SUBTRACTION IS NOT SUBJECT TO FUZZING, @F@@@@ THIS COULD BE DETECTED CT )@@G@@BY EXAMINING THE DIFFERENCES BETWEEN THESE@G@@@@ VARIABLES. IN PRACTICECU )@@G@@, THIS ANOMALY IS RARELY OF ANY CONSEQUENCE. @[@@@@0 @F@@@@ CV )@@G@@IT IS RECOGNIZED THAT IN CERTAIN APPLICATIONS (PARTICULARLY @F@@@@ NUMERCW )@@G@@ICAL ANALYSIS), FUZZING IS A DISTINCTLY UNDESIRABLE FEA- @F@@@@ TURE.CX )@@G@@ ALL INTERNAL CALCULATIONS IN APL\1100 ARE CARRIED TO AN @F@@@@ ACCURCY )@@G@@ACY OF 60 BITS, BUT IN FUZZING, ONLY THE MOST SIGNIFICANT @F@@@@ 48 BICZ )@@G@@TS ARE CONSIDERED. ASSOCIATED WITH EACH WORKSPACE IS A @G@@@@ 'FUZZDA )@@G@@ CONSTANT'; FOR A CLEAR WORKSPACE ITS VALUE IS 12 (I.E. 60-48). @F@@@@DB )@@G@@ THE FUZZ CONSTANT FOR A GIVEN WORKSPACE MAY BE CHANGED THROUGH @F@@@@DC )@@G@@ THE USE OF THE )FUZZ COMMAND OR THE FUNCTION FUZZ IN 1 WSFNS. @[@@@@DD )@@G@@0 @F@@@@ EXTREME CAUTION SHOULD BE USED WHEN CHANGING THE VALUEDE )@@G@@ OF @F@@@@ THE FUZZING CONSTANT. A SMALL FUZZING CONSTANT, OR NO FUZZDF )@@G@@ING @G@@@@ AT ALL CAN CAUSE THE CEILING AND FLOOR OPERATORS TO GIVE UNDG )@@G@@DESIRED @F@@@@ RESULTS, AND CAN CAUSE ERRORS IN THE EVALUATION OF SUDH )@@G@@BSCRIPTS. @F@@@@ A LARGE FUZZING CONSTANT CAN CAUSE APL TO CONSIDER TWDI )@@G@@O QUANTITIES@F@@@@ TO BE EQUAL WHICH CLEARLY SHOULD NOT BE. THE STANDARDJ )@@G@@D FUZZING @F@@@@ CONSTANT OF 12 IS AN OPTIMUM VALUE FOR ALMOST ALL WORDK )@@G@@K ON AN @^@@@@ 1100 SERIES MACHINE. @]@@@@3COMMENTS @F@@@@ DL )@@G@@COMMENTS MAY BE ENTERED ON ANY LINE OF INPUT TO APL EXCEPT @G@@@@ THE HDM )@@G@@EADER LINE OF A FUNCTION. COMMENTS ARE PRECEDED BY THE LAMP ($:) @G@@@@DN )@@G@@ SYMBOL; ANYTHING TO THE RIGHT OF THE LAMP IS CONSIDERED AS A COMMENT, DO )@@G@@@F@@@@ AND NOT PROCESSED BY APL. A LINE CONTAINING ONLY A LAMP AND DP )@@G@@@G@@@@ NOTHING ELSE (I.E. NULL COMMENTS) HAS SPECIAL SIGNIFICANCE IN FUNDQ )@@G@@CTION @F@@@@ EDITING. WHEN IN FUNCTION DEFINITION MODE, ONE INDICATES DR )@@G@@THAT A@G@@@@ PARTICULAR LINE OF THE FUNCTION IS TO BE ENTIRELY DELETED BDS )@@G@@Y TYPING @F@@@@ A LINE CONTAINING ONLY A LAMP. E.G., IN THE FUNCTIONDT )@@G@@ DEFINITION @#@@@@ MODE, THE LINE @^@@@@0 [5] $: @D@@@@DU )@@G@@0WILL CAUSE LINE 5 OF THE FUNCTION TO BE DELETED. @^@@@@3USE OF THE DV )@@G@@BREAK KEY @F@@@@ IT IS SOMETIMES DESIRABLE TO INTERRUPT PROCESSINDW )@@G@@G WHICH @F@@@@ APL IS DOING. THIS MAY OCCUR BECAUSE IT APPEARS AS IDX )@@G@@F AN APL @E@@@@ FUNCTION IS LOOPING, OR BECAUSE ONE WISHES TO CANCEL DY )@@G@@THE @F@@@@ PRINTOUT OF (SAY) THE TEXT OF A FUNCTION OR AN )SI DISPLADZ )@@G@@Y. @[@@@@0 @E@@@@ WHEN USING A TELETYPE, APL MAY BE INTERRUPEA )@@G@@TED T ANY @E@@@@ TIME BY DEPRESSING THE 'BREAK' KEY. THIS WILL RESULTEB )@@G@@ IN A @ @@@@ RESPONSE FROM THE SYSTEM OF @[@@@@0 @B@@@@0 EC )@@G@@ INTRPT LAST LINE @[@@@@0 @F@@@@0AT THIS POINT, ONE SHOUED )@@G@@LD PRESS THE BRK-RLS BUTTON, AND ENTER @F@@@@ A CARRIAGE RETURN. IF EE )@@G@@APL WAS PRINTING AT THE TIME BREAK WAS @F@@@@ HIT, A FEW MORE LINES OEF )@@G@@F OUTPUT MAY PRINT. THE SYSTEM WILL THEN @E@@@@ SUSPEND THE EXECUTING FEG )@@G@@UNCTION (F THERE WAS ONE) AND RETURN@E@@@@ TO THE DESK CALCULATOR MODE. EH )@@G@@ IF THE SYSTEM WAS IN FUNCTION@F@@@@ DEFINITION MODE, IT WILL NOT RETURNEI )@@G@@ TO DESK CALCULATOR MODE, @F@@@@ BUT WILL INSTEAD PROMPT YOU FOR THEEJ )@@G@@ NEXT LINE OF INPUT TO THE @F@@@@ FUNCTION. ONE SHOULD NOT TYPE THE EK )@@G@@CHARACTER X IN RESPONSE TO @F@@@@ THE INTRPT LAST LINE MESSAGE, AS EL )@@G@@THIS WILL CAUSE EXEC 8 TO @E@@@@ ABORT APL ENTIRELY AND RETURN TO THEM )@@G@@E EXEC 8 CONTROL MODE. @[@@@@0 @F@@@@ A SIMILAR PROCEDURE IS AEN )@@G@@VAILABLE WHEN USING DEVICES OTHER @F@@@@ THAN TELETYPES AS TERMINALS. EO )@@G@@ FOR EXAMPLE, WHEN USING TERMINALS @F@@@@ COMPATIBLE WITH THE IBM 2741,EP )@@G@@ THE ATTN KEY IS GENERALLY USED @E@@@@ FOR THE BREAK FUNCTION. ONE EQ )@@G@@SHOULD CONSULT THE APPROPRIATE@F@@@@ UNIVAC MANUALS AND ANY SPECIAL SITEER )@@G@@-DEPENDENT INFORMATION TO @F@@@@ DETERMINE THE EXACT PROCEDURE FOR DES )@@G@@EVICES OTHER THAN TELETYPES. @[@@@@0 @#@@@@3SIDE EFFECTS @G@@@@ET )@@G@@ SIDE EFFECTS ARE APPARENT ANOMALIES IN A PROGRAMMING LANGUAGE EU )@@G@@@F@@@@ WHICH CAN CAUSE IT TO GIVE OTHERWISE UNEXPECTED RESULTS. ALL EV )@@G@@@G@@@@ CONTEMPORARY COMPUTER LANGUAGES EXHIBIT SIDE EFFECTS TO SOME DEGREW )@@G@@EE @F@@@@ OR OTHER. ALTHOUGH THE ORIGINAL DESIGNERS OF APL[3] WERE CEX )@@G@@AREFUL@F@@@@ TO ELIMINATE MOST CASES IN WHICH THEY COULD OCCUR. NEVERTHEY )@@G@@ELESS,@E@@@@ THE TWO AREAS IN WHICH THEY APPEAR ARE IN THE USE OF THE EZ )@@G@@@F@@@@ SPECIFICATION ($S) OPERATOR, AND IN THE MASKING OF VARIABLE NAMESFA )@@G@@@^@@@@ IN FUNCTION EXECUTION. @[@@@@0 @#@@@@2SPECIFICATION @F@@@@FB )@@G@@ TWO ANOMALIES EXIST IN THE USE OF THE SPECIFICATION OPERA- @F@@@@FC )@@G@@ TOR, ONE WHICH MAY BE CAUSED BY THE OCCURRENCE OF AN ERROR IN A @F@@@@FD )@@G@@ PROGRAM, THE OTHER WHEN THE $S OPERATOR IS USED IN PARENTHESES. @F@@@@FE )@@G@@ TO DEMONSTRATE THE FORMER, CONSIDER THE FOLLOWING APL STATEMENTS:@[@@@@FF )@@G@@0 @ @@@@0 J $S 1 + V$S 2 @ @@@@0 A$S V + J$S 3FG )@@G@@ + J @[@@@@0 @F@@@@0AFTER THE EXECUTION OF THE SECOND STATEMENT, THFH )@@G@@E VALUE OF J WILL @F@@@@ BE SIX, AND A WILL BE EIGHT. CONSIDER NOW INSTFI )@@G@@EAD THAT V IS UN- @A@@@@ DEFINED - I.E. THE STATEMENTS ARE: @[@@@@0 FJ )@@G@@@#@@@@0 J $ S 3@A@@@@0 A $ S V + J $S 3 + J @[@@@@FK )@@G@@0 @F@@@@0IN THIS CASE, A 'VALUE ERROR' WILL BE SIGNALLED WHEN APL ATFL )@@G@@TEMPTS@G@@@@ TO ADD V AND J. BECAUSE APL OPERATES FROM RIGHT TO LEFT, HFM )@@G@@OWEVER, @G@@@@ THE VALUE J WILL HAVE BEEN CHANGED BEFORE THE ADDITIOFN )@@G@@N IS ATTEMPTED. @D@@@@ IF ONE SPECIFIED THE VALUE OF V AT THIS POINT BFO )@@G@@Y @[@@@@0 @#@@@@0 V $S 2 @[@@@@0 @A@@@@0AND THEN REFP )@@G@@-EXECUTED THE STATEMENT @[@@@@0 @ @@@@0 A$S V + J $S 3 + J FQ )@@G@@@[@@@@0 @F@@@@0THE RESULT WOULD BE THAT J WOULD BE NINE AND A WOULD FR )@@G@@BE ELEVEN, @F@@@@ RATHER THAN SIX AND EIGHT AS BEFORE. THIS PARTICULARFS )@@G@@ SIDE EFFECT@E@@@@ IS MOST LIKELY TO SHOW UP WHEN THE STATEMENT WITH THEFT )@@G@@ ERROR@D@@@@ APPEARED IN A FUNCTION, CAUSING IT TO BE SUSPENDED. @F@@@@FU )@@G@@ SPECIFICATION WITHIN PARENTHESES CAN ALSO PRODUCE UNEXPECTED@ @@@@FV )@@G@@ RESULTS. THE STATEMENTS @[@@@@0 @#@@@@0 J $S 5 @ @@@@FW )@@G@@0 X $S(J $S 2) + J @[@@@@0 @G@@@@0COULD SET THE VALUE OF FX )@@G@@ X TO EITHER 4 (IF THE SPECIFICATION IS DONE @G@@@@ FIRST) OR 7 (IF TFY )@@G@@HE ADDITION IS DONE FIRST). IN THE CURRENT IMPLE- @F@@@@ MENTATION OFZ )@@G@@F APL\1100, THE RESULT OF THE ABOVE WILL BE FOUR; IF @B@@@@ THE SECOND GA )@@G@@STATEMENT WERE CHANGED TO @[@@@@0 @A@@@@0 X $S(J $S 2) GB )@@G@@+ J + 0 @[@@@@0 @G@@@@0HOWEVER, APL\1100 (AS CURRENTLY IMPLEMENTGC )@@G@@ED) WILL ASSIGN THE VALUE @#@@@@ SEVEN TO X . @[@@@@0 @F@@@@GD )@@G@@ SINCE THE ORDER OF OPERATIONS IN CASES LIKE THE ABOVE IS NOT@F@@@@GE )@@G@@ SPECIFIED IN THE LANGUAGE, THE RESULTS OF SUCH STATEMENTS WILL @F@@@@GF )@@G@@ ALWAYS BE IMPLEMENTATION DEPENDENT. ONE SHOULD BE AWARE THAT A @F@@@@GG )@@G@@ CHANGE IN THE IMPLEMENTATION OF APL\1100 (OR AN ATTEMPT TO RUN @F@@@@GH )@@G@@ SUCH A PROGRAM ON A DIFFERENT MACHINE) COULD CAUSE THE RESULTS OF@ @@@@GI )@@G@@ SUCH STATEMENTS TO CHANGE. @[@@@@0 @ @@@@2MASKING OF VARIABLE NAMGJ )@@G@@ES @F@@@@ AS MENTIONED ABOVE IN THE SECTIONS ON THE )SI COMMANGK )@@G@@D AND @F@@@@ IN FUNCTION EDITING, VARIABLE NAMES SPECIFIED ON THE HEADERGL )@@G@@ LINE @F@@@@ OF A FUNCTION AND LABEL NAMES WITHIN THE FUNCTION ARE 'LOCAGM )@@G@@L' @G@@@@ VARIABLES OF THAT FUNCTION. IT IS POSSIBLE FOR THE LOCAL VGN )@@G@@ARIABLE @F@@@@ NAMES OF A FUNCTION TO BE THE SAME AS THE NAMES OF OTGO )@@G@@HER OBJECTS @G@@@@ IN THE WORKSPACE. WHENEVER A FUNCTION STARTS EXECUTIGP )@@G@@ON, ITS LOCAL @F@@@@ VARIABLES ARE DEFINED AND TAKE PRECEDENCE OVER GQ )@@G@@ANY OTHER OBJECTS @F@@@@ IN THE WORKSPACE WHICH MAY HAVE THE SAME NAME. GR )@@G@@ THIS 'MASKING' @F@@@@ TAKES PLACE EACH TIME A FUNCTION IS USED AND CAGS )@@G@@N EXTEND THROUGH @F@@@@ AN ARBITRARY DEPTH OF FUNCTION NESTING (I.E. FUGT )@@G@@NCTIONS WHICH CALL@F@@@@ OTHER FUNCTIONS WHICH IN TURN. . .). IN ALL CAGU )@@G@@SES, THE MOST @F@@@@ RECENT DEFINITION OF THE NAME (I.E. THE ONE WHIGV )@@G@@CH APPEARS NEAREST@G@@@@ THE TOP OF THE PASE IN AN )SIV DISPLAY) IS THGW )@@G@@E ONE WHICH IS USED. @[@@@@0 @F@@@@ THE PRINCIPAL CAUSE FOR GX )@@G@@CONFUSION OCCURS WHEN A FUNCTION @F@@@@ REFERS TO AN OBJECT WHICH IS GY )@@G@@NOT ONE OF ITS LOCAL VARIABLES. @B@@@@ CONSIDER THE FUNCTION FUNC GZ )@@G@@DEFINED BY @[@@@@0 @ @@@@0 $F Z $S FUNC Y @A@@@@0 HA )@@G@@ [1] Z $S $EY $F @[@@@@0 @F@@@@0WITH THE FUNCTION DEFINHB )@@G@@ED AS ABOVE, THE FOLLOWING STATEMENTS @[@@@@0 @^@@@@0 HC )@@G@@ X $S 3 @ @@@@0 FUNC '2$RX' @[@@@@0 @E@@@@0WILL HD )@@G@@YIELD AS A RESULT THE NUMERIC VECTOR 3 3 . ON THE @C@@@@ OTHER HAND,HE )@@G@@ IF FUNC WERE DEFINED INSTEAD AS @[@@@@0 @ @@@@0 $FHF )@@G@@ Z $S FUNC X@A@@@@0 [1] X $S $EX $F @[@@@@0 @G@@@@HG )@@G@@0(NOTICE THAT ONLY THE NAME OF THE RIGHT ARGUMENT HAS CHANGED) THEN HH )@@G@@@^@@@@ THE SAME TWO STATEMENTS@[@@@@0 @^@@@@0 X $S 3 HI )@@G@@@ @@@@0 FUNC '2$RX' @[@@@@0 @G@@@@0WILL YIELD THE CHHJ )@@G@@ARACTER VECTOR 2$R AS A RESULT. IN BOTH CASES, @E@@@@ THE STATEMEHK )@@G@@NT EXECUTED AT LINE 1 OF FUNC WAS EFFECTIVELY @[@@@@0 @ @@@@0 HL )@@G@@ Z $S 2 $R X @[@@@@0 @G@@@@0IN THE FIRST CASE, THE VALUE HM )@@G@@OF X USED WAS THE GLOBAL NUMERIC 3 ; @G@@@@ IN THE SECOND CASE, IT HN )@@G@@WAS THE LOCAL VARIABLE X , I.E. THE CHARAC- @^@@@@ TER STRING '2$RXHO )@@G@@'. @[@@@@0 @F@@@@ THE ANOMALY NOTED ABOVE DOES NOT DEPEND UPHP )@@G@@ON THE USE OF THE @F@@@@ UNQUOTE OPERATOR - IT IS A DIRECT CONSEQUENCE OHQ )@@G@@F MASKING. FOR A @F@@@@ SIMILAR RESULT, CONSIDER THE TWO FUNCTIONS PTOHR )@@G@@T AND QTOT DE- @]@@@@ FINED BY: @[@@@@0 @D@@@@0 $F Z $S PTOHS )@@G@@T A $F Z $S QTOT B @D@@@@0 [1] Z $S A+C $F HT )@@G@@ [1] Z $S PTOT B $F @[@@@@0 @G@@@@0WITH THESE FUNCTIONS DEFINED HU )@@G@@AS ABOVE, THE RESULT OF THE STATEMENTS @[@@@@0 @^@@@@0 HV )@@G@@ C $S 5 @^@@@@0 QTOT 3 @[@@@@0 @G@@@@0WOULD BE 8HW )@@G@@ , BUT IF THE FUNCTION QTOT HAD BEEN DEFINED INSTEAD AS @[@@@@0 HX )@@G@@@ @@@@0 $F Z $S QTOT C@A@@@@0 [1] Z $S PTOT CHY )@@G@@ $F @[@@@@0 @^@@@@0THEN THE RESULT OF @[@@@@0 @^@@@@0 HZ )@@G@@ C $S 5 @^@@@@0 QTOT 3 @[@@@@0 @#@@@@0WOULDIA )@@G@@ BE 6 . @[@@@@0 @F@@@@ THESE EXAMPLES SHOULD MAKE IT CLEAR IB )@@G@@THAT ONE SHOULD BE VERY @D@@@@ CAUTIOUS IN REFERRING TO NON-LOCAL VARIABIC )@@G@@LES IN @A@@@@ THE BODY OF A DEFINED FUNCTION. @D@@@@ ONE WAY OF ID )@@G@@AVOIDING CONFLICTS WHICH COULD ARISE IS BY@F@@@@ ADOPTING A CONVENTION FIE )@@G@@OR THE NAMING OF LOCAL VARIABLES WITHIN @F@@@@ FUNCTIONS, FOR EXAMPLE,IF )@@G@@ BY HAVING ALL LOCAL VARIABLE NAMES IN A @G@@@@ PARTICULAR FUNCTION STAIG )@@G@@RT WITH A PARTICULAR LETTER OF THE ALPHABET. @E@@@@4DIFFERENCES BETWEIH )@@G@@EN APL\1100 AND OTHER IMPLEMENTATIONS @F@@@@ A GREAT DEAL OF EFII )@@G@@FORT HAS BEEN EXPENDED TO MAKE APL\1100 @F@@@@ COMPATIBLE WITH OTHER AIJ )@@G@@PL PROCESSORS. THERE ARE NO DIRECT CON- @F@@@@ FLICTS IN THE SOURCE LAIK )@@G@@NGUAGE THAT WE KNOW OF; ALL DIFFERENCES @F@@@@ FALL INTO THREE BROAD CIL )@@G@@ATEGORIES: (1) TERMINAL-DEPENDENT FEA- @F@@@@ TURES, (2) EXTENSIONS AIM )@@G@@ND (3) FEATURES WHICH HAVE NOT YET BEEN @#@@@@ IMPLEMENTED. @[@@@@IN )@@G@@0 @ @@@@3TERMINAL DEPENDENT FEATURES @#@@@@2CHARACTER SET @F@@@@IO )@@G@@ THE POWER AND UTILITY OF APL DERIVE TO A GREAT EXTENT FROM @F@@@@IP )@@G@@ THE WEALTH OF PRIMITIVE OPERATORS DEFINED. DR. IVERSON'S ORIGI- @F@@@@IQ )@@G@@ NAL WORK [1] ON THE LANGUAGE WAS NOT DIRECTED TOWARD A SPECIFIC @F@@@@IR )@@G@@ COMPUTER IMPLEMENTATION OF IT - HENCE UNIQUE SYMBOLS WERE DEFINED@F@@@@IS )@@G@@ FOR THE OPERATORS WITHOUT REGARD FOR THE LIMITATIONS OF ANY PAR- @F@@@@IT )@@G@@ TICULAR COMPUTER PERIPHERAL. A SPECIAL TYPE BALL HAS BEEN DE- @F@@@@IU )@@G@@ SIGNED FOR THE IBM SELECTRIC TYPEWRITER WHICH HAS THE REQUIRED @F@@@@IV )@@G@@ SYMBOLS; A 'DANCING BLOCK' FOR THE MODEL 37 TELETYPE ALSO EXISTS @F@@@@IW )@@G@@ WITH THEM. THE ENTIRE SET OF SYMBOLS USED IN APL IS WELL OVER @F@@@@IX )@@G@@ 128 - EVEN WHEN USING TERMINAL DEVICES WITH SPECIAL PRINT ELE- @F@@@@IY )@@G@@ MENTS, MANY APL CHARACTERS MUST BE FORMED BY BACKSPACING AND @B@@@@IZ )@@G@@ OVERSTRIKING TWO OF THE OTHER SYMBOLS. @[@@@@0 @F@@@@ FEW 11JA )@@G@@00 SERIES COMPUTER USERS HAVE ACCESS TO TERMINALS @F@@@@ OF THE ABOVJB )@@G@@E TYPE; MOST OF THEM USE MODEL 33 TELETYPES OR SIMI- @F@@@@ LAR DEVICESJC )@@G@@, WHICH ARE LIMITED TO 63 PRINTABLE CHARACTERS. IN @E@@@@ ADDITION, AJD )@@G@@PL\1100 WAS DESIGNED TO ACCEPT BATCH INPUT (FROM@F@@@@ CARDS) IN ADDITIOJE )@@G@@N TO TERMINAL INPUT - THE FIELDATA CARD CODE @F@@@@ IS ALSO LIMITED TJF )@@G@@O 63 NON-BLANK CHARACTERS. AS A CONSEQUENCE, A@F@@@@ CHARACTER SET HADJG )@@G@@ TO BE DEFINED WHICH WOULD USE NO MORE THAN @F@@@@ 63 CHARACTERS; THJH )@@G@@E MOST NOTICEABLE DIFFERENCE BETWEEN APL\1100 @F@@@@ AND SIMILAR APL TJI )@@G@@ERMINAL SYSTEMS IS IN THE USE OF THIS CHARACTER @D@@@@ SET, AND THE RESUJJ )@@G@@LTING APPEARANCE OF APL OUTPUT. @[@@@@0 @F@@@@ BECAUSE THISJK )@@G@@ MANUAL WAS PREPARED FOR PRINTING ON A LINE @F@@@@ PRINTER WITH ONLYJL )@@G@@ 63 PRINTABLE CHARACTERS, THE 63 CHARACTER SET @F@@@@ IS USED THROUGHOUJM )@@G@@T IT. FOR THE MOST PART, APL CHARACTERS WHICH @F@@@@ CANNOT BE REPRESEJN )@@G@@NTED WITH A SINGLE CHARACTER IN THE SET ARE @F@@@@ REPRESENTED BY DIJO )@@G@@GRAPHS - I.E. A COMBINATION OF TWO CHARACTERS. @E@@@@ IT IS IMPORTANT TJP )@@G@@O REALIZE THAT APL\1100 CONSIDERS DIGRAPHS@F@@@@ AS IF THEY WERE A SINGLJQ )@@G@@E CHARACTER. SINCE THE CONTENTS OF AN @F@@@@ APL\1100 WORKSPACE ARE JR )@@G@@INDEPENDENT OF THE TERMINAL DEVICE USED @F@@@@ TO CREATE IT, A USER WIJS )@@G@@TH ACCESS TO A TERMINAL WITH THE FULL @F@@@@ CHARACTER SET (SUCH AS JT )@@G@@AN IBM 2741) CAN FREELY USE WORKSPACES @E@@@@ WHICH WERE INPUT FROM AJU )@@G@@ TELETYPE OR A CARD DECK. A SUMMARY@D@@@@ OF THE 63-CHARACTER SET IS COJV )@@G@@NTAINED IN APPENDIX A. @[@@@@0 @E@@@@ APL\1100 USERS WHO HAVE JW )@@G@@ACCESS TO TERMINALS WHICH CAN @E@@@@ GENERATE THE APL 'REFERENCE' CHARACJX )@@G@@TER SET (E.G. IBM 2741'S@F@@@@ OR TTY 37'S WITH AN APPROPRIATE PRINT BLOJY )@@G@@CK) ARE NOT NECESSARILY @F@@@@ LIMITED TO THE 63-CHARACTER TELETYPE SET.JZ )@@G@@ APL\1100 HAS BEEN @F@@@@ DESIGNED TO ACCEPT THE ENTIRE REFERENCE SKA )@@G@@ET AT SITES WHERE SUCH @F@@@@ DEVICES EXIST. THE USE OF SUCH TERMINALSKB )@@G@@ REQUIRES THAT BOTH @E@@@@ APL\1100 AND EXEC 8 BE CONFIGURED TO RECOKC )@@G@@GNIZE THEM. USERS@E@@@@ WHO HAVE SUCH DEVICES SHOULD CHECK WITH THEIR LKD )@@G@@OCAL SITE @F@@@@ MANAGEMENT TO DETERMINE THE CONVENTIONS NEEDED FOR THKE )@@G@@EIR USE @A@@@@ IN A PARTICULAR EXEC 8 SYSTEM. @[@@@@0 @]@@@@KF )@@G@@2BACKSPACING@F@@@@ THE INPUT EDITING FEATURES OF MOST APL SYSTEMS AKG )@@G@@RE SOMEWHAT @F@@@@ BUILT AROUND THE USE OF THE IBM 2741 COMMUNICATIONS TKH )@@G@@ERMINAL @F@@@@ AS AN INPUT DEVICE. IN PARTICULAR, THEY TAKE ADVANTAKI )@@G@@GE OF THE @F@@@@ FACT THAT SUCH TERMINALS HAVE A BACKSPACING CAPABILITKJ )@@G@@Y, AND IT @F@@@@ IS POSSIBLE TO INSERT CHARACTERS IN A LINE BY BACKSPAKK )@@G@@CING AND @G@@@@ OVERSTRIKING BLANKS. THE MODELS 33 AND 35 TELETYPES KL )@@G@@CANNOT BE @^@@@@ PHYSICALLY BACKSPACED. @[@@@@0 @F@@@@ KM )@@G@@SINCE MOST UNIVAC 1100 SERIES USERS HAVE TELETYPES, THE @F@@@@ EDITIKN )@@G@@NG FEATURES OF APL\1100 HAD TO BE GEARED TO THE LIMITATIONS @F@@@@ OF THKO )@@G@@IS DEVICE. THIS HAS RESULTED IN THE FOLLOWING CONVENTIONS: @[@@@@0 KP )@@G@@@]@@@@COLUMN 13 @F@@@@ (1) THE NORMAL EXEC 8 CONVENTIONS WITH RKQ )@@G@@EGARD TO EDITING @E@@@@ A LINE BEFORE TRANSMITTING IT TO THEKR )@@G@@ PROGRAM ARE@E@@@@ EFFECTIVE. AN ENTIRE LINE MAY BE CANCELLEKS )@@G@@D (AND@E@@@@ NOT TRANSMITTED) BY TYPING A QUESTION MARK. A KT )@@G@@@F@@@@ LOGICAL BACKSPACE AND ERASE IS EFFECTED BY TYPING KU )@@G@@@F@@@@ A LEFT ARROW (UNDERLINE ON SOME TELETYPES). THIS KV )@@G@@@F@@@@ ERASES THE LAST SIGNIFICANT CHARACTER ON THE LINE; KW )@@G@@@F@@@@ TWO SUCCESSIVE LEFT ARROWS ERASES THE LAST 2 CHARAC- KX )@@G@@@G@@@@ TERS, ETC. ON SOME 1100 SYSTEMS, THE DOUBLE QUOTE CHARKY )@@G@@ACTER @G@@@@ (UPPER CASE 2) IS USED AS THE CHARACTER DELETE, KZ )@@G@@INSTEAD OF @G@@@@ THE LEFT ARROW (UNDERLINE). ON THESE SYSTLA )@@G@@EMS, THE ALTERNATE@G@@@@ CHARACTERS $W AND $H MUST BE USED FOLB )@@G@@R QUAD AND QUOTE-QUAD. @G@@@@ SIMILARLY, THE QUESTION MARK (LC )@@G@@USED FOR ROLL AND DEAL) MUST @D@@@@ BE ENTERED AS THE ALTERNLD )@@G@@ATE, $Q FROM TTY.@[@@@@0 @F@@@@0 (2) THE MECHANISM FOR MAKINGLE )@@G@@ CHANGES TO THE INDIVIDUAL @F@@@@ LINES OF THE BODY OF A FLF )@@G@@UNCTION HAVE BEEN CHANGED; @F@@@@ IN PARTICULAR ["N] AND [LG )@@G@@N"M] FUNCTION DIFFERENTLY. @F@@@@ FOR DETAILS, SEE THE CHALH )@@G@@PTER ON FUNCTION DEFINITION. @[@@@@0 @]@@@@COLUMN 2 @F@@@@0 LI )@@G@@ THE CHANGES TO LINE EDITING ARE EFFECTIVE EVEN IF ONE IS @F@@@@ USINGLJ )@@G@@ A TERMINAL SUCH AS THE IBM 2741 ON WHICH THE FULL CHARAC- @^@@@@ TER SLK )@@G@@ET IS AVAILABLE. @[@@@@0 @]@@@@3EXTENSIONS @E@@@@ SEVERAL MINOLL )@@G@@R EXTENSIONS TO THE APL LANGUAGE HAVE BEEN@F@@@@ INCORPORATED INTO APL\1LM )@@G@@100. THESE EXTENSIONS ARE ALL UPWARD @B@@@@ COMPATIBLE FROM OTHER VLN )@@G@@ERSIONS OF APL. @[@@@@0 @^@@@@2TRACE AND STOP VECTORS @E@@@@ LO )@@G@@THERE ARE NO RESTRICTIONS ON THE USE OF THE TRACE AND @F@@@@ STOP VECTORLP )@@G@@S (EXCEPT, OF COURSE, THAT THE PARTICULAR FUNCTION @F@@@@ MUST EXIST)LQ )@@G@@; THESE QUANTITIES MAY BE USED IN ANY APL EXPRESSION. @E@@@@ WHEN NONE OLR )@@G@@F THE STATEMENTS IN A FUNCTION HAVE THEIR TRACE @F@@@@ (STOP) B