{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: USEREXCP860)}}
====== USEREXCP860 ======
(George Source)
**Macros used:** [[george:macro:ADDMODE|ADDMODE]], [[george:macro:ANSOK2|ANSOK2]], [[george:macro:BRUSEN|BRUSEN]], [[george:macro:CHEKPRIV|CHEKPRIV]], [[george:macro:FJOCA|FJOCA]], [[george:macro:HUNT|HUNT]], [[george:macro:JBC|JBC]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETREP2|SETREP2]], [[george:macro:SPRIVJUMP|SPRIVJUMP]], [[george:macro:TESTMODE|TESTMODE]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TESTUSER|TESTUSER]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]]
22FL ... SEG USEREXCP,860,FILESTORE
22^= #
23DW # THIS SEGMENT HOLDS EXCEPTION PATHS FROM USEROPEN AND OTHER
23YG # SEGMENTS.
24D6 #
24XQ SEGENTRY K1USEREXCP,X1
257J ... SEGENTRY K2USEREXCP,X2
25?F ... SEGENTRY K3USEREXCP,X3
25CB #
25X2 # THE X1 ENTRY CHECKS TO SEE IF THE CURRENT JOB MAY ACCESS A
26BL # USER-FROZEN FILE OR DIRECTORY. IT SETS A SUITABLE REPLY(OK,FROZEN,
26W= # OR NOFPRIV) AND EXITS UP+1 IF ACCESS ALLOWED, UP IF NOT ALLOWED.
27*W #
27TG PRIVFR 8HFREEZE [FOR CHEKPRIV MACROS
28*6 X1
28G# ... LDN 7 0 [SHOW X1 ENTRY
28MG ...X1X2COMMON
28SQ BRUSEN NOJOB [J IF NOT IN USER CONTEXT.
29#B FJOCA 3,2 [X3->JOB BLOCK
29S2 SPRIVJUMP JSSTART,3,UPPLUS1OK[ SYS STARTED JOB ALLOWED THRU
2=3S ... SPRIVJUMP JSISSUE,3,UPPLUS1OK [ LIKE WISE SYS ISSUED JOBS
2=?L NOJOB
2=HD ... BNZ 7 X2B [RETURN TO X2 COE IF X2 ENTRY
2=R= HUNT 3,FILE,ADJUNCTS [TEST IF USER HAS GIVEN 'FROZEN'
2?=W [QUALIFIER AND HAS FREEZE PRIV.
2?QG ... BNG 3 NOTOK1 [J IF NO QUALIFIERS
2#=6 JBC NOTOK1,3,BAFROZEN [J IF NOT FROZEN QUALIFIER
2#PQ CHEKPRIV 0,PRIVFR,NOTOK2 [J IF DOES NOT HAVE PRIV.
2*9B UPPLUS1OK
2*P2 ANSOK2
2B8L UPPLUS 1
2BN= NOTOK1
2C7W SETREP2 FROZEN [FILE FROZEN
2CMG UP UP
2D76 NOTOK2
2DLQ SETREP2 NOFPRIV [UNPRIVILEGED USE OF FROZEN QUAL
2F6B BRN UP
2FL2 #
2G5L #
2G6X ...# THE X2 ENTRY DOES THE SAME AS THE X1 ENTRY EXCEPT THAT A FILE ADJUNCT
2G88 ...# BLOCK IS NOT REQUIRED BEFORE WE CHECK FOR THE FREEZE PRIVILEGE
2G9F ...#
2G=Q ...X2
2G#3 ... LDN 7 1 [SHOW X2 ENTRY
2G*# ... BRN X1X2COMMON [OBEY X1 + X2 COMMON CODE
2GBK ...X2B [X2 ONLY CODE
2GCW ... CHEKPRIV 0,PRIVFR,NOTOK1 [J IF DOES NOT HAVE PRIV
2GF7 ... BRN UPPLUS1OK [OTHERWISE OK
2GGD ...#
2GHP ...#
2GH^ ...# THE X3 ENTRY IS CALLED BY USEROPEN WHEN A USER ATTEMPTS TO ACCESS A
2GJ9 ...# DIRECTORY (OTHER THAN FOR ERASING). IT CHECKS WHETHER THE USER IS
2GJF ...# ONE OF THOSE NOMINATED BY THE RESTORE TIME MACRO 'READIR' TO HAVE
2GJP ...# UNTRAPPED ACCESS TO ALL DIRECTORIES, AND ADDS IN THE 'UNTRAP'SUBMODE
2GJ^ ...# IF HE IS.
2GK9 ...# IT ALSO CHECKS THAT EITHER
2GKF ...# 1) THE OPERATION IS ALLOWED ON DIRECTORIES (SUBMODE 'DIRONLY' OR
2GKP ...# 'TERMDIR' SET).
2GK^ ...# OR 2) THE USER POSSESSES 'ASSIDIR' PRIVILEGE.
2GL9 ...#
2GLF ...PRIV 8HASSIDIR [USED BY CHEKPRIV
2GLP ...USERTABLE [TABLE OF 'READIR' TYPE USERS
2GL^ ... SEGENTRY K55USEREXCP
2GM9 ... 12HMANAGER
2GMF ... SEGENTRY K53USEREXCP
2GMP ...#GAP 45
2GM^ ...#
2GN9 ...X3
2GNF ... TESTMODE 5,XDIR,,FREEZE [CAN'T FREEZE DIRS
2GNP ... TESTMODE AWORK1(2),XDIR,,SAVEFREEZE
2GN^ ... TESTMAIN 5,XDIR,,EXECUTE [DIRS CANNOT BE LOADED OR EXECUTED
2GP9 ...#
2GPF ...# WE GET A POINTER TO THE USERNAME AND CHECK TO SEE IF HE IS IN
2GPP ...# THE READIR LIST.
2GP^ ...#
2GQ9 ... BRUSEN NOJOB2 [J IF NO JOB BLOCK
2GQF ... FJOCA 2,FX2 [X2->JOB BLOCK
2GQP ... BRN TUSER
2GQ^ ...NOJOB2 [IF THERE IS NO JOB BLOCK WE GET A
2GR9 ... [POINTER SUCH THAT JUSER(2) IS THE
2GRF ... [SAME AS CPREFIX(FX2).
2GRP ... ADN 2 CPREFIX-JUSER
2GR^ ...#
2GS9 ...TUSER
2GSF ... SEGENTRY K54USEREXCP
2GSP ... LDN 4 K53USEREXCP-K55USEREXCP/3 [NO OF ENTRIES IN THE TABLE
2GS^ ...TESTUSER
2GT9 ... TESTNAMX 3,USERTABLE(1),JUSER(2),NOTHIM [J IF NOT USER
2GTF ... ADDMODE 5,UNTRAP [ADD IN MODE
2GTP ... BRN USEROK [AND JUMP OUT OF LOOP
2GT^ ...NOTHIM
2GW9 ... ADN 1 3 [UPDATE POINTER TABLE
2GWF ... BCT 4 TESTUSER [LOOP IF MORE ENTRIES IN TABLE
2GWP ...USEROK
2GW^ ... LDX 1 FX1 [RESTORE OVERWRITTEN X1+2
2GX9 ... LDX 2 FX2
2GXF ...#
2GXP ...# NEXT WE CHECK THAT EITHER A DIRECTORY SUBMODE WAS GIVEN OR THE
2GX^ ...# USER HAS THE PRIVILEGE.
2GY9 ... TESTMODE 5,YDIROK,,DIRONLY,TERMDIR[J IF DIR SUBMODE
2GYF ... CHEKPRIV 0,PRIV,XDIR [OTHERWISE MUST HAVE PRIVILEGE
2GYP ...#
2GY^ ...# IF ALL IS WELL WE PUT THE (POSSIBLE AUGMENTED) MODE WORD INTO
2G^9 ...# ACOMMUNE1 FOR THE CALLING CODE AND EXIT UPPLUS 1
2G^F ...#
2G^P ...YDIROK
2G^^ ... STO 5 ACOMMUNE1(2)
2H29 ... UPPLUS 1
2H2F ...#
2H2P ...# THE ERROR EXIT GOES UP.
2H2^ ...#
2H39 ...XDIR UP
2H3F ...#
2H3P ... MENDAREA 20,K99USEREXCP
2H4W #
2HJG #END
^^^^ ...172244150001