home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 8
/
amigaformatcd08.iso
/
in_the_mag
/
emulation
/
ql
/
qdos4amiga3.lha
/
DOC2RTF_bas
< prev
next >
Wrap
Text File
|
1996-03-07
|
19KB
|
726 lines
10 TURBO_objfil "ram1_DOC2RTF_task"
11 TURBO_taskn "DOC2RTF"
12 TURBO_repfil "scr"
13 TURBO_windo 0
14 TURBO_diags 'omit'
15 TURBO_struct "S"
16 TURBO_model "<"
17 TURBO_objdat 10
18 TURBO_optim "R"
19 :
1000 REMark ------------------------------
1010 REMark DOC2RTF_bas - Mark J Swift
1020 :
1052 REMark Thanks go to S N Goodwin for
1053 REMark obtaining vital information
1054 REMark about the DOC format, and to
1055 REMark Chas Dillon for providing it
1060 REMark ------------------------------
1070 :
1160 DIM InFile$(100),OutFile$(100),verstag$(4)
1170 DIM RTFtbs%(256),RTFtbs$(256),K$(1),extra$(4),RTFo$(4096),t$(256)
1180 cWdth=11880/98: REMark width of 10pt courier in 1/20 pts (approx)
1190 verstag$="1.02":REMark this version
1200 OPEN#3;"Con_456x144a28x12"
1210 OPEN#4;"Scr_104x12a362x20"
1220 OPEN#5;"Scr_436x52a38x99"
1230 REPeat outer_loop
1235 RETRY_HERE
1240 IF COMPILED
1241 WHEN ERRor
1242 PRINT #3\\"Error: "
1243 REPORT #3,ERNUM
1244 INPUT #3;\" Press ENTER to re-start.";Rplc$
1245 RETRY
1246 END WHEN
1247 END IF
1249 WINDOW#3;456,144,28,12:PAPER#3;0:INK#3;7:CLS#3:BORDER#3;3,2:BORDER#3;2,0:BORDER#3;1,2:WINDOW#3;438,130,36,19:BORDER#5;1,4:INK#5;4:PAPER#5;0
1250 CSIZE#3;2,1:PRINT#3;"DOC2RTF v";verstag$:CSIZE#3;0,0
1260 PRINT#3;"DOC file translation utility by MARK J SWIFT";
1270 CLS#4:BORDER#4;1,7:INK#4;4:CLS#5
1280 WINDOW#3;438,40,36,59
1290 INK#5;4
1300 PRINT#5;" DOC2RTF is a file utility that translates QUILL/XCHANGE doc files into"
1310 PRINT#5;" rich text format (RTF)."
1320 PRINT#5;\" RTF files can easily be read into most PC and Apple Macintosh"
1330 PRINT#5;" word-processors and DTP applications."
1370 INPUT#3;\" Input source DOC filename >";InFile$
1380 IF InFile$="" THEN EXIT outer_loop
1390 INPUT#3;" Input destination RTF filename >";OutFile$
1400 IF OutFile$="" THEN EXIT outer_loop
1410 CLS#5
1419 DOCbeginDocument InFile$
1420 RTFleading=240
1421 IF (DOChjust<>0) THEN DOCdoHeader
1422 IF (DOCfjust<>0) THEN DOCdoFooter
1423 DOCclearEnhance
1425 SET_POSITION#6,tblOffs+22+14+14
1427 RTFleading=240*(1+DOCLineGap)
1430 REPeat tblLoop
1440 IF DOCdone% THEN EXIT tblLoop
1450 DOCdoParagraph
1460 IF txtOffs>tblOffs THEN
1470 BLOCK#4;100,10,0,0,4
1480 ELSE
1490 BLOCK#4;INT((txtOffs/tblOffs)*100),10,0,0,4
1500 END IF
1510 END REPeat tblLoop
1520 DOCendDocument
1540 END REPeat outer_loop
1550 CLOSE#3
1560 CLOSE#4
1570 CLOSE#5
1580 STOP
1590 :
1600 DEFine PROCedure DOCbeginDocument(InFile$)
1610 OPEN_IN#6,InFile$
1620 SET_POSITION#6,10
1630 tblOffs=STRINGL(INPUT$(#6,4))
1641 tblLen=STRING%(INPUT$(#6,2))
1645 PagOffs=tblOffs+tblLen
1647 PagLen=STRING%(INPUT$(#6,2))
1648 GenOffs=PagOffs+PagLen
1649 GenLen=STRING%(INPUT$(#6,2))
1650 RulOffs=GenOffs+20
1651 rulLen=GenLen-20
1652 GenLen=20
1659 OPEN_IN#7,InFile$
1660 DOCclearEnhance
1670 DOCrulID=0
1680 SET_POSITION#6,GenOffs
1681 DOCbotM=CODE(INKEY$(#6,-1))
1689 K=CODE(INKEY$(#6,-1))
1690 SELect ON K
1691 =1:DOCpwid=40
1692 =2:DOCpwid=64
1693 =REMAINDER :DOCpwid=80
1694 END SELect
1695 RTFpwid=INT(cWdth*DOCpwid+.5)
1696 SET_POSITION#6,GenOffs+2
1697 DOCLineGap=CODE(INKEY$(#6,-1))
1698 DOCLinePP=CODE(INKEY$(#6,-1))
1699 DOCStartPag=CODE(INKEY$(#6,-1))
1700 SET_POSITION#6,GenOffs+6
1701 DOCtopM=CODE(INKEY$(#6,-1))
1702 SET_POSITION#6,GenOffs+14
1703 DOChjust=CODE(INKEY$(#6,-1))
1704 DOCfjust=CODE(INKEY$(#6,-1))
1705 DOChGap=CODE(INKEY$(#6,-1))
1706 DOCfGap=CODE(INKEY$(#6,-1))
1707 IF DOCLinePP>70 THEN DOCLinePP=70
1708 RTFextra=240*(70-DOCLinePP)/2
1709 RTFheadery=240*DOCtopM+RTFextra
1710 RTFfootery=240*DOCbotM+RTFextra
1711 RTFmargt=RTFheadery
1712 IF (DOChjust<>0) THEN RTFmargt=RTFmargt+240*(1+DOChGap)
1713 RTFmargb=RTFfootery
1714 IF (DOCfjust<>0) THEN RTFmargb=RTFmargb+240*(DOCfGap+1)
1717 RTFstartPag=DOCStartPag
1720 RTFbeginDocument OutFile$
1730 END DEFine
1740 :
1750 DEFine PROCedure DOCendDocument
1760 CLOSE#6
1770 CLOSE#7
1780 RTFendDocument
1790 END DEFine
1800 :
1810 DEFine FuNction DOCdone%
1811 RETurn POSITION(#7)>=tblOffs
1812 END DEFine
1813 :
1814 DEFine PROCedure DOCdoFooter
1815 RTFbeginFooter
1816 SET_POSITION#6,tblOffs+22+14
1817 txtOffs=STRINGL(INPUT$(#6,4))
1818 SET_POSITION#6,GenOffs+15
1819 DOCdoHeaderFooter
1820 RTFendFooter
1821 END DEFine
1822 :
1823 DEFine PROCedure DOCdoHeader
1824 RTFbeginHeader
1825 SET_POSITION#6,tblOffs+22
1826 txtOffs=STRINGL(INPUT$(#6,4))
1827 SET_POSITION#6,GenOffs+14
1828 DOCdoHeaderFooter
1829 RTFendHeader
1830 END DEFine
1831 :
1832 DEFine PROCedure DOCdoHeaderFooter
1833 DOCclearEnhance
1834 DOCjFlg=CODE(INKEY$(#6,-1))
1835 SELect ON DOCjFlg
1836 =1:RTFleftAlign
1837 =2:RTFcentreAlign
1838 =3:RTFrightAlign
1839 END SELect
1840 extra$=INKEY$(#6,-1)
1841 extra$=INPUT$(#6,2)
1842 Kk=CODE(INKEY$(#6,-1))
1843 IF Kk<>0 THEN DOCbold
1844 SET_POSITION#7,txtOffs
1845 REPeat txtLoop
1846 IF EOF(#7) THEN EXIT txtLoop
1847 K$=INKEY$(#7,-1)
1848 K=CODE(K$)
1849 IF K=0 THEN EXIT txtLoop
1850 RTFoutChar K$
1851 END REPeat txtLoop
1852 IF Kk<>0 THEN DOCbold
1853 REPeat loop
1854 K="nnn" INSTR RTFo$
1855 IF K=0 THEN K="aaa" INSTR RTFo$
1856 IF K=0 THEN EXIT loop
1857 IF K=(LEN(RTFo$)-2) THEN
1858 RTFo$=RTFo$(1 TO K-1)&"\chpgn "
1859 ELSE
1860 RTFo$=RTFo$(1 TO K-1)&"\chpgn "&RTFo$(K+3 TO)
1861 END IF
1862 END REPeat loop
1865 END DEFine
1866 :
1867 DEFine PROCedure DOCdoParagraph
1868 DOCclearEnhance
1869 txtOffs=STRINGL(INPUT$(#6,4))
1870 IF txtOffs<>0 THEN
1890 extra$=INPUT$(#6,2)
1900 extra$=INKEY$(#6,-1)
1910 t=CODE(INKEY$(#6,-1)):IF t>128 THEN t=128-t
1920 RTFleftIndent INT((t+1)*cWdth+.5)
1930 t=CODE(INKEY$(#6,-1)):IF t>128 THEN t=128-t
1940 RTFfirstIndent (INT((t+1)*cWdth+.5)-RTFli)
1950 t=CODE(INKEY$(#6,-1)):IF t>128 THEN t=128-t
1960 RTFrightIndent INT(RTFpwid-t*cWdth+.5)
1970 DOCjFlg=CODE(INKEY$(#6,-1))
1980 SELect ON DOCjFlg
1990 =0:RTFleftAlign
2000 =1:RTFcentreAlign
2010 =2:RTFjustify
2020 END SELect
2021 K=CODE(INKEY$(#6,-1))
2022 IF K<>DOCrulID THEN
2023 DOCrulID=K
2024 SET_POSITION#7,RulOffs
2025 REPeat loop
2026 K=CODE(INKEY$(#7,-1))
2027 L=CODE(INKEY$(#7,-1))-2
2028 IF K=DOCrulID THEN EXIT loop
2029 IF L>0 THEN K$=INPUT$(#7,L)
2030 END REPeat loop
2031 RTFnTbs%=0
2032 FOR i=1 TO L/2
2033 K=CODE(INKEY$(#7,-1))
2035 Kk=CODE(INKEY$(#7,-1))
2036 SELect ON Kk
2037 =0:RTFtab INT((K+1)*cWdth+.5),"L"
2038 =1:RTFtab INT((K+1)*cWdth+.5),"C"
2039 =2:RTFtab INT((K+1)*cWdth+.5),"R"
2040 =3:RTFtab INT((K+1)*cWdth+.5),"D"
2041 END SELect
2044 END FOR i
2045 RTFleftIndent RTFli
2047 END IF
2049 extra$=INPUT$(#6,2)
2050 RTFbeginParagraph
2055 SET_POSITION#7,txtOffs
2060 REPeat txtLoop
2070 IF EOF(#7) THEN EXIT txtLoop
2080 K$=INKEY$(#7,-1)
2090 K=CODE(K$)
2100 IF K=0 THEN EXIT txtLoop
2110 SELect ON K
2115 =9:RTFtabout
2120 =15:DOCbold
2130 =18:DOCsuperscript
2140 =17:DOCsubscript
2150 =16:DOCunderline
2160 =30:RTFoutChar "-"
2165 =12:DOCpagFlg%=1
2170 =REMAINDER : RTFoutChar K$
2180 END SELect
2190 END REPeat txtLoop
2200 RTFendParagraph
2210 END IF
2220 END DEFine
2221 :
2222 DEFine PROCedure DOCclearEnhance
2223 DOCbldFlg%=0
2224 DOCitaFlg%=0
2225 DOCundFlg%=0
2226 DOCcndFlg%=0
2227 DOCsupFlg%=0
2228 DOCsubFlg%=0
2229 END DEFine
2230 :
2240 DEFine PROCedure DOCbold
2250 DOCbldFlg%=1-DOCbldFlg%
2260 IF DOCbldFlg% THEN
2270 RTFboldON
2280 ELSE
2290 RTFboldOFF
2300 END IF
2310 END DEFine
2320 :
2330 DEFine PROCedure DOCsuperscript
2340 DOCsupFlg%=1-DOCsupFlg%
2350 IF DOCsupFlg% THEN
2360 RTFsuperscriptON
2370 ELSE
2380 RTFsuperscriptOFF
2390 END IF
2400 END DEFine
2410 :
2420 DEFine PROCedure DOCsubscript
2430 DOCsubFlg%=1-DOCsubFlg%
2440 IF DOCsubFlg% THEN
2450 RTFsubscriptON
2460 ELSE
2470 RTFsubscriptOFF
2480 END IF
2490 END DEFine
2500 :
2510 DEFine PROCedure DOCunderline
2520 DOCundFlg%=1-DOCundFlg%
2530 IF DOCundFlg% THEN
2540 RTFunderlineON
2550 ELSE
2560 RTFunderlineOFF
2570 END IF
2580 END DEFine
2590 :
2600 DEFine PROCedure RTFbeginDocument(OutFile$)
2610 :
2620 RTFclearEnhance
2690 RTFclearStyle
2790 :
2800 rtfparFlg%=0
2830 :
2835 DELETE OutFile$
2840 OPEN_NEW#9,OutFile$
2850 PRINT#9,"{\rtf1 \mac"
2860 PRINT#9,""
2870 PRINT#9,"{\fonttbl"
2880 PRINT#9,"{\f22 \fmodern Courier;}"
2890 PRINT#9,"}"
2900 PRINT#9,""
2910 PRINT#9,"{\stylesheet"
2920 PRINT#9,"{\s243 \qc \f22 \fs20 \sbasedon0 \snext243 footer;}"
2930 PRINT#9,"{\s244 \qc \f22 \fs20 \sbasedon0 \snext244 header;}"
2940 PRINT#9,"{\f22 \fs20 \sbasedon222 \snext0 Normal;}"
2950 PRINT#9,"}"
2960 PRINT#9,""
2961 RTFmargl=1080
2962 RTFmargr=11880-RTFpwid-RTFmargl
2970 PRINT#9,"\paperw11880 \paperh16800 \deftab";INT(cWdth*5)
2975 PRINT#9,"\margl";RTFmargl;" \margr";RTFmargr;" \margt";-RTFmargt;" \margb";-RTFmargb
2980 PRINT#9,"\widowctrl \ftnbj \pgnstart";RTFstartPag;" \fracwidth "
2985 PRINT#9,"\sectd \linemod0 \linex0 \headery";RTFheadery;" \footery";RTFfootery;" \cols1 \endnhere"
2990 PRINT#9,"\plain \f22 \fs20 "
3000 PRINT#9,""
3010 RTFo$=""
3020 END DEFine
3030 :
3040 DEFine PROCedure RTFendDocument
3050 :
3060 IF rtfparFlg% THEN
3070 RTFendParagraph
3080 END IF
3090 :
3100 PRINT#9,"}"
3110 CLOSE#9
3120 END DEFine
3121 :
3122 DEFine PROCedure RTFbeginHeader
3123 PRINT#9;"{\header ":RTFbeginParagraph:RTFo$=RTFo$&"\s244 \f22 \fs20 "
3124 END DEFine
3125 :
3126 DEFine PROCedure RTFendHeader
3128 RTFendParagraph:PRINT#9;"}":RTFclearStyle
3129 END DEFine
3130 :
3132 DEFine PROCedure RTFbeginFooter
3133 PRINT#9;"{\footer ":RTFbeginParagraph:RTFo$=RTFo$&"\s243 \f22 \fs20 "
3134 END DEFine
3135 :
3136 DEFine PROCedure RTFendFooter
3137 RTFendParagraph :PRINT#9;"}":RTFclearStyle
3138 END DEFine
3139 :
3140 DEFine PROCedure RTFbeginParagraph
3150 IF rtfparFlg% THEN
3160 RTFendParagraph
3200 END IF
3220 rtfparFlg%=1
3225 RTFclearEnhance
3227 DOCpagFlg%=0
3230 END DEFine
3240 :
3250 DEFine PROCedure RTFendParagraph
3260 IF rtfparFlg% THEN
3270 RTFendEnhance
3280 RTFo$=RTFo$&"\par "
3285 RTFflushStyle
3290 PRINT#9,RTFo$
3295 RTFclearEnhance
3300 RTFo$=""
3310 rtfparFlg%=0
3315 IF DOCpagFlg%<>0 THEN
3316 RTFpagebreak
3317 DOCpagFlg%=0
3318 END IF
3320 END IF
3330 END DEFine
3331 :
3332 DEFine PROCedure RTFclearStyle
3333 RTFdefli=0
3334 RTFdeffi=0
3335 RTFdefri=0
3336 RTFli=RTFdefli
3337 RTFfi=RTFdeffi
3338 RTFri=RTFdefri
3339 :
3340 RTFalignFlg%=0
3341 :
3342 RTFnTbs%=0
3344 :
3345 RTFstyleFlg%=0
3348 END DEFine
3349 :
3350 DEFine PROCedure RTFleftAlign
3360 IF RTFalignFlg%<>0 THEN
3370 RTFalignFlg%=0
3380 RTFstyleFlg%=1
3390 END IF
3400 END DEFine
3410 :
3420 DEFine PROCedure RTFrightAlign
3430 IF RTFalignFlg%<>1 THEN
3440 RTFalignFlg%=1
3450 RTFstyleFlg%=1
3460 END IF
3470 END DEFine
3480 :
3490 DEFine PROCedure RTFcentreAlign
3500 IF RTFalignFlg%<>2 THEN
3510 RTFalignFlg%=2
3520 RTFstyleFlg%=1
3530 END IF
3540 END DEFine
3550 :
3560 DEFine PROCedure RTFjustify
3570 IF RTFalignFlg%<>3 THEN
3580 RTFalignFlg%=3
3590 RTFstyleFlg%=1
3600 END IF
3610 END DEFine
3620 :
3630 DEFine PROCedure RTFleftIndent(N)
3640 REMark n - units of pts/20 as measured from the left margin
3650 IF N<>RTFli THEN
3660 RTFli=N
3670 RTFstyleFlg%=1
3680 END IF
3682 IF RTFstyleFlg%<>0 THEN
3685 RTFclearSoftTabs
3690 RTFtab N,"S"
3695 END IF
3700 END DEFine
3710 :
3720 DEFine PROCedure RTFfirstIndent(N)
3730 REMark n - units of pts/20 as measured from the left indent
3740 IF N<>RTFfi THEN
3750 RTFfi=N
3760 RTFstyleFlg%=1
3770 END IF
3780 END DEFine
3790 :
3800 DEFine PROCedure RTFrightIndent(N)
3810 REMark n - units of pts/20 as measured from the right margin
3820 IF N<>RTFri THEN
3830 RTFri=N
3840 RTFstyleFlg%=1
3850 END IF
3860 END DEFine
3861 :
3862 DEFine PROCedure RTFclearSoftTabs
3863 i=1
3864 REPeat loop
3865 IF i>RTFnTbs% THEN EXIT loop
3866 IF RTFtbs$(i)=="S" THEN
3867 FOR j=i TO RTFnTbs%-1
3868 RTFtbs%(j)=RTFtbs%(j+1)
3869 RTFtbs$(j)=RTFtbs$(j+1)
3870 END FOR j
3871 RTFnTbs%=RTFnTbs%-1
3872 RTFstyleFlg%=1
3873 END IF
3874 i=i+1
3875 END REPeat loop
3878 END DEFine
3879 :
3880 DEFine PROCedure RTFtab(N,t$)
3890 LOCal i,j,loop
3900 REMark n - units of pts/20 as measured from the left margin
3910 REMark t$ - L=left tab, C=centre tab, R=right tab, D=decimal tab, X=remove tab
3920 :
3930 i=1
3940 REPeat loop
3950 IF ((i>RTFnTbs%) OR (RTFtbs%(i)>=N)) THEN EXIT loop
3960 i=i+1
3970 END REPeat loop
3980 :
3981 IF t$=="X" THEN
3982 IF i<=RTFnTbs% THEN
3983 REMark remove old tab
3984 FOR j=i TO RTFnTbs%-1
3985 RTFtbs%(j)=RTFtbs%(j+1)
3986 RTFtbs$(j)=RTFtbs$(j+1)
3987 END FOR j
3988 RTFnTbs%=RTFnTbs%-1
3989 RTFstyleFlg%=1
3990 END IF
3991 ELSE
3992 IF i>RTFnTbs% THEN
3995 REMark add new tab to end of Q
4000 RTFnTbs%=RTFnTbs%+1
4010 RTFtbs%(RTFnTbs%)=N
4020 RTFtbs$(RTFnTbs%)=t$
4030 RTFstyleFlg%=1
4040 ELSE
4050 IF N=RTFtbs%(i) THEN
4055 REMark replace old tab with new
4059 IF NOT(t$=="S") THEN
4060 IF RTFtbs$(i)<>t$ THEN
4070 RTFtbs$(i)=t$
4080 RTFstyleFlg%=1
4090 END IF
4095 END IF
4100 ELSE
4105 REMark insert new tab
4110 RTFnTbs%=RTFnTbs%+1
4120 FOR j=RTFnTbs%-1 TO i STEP -1
4130 RTFtbs%(j+1)=RTFtbs%(j)
4140 RTFtbs$(j+1)=RTFtbs$(j)
4150 NEXT j
4160 RTFtbs%(i)=N
4170 RTFtbs$(i)=t$
4180 RTFstyleFlg%=1
4190 END IF
4195 END IF
4200 END IF
4210 :
4220 END DEFine
4230 :
4240 DEFine PROCedure RTFflushStyle
4250 LOCal i,t
4260 :
4270 IF RTFstyleFlg% THEN
4280 t=RTFalignFlg%
4290 SELect ON t
4300 =0:t$="\pard "
4310 =1:t$="\pard \qr "
4320 =2:t$="\pard \qc "
4330 =3:t$="\pard \qj "
4340 END SELect
4350 :
4355 t$=t$&"\sl"&RTFleading&" "
4357 :
4360 IF RTFli<>RTFdefli THEN
4370 t$=t$&"\li"&RTFli&" "
4380 END IF
4390 :
4400 IF RTFfi<>RTFdeffi THEN
4410 t$=t$&"\fi"&RTFfi&" "
4420 END IF
4430 :
4440 IF RTFri<>RTFdefri THEN
4450 t$=t$&"\ri"&RTFri&" "
4460 END IF
4470 :
4480 IF RTFnTbs%<>0 THEN
4490 FOR i=1 TO RTFnTbs%
4500 t=CODE(RTFtbs$(i))
4510 SELect ON t
4520 =CODE("L"),CODE("S")
4530 REMark left or soft tab
4540 t$=t$&"\tx"&RTFtbs%(i)&" "
4550 =CODE("C")
4560 REMark centre tab
4570 t$=t$&"\tqc\tx"&RTFtbs%(i)&" "
4580 =CODE("R")
4590 REMark right tab
4600 t$=t$&"\tqr\tx"&RTFtbs%(i)&" "
4610 =CODE("D")
4620 REMark decimal tab
4630 t$=t$&"\tqdec\tx"&RTFtbs%(i)&" "
4640 END SELect
4650 NEXT i
4660 END IF
4670 :
4680 RTFo$=t$&RTFo$
4690 :
4700 RTFstyleFlg%=0
4710 END IF
4720 END DEFine
4730 :
4740 DEFine PROCedure RTFboldON
4750 IF RTFbldFlg%=0 THEN
4760 RTFendEnhance
4770 RTFbldFlg%=1
4775 RTFenhFlg%=1
4780 END IF
4790 END DEFine
4800 :
4810 DEFine PROCedure RTFboldOFF
4820 IF RTFbldFlg%<>0 THEN
4830 RTFendEnhance
4840 RTFbldFlg%=0
4845 RTFenhFlg%=RTFbldFlg%||RTFitaFlg%||RTFundFlg%||RTFcndFlg%||RTFsupFlg%||RTFsubFlg%
4850 END IF
4860 END DEFine
4870 :
4880 DEFine PROCedure RTFitalicON
4890 IF RTFitaFlg%=0 THEN
4900 RTFendEnhance
4910 RTFitaFlg%=1
4915 RTFenhFlg%=1
4920 END IF
4930 END DEFine
4940 :
4950 DEFine PROCedure RTFitalicOFF
4960 IF RTFitaFlg%<>0 THEN
4970 RTFendEnhance
4980 RTFitaFlg%=0
4985 RTFenhFlg%=RTFbldFlg%||RTFitaFlg%||RTFundFlg%||RTFcndFlg%||RTFsupFlg%||RTFsubFlg%
4990 END IF
5000 END DEFine
5010 :
5020 DEFine PROCedure RTFunderlineON
5030 IF RTFundFlg%=0 THEN
5040 RTFendEnhance
5050 RTFundFlg%=1
5055 RTFenhFlg%=1
5060 END IF
5070 END DEFine
5080 :
5090 DEFine PROCedure RTFunderlineOFF
5100 IF RTFundFlg%<>0 THEN
5110 RTFendEnhance
5120 RTFundFlg%=0
5125 RTFenhFlg%=RTFbldFlg%||RTFitaFlg%||RTFundFlg%||RTFcndFlg%||RTFsupFlg%||RTFsubFlg%
5130 END IF
5140 END DEFine
5150 :
5160 DEFine PROCedure RTFcondensedON
5170 IF RTFcndFlg%=0 THEN
5180 RTFendEnhance
5190 RTFcndFlg%=1
5195 RTFenhFlg%=1
5200 END IF
5210 END DEFine
5220 :
5230 DEFine PROCedure RTFcondensedOFF
5240 IF RTFcndFlg%<>0 THEN
5250 RTFendEnhance
5260 RTFcndFlg%=0
5265 RTFenhFlg%=RTFbldFlg%||RTFitaFlg%||RTFundFlg%||RTFcndFlg%||RTFsupFlg%||RTFsubFlg%
5270 END IF
5280 END DEFine
5290 :
5300 DEFine PROCedure RTFsuperscriptON
5310 IF RTFsupFlg%=0 THEN
5320 RTFendEnhance
5330 RTFsupFlg%=1
5335 RTFenhFlg%=1
5340 END IF
5350 END DEFine
5360 :
5370 DEFine PROCedure RTFsuperscriptOFF
5380 IF RTFsupFlg%<>0 THEN
5390 RTFendEnhance
5400 RTFsupFlg%=0
5405 RTFenhFlg%=RTFbldFlg%||RTFitaFlg%||RTFundFlg%||RTFcndFlg%||RTFsupFlg%||RTFsubFlg%
5410 END IF
5420 END DEFine
5430 :
5440 DEFine PROCedure RTFsubscriptON
5450 IF RTFsubFlg%=0 THEN
5460 RTFendEnhance
5470 RTFsubFlg%=1
5475 RTFenhFlg%=1
5480 END IF
5490 END DEFine
5500 :
5510 DEFine PROCedure RTFsubscriptOFF
5520 IF RTFsubFlg%<>0 THEN
5530 RTFendEnhance
5540 RTFsubFlg%=0
5545 RTFenhFlg%=RTFbldFlg%||RTFitaFlg%||RTFundFlg%||RTFcndFlg%||RTFsupFlg%||RTFsubFlg%
5550 END IF
5560 END DEFine
5570 :
5580 DEFine PROCedure RTFendEnhance
5590 IF RTFenhFlg%=0 THEN
5595 IF (RTFbldFlg%||RTFitaFlg%||RTFundFlg%||RTFcndFlg%||RTFsupFlg%||RTFsubFlg%) THEN
5600 RTFo$=RTFo$&"}"
5605 END IF
5606 END IF
5607 END DEFine
5608 :
5609 DEFine PROCedure RTFclearEnhance
5610 RTFbldFlg%=0
5620 RTFitaFlg%=0
5630 RTFundFlg%=0
5640 RTFcndFlg%=0
5650 RTFsupFlg%=0
5660 RTFsubFlg%=0
5670 RTFenhFlg%=0
5690 END DEFine
5700 :
5710 DEFine PROCedure RTFflushEnhance
5720 IF RTFenhFlg% THEN
5730 RTFo$=RTFo$&"{"
5740 IF RTFbldFlg% THEN
5750 RTFo$=RTFo$&"\b "
5760 END IF
5770 IF RTFitaFlg% THEN
5780 RTFo$=RTFo$&"\i "
5790 END IF
5800 IF RTFundFlg% THEN
5810 RTFo$=RTFo$&"\ul "
5820 END IF
5830 IF RTFcndFlg% THEN
5840 RTFo$=RTFo$&"\expnd58 "
5850 END IF
5860 IF RTFsupFlg% THEN
5870 RTFo$=RTFo$&"\up6 "
5880 END IF
5890 IF RTFsubFlg% THEN
5900 RTFo$=RTFo$&"\dn4 "
5910 END IF
5920 END IF
5930 RTFenhFlg%=0
5940 END DEFine
5950 :
5951 DEFine PROCedure RTFtabout
5952 IF RTFenhFlg% THEN RTFflushEnhance
5953 RTFo$=RTFo$&"\tab "
5954 END DEFine
5955 :
5956 DEFine PROCedure RTFpagebreak
5957 PRINT#9;"\page "
5958 END DEFine
5959 :
5960 DEFine PROCedure RTFoutChar(t$)
5965 LOCal K
5970 IF RTFenhFlg% THEN RTFflushEnhance
5992 K=CODE(t$)
5993 SELect ON K
5995 =CODE("{"),CODE("}"),CODE("\"):RTFo$=RTFo$&"\"&t$
5996 =32 TO 255:RTFo$=RTFo$&t$
5998 =REMAINDER :PRINT#5;"<";CODE(t$);"> ";
6000 END SELect
6010 END DEFine
6020 :