Skip to content
Snippets Groups Projects
Select Git revision
  • 4c18bf803900d6073355ce26943fe9f61b7b2758
  • release default protected
  • more-testing
  • attempt-vax90b1
  • attempt-1
  • conversion protected
  • linux
  • v0.9.1 protected
  • v0.9.0 protected
9 results

board_special.com

Blame
  • user avatar
    Kevin Lyda authored
    1a9e6c25
    History
    board_special.com 3.91 KiB
    $!
    $! BOARD_SPECIAL.COM
    $!
    $! Command file invoked by folder associated with a BBOARD which is
    $! is specified with /SPECIAL.  This can be used to convert data to
    $! a message via a different means than the VMS mail.  This is done by
    $! converting the data to look like output created by the MAIL utility,
    $! which appears as follows:
    $!
    $!	First line is 0 length line.
    $!	Second line is "From:" followed by TAB followed by incoming username
    $!	Third line is "To:" followed by TAB followed by BBOARD username
    $!	Fourth line is "Subj:" followed by TAB followed by subject
    $!	The message text then follows.
    $!	Message is ended by a line containing a FORM FEED.
    $!
    $! This command file should be put in the BBOARD_DIRECTORY as specified
    $! in BULLFILES.INC.  You can also have several different types of special
    $! procedures.  To accomplish this, rename the file to the BBOARD username.
    $! i.e. if you specify SET BBOARD FOO/SPECIAL, you could name the file
    $! FOO.COM and it will execute that rather than BOARD_SPECIAL.COM.
    $!
    $! The following routine is the one we use to convert mail from a non-DEC
    $! mail network.  The output from this mail is written into a file which
    $! is slightly different from the type outputted by MAIL.
    $!
    $! (NOTE: A username in the SET BBOARD command need only be specified if
    $! the process which reads the mail requires that the process be owned by
    $! a specific user, which is the case for this sample, and for that matter
    $! when reading VMS MAIL.  If this is not required, you do not have to
    $! specify a username.)
    $!
    $ USERNAME := 'F$GETJPI("","USERNAME")'		! This trims trailing spaces
    $ IF F$SEARCH("MFE_TELL_FILES:"+USERNAME+".MAI") .EQS. "" THEN EXIT
    $ SET DEFAULT BULL_DIR:	! BULLETIN looks for text in BBOARD directory
    $ SET PROTECT=(W:RWED)/DEFAULT
    $ IF F$SEARCH("MFEMSG.MAI") .NES. "" THEN -
      DELETE MFEMSG.MAI;*		! Delete any leftover output files.
    $ MSG := $MFE_TELL: MESSAGE
    $ DEFINE/USER SYS$COMMAND SYS$INPUT
    $ MSG				! Read MFENET mail
    copy * MFEMSG
    delete *
    exit
    $ FF[0,8] = 12			! Define a form feed character
    $ OPEN/READ/ERROR=EXIT INPUT MFEMSG.MAI
    $ OUTNAME = USERNAME+".TXT"	! Output file will be 'USERNAME'.TXT
    $ OPEN/WRITE OUTPUT 'OUTNAME'
    $ READ/END=END INPUT DATA		! Skip first line in MSG output
    $HEADER:
    $ FROM = ""
    $ SUBJ = ""
    $ MFEMAIL = "T"
    $NEXTHEADER:
    $ IF (FROM.NES."") .AND. (SUBJ.NES."") THEN GOTO SKIPHEADER
    $ READ/END=END INPUT DATA		! Read header line in MSG output
    $ IF DATA .EQS. "" THEN GOTO SKIPHEADER	! Missing From or Subj ??
    $ IF FROM .NES. "" THEN GOTO SKIPFROM
    $ IF F$LOCATE("From: ",DATA) .NES. 0 THEN GOTO 10$
    $ MFEMAIL = "F"
    $ FROM= F$EXTRACT(6,F$LENGTH(DATA),DATA)
    $ GOTO NEXTHEADER
    $10$:
    $ IF F$LOCATE("Reply-to: ",DATA) .NES. 0 THEN GOTO 20$
    $ MFEMAIL = "F"
    $ FROM= F$EXTRACT(10,F$LENGTH(DATA),DATA)
    $ GOTO NEXTHEADER
    $20$:
    $ IF F$LOCATE("From ",DATA) .NES. 0 THEN GOTO SKIPFROM
    $ FROM= F$EXTRACT(5,F$LENGTH(DATA),DATA)
    $ GOTO NEXTHEADER
    $SKIPFROM:
    $ IF SUBJ .NES. "" THEN GOTO SKIPSUBJ
    $ IF F$LOCATE("Subject",DATA) .NES. 0 THEN GOTO SKIPSUBJ
    $ SUBJ= F$EXTRACT(F$LOCATE(": ",DATA)+2,F$LENGTH(DATA),DATA)
    $ GOTO NEXTHEADER
    $SKIPSUBJ:
    $ GOTO NEXTHEADER
    $SKIPHEADER:
    $ WRITE OUTPUT "From:	" + FROM
    				! Write From: + TAB + USERNAME
    $ WRITE OUTPUT "To:	" + USERNAME
    				! Write To: + TAB + BBOARDUSERNAME
    $ WRITE OUTPUT "Subj:	" + SUBJ
    				! Write Subject: + TAB + mail subject
    $ WRITE OUTPUT ""		! Write one blank line
    $ IF (DATA.EQS."") .OR. MFEMAIL THEN GOTO SKIPBLANKS
    $50$:
    $ READ/END=END INPUT DATA		! Skip rest of main header
    $ IF DATA .NES. "" THEN GOTO 50$
    $60$:
    $ READ/END=END INPUT DATA		! Skip all of secondary header
    $ IF DATA .NES. "" THEN GOTO 60$
    $SKIPBLANKS:
    $ READ/END=END INPUT DATA		! Skip all blanks
    $ IF DATA .EQS. "" THEN GOTO SKIPBLANKS
    $NEXT:				! Read and write message text
    $ WRITE OUTPUT DATA
    $ IF DATA .EQS. FF THEN GOTO HEADER
    			! Multiple messages are seperated by form feeds
    $ READ/END=END INPUT DATA
    $ GOTO NEXT
    $END:
    $ CLOSE INPUT
    $ CLOSE OUTPUT
    $ DELETE MFEMSG.MAI;
    $EXIT:
    $ EXIT