'=========================================================================== ' Subject: MESSAGE SPLITTER Date: 01-31-99 (18:34) ' Author: The ABC Programmer Code: QB, QBasic, PDS ' Origin: voxel@edmc.net Packet: TEXT.ABC '=========================================================================== ' Author: William Yu ' Date: 08-12-94 ' ' Wow, this is old, the date says 1994, the time when BBS' were popular ' and messages needed to be split up because .QWK readers won't handle 100 ' lines or something like that... I think BlueWave was a .QWK reader, but ' it's been such a long time... DEFINT A-Z CONST True = -1, False = 0 Tab$ = CHR$(9): TabSub$ = SPACE$(4) SCREEN 0, 0, 0, 0 WIDTH 80, 25 COLOR 15, 0 CLS COLOR 15: PRINT "Ú"; : COLOR 7: PRINT "ËÍ"; : COLOR 15: PRINT "ËÍË"; : COLOR 7: PRINT "¿" COLOR 15: PRINT "³"; : COLOR 7: PRINT "º "; : COLOR 15: PRINT "Ê º"; : COLOR 7: PRINT "³" COLOR 15: PRINT "À"; : COLOR 7: PRINT "Ê "; : COLOR 15: PRINT " Ê"; : COLOR 7: PRINT "Ù" COLOR 15: PRINT "ÚËÍÍÍË¿ ÚËÍÍÍË¿ ÚÉ ÚÍÑËÑÍ¿ ÚÍÑËÑÍ¿" COLOR 7: PRINT "ÀÊÍÍÍË¿ ³ÌÍÍÍÊÙ ³º ³º³ ³º³" COLOR 8: PRINT "ÀÊÍÍÍÊÙ ÀÊ ÀÊÍÍÍÊÙ ÀÍÏÊÏÍÙ ÏÊÏ" COLOR 15: PRINT "Ú"; : COLOR 7: PRINT "ËÍ"; : COLOR 15: PRINT "ÍÍË"; : COLOR 7: PRINT "¿" COLOR 15: PRINT "³"; : COLOR 7: PRINT "º "; : COLOR 15: PRINT " Í»"; : COLOR 7: PRINT "¿" COLOR 15: PRINT "À"; : COLOR 7: PRINT "ÊÍ"; : COLOR 15: PRINT "ÍÍÊ"; : COLOR 7: PRINT "Ù" LOCATE 2, 9: COLOR 15: PRINT "ES"; : COLOR 7: PRINT "SSA"; : COLOR 8: PRINT "GE" LOCATE 8, 9: COLOR 15: PRINT "AM"; : COLOR 7: PRINT "MA"; : COLOR 15: PRINT " VE"; : COLOR 7: PRINT "RSI"; : COLOR 8: PRINT "ON" PRINT COLOR 7, 0 LOCATE 11 SelectFile: PRINT "What is the filename to split ["; : COLOR 15: PRINT ".TXT"; : COLOR 7: PRINT "] "; : COLOR 15: LINE INPUT FileName$ IF INSTR(FileName$, ":\") THEN PRINT "Sorry"; : COLOR 7: PRINT ", but the file must be in the current directory.": GOTO SelectFile IF LEN(FileName$) = 0 THEN END IF INSTR(FileName$, ".") THEN ON ERROR GOTO ErrorHandle OPEN FileName$ FOR INPUT AS #1 ELSE File$ = FileName$ + ".TXT" ON ERROR GOTO ErrorHandle OPEN File$ FOR INPUT AS #1 FileName$ = File$ END IF CLOSE #1 COLOR 7, 0 PRINT "Name according to BlueWave conventions ["; : COLOR 15: PRINT "y"; : COLOR 7: PRINT "/"; : COLOR 15: PRINT "N"; : COLOR 7: PRINT "] "; : BW$ = INPUT$(1) BW = UCASE$(BW$) = "Y" IF BW THEN PRINT INPUT "What echo # to post in"; OutN OutN$ = LTRIM$(STR$(OutN)) INPUT "What message # to start posting in [1]"; FileOutNum IF FileOutNum <= 0 THEN FileOutNum = 1 ELSE FileOutNum = 1 END IF Chop = INSTR(FileName$, ".") IF Chop = 0 THEN IF NOT BW THEN OutN$ = FileName$ FileName$ = UCASE$(FileName$ + ".TXT") ELSE IF NOT BW THEN OutN$ = LEFT$(FileName$, Chop - 1) FileName$ = UCASE$(FileName$) END IF PRINT COLOR 7 PRINT "How many lines per message ["; : COLOR 15: PRINT "90"; : COLOR 7: PRINT "] "; : INPUT LPP IF LPP <= 10 THEN LPP = 90 COLOR 7 PRINT "Reserve how many lines for first message ["; : COLOR 15: PRINT "5"; : COLOR 7: PRINT "] "; : INPUT Reserve$ IF LEN(Reserve$) THEN Reserve = VAL(Reserve$) ELSE Reserve = 5 END IF PRINT OPEN FileName$ FOR INPUT AS #1 LinesOut = Reserve + 1 OnMsgNumber = 1 LPP = LPP - 4 ' lines per page DO Temp$ = LTRIM$(STR$(FileOutNum)) IF BW THEN Ext$ = "000": MID$(Ext$, 4 - LEN(Temp$)) = Temp$ ELSE Ext$ = Temp$ END IF OPEN OutN$ + "." + Ext$ FOR OUTPUT AS #2 IF OnMsgNumber > 1 THEN PRINT #2, "Part"; OnMsgNumber; "of "; FileName$; " - continued from previous message..." PRINT #2, ELSE PRINT #2, " Part one of "; FileName$; "..." PRINT #2, "ððððððððððððððððððððððððððððððð[ Copy This ]ðððððððððððððððððððððððððððððð" PRINT #2, END IF TooLong = False FOR Trans = LinesOut TO LPP IF NOT EOF(1) THEN IF Trans = LinesOut THEN DO: LINE INPUT #1, Buf$ LOOP WHILE LEN(Buf$) = 0 ELSE LINE INPUT #1, Buf$ Buf$ = RTRIM$(Buf$) END IF Tb = INSTR(Buf$, Tab$) 'remove those dang chr$(8)s (tabs) IF Tb THEN DO Buf$ = LEFT$(Buf$, Tb - 1) + TabSub$ + MID$(Buf$, Tb + 1) Tb = INSTR(Tb, Buf$, Tab$) LOOP WHILE Tb END IF Wrapping: IF LEN(Buf$) > 80 THEN FOR A = 75 TO 40 STEP -1 IF MID$(Buf$, A, 1) = " " THEN WrapPoint% = A: EXIT FOR END IF NEXT A QuotesOn% = 0: Quote$ = CHR$(34) FOR A = 1 TO WrapPoint% IF MID$(Buf$, A, 1) = Quote$ THEN QuotesOn% = NOT QuotesOn% NEXT A IF QuotesOn% THEN Long$ = Buf$ Buf$ = LEFT$(Buf$, WrapPoint% - 1) + Quote$ + "+_" ELSE Long$ = Buf$ Buf$ = LEFT$(Buf$, WrapPoint% - 1) + "_" END IF IF NOT ((Trans = LPP) AND LEN(Buf$) = 0) THEN PRINT #2, Buf$ END IF Buf$ = MID$(Long$, WrapPoint%) IF QuotesOn% THEN Buf$ = Quote$ + Buf$ IF LEN(Buf$) THEN GOTO Wrapping END IF IF NOT ((Trans = LPP) AND LEN(Buf$) = 0) THEN PRINT #2, Buf$ END IF END IF NEXT IF NOT EOF(1) THEN PRINT #2, PRINT #2, "ðððððððððððððððððððððððð[ Continued on Next Message ]ððððððððððððððððððððððð" ELSE PRINT #2, PRINT #2, "ððððððððððððððððððððððððððððððð[ End of File ]ðððððððððððððððððððððððððððððð" PRINT #2, END IF IF TooLong THEN PRINT "Warning: Lines wrapped in message number"; STR$(OnMsgNumber); "." END IF CLOSE #2 IF NOT EOF(1) THEN OnMsgNumber = OnMsgNumber + 1 FileOutNum = FileOutNum + 1 LinesOut = 1 END IF LOOP UNTIL EOF(1) CLOSE PRINT "Complete!" END ErrorHandle: IF ERR = 52 OR ERR = 53 THEN COLOR 15: PRINT "File Not Found."; : COLOR 7, 0: PRINT " Are you sure it's in the current directory?" CLOSE #1 RESUME SelectFile END IF COLOR 15: PRINT "Are you some kinda NUTCASE?!?!?!"; : COLOR 7, 0: PRINT " No filename is THAT long." RESUME SelectFile