+-+-+-+ Beginning of part 25 +-+-+-+ X$ Inquire Ans "Do you wish to compile the other fortran routines? (YES) " X$ C_4 = 0 X$ If Ans .eqs. "" then C_4 = 1 X$ If Ans then C_4 = 1 X$ If .not. C_4 then Goto B_4_4 X$ B_4: X$ Write`009`009Sys$Output`009" "`009! 'F$Verify(0) X$ Set Verify X$ Fortran/NoCheck/NoDebug`009DUMJ.FOR X$ ! UCX X$ Fortran/NoCheck/NoDebug`009UCXFINGER.FOR X$ Fortran/NoCheck/NoDebug`009FINGERDAE.FOR X$ Fortran/NoCheck/NoDebug`009GETQUEUE.FOR X$ Fortran/NoCheck/NoDebug`009FINGERTER.FOR X$ Fortran/NoCheck/NoDebug`009FINGERLAT.FOR X$ B_4_4:`009!'F$Verify(0) X$ If All then goto B_5 X$ Write`009`009Sys$Output`009" "`009! 'F$Verify(0) X$ Inquire Ans "Do you wish to assemble the MACRO routines? (YES) " X$ C_5 = 0 X$ If Ans .eqs. "" then C_5 = 1 X$ If Ans then C_5 = 1 X$ If .not. C_5 then Goto B_5_5 X$ B_5: X$ Write`009`009Sys$Output`009" "`009! 'F$Verify(0) X$ Set Verify X$ Macro`009`009TERMINAL.MAR X$ Macro`009`009IDLE-MON.MAR X$ Macro`009`009WILD.MAR X$ Macro`009`009KLUDGE.MAR X$ Macro`009`009GETJIB.MAR X$ ! UCX X$ Macro`009`009UCXSUBS.MAR X$ B_5_5:`009!'F$Verify(0) X$ If All then goto B_6 X$ Write`009`009Sys$Output`009" "`009! 'F$Verify(0) X$ Inquire Ans "Do you wish to compile the .CLD and .MSG files? (YES) " X$ C_6 = 0 X$ If Ans .eqs. "" then C_6 = 1 X$ If Ans then C_6 = 1 X$ If .not. C_6 then Goto B_6_6 X$ B_6: X$ Write`009`009Sys$Output`009" "`009! 'F$Verify(0) X$ Set Verify X$ Set Command/Object`009FINGERCLD.CLD X$ Set Command/Object`009MAINTCLD.CLD X$ Message`009FINGERMSG X$ B_6_6:`009!'F$Verify(0) X$ If All then goto B_7 X$ Write`009`009Sys$Output`009" "`009! 'F$Verify(0) X$ Inquire Ans "Do you wish to create new libraries? (YES) " X$ C_7 = 0 X$ If Ans .eqs. "" then C_7 = 1 X$ If Ans then C_7 = 1 X$ If .not. C_7 then Goto B_7_7 X$ B_7: X$ Write`009`009Sys$Output`009" "`009! 'F$Verify(0) X$ Set Verify X$ Library`009JLIB/Object/Create`009DUMJ X$ Rename`009DUMJ.OBJ;*`009DUMJ.NOBJ;*`009!'F$Verify(0) X$ Set Verify X$ Library`009FINGERLIB/Object/Create`009*.OBJ X$! Delete`009*.OBJ;*`009`009!'F$Verify(0) X$ Set Verify X$ Library`009FINGMAINT/Help/Create=(Blocks:12) FINGMAINT X$ Rename`009DUMJ.NOBJ;*`009DUMJ.OBJ;* X$ Goto`009`009B_8`009!'F$Verify(0) X$ B_7_7:`009!'F$Verify(0) X$ Write`009`009Sys$Output`009" "`009! 'F$Verify(0) X$ If .not. C_4 then goto B_7_2 X$ Set Verify X$ Library`009JLIB/Object`009DUMJ X$ Delete`009DUMJ.OBJ;*`009!'F$Verify(0) X$ B_7_2:`009!'F$Verify(0) X$ Set Verify X$ Library`009FINGERLIB/Object`009*.OBJ X$ Delete`009*.OBJ;*`009`009!'F$Verify(0) X$ Set Verify X$ Library`009FINGMAINT/Help`009FINGMAINT X$ B_8:`009!'F$Verify(0) X$ Type`009`009Sys$Input X X`009Time to clean up ... X X$ Inquire Ans "Do you wish to PURGE everything? (YES) " X$ C_8 = 0 X$ If Ans .eqs. "" then C_8 = 1 X$ If Ans then C_8 = 1 X$ If .not. C_8 then Goto B_9 X$ Set Verify X$ Purge/Log X$ B_9:`009!'F$Verify(0) X$ Type`009`009Sys$Input X X`009Libraries sucessfully built. X$ Exit $ GOSUB UNPACK_FILE $ FILE_IS = "VMSMAIL_PROFILE.DATA_FORMAT" $ CHECKSUM_IS = 1092766578 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY VFrom:`009IN%"'Michael Dorl, MACC' " 25-JUL-198 X8 11:10 XTo:`009_RAND ! sent to info-vax@KL.SRI.COM XSubj:`009VMS 3.0 VMSMail_Profile.Data Format X X XI've decoded the format of the VMS 5.0 VMSMail_Profile.Data file. XThe format is described below. `032 X XThere are two or three holes in my knowledge. I have no idea Xwhat type 0, 6, or A fields are nor what any field types above XB might be. Has anyone found out what these are? The type 7 Xfiled, transport, was described in other message to this group. X XFormat of Sys$System:VMSMail_Profile.Data X X User_Id`009`009`00931 characters blank filled X X Type`009`009`009`0092 bytes X X Length`009`009`0092 bytes X X Data`009`009`009`009Length and format varies X X The record consists of the 31 character User_Id blank filled X followed by a repeated series of Type, Length, Data fields. X X Type`009Length`009Description X X 00`009?`009? X X 01 `00902`009New mail count - binary X X 02`00902`009Flags - bit coded options X X`009`009 01 - Set Copy Send X`009`009 02 - Set Copy Reply X`009`009 04 - Set NoAuto_Purge X`009`009 08 - Set Copy Forward X`009`009 10x - Set CC_Prompt X X 03`009varies`009Directory X X 04`009varies`009Forward address X X 05`009varies`009Personal name X X 06`009?`009? X X 07`009varies`009Transport X X 08`009varies`009Editor X X 09`009varies`009Queue X X 0A`009?`009? X X 0B`009varies`009Form X X 0C`009?`009? X X 0D `009?`009? X X 0E`009?`009? X X 0F`009?`009? X XMichael Dorl (608) 262-0466 Xdorl@vms.macc.wisc.edu Xdorl@wiscmacc.bitnet $ GOSUB UNPACK_FILE $ FILE_IS = "WILD.MAR" $ CHECKSUM_IS = 307133640 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X`009.TITLE`009Wild_Match`009Match wildcard pattern X`009.IDENT`009/VER 1.0.0/ X X .LIBRARY`009/SYS$LIBRARY:LIB/ X X`009$SSDEF X;++ X; This routine was copied from the F11B module MATCHNAME of the VMS V3.0 X; microfiche. Thank you, DEC! X; X;`009Wild_Match (pattern.rd, candidate.rd) X; X;`009R0 LBS if candidate matches pattern X; X;-- X X .ENTRY`009Wild_Match, `094M X`009MOVAB`009G`094LIB$SIG_TO_RET, (FP) X`009CMPB`009(AP), S`094#2 X`009BGEQ`00910$ X X`009MOVZWL`009#SS$_INSFARG, R0 X`009RET X X10$:`009MOVQ`009@4(AP), R4 X`009MOVQ`009@8(AP), R2 X`009MOVZWL`009R2, R2 X`009MOVZWL`009R4, R4 X`009MOVZWL`009#SS$_NOLOGNAM, R0 X`009CLRL`009R6 X; X; Main scanning loop. X; X20$:`009DECL`009R4`009`009`009 ; Pattern exhausted? X`009BLSS`00940$`009`009`009 ; Branch if yes. X`009MOVZBL`009(R5)+, R1`009`009 ; Get next character in pattern X`009CMPB`009R1, #`094A/*/`009`009 ; Wild string? X`009BEQL`00970$`009`009`009 ; Branch if yes X`009DECL`009R2`009`009`009 ; Candidate exhausted? X`009BLSS`00960$`009`009`009 ; Branch if yes X`009CMPB`009R1, (R3)+`009`009 ; Compare pattern with candidate X`009BEQL`00920$`009`009`009 ; Loop if match X`009CMPB`009R1, #`094A/%/`009`009 ; Wild (joker) character? X`009BEQL`00920$`009`009`009 ; Branch if yes. X; X; We have detected a mismatch, or we are out of pattern while there is X; candidate left. Back up to the last '*', advance a candidate character, X; and try again. X; X30$:`009DECL`009R6`009`009`009 ; Count a saved candidate char X`009BLSS`00960$`009`009`009 ; Branch if none saved X`009INCL`009R7`009`009`009 ; Set to try next character X`009MOVQ`009R6, R2`009`009`009 ; Restore descriptors to backup X`009MOVQ`009R8, R4 X`009BRB`00920$`009`009`009 ; Continue testing. X; X; Here when pattern is exhausted. X; X40$:`009TSTL`009R2`009`009`009 ; Candidate exhausted? X`009BNEQ`00930$`009`009`009 ; Branch if no X; X; Here to return. X; X50$:`009MOVL`009S`094#1, R0 X60$:`009RET X; X; We have detected a '*' in the pattern. Save the descriptors for later X; backtracking. X; X70$:`009TSTL`009R4`009`009`009 ; Pattern null after '*'? X`009BEQL`00950$`009`009`009 ; Branch if yes X`009MOVQ`009R2, R6`009`009`009 ; Save both descriptors X`009MOVQ`009R4, R8 X`009BRB`00920$`009`009`009 ; Continue testing. X X .END X $ GOSUB UNPACK_FILE $ FILE_IS = "XABPRODEF.INC" $ CHECKSUM_IS = 795027156 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X!*** MODULE $XABPRODEF *** X! -- X! ++ X!`032 X! protection xab field definitions X! $xabprodef X!`032 X!`032 X`009PARAMETER XAB$C_PRO = '00000013'X`009! xabpro id code`032 X`009PARAMETER XAB$M_NOREAD = '00000001'X X`009PARAMETER XAB$M_NOWRITE = '00000002'X X`009PARAMETER XAB$M_NOEXE = '00000004'X X`009PARAMETER XAB$M_NODEL = '00000008'X X`009STRUCTURE /XABPRODEF/ X`009UNION X`009 MAP X`009 PARAMETER XAB$S_NOREAD = 1 X`009 PARAMETER XAB$V_NOREAD = 0`009`009! deny read access`032 X`009 PARAMETER XAB$S_NOWRITE = 1 X`009 PARAMETER XAB$V_NOWRITE = 1`009`009! deny write access`032 X`009 PARAMETER XAB$S_NOEXE = 1 X`009 PARAMETER XAB$V_NOEXE = 2`009`009! deny execution access`032 X`009 PARAMETER XAB$S_NODEL = 1 X`009 PARAMETER XAB$V_NODEL = 3`009`009! deny delete access`032 X`009 BYTE %FILL (1) X`009 END MAP X`009END UNION X`009END STRUCTURE`009! XABPRODEF X`009PARAMETER XAB$M_PROPAGATE = '00000001'X X`009PARAMETER XAB$K_PROLEN_V3 = '00000010'X`009! V3a xabpro length`032 X`009PARAMETER XAB$C_PROLEN_V3 = '00000010'X`009! V3a xabpro length`032 X`009PARAMETER XAB$K_PROLEN = '00000058'X`009! xabpro length`032 X`009PARAMETER XAB$C_PROLEN = '00000058'X`009! xabpro length`032 X`009STRUCTURE /XABPRODEF1/ X`009 BYTE XABPRODEF$$_FILL_1 X`009 BYTE XABPRODEF$$_FILL_2 X`009 INTEGER*2 XABPRODEF$$_FILL_3 V`009 INTEGER*4 XABPRODEF$$_FILL_4`009`009! HAS SAME COD, BLN, SPARE AND NX XT FIELD`032 X! THESE 4 FIELDS ARE COMMON TO ALL XABS AND X! HAVE BEEN DEFINED BY $XABDEF X`009 UNION X`009 MAP X`009 INTEGER*2 XAB$W_PRO`009`009`009! protection mask`032 X`009 END MAP X`009 MAP X`009 PARAMETER XAB$S_SYS = 4 X`009 PARAMETER XAB$V_SYS = 0`009`009`009! system`032 X`009 PARAMETER XAB$S_OWN = 4 X`009 PARAMETER XAB$V_OWN = 4`009`009`009! owner`032 X`009 PARAMETER XAB$S_GRP = 4 X`009 PARAMETER XAB$V_GRP = 8`009`009`009! group`032 X`009 PARAMETER XAB$S_WLD = 4 X`009 PARAMETER XAB$V_WLD = 12 X`009 BYTE %FILL (2)`009`009`009`009! world`032 X`009 END MAP X`009 END UNION X`009 BYTE XAB$B_MTACC`009`009`009! Magtape access control char.`032 X`009 UNION X`009 MAP X`009 BYTE XAB$B_PROT_OPT`009`009! XABPRO options field X`009 END MAP X`009 MAP X`009 PARAMETER XAB$S_PROPAGATE = 1 V`009 PARAMETER XAB$V_PROPAGATE = 0`009`009! Propagate security at Xtributes on $ENTER and $RENAME X`009 BYTE %FILL (1) X`009 END MAP X`009 END UNION X`009 UNION X`009 MAP X`009 INTEGER*4 XAB$L_UIC`009`009`009! uic code`032 X`009 END MAP X`009 MAP X`009 INTEGER*2 XAB$W_MBM`009`009`009! member code`032 X`009 INTEGER*2 XAB$W_GRP`009`009`009! group code`032 X`009 END MAP X`009 END UNION X`009 UNION X`009 MAP V`009 INTEGER*4 XAB$Q_PROT_MODE(2)`009`009! eventually may be a quadwo Xrd X`009 END MAP X`009 MAP X`009 BYTE XAB$B_PROT_MODE`009`009! but currently only a byte X`009 END MAP X`009 END UNION X`009 INTEGER*4 XAB$L_ACLBUF`009`009`009! address of user's ACL buffer X`009 INTEGER*2 XAB$W_ACLSIZ`009`009`009! size of user's ACL buffer X`009 INTEGER*2 XAB$W_ACLLEN`009`009`009! return length of entire ACL X`009 INTEGER*4 XAB$L_ACLCTX`009`009`009! ACL context field X`009 INTEGER*4 XAB$L_ACLSTS`009`009`009! ACL return err status X`009 INTEGER*4 XABPRODEF$$_FILL_10`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_11`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_12`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_13`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_14`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_15`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_16`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_17`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_18`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_19`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_20`009`009! spare X`009 INTEGER*4 XABPRODEF$$_FILL_21`009`009! spare X`009END STRUCTURE`009! XABPRODEF1 X`032 $ GOSUB UNPACK_FILE $ EXIT -+-+-+-+-+ End of part 25 +-+-+-+-+-