22FL SEG FILESECU,80,CSS SPECIAL SEGMENT 22^= SEGENTRY K1FILESECU,SF1 [SETFILEPASS (SF) ENTRY. 23DW SEGENTRY K2FILESECU,SF2 [ASSIGNPASS (AP) ENTRY. 23YG SEGENTRY K3FILESECU,SF3 [CHECK PASSWORD ENTRY. 24D6 #DEF XPASSLENGTH=4 [NUMBER OF CHARACTERS ALLOWED. 24XQ XKEY 4HJ.MC 25CB SF1 [SETFILEPASS: THIS SECTION SETS UP A BLOCK ADATA/JMCPASS 25X2 [WHICH HOLDS THE JOBS CURRENT PASSWORD. 26BL [THE ADATA/JMCPASS BLOCK IS MERELY A RENAMED CPB/CUNI BLOCK. 26W= VFREEW ADATA,JMCPASS [FREE ANY PASSWORD BLOCK. 27TG SPARAPASS 28*6 MHUNT 3,CPB,CUNI 28SQ LDX 0 ANUM(3) 29S2 BNG 0 NULL 2=?L BZE 0 NULL 2=R= SBN 0 XPASSLENGTH+1 2?=W BPZ 0 XLONG 2?QG NAME 3,ADATA,JMCPASS 2#=6 NULL ENDCOM 2#PQ XLONGMESS +JLONGPASS 2*9B XLONG 2B8L LDX 6 XLONGMESS(1) 2BN= LDN 0 4 2C7W STO 0 ANUM(3) 2CMG NAME 3,ADATA,JMCPASS 2D76 MONOUTX 6 2DLQ ENDCOM 2F6B #PAGE 2FL2 SF2 [ASSIGNPASS: THIS SECTION ASSIGNS THE PASSWORD 2G5L [HELD BY THE JOB TO THE FILE WHOSE NAME IS GIVEN IN %A 2GK= [IF THE FILE ALREADY HAS A PASSWORD, %B MUST BE THE OLD 2H4W [PASSWORD. 2HJG SPARAPASS [SHOULD BE FILENAME. 2J46 MHUNT 3,CPB,CUNI 2K3B NAMETOP 3,FILE,FNAME 2L2L FNORM [TO CHECK FORMAT AND TO GIVE US FILE/FABSNB 2LG= TESTREP NAMEFORM,NAMEFORM 2L^W MHUNT 2,FILE,FNAME 2MFG NAMETOP 2,CPB,CUNI 2NDQ MHUNT 2,FILE,FABSNB [PRODUCED BY FNORM 2NYB LDX 0 ATYPE(2) 2PXL ANDN 0 #2200 [CHECK FOR WFILE OR NOT FILE. 2QC= BNZ 0 MERR1 2QWW OPENDIR MBRK,GENERAL,QUERY 2RBG TESTREP OK,OPENDIR 2RW6 ERRTEST 3,OUCH,NAME,NOFILE,NOUSER,WRGEN,VRYWRONG 2S*Q OUCH 2STB ENDCOM 2T*2 OPENDIR 2W#= OWNERCHECK 2WRW TESTREP2 NOTOWNER,NOTOWNER 2X?G SPARAPASS [OLD PASSWORD - MAY HAVE BEEN OMITTED. 2XR6 MHUNT 2,CPB,CUNI 2Y=Q NAME 2,ADATA,JMCPASSB 2YQB DOWN FILESECU,3 2^=2 BRN XFAIL 2^PL LDX 6 XKEY(1) 329= HUNTW 2,ADATA,JMCPASS 32NW BNG 2 SETNULL 338G LDX 6 ACES 33N6 LDX 3 FX2 347Q STO 6 AWORK1(3) 34MB LDX 1 ANUM(2) 3572 LDN 5 APARA(2) 35LL LDN 6 AWORK1(3) 366= MVCH 5 0(1) 36KW LDX 6 AWORK1(3) 375G SETNULL 384Q MHUNTW 2,FILE,ENT 38JB LDX 5 EUSE1(2) 3942 BNG 5 XDIR 39HL LDX 1 FX1 3=3= ERX 6 XKEY(1) 3=GW STO 6 EU(2) 3?2G NAME 2,FILE,FWB 3?G6 LDEX 2 ECOPS(2) 3?^Q BZE 2 NOBCKSP 3#FB BACKSPACE 3#^2 NOBCKSP 3*DL REWRITE 3*Y= XFAIL 3BCW CLOSETOP 3BXG ENDCOM 3CC6 XDIRERR +ERDIR 3CWQ XDIR 3DBB CLOSETOP 3DW2 LDX 6 XDIRERR(1) 3F*L BRN MERR1+1 3FT= NOTOWNERR +ERNOTOWN 3G#W NOTOWNER 3GSG CLOSETOP 3H#6 LDX 6 NOTOWNERR(1) 3HRQ COMERRX 6 3J?B XERENT +ERENTTYPE 3JR2 MERR1 LDX 6 XERENT(1) 3K=L COMERRX 6 3KQ= NAMEFORM 3L9W ENDCOM 3LPG MBRK 3M96 COMBRKIN 3MNQ #PAGE 3N8B SF3 3NN2 [THIS SECTION IS ENTERED TO CHECK A FILE'S 3P7L [PASSWORD WITH EITHER THAT IN THE ADATA/JMCPASSB OR 3PM= [ADATA/JMCPASS BLOCK (IN THAT ORDER OF PREFERENCE. 3Q6W [THIS VERSION ASSUMES THE EXISTANCE OF A FILE/ENT BLOCK 3QLG HUNT 3,FILE,ENT 3R66 BNG 3 NOFILENT 3RKQ LDX 6 EU(3) [THE FILE'S PASSWORD. 3SK2 BZE 6 SF3FIN [NO PASSWORD TO CHECK. 3T4L SMO FX1 3TJ= ERX 6 XKEY 3W3W HUNTW 3,ADATA,JMCPASSB 3X36 BPZ 3 SF3GOT 3XGQ HUNTW 3,ADATA,JMCPASS 3YG2 BNG 3 NOPASS 3Y^L SF3GOT 3^F= LDX 1 ANUM(3) 3^YW BNG 1 NOPASS 42DG BZE 1 NOPASS 42Y6 LDX 4 ACES 43CQ STO 4 AWORK1(2) 43XB LDN 4 APARA(3) 44C2 LDN 5 AWORK1(2) 44WL MVCH 4 0(1) 45B= BXU 6 AWORK1(2),PASSFAIL 45TW SF3FIN 46*G UPPLUS 1 46T6 NOFILENT 47#Q GEOERR 1,FILE/ENT 47SB MJMPFAIL 48#2 +JMCPASSFAIL 48RL NOPASS 49?= PASSFAIL 49QW LDX 1 FX1 4==G LDX 6 MJMPFAIL(1) 4=Q6 ERRORX 6 4?9Q UP 4?PB #END ^^^^ ...676242310008