home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_BAS / PRO98SRC.ZIP / CONF.BAS < prev    next >
BASIC Source File  |  1993-12-18  |  7KB  |  192 lines

  1. SUB CONF (ConfFile$, Last$)
  2. $IF NOT %NOCONFERENCE
  3. LET ConfBuffer = FREEFILE
  4. IF VAL(Last$) = 0 THEN LET Last$ = "1"
  5. DIM ConfLine AS STRING * 80
  6. OPEN ConfFile$ FOR RANDOM AS #ConfBuffer LEN = 80
  7. CALL EXIST(ConfFile$, Ecode%)
  8. IF Ecode% = 0 THEN PROZOPRINT "Conference file not found." + CrLf$: GOTO ConfEnter
  9. LET CNFBuffer = FREEFILE
  10. ConfMain:
  11. LET ConfRec = 1
  12. Current = 1
  13. Previous = 1
  14. continuous = 0
  15. IF LOF(ConfBuffer) > 80 THEN GET #ConfBuffer, ConfRec, ConfLine ELSE PROZOPRINT CrLf$ + "** new conference **" + CrLf$
  16. PROZOPRINT "^0^B^y(^gR^y)ead Conference, (^gE^y)nter message, or (^rENTER^y) to Quit^w"
  17. PROZOPRINT "--> "
  18. VALUE$=PROZOINPUT$
  19. IF LEN(value$) = 0 THEN GOTO EndConfSub ELSE IF LEN(value$) > 1 THEN LET value$ = LEFT$(value$, 2)
  20. value$ = UCASE$(value$)
  21. IF value$ = "E" THEN GOTO ConfEnter
  22. IF value$ = "R" THEN
  23.         Reader$ = GLOBAL$(1)
  24.                IF Reader$ = "" THEN Reader$ = "LOCAL"
  25.         CALL EXIST(CONFDIR$ + Reader$ + "." + RIGHT$(ConfFile$, 3) + CHR$(0), e%)
  26.         IF e% THEN
  27.                 OPEN "i", #CNFBuffer, CONFDIR$ + Reader$ + "." + RIGHT$(ConfFile$, 3)
  28.                 INPUT #CNFBuffer, Llast$
  29.                 CLOSE #CNFBuffer
  30.         ELSE
  31.                 LET Llast$ = "1"
  32.                 OPEN "o", #CNFBuffer, CONFDIR$ + Reader$ + "." + RIGHT$(ConfFile$, 3)
  33.                 PRINT #CNFBuffer, "1"
  34.                 CLOSE #CNFBuffer
  35.         END IF
  36.    GOTO ConfRead
  37.    END IF
  38.    GOTO ConfMain
  39.  
  40. ConfRead:
  41. IF EOF(ConfBuffer) THEN PROZOPRINT CrLf$ + "** End of Conference **" + CrLf$: GOTO ConfMain
  42. GET #ConfBuffer, ConfRec, ConfLine
  43. IF LEFT$(ConfLine, 1) <> CHR$(1) THEN ConfRec = ConfRec + 1: GOTO ConfRead
  44. Last$ = MID$(STR$(ConfRec), 2)
  45. PROZOPRINT CrLf$ + "#" + MID$(ConfLine, 2, 4) + " From " + MID$(ConfLine, 24, 35) + " Time: " + MID$(ConfLine, 6, 8) + " Date: " + MID$(ConfLine, 14, 10) + CrLf$
  46. PROZOPRINT STRING$(79, "=") + CrLf$
  47. Previous = Current: Current = ConfRec: L = 0: StartRec = ConfRec
  48. Frm$ = RTRIM$(MID$(ConfLine, 58, 8))
  49. IF MID$(ConfLine, 77, 1) = "*" THEN PROZOPRINT CrLf$ + "*** This message has been deleted ***" + CrLf$: df = 1
  50.  
  51. DO WHILE NOT EOF(ConfBuffer)
  52.      ConfRec = ConfRec + 1
  53.        GET #ConfBuffer, ConfRec, ConfLine
  54.        IF LEFT$(ConfLine, 1) = CHR$(1) THEN EXIT DO
  55.        IF df = 0 THEN PROZOPRINT "^0" + RTRIM$(ConfLine): L = L + 1
  56.  
  57.         IF L > 18 AND continuous = 0 THEN
  58.                 L = 0
  59.                 PROZOPRINT "-more-"
  60.                 CWAIT
  61.                 FOR y = 1 TO 6: PROZOPRINT CHR$(8) + " " + CHR$(8): NEXT y
  62.                 END IF
  63.         LOOP
  64. df = 0
  65. IF EOF(ConfBuffer) THEN PROZOPRINT "** Last message **" + CrLf$
  66. IF continuous THEN
  67.         VALUE$=PROZOINKEY$
  68.         IF LEN(value$) THEN continuous = 0
  69.         END IF
  70.  
  71.  
  72. value$ = ""
  73. IF continuous = 0 THEN
  74.         PROZOPRINT "^0^w^B(^r^FN^0^w^B)ext (^cP^w)rev (^cS^w)ince (^cR^w)eply private (^cC^w)ont (^cF^w)irst (^cL^w)ast (^cQ^w)uit (^gG^w)bye"
  75.         PROZOPRINT "--> "
  76.         VALUE$=PROZOINPUT$
  77. END IF
  78. IF LEN(value$) > 1 THEN value$ = LEFT$(Value$, 1) ELSE IF Value$ = "" THEN Value$ = "N"
  79. Value$ = UCASE$(Value$)
  80. SELECT CASE Value$
  81.         CASE "R"
  82.                 ConfRec = StartRec
  83.                 PROZOPRINT CrLf$ + "Reply to Originator.  This is private mail, not included in conference." + CrLf$
  84.                 PROZOPRINT CrLf$ + "Press a key for editor..." + CrLf$
  85.                 CWAIT
  86.                 EditComment Frm$
  87.         CASE "D"
  88.         LET ConfRec = StartRec
  89.         GET #ConfBuffer, ConfRec, ConfLine
  90.         MID$(ConfLine, 77, 1) = "*"
  91.         PUT #ConfBuffer, StartRec, ConfLine
  92.         CASE "U"
  93.         LET ConfRec = StartRec
  94.         GET #ConfBuffer, ConfRec, ConfLine
  95.         MID$(ConfLine, 77, 1) = " "
  96.         PUT #ConfBuffer, StartRec, ConfLine
  97.         CASE "N"
  98.  
  99.         CASE "P"
  100.  
  101.  
  102.                 IF StartRec > 1 THEN
  103.                 ConfRec = StartRec
  104.                 DO
  105.                 ConfRec = ConfRec - 1
  106.                 GET #ConfBuffer, ConfRec, ConfLine
  107.                 IF LEFT$(ConfLine, 1) = CHR$(1) THEN EXIT DO
  108.                 LOOP WHILE ConfRec > 1
  109.                 ELSE
  110.                 ConfRec = 1
  111.                 END IF
  112.  
  113.         CASE "S"
  114.         ConfRec = VAL(Llast$)
  115.         CASE "C"
  116.         continuous = 1
  117.         CASE "F"
  118.         ConfRec = 1
  119.         GET #ConfBuffer, ConfRec, ConfLine
  120.         CASE "L"
  121.         ConfRec = LOF(ConfBuffer) \ 80
  122.                 DO
  123.                 ConfRec = ConfRec - 1
  124.                 GET #ConfBuffer, ConfRec, ConfLine
  125.                 IF LEFT$(ConfLine, 1) = CHR$(1) THEN EXIT DO
  126.                 LOOP WHILE ConfRec > 1
  127.  
  128.         CASE "Q"
  129.  
  130.         GOTO ConfMain
  131.  
  132.         CASE "G"
  133.                 OPEN "o", #CNFBuffer, CONFDIR$ + Reader$ + "." + RIGHT$(ConfFile$, 3)
  134.                 PRINT #CNFBuffer, Last$
  135.                 CLOSE #CNFBuffer
  136.  
  137.         SYSRESET
  138.  
  139.         CASE ELSE
  140.         END SELECT
  141.      GOTO ConfRead
  142. ConfEnter:
  143.         IF LOF(ConfBuffer) > 80 THEN
  144.         ConfRec = LOF(ConfBuffer) \ 80
  145.  
  146.                 DO
  147.                 ConfRec = ConfRec - 1
  148.                 GET #ConfBuffer, ConfRec, ConfLine
  149.                 IF LEFT$(ConfLine, 1) = CHR$(1) THEN EXIT DO
  150.                 LOOP WHILE ConfRec > 1
  151.                 L$ = MID$(STR$(VAL(MID$(ConfLine, 2, 4)) + 1), 2)
  152.         ELSE
  153.         L$ = "1"
  154.         END IF
  155. a$ = GetVar$("<USERNAME>") + SPACE$(35 - LEN(GetVar$("<USERNAME>"))) + GLOBAL$(1)
  156. LET ConfLine = CHR$(1) + L$ + SPACE$(4 - LEN(L$)) + TIME$ + DATE$ + a$
  157. LET StartRec = (LOF(ConfBuffer) \ 80) + 1
  158. PUT #ConfBuffer, (LOF(ConfBuffer) \ 80) + 1, ConfLine
  159. PROZOPRINT CrLf$ + "Enter text.  Press (ENTER) on a blank line to finish." + CrLf$
  160. PROZOPRINT STRING$(79, "=") + CrLf$
  161. EnterText:
  162. DO
  163. PROZOPRINT ">"
  164. VALUE$=PROZOINPUT$
  165. LET ConfLine = Value$
  166. IF LEN(Value$) THEN PUT #ConfBuffer, (LOF(ConfBuffer) \ 80) + 1, ConfLine
  167. LOOP WHILE LEN(Value$)
  168. PROZOPRINT "(ENTER)=Save, (K)ill (C)ontinue --> "
  169. VALUE$=PROZOINPUT$
  170. IF UCASE$(Value$) = "C" THEN GOTO EnterText
  171. IF UCASE$(Value$) = "K" THEN
  172.         GET #ConfBuffer, StartRec, ConfLine
  173.         MID$(ConfLine, 77, 1) = "*"
  174.         PUT #ConfBuffer, StartRec, ConfLine
  175. END IF
  176. GOTO ConfMain
  177.  
  178.  
  179.  
  180.  
  181. EndConfSub:
  182. CLOSE #ConfBuffer
  183.                 LET Reader$ = GLOBAL$(1)
  184.                 IF Reader$ = "" THEN LET Reader$ = "LOCAL"
  185.                 OPEN "o", #CNFBuffer, CONFDIR$ + Reader$ + "." + RIGHT$(ConfFile$, 3)
  186.                 PRINT #CNFBuffer, Last$
  187.                 CLOSE #CNFBuffer
  188.  
  189. $ENDIF
  190. END SUB
  191.  
  192.