.PSECT NAMSTR .TITLE NAMSTR - PROCESS A STRING OF NAMES .IDENT /781125/ ; ; THIS CODE HAS BEEN DEVELOPED BY THE COMPUTING ; GROUP OF THE ATMOSPHERIC SCIENCES DIVISION, ; ALBERTA RESEARCH. THIS WORK FUNDED BY THE ; ALBERTA WEATHER MODIFICATION BOARD. ; ; THERE IS EXPLICITLY NO COPYRIGHT ON THIS SOFTWARE, ; AND ITS DISTRIBUTION IS ENCOURAGED. NO RESPONSIBILITY ; NOR GUARANTEE IS MADE OR ASSUMED BY THE AUTHOR, OR ; BY ALBERTA RESEARCH. ; ; SUGGESTIONS OR CHANGES ARE INVITED, AND WILL BE ; DISTRIBUTED TO OTHER USERS OF THIS SOFTWARE THROUGH ; THE DECUS IAS/RSX SPECIAL INTEREST GROUP. ; ; ; VERSION: 781020 ; WRITTEN BY: MARK JOHNSON ; DATE WRITTEN: 23-OCT-78 ; ; RELATED DOCUMENTATION: ; NONE ; ; ; ROUTINES USED: ; MAIL ; CSPARS ; $CVTUC ; ; ; MODIFICATIONS: ; ; CODE NAME DATE ; ;+ ; *** - NAMSTR - PROCESS A STRING OF NAMES OR NAMELIST FILES ; ; INPUTS: ; R1 - POINTS TO NAMESTRING (FIRST BYTE IS BYTECOUNT) ; ; OUTPUTS: ; NONE ; ; SIDE EFFECTS: ; USES "MAIL" TO SEND A COPY OF THE INPUT FILE TO ; EACH NAME IN THE NAMELIST, OR IN ANY NAMELIST FILES. ; ;- .MCALL ENTER,LEAVE .MCALL OPEN$R,GET$,CLOSE$,NMBLK$,FDOF$L,FCSBT$ FDOF$L FCSBT$ .MCALL MAIGBL MAIGBL .DSABL GBL .NLIST BEX ; ;SPECIAL CHARACTERS SWCH='/ ;USED TO INDICATE A SWITCH IS COMING INDCH='@ ;A MAILING LIST BL=40 ;A BLANK! CR=15 ;GOOD OL' CARRIAGE RETURN ESC=33 ;AND ESCAPE HT=11 ;HORIZONTAL TAB ; NAME: .BLKB MAXLIN+1 ;FIRST BYTE IS LENGTH LABEL: .ASCII /ARC MAIL/ NOTE: .ASCII />NOTICE NOTICE, MOV #LABEL,R2 ;1=> ORDINARY MAIL BR 2$ 1$: MOV #NOTE,R2 2$: CALL MAIL LEAVE RETURN ;+ ; *** - MOVNAM - MOVE A NAME (IGNORING LEADING DELIMITERS) ; (NAMSTR SERVICE ROUTINE) ; ; INPUTS: ; R3 - POINTER TO OUTPUT ; R4 - SET TO CURRENT LENGTH OF OUTPUT (USUALLY 0) ; ; OUTPUTS: ; R3 - POINTER TO OUTPUT ; R4 - LENGTH OF OUTPUT ; ; SIDE EFFECTS: ; STRLEN IS DECREMENTED APPROPRIATELY ; STRPTR IS ADVANCED ;- DELTAB: .ASCIZ / / ;LIST OF LEGIT DELIMS (0 TERMINATOR) .EVEN ; MOVNAM: ENTER R5 1$: DEC STRLEN ;ONE LESS CHARACTER IN INPUT BLT 2$ ;NONE LEFT, BRANCH MOV #DELTAB,R5 ;GET ADDRESS OF DELIMITER TABLE 3$: CMPB @STRPTR,(R5)+ ;CURRENT INPUT CHARACTER A DELIMITER? BEQ 4$ ;EQ =>YES TSTB @R5 ;ARE THERE MORE DELIMITERS? BNE 3$ ;YES, CHECK THEM TOO INC R4 ;COUNT THIS CHARACTER MOVB @STRPTR,(R3)+ ;MOVE THIS CHARACTER INC STRPTR ;PASS THIS CHARACTER BR 1$ ;AND CHECK THE NEXT ONE ; ; THE CURRENT INPUT CHARACTER IS A DELIMITER ; 4$: INC STRPTR ;MOVE PAST IT TST R4 ;STILL IN A STRING OF DELIMITERS? BEQ 1$ ;YES, KEEP IGNORING THEM 2$: MOVB #CR,@R3 ;BE SURE THERE'S AN OUTPUT LEAVE RETURN .END