(George Source)
Macros used: BUDGBITX, BUDGINCX, BUDGUSE, BUDGWRITE, CJOBLOCK, CLOSBINC, CLOSE, FJOCA, FSHCODE, GEOERR, ISSUCOM, MASKSTOZ, MENDAREA, MFREE, MHUNT, MHUNTW, MONOUT, MONOUTX, NAME, OPEN, OUTNUM, OUTPARAM, READDICT, SEGENTRY, SETNCORE, SETUPCORE, SFCB, SPRIVON, TESTREP, UP, URGTIME, XCBINDEX
22FL #OPT K0BLOGNAL=0 22^= #LIS K0BLOGNAL>K0ALLGEO 23DW #SEG BLOGNAL70 [RICHARD GRIMWADE 23YG 8HBLOGNAL7 24D6 # THIS IS THE BUILT-IN VERSION OF LOGANAL. IT UPDATES THE MONEY AND TIME 24XQ # USED BY THE JOB ,ISSUES A SPECIAL LF COMMAND TO LIST THE MONITORING 25CB # FILE, AND COPIES THE MONITORING FILE IF THIS WAS REQUESTED 25X2 # 26BL SEGENTRY K1BLOGNAL,XK1 26W= SEGENTRY K2BLOGNAL,XK2 27*W # 27H4 ...[ SEGENTRY K25BLOGNAL USED BY RESTORE TIME MACRO PRESETRP 27N= ...[ 27TG TABLE +GMONEY [BIT PATTERN FOR MONEY BUDGET 28*6 +JLOGMONEY [MESSAGE FOR MONEY 28SQ +GTIMEM [BIT PATTERN FOR TIME BUDGET -TIME(M) 29#B +JLOGTIME [MESSAGE FOR TIME 29Q3 ...ZCOPY +8 2=7N ... +23 2=K* ... 24HCOPY :%Z.%Y( 1/B1B0), 2?32 ...ZCYGEN +3.0 2?DM ...ZLF +14 2?W# ... +48 2#?^ ... 36HLF :%Z.%Y( 1/B1B0),*LP,ALL,MONFILE 2#PQ 12H 2#^J ...ZLFGEN +2.2 2*9B X1000 +1000 [CONSTANT FOR CONVERTING MILLI- TO SECS 2*F8 ... SEGENTRY K25BLOGNAL 2*P2 PRAMXMSK +AMXMSKPR 2B8L # DATA FOR FABSNB FOR OPENING THE DICTIONARY 2BN= XFBSNB +10 2C7W 12HMASTER 2CMG 12HDICTIONARY 2D76 +1 2DLQ +1 2F6B 4HB1 2FL2 # 2G5L XK1 2GK= MONOUT JLOGHEAD [SEND HEAD OF MESSAGE TO M.F.SYSTEM 2H4W CJOBLOCK 3 2HJG LDN 5 999 [GET TIME USED BY JOB FROM JOB BLOCK 2J46 ADXC 5 HTIMEJ+1(3) 2JHQ LDX 4 HTIMEJ(3) [AND CONVERTIT TO SECONDS,ROUNDING UP 2K3B DVD 4 X1000(1) 2LG= LDX 4 5 [ X4 = SECONDS USED BY JOB 2L^W MPY 5 IMULT [CALCULATE CHARGE (TIME*IMULT/IDIV 2MFG DVD 5 IDIV 2M^6 LDX 5 6 2NDQ TXL 5 IMIN [IF TOO LOW, SUBSTITUTE MINIMUM VALUE 2NYB BCC X 2PD2 LDX 5 IMIN 2PXL X LDXC 6 JURGE(3) 2QC= BNZ 6 X11 2QWW LDN 6 45 [LOAD M AS DEFAULT VALUE 2RBG X11 2RW6 URGTIME 6 2S*Q SETNCORE 10,3,FILE,FABSNB 2STB LDN 3 A1(3) 2T*2 LDN 2 XFBSNB(1) 2TSL MOVE 2 10 2W#= OPEN XBRK,GENERAL [OPEN DICTIONARY 2WRW BUDGBITX 6 [BIT PATTERN FOR TIME & 2X?G TESTREP NOSUCH,NOSUCH [SET UP JLINE BLOCK 2XR6 STO 6 AWORK3(2) [TIME BIT PATTERN 2Y=Q STO 4 AWORK4(2) [AMOUNT 2YQB LDX 6 TABLE(1) [MONEY PATTERN 2^=2 LDX 4 5 [AMOUNT 2^PL MHUNT 3,FILE,FABSNB 329= NAME 3,FILE,ADICT 32NW CJOBLOCK 2 338G ADN 2 JUSER 33N6 ADN 3 A1 [SET UP ADICT 347Q MOVE 2 3 34MB READDICT 3572 X1 BUDGUSE 6 [FIND BUDGET 35LL TESTREPN NOTYPE,X2 [J. IF EXISTS 366= BUDGINCX 6,4 [GIVE HIM BUDGET TYPE 36KW NGX 6 4 [LEFT 375G BRN X33 37K6 X2 MHUNTW 3,JBUDGET,JBUDGUSER 384Q ADS 4 JCONSUMED(3) [UPDATE 38JB LDX 6 JALLOWED(3) 3942 SBX 6 JCONSUMED(3) [LEFT 39HL BUDGWRITE [PUT BACK INTO DICTIONARY 3=3= MFREE JBUDGET,JBUDGUSER 3=GW X33 LDX 0 AWORK3(2) 3?2G BZE 0 X3 [J. IF SECOND TIME ROUND 3?G6 STO 4 AWORK1(2) [USED & LEFT FOR MONEY STORED HERE 3?^Q STO 6 AWORK2(2) 3#FB LDX 6 0 3#^2 STOZ AWORK3(2) [SET SWITCH 3*DL LDX 4 AWORK4(2) 3*Y= BRN X1 [BACK TO DO TIME 3BCW X3 CLOSBINC 3BXG LDN 7 8 3CC6 OUTPARAM 7,JCHARS,JBUDGET,JLINE 3CWQ LDN 7 2 3DBB MFREE JBUDGET,JLINE 3DW2 BRN Y2 3F*L Y1 LDX 4 AWORK1(2) [RECOVER STORED VALUES 3FT= LDX 6 AWORK2(2) 3G#W Y2 OUTNUM 4,7,1 3GSG OUTNUM 6,7,1 3H#6 ADX 1 7 3HRQ MONOUTX TABLE+1(1) [OUTPUT USED,LEFT LINE 3J?B SBN 7 2 3JR2 BPZ 7 Y1 3K=L XK2 3K#8 ...[ FIRST GET FGN OF MONITORING FILE 3K*Q ... NGN 6 1 3KC# ... SFCB 6,3 [SETS X3 POINTING TO FCB OF MON FILE 3KDW ...[ 3KGD ...[ CONVERT FGN TO CHARS AND STORE IN AWORK2 3KJ2 ... LDN 1 AWORK1(2) 3KKJ ... XCBINDEX 4,1,FGEN(3) 3KM6 ... LDX 1 FX1 3KNN ...[ 3KQ= Y MHUNTW 3,ADATA,AREPORT 3L9W LDX 7 A1(3) [REMEMBER REPORT MASK 3LPG LDX 5 A1+1(3) 3M96 MASKSTOZ ,2 3M?* ... FSHCODE AORB 3M*J ...( 3MCR ... LDX 0 CONTEXT(2) 3MG2 ... ANDN 0 8 3MJ9 ... BZE 0 SNOTMOP [ONLY SET MULTIPLEXOR MASK FOR MOP 3MLD ...) 3MP2 ... LDX 4 PRAMXMSK(1) 3MRJ ... STO 4 AMXMSK(2) 3MW6 ...#UNS CMXMSK 3MYN ...( 3M^H ... SEGENTRY K70BLOGNAL 3N2B ... BRN XK71 [MENDED TO NULL IF REPORTNEST ON 3N3= ... MHUNTW 1,CPB,CALAS 3N5S ... STO 4 CMXMSK(1) 3N6M ...XK71 3N7G ... SEGENTRY K71BLOGNAL 3N8B ... LDX 1 FX1 3N=Y ...) 3N*J ... FSHCODE AORB 3NGQ ...SNOTMOP 3NN2 BZE 7 Z [DON'T LF IF NONE SPECIFIED 3P7L SETUPCORE ZLF(1),2,ADATA,CREADL 3PM= LDX 4 ZLF+1(1) 3Q6W STO 4 A1(2) 3QLG ADN 1 ZLF+2 3R66 ADN 2 CPDATA 3R*Y ... MOVE 1 12 3RKQ ... SMO FX2 3RTJ ... STO 2 AWORK4 [STORE AD OF CPDATA 3S5B LDN 0 9 [CONVERT MONFILE MASK TO OCTAL 3SK2 LDN 6 #23 [BEFORE STORING IT AS "MONFILE" PARAM 3T4L ...OCT DCH 6 9(2) 3TJ= BCHX 2 £ 3W3W STOZ 6 3WHG SLL 67 3 3X36 BCT 0 OCT 3XGQ # THIS SEEMS QUITE SILLY - BUT IT DOES 3Y2B # HAVE A REASON. IF THE WORD IS HANDED 3YG2 # OVER AS FOUR CHARACTERS,ONE OF THEM 3Y^L # MAY BE SPACE OR COMMA, AND WOULD NOT 3^F= # FUNCTION CORRECTLY. 3^FH ...[ SET FGN IN COMMAND 3^FS ... LDX 2 FX2 3^G5 ... LDN 6 AWORK2(2) [ AD OF FGN 3^GB ... SMO FX1 3^GM ... LDX 7 ZLFGEN 3^GY ... ADX 7 AWORK4(2) [X7=AD OF DESTINATION 3^H9 ... MVCH 6 4 3^HG ...[ 3^HT ...#UNS FTS1 3^LD ...( 3^P3 ... FJOCA 3,FX2 [AVOID FROZEN CHECK IN COPY....... 3^RL ... SPRIVON JSSTART,3 [...BY MAKING JOB SYS STARTED 3^W9 ...) 3^YW ISSUCOM XERRLF [ISSUE LF COMMAND 42DG XERRLF 42Y6 Z CLOSE -1 43CQ BNZ 5 Z01 [GO TO COPY FILE IF NECESSARY 43XB XERR 44C2 Z0 MFREE ADATA,AREPORT 44WL UP 45B= Z01 STO 5 7 [KEEP NO. OF WORDS IN FILENAME 45TW ADX 5 ZCOPY(1) 46*G SETUPCORE 5,2,ADATA,CREADL 46T6 MHUNTW 3,ADATA,AREPORT 47#Q SLL 7 2 47SB ADX 7 ZCOPY+1(1) [CALCULATE NO. OF CHARS IN COMMAND 48#2 STO 7 A1(2) 48RL LDN 4 ZCOPY+2(1) 49?= LDN 5 CPDATA(2) 49DD ... SMO FX2 49KL ... STO 5 AWORK4 [STORE AD OF CPDATA 49QW SMO ZCOPY+1(1) 4==G MVCH 4 0 4=Q6 SBX 7 ZCOPY+1(1) [NO OF CHARS STILL TO BE MOVED 4?9Q LDN 4 A1+2(3) [POINT X4 TO FILNAME IN REPORT BLOCK 4?PB SMO 7 4#92 MVCH 4 0 4#=J ...[ 4##6 ...[ SET FGN IN COMMAND 4#*N ... LDX 2 FX2 4#C= ... LDN 6 AWORK2(2) [AD OF FGN 4#DS ... SMO FX1 4#GB ... LDX 7 ZCYGEN 4#HY ... ADX 7 AWORK4(2) [DESTINATION 4#KG ... MVCH 6 4 4#M4 ...[ 4#NL ISSUCOM XERR 4*8= BRN Z0 4*MW XBRK GEOERR 1,BRKBLOG 4B7G NOSUCH 4BM6 GEOERR 1,NOSUCH 4C6Q XNOTOK 4CLB GEOERR 1,WRONGREP 4D62 MENDAREA 20,K99BLOGNAL 4DKL #END ^^^^ ...37467470000300000000