Source Code (for SNOBOL4 and SPITBOL386)

*******************************************************************************
* *
* BETAUTF8.SNO *
* *
* SNOBOL4/SPITBOL program to convert beta code texts to UTF8 *
* Prototypical implementation to check the algorithm *
* The program is heavily annotated to facilitate translation to JAVA or C *
* *
* (c) Burkhard Meissner, 2005-2013 *
* *
*******************************************************************************
*
* Set version information and compilation date/time.
*
* Variable which holds the version information; later this variable
* will refer to the program parameters as sollicited from the command
* line:
*
parms = „Version 2.21 “ date()
*
*
*
*******************************************************************************
* *
* The program has been written specifically for the *
* *
* Papyrus Project Halle-Jena-Leipzig *
* under the direction of Professors Mehl, Scholl, Thiel *
* *
* and for Burkhard Meissner’s View & Find System for beta code texts (now *
* in the public domain). *
* *
* It has been successfully tested with a variety of beta code texts: *
* *
* Thesaurus Linguae Graecae (TLG) CD-ROM E *
* Packard Humanities Institute (PHI) CD-ROM 5.3 (Latin texts) *
* Packard Humanities Institute (PHI) CD-ROM 7 (Greek and Latin documentary *
* texts) *
* Miscellaneous beta code texts from the Oxford and Eichstaett (Prof. Dr. J. *
* Malitz) collections *
* Beta Code versions of texts from the Frankfurt inscription data base *
* (Prof. Clauss) *
* *
*******************************************************************************
* *
* Nearly all signs which can be reproduced in unicode have been implemented. *
* All Greek and diacritic symbols are rendered correctly. *
* The program notes erroneous letter-accent-combinations which are present in *
* input text files (TLG; PHI 7; PHI53 and other text collections) and issues *
* appropriate error and warning messages. *
* *
* Yudit, Mined, GVim or OpenOffice are recommended as editors for the *
* resulting UTF8 (unicode) text files. *
* These files can equally well be read into some lower-quality text editors. *
* *
* To „normalize“ the text with precomposed and/or decomposed accents, use the *
* uconv program of the unistring library or our compose/decompose filters. *
* *
* To use the files with editors as strange as MS-Word(R), it may be useful to *
* translate them into UTF16 first. Under Linux, use the program recode: *
* recode UTF-8..UTF-16 file.utf *
* *
* BETAUTF8 is distributed under an open source license (GPL). *
* It may be copied and distributed freely, provided a copy of the GPL *
* (General Public License) is made available together with the program *
* itself, and provided a copy of this source code accompanies the program. *
* *
*******************************************************************************
* *
* *
* *
* The author kindly asks for suggestions of improvements and additions to be *
* sent to him at: *
* *
* Prof. Dr. Burkhard Meissner *
* Helmut Schmidt-Universitaet *
* University of the Federal Armed Forces *
* Chair of Ancient History *
* Holstenhofweg 85 *
* D-22043 Hamburg *
* Germany *
* Tel.: (49)-40-6541-3396 *
* Fax.: (49)-40-6541-2098 *
* e-mail: [email protected] *
* *
*******************************************************************************
* *
* *
* Programming language: SNOBOL4/MacroSPITBOL *
* *
* *
*******************************************************************************
*
* Set statement limit to unlimited, speed-up processing:
*
&STLIMIT = -1
*
* For older SNOBOL4 systems to be SPITBOL-compatible:
*
-PLUSOPS 1
*
*******************************************************************************
* *
* The program has been successfully tested under the following systems: *
* *
* Marc Emmer’s SPITBOL386 (Intel extended version) under DOS, MS Windows-32 *
* (Win-32 compatible extender), both real DOS and MS Windows systems *
* as well as emulated systems under control of the the Linux operating *
* system *
* Dave Shield’s Linux-SPITBOL 386 under Linux *
* Phil Budne’s CSNOBOL4: under DOS, Linux, Mac OS X (Darwin) with PPC *
* and MS Windows-32 *
* Marc Emmer’s Snobol4+ under MS-DOS and emulated DOS under Linux *
* *
* In principle, it should work with Mark Emmer’s MaxSPITBOL for the Apple *
* Macintosh Computer, too, but this system could not be tested. *
* *
*******************************************************************************
* *
* There are a few small 16-bit MacroSPITBOL compilers around: *
* *
* Mark Emmer’s SPITPC16 (16-bit integers) and SPITPC32 (32-bit integers) *
* as well as Robert B.K. Dewar’s older MacroSPITBOL.COM compiler (16 bit *
* integers). These three systems provide work spaces of 64 KBytes or less. *
* It is absolutely impossible to compile and/or run betautf8 with these three *
* systems. *
* *
* Victors‘ Berstis‘ MinnesotaSNOBOL4.2 lacks some of the functionality *
* required to run betautf8.sno. Betautf8.sno should, however, principally be *
* be capable of being adapted to this system. However, the I/O functions of *
* of MinnesotaSNOBOL4.2 seem less efficient, and we have not yet been able *
* to use betautf8 successfully together with MinnesotaSNOBOL4.2 *
* *
* *
*******************************************************************************
* *
* SPITBOL386 writes a stand-alone program module betautf8.exe; this version *
* is by far the fastest *
* Snobol4+ writes a save file betautf8.sav which runs faster, because it does *
* not have to go through the initialization section every time it is *
* used. Even though, this version is the slowest one. *
* LinuxSPITBOL writes a .spx run file which contains all the program’s rou- *
* tines in the form of indirectly-threaded code snippets. *
* CSNOBOL4 runs about 3-4 times slower than SPITBOL386, but twice as fast as *
* Snobol4+ *
* *
* CSNOBOL4 can be compiled natively for any operating system for which there *
* is a decent C compiler. *
* SPITBOL386 is a 32-bit application. *
* Snobol4+ is a 16-bit DOS program. *
* *
*******************************************************************************
* *
* Compilation/Execution: *
* *
* SPITBOL -b -i2048k -s512k betautf8.sno *
* SNOBOL4+ /NH betautf8.sno *
* CSnobol4 -b -d 2048k -P 32k -S 16k betautf8.sno *
* *
*******************************************************************************
* *
* Note on the algorithm: *
* *
* In order to facilitate the translation to other programming languages, *
* many of the powerful and flexible constructions of the SNOBOL4 language *
* are not used. Instead of, for example, approaching the problem with *
* complex string patterns (a strength of the language), we will use a *
* „byte-by-byte-eating“ approach, which is much slower and less elegant, but *
* can be re-programmed in any language at will. Furthermore, we do not use *
* function recursion. Our programmable beta-code converter *
* XLATE, which is part of the V&F system, uses pattern matching and recursive *
* functions heavily in order to provide a flexible, programmable translation *
* environment which can be made to translate any beta code into any coding *
* whatsoever. XLATE is intrinsically slower than BETAUTF8, though. *
* *
* We do, however, use the TABLE. A table is effectively a two-way associative *
* array, which is indexed by hash values and works as a kind of look-up *
* table. *
* *
* For example: *
* X = TABLE() creates such a table *
* X<„A“> = „B“ makes „A“ point to „B“ in the table *
* X<„X“> = „XYZ“ makes „X“ point to „XYZ“ in the table *
* *
* Set up thus, the table can be referenced like this: *
* new_letter = X<„A“> new_letter points to „B“ *
* new_string = X<„X“> new_string points to „XYZ“ *
* null_string = X<„aha“> null_string points to the null string, *
* because X<> was not initialized with a *
* value for the „aha“ string. *
* *
*******************************************************************************
* *
* Limitations: *
* *
* – Hebrew and Coptic characters are left to later implementation. *
* – The program assumes that the reference tags present in TLG/PHI *
* files have been decoded already. At some stage we might modify *
* the progran so as to allow for the decoding of entire .txt files *
* – As yet, the main focus of the program is to guarantee that the *
* main function (beta_convert) works properly; the program itself *
* is more of an exercise for this function *
* – Use V&F to produce beta code text files. Any other beta code *
* text retrieval program might do. Betautf8 assumes that lines starting *
* with ~ can be left as they are. If in doubt, modify your file *
* (manually) as appropriate *
* – With inscriptions, the program produces lots of warning messages *
* about lower case letters in Greek. These are normally due to *
* letters present in the text as comments or very long reference *
* sections. You can safely ignore most of these warnings. *
* – As yet, the program does not distinguish between lower case and *
* upper case special letters: koppa, stigma, sampi *
* – The program uses precombined letter/accent combinations for Greek *
* as much as possible; it does not do so for Latin umlauts etc., *
* given that these occur only rarely in ancient texts; therefore, *
* umlauts may look ugly with certain fonts, especially if they are *
* upper case. *
* *
*******************************************************************************
* *
* Bugs: *
* *
* All those errors which we knew about have been removed and replaced by *
* completely new ones. *
* *
* *
*******************************************************************************
* *
* Suggestions for improvements: *
* *
* – Improve umlauts: Implement a sophisticated switch construct for Latin *
* script (similar to the Greek conversion routines) *
* – Under CSnobol4/Snobol4+: FREEZE() all the tables prior to actually *
* processing the files. This may lead to a speed increase. Preliminary *
* testing, however, shows this speed increase to be significantly lower *
* than 4%. Perhaps, this is not worth the while. *
* – Coptic, Hebrew *
* *
*******************************************************************************
*
* Maximum line length 8 KB
* Trim trailing blanks from input lines
* Anchored pattern matching: No backing-up at positions 1,2,3…
*
&maxlngth = 8 * 1024
&trim = 1
&anchor = 1
*
*
* Systemwide variables guiding the translation process:
*
*
language_latin = „L“
language_greek = „G“
language_hebrew = „H“
default_language = language_greek
actual_language = default_language
uppercase = „“
*
* Set up vital variables:
* numbers = set of digits
* lows = set of lower case letters
* upps = set of uppercase letters
* space = char(32) – space symbol
*
*
*
numbers = „0123456789“
lows = &lcase
upps = &ucase
space = “ “
*
* ByteOrder (BOM) marker – unnecessary, but safer
*
bom = char(239) char(187) char(191)
*
* This defines the end-of-line-conventions:
*
crlf = char(13) char(10)
beta_latin = „&“
beta_greek = „$“
beta_add = „+“
beta_uppercase = „*“
beta_brackets = „[]<>{}“
beta_quotation = ‚“‚
beta_special = „%“
beta_text_modifier = „@^“
beta_sign = „#“
beta_question_mark = „?“
beta_zeichen = „,;.:-_!’`“
beta_dihaeresis = „+“
beta_laccents = „/=“
markers = beta_latin beta_greek beta_uppercase beta_brackets
+ beta_quotation beta_special beta_text_modifier beta_sign beta_question_mark
+ beta_zeichen beta_dihaeresis beta_laccents
beta_iota_sub = „|“
beta_greek_accents = „()/=+“ beta_iota_sub
final_sigma_continue = numbers beta_latin beta_greek beta_uppercase
+ beta_brackets beta_special beta_text_modifier beta_sign
+ beta_question_mark
final_sigma_stop = space „,;.:_`“ ‚“‚
languages = table()
languages<beta_latin> = language_latin
languages<beta_greek> = language_greek
brackets = table(111)
brackets<„[„> = „[“
brackets<„]“> = „]“
brackets<„[1“> = „(“
brackets<„]1“> = „)“
brackets<„[2“> = „<“
brackets<„]2“> = „>“
brackets<„[3“> = „{“
brackets<„]3“> = „}“
brackets<„[4“> = char(226) char(159) char(166)
brackets<„]4“> = char(226) char(159) char(167)
brackets<„[5“> = char(226) char(140) char(138)
brackets<„]5“> = char(226) char(140) char(139)
brackets<„[6“> = char(226) char(140) char(136)
brackets<„]6“> = char(226) char(140) char(137)
brackets<„[7“> = char(226) char(140) char(136)
brackets<„]7“> = char(226) char(140) char(139)
brackets<„[8“> = char(226) char(140) char(138)
brackets<„]8“> = char(226) char(140) char(137)
brackets<„[9“> = char(206) char(135)
brackets<„]9“> = char(206) char(135)
brackets<„[10“> = „[“
brackets<„]10“> = „]“
brackets<„[11“> = char(226) char(130) char(141)
brackets<„]11“> = char(226) char(130) char(142)
brackets<„[12“> = char(226) char(134) char(146)
brackets<„]12“> = char(226) char(134) char(144)

brackets<„[13“> = „[“
brackets<„]13“> = „]“
brackets<„[14“> = „|:“
brackets<„]14“> = „:|“
brackets<„[16“> = char(226) char(159) char(166)
brackets<„]16“> = char(226) char(159) char(167)
brackets<„[17“> = char(226) char(140) char(138) char(226) char(140) char(138)
brackets<„]17“> = char(226) char(140) char(139) char(226) char(140) char(139)
brackets<„[18“> = char(226) char(159) char(170)
brackets<„]18“> = char(226) char(159) char(171)
brackets<„[20“> = char(226) char(142) char(167)
brackets<„]20“> = char(226) char(142) char(171)
brackets<„[21“> = char(226) char(142) char(170)
brackets<„]21“> = char(226) char(142) char(170)
brackets<„[22“> = char(226) char(142) char(168)
brackets<„]22“> = char(226) char(142) char(172)
brackets<„[23“> = char(226) char(142) char(169)
brackets<„]23“> = char(226) char(142) char(173)
brackets<„[30“> = char(226) char(142) char(155)
brackets<„]30“> = char(226) char(142) char(158)
brackets<„[31“> = char(226) char(142) char(156)
brackets<„]31“> = char(226) char(142) char(159)
brackets<„[32“> = char(226) char(142) char(157)
brackets<„]32“> = char(226) char(142) char(160)
*
* The intermediate values have been reserved for special purposes
*
brackets<„[70“> = char(226) char(184) char(130)
brackets<„]70“> = char(226) char(184) char(131)
brackets<„[71“> = char(226) char(184) char(132)
brackets<„]71“> = char(226) char(184) char(133)
brackets<„[72“> = char(226) char(184) char(137)
brackets<„]72“> = char(226) char(184) char(138)
brackets<„[73“> = char(226) char(184) char(139)
brackets<„]73“> = char(226) char(184) char(140)
brackets<„[80“> = „/“
brackets<„]80“> = „/“
brackets<„[81“> = „//“
brackets<„]81“> = „//“
*
* pointed brackets:
*
brackets<„<2“> = char(226) char(128) char(181)
brackets<„>2“> = char(226) char(128) char(178)
brackets<„<6“> = „“
brackets<„>6“> = „/“
brackets<„<11“> = „“
brackets<„>11“> = „/“
brackets<„<16“> = char(226) char(128) char(181)
*
* Error corrected 5-7-2009 B.M.
*
* V this was 116 – probably an error
brackets<„>16“> = char(226) char(128) char(178)
brackets<„<19“> = char(226) char(128) char(181)
brackets<„>19“> = char(226) char(128) char(178)
*
* Tables for special symbols:
*
quote = table(11)
quote<„0“> = ‚“‚
quote<„1“> = char(226) char(128) char(158)
quote<„2“> = ‚“‚
quote<„3“> = „‚“
quote<„4“> = „,“
quote<„5“> = „‚“
quote<„6“> = ‚“‚
quote<„7“> = „‚“
quote<„8“> = char(226) char(128) char(158)
*
greek_zeichen = table(11)
latin_zeichen = table(11)
*
greek_zeichen<„,“> = „,“
greek_zeichen<„;“> = „;“
greek_zeichen<„.“> = „.“
greek_zeichen<„:“> = char(206) char(135)
greek_zeichen<„-„> = „-“
greek_zeichen<„_“> = “ – “
greek_zeichen<„!“> = char(32) char(204) char(163)
greek_zeichen<„‚“> = „‚“
*
latin_zeichen<„,“> = „,“
latin_zeichen<„;“> = „;“
latin_zeichen<„.“> = „.“
latin_zeichen<„:“> = „:“
latin_zeichen<„-„> = „-“
latin_zeichen<„!“> = „!“
latin_zeichen<„‚“> = „‚“
*
* Tables for % and # (non-alphabetic signs/symbolic signs)
*
percent = table(250)
hash = table(900)
*
* Values – initialization of the tables:
*
percent<„%“> = char(226) char(128) char(160)
percent<„%1“> = „%1“
percent<„%2“> = „*“
percent<„%3“> = „/“
percent<„%4“> = „%4“
percent<„%5“> = „|“
percent<„%6“> = „=“
percent<„%7“> = „+“
percent<„%8“> = „%“
percent<„%9“> = „&“
percent<„%10“> = „:“
percent<„%11“> = char(226) char(128) char(162)
percent<„%12“> = „*“
percent<„%13“> = char(226) char(128) char(161)
percent<„%14“> = char(194) char(167)
percent<„%15“> = char(203) char(136)
percent<„%16“> = char(194) char(166)
percent<„%17“> = char(226) char(128) char(150)
percent<„%18“> = „‚“
percent<„%19“> = char(226) char(128) char(147)
percent<„%20“> = char(204) char(129)
percent<„%21“> = char(204) char(128)
percent<„%22“> = char(204) char(130)
percent<„%23“> = char(204) char(136)
percent<„%24“> = char(204) char(131)
percent<„%25“> = char(204) char(167)
percent<„%26“> = char(204) char(132)
percent<„%27“> = char(204) char(134)
percent<„%28“> = char(204) char(136)
percent<„%29“> = char(204) char(164)
percent<„%30“> = char(32) char(204) char(147)
percent<„%31“> = char(225) char(191) char(190)
percent<„%32“> = char(32) char(204) char(129)
percent<„%33“> = char(32) char(204) char(128)
percent<„%34“> = char(32) char(204) char(130)
percent<„%35“> = char(32) char(225) char(191) char(142)
percent<„%36“> = char(32) char(225) char(191) char(158)
percent<„%37“> = char(32) char(225) char(191) char(157)
percent<„%38“> = char(32) char(225) char(191) char(159)
percent<„%39“> = char(32) char(204) char(136)
percent<„%40“> = char(32) char(204) char(134)
percent<„%41“> = char(32) char(204) char(133)
percent<„%42“> = char(226) char(143) char(149)
percent<„%43“> = char(195) char(151)
percent<„%44“> = char(32) char(204) char(174) char(204) char(133)
percent<„%45“> = char(32) char(204) char(178) char(204) char(134)
percent<„%46“> = char(32) char(204) char(171) char(204) char(133)
percent<„%47“> = char(32) char(204) char(178) char(204) char(133)
percent<„%48“> = char(32) char(204) char(174) char(204) char(134)
percent<„%49“> =
percent<„%50“> = „1/2“
percent<„%51“> = „1/4“
percent<„%52“> = „1/8“
percent<„%53“> = „1/16“
percent<„%54“> = „1/32“
percent<„%55“> = „1/64“
percent<„%56“> = „1/128“
percent<„%57“> =
percent<„%58“> =
percent<„%59“> = „3/4“
percent<„%60“> = „1/3“
percent<„%61“> = „1/6“
percent<„%62“> = „1/12“
percent<„%63“> = „1/24“
percent<„%64“> = „1/48“
percent<„%65“> = „1/96“
percent<„%66“> =
percent<„%67“> =
percent<„%68“> =
percent<„%69“> = „2/3“
percent<„%70“> = „1/50“
percent<„%71“> = „1/100“
percent<„%72“> = „1/15“
percent<„%73“> = „1/30“
percent<„%74“> =
percent<„%75“> =
percent<„%76“> =
percent<„%77“> =
percent<„%78“> =
percent<„%79“> =
percent<„%80“> = „v“
percent<„%81“> = „vac.“
percent<„%91“> = char(226) char(138) char(162)
percent<„%92“> = char(226) char(138) char(163)
percent<„%93“> = char(204) char(128) char(204) char(137)
percent<„%94“> = char(204) char(135)
percent<„%96“> = char(204) char(146)
percent<„%97“> = char(204) char(136)
percent<„%98“> = char(204) char(142)
percent<„%100“> = „;“
percent<„%101“> = „#“
percent<„%102“> = „`“
percent<„%103“> = „“
percent<„%104“> = „^“
percent<„%105“> = „|||“
percent<„%106“> = char(226) char(137) char(133)
percent<„%107“> = „~“
percent<„%108“> = char(194) char(177)
percent<„%109“> = char(226) char(128) char(162)
percent<„%110“> = char(226) char(151) char(139)
percent<„%127“> = char(204) char(175)
percent<„%128“> = char(204) char(140)
percent<„%129“> = char(226) char(128) char(160)
percent<„%130“> = char(204) char(135)
percent<„%132“> = char(206) char(133)
percent<„%133“> = char(225) char(191) char(141)
percent<„%134“> = char(225) char(191) char(143)
percent<„%138“> = char(226) char(143) char(145) char(204) char(129)
percent<„%141“> = char(226) char(143) char(150)
percent<„%142“> = char(226) char(148) char(144)
percent<„%144“> = char(226) char(143) char(145) char(204) char(182)
percent<„%145“> = char(226) char(128) char(147) char(204) char(129)
percent<„%146“> = char(194) char(183)
percent<„%147“> = char(204) char(138)
percent<„%148“> = char(204) char(140)
percent<„%149“> = char(204) char(168)
percent<„%150“> = char(124)
percent<„%154“> = char(226) char(136) char(180)
percent<„%155“> = char(226) char(136) char(181)
percent<„%158“> = char(226) char(129) char(130)
percent<„%159“> = char(195) char(151)
percent<„%160“> = char(45)
percent<„%161“> = char(195) char(183)
percent<„%163“> = char(194) char(182)
percent<„%170“> = char(205) char(153)
percent<„%171“> = „//“
percent<„%172“> = char(202) char(188)
percent<„%173“> = char(202) char(189)
percent<„%174“> = char(194) char(180)
percent<„%175“> = char(96)
percent<„%176“> = char(225) char(191) char(128)
percent<„%177“> = char(204) char(147)
percent<„%178“> = char(204) char(148)
percent<„%179“> = char(204) char(163)
*
*
greek_percent = table(7)
greek_percent<„1“> = „?“
greek_percent<„4“> = „!“
latin_percent = table(7)
latin_percent<„1“> = char(204) char(163)
latin_percent<„4“> = char(32) char(204) char(163)
*
hash<„#“> = „‚“
hash<„#1“> = char(207) char(159)
hash<„#2“> = char(207) char(154)
hash<„#3“> = char(207) char(158)
hash<„#4“> = „Q“
hash<„#5“> = char(207) char(160)
hash<„#6“> = char(226) char(184) char(143)
hash<„#7“> = char(32) char(204) char(163)
hash<„#8“> = char(226) char(184) char(144)
hash<„#9“> = char(204) char(129)
hash<„#10“> = char(207) char(189)
hash<„#11“> = char(207) char(191)
hash<„#12“> = char(226) char(128) char(148)
hash<„#13“> = char(226) char(128) char(187)
hash<„#14“> = char(226) char(184) char(150)
hash<„#15“> = „>“
hash<„#16“> = char(207) char(190)
hash<„#17“> = „/“
hash<„#18“> = „<“
hash<„#19“> = char(204) char(128)
hash<„#20“> = char(226) char(151) char(161)
hash<„#21“> = char(226) char(136) char(189) char(204) char(136)
hash<„#22“> = char(205) char(181)
hash<„#23“> = char(207) char(152)
hash<„#24“> = char(226) char(136) char(189) char(204) char(136)
hash<„#25“> = char(226) char(136) char(189) char(204) char(136)
hash<„#26“> = char(226) char(184) char(143)
hash<„#27“> = char(226) char(136) char(154)
hash<„#28“> = „Deleted “
hash<„#29“> = char(194) char(183)
hash<„#51“> = char(194) char(183)
hash<„#52“> = char(226) char(129) char(154)
hash<„#53“> = char(226) char(129) char(157)
hash<„#54“> = „center of line “
hash<„#55“> = char(226) char(129) char(153)
hash<„#56“> = „Dividers of other forms “
hash<„#59“> = char(207) char(189)
hash<„#60“> = char(206) char(153)
hash<„#61“> = „1 drachma “
hash<„#62“> = „5 drachmas “
hash<„#63“> = char(206) char(148)
hash<„#64“> = „50 drachmas “
hash<„#65“> = char(206) char(151)
hash<„#66“> = „500 drachmas “
hash<„#67“> = char(206) char(167)
hash<„#68“> = „5 000 drachmas “
hash<„#69“> = char(206) char(156)
hash<„#70“> = „.“
hash<„#71“> = char(194) char(183)
hash<„#72“> = char(203) char(153)
hash<„#73“> = char(226) char(129) char(154)
hash<„#74“> = char(226) char(129) char(157)
hash<„#75“> = „.“
hash<„#80“> = char(204) char(136)
hash<„#81“> = „‚“
hash<„#82“> = char(203) char(138)
hash<„#83“> = char(203) char(139)
hash<„#84“> = char(225) char(191) char(128)
hash<„#85“> = char(202) char(189)
hash<„#86“> = char(202) char(188)
hash<„#87“> = char(206) char(148) char(205) char(133)
hash<„#90“> = char(226) char(128) char(148)
hash<„#99“> = char(32) char(204) char(163)
hash<„#103“> = char(206) char(155) char(204) char(184)
hash<„#118“> = char(206) char(187) char(204) char(184)
hash<„#121“> = char(206) char(190) char(204) char(184)
hash<„#127“> = char(206) char(187) char(205) char(133)
hash<„#128“> = char(207) char(188)
hash<„#129“> = char(206) char(155) char(204) char(165)
hash<„#132“> = char(206) char(178) char(204) char(184)
hash<„#135“> = char(203) char(153)
hash<„#136“> = char(206) char(163)
hash<„#150“> = char(226) char(136) char(158)
hash<„#151“> = char(226) char(128) char(148)
hash<„#152“> = char(226) char(129) char(154) char(226) char(128) char(148)
hash<„#153“> = char(226) char(128) char(166) char(204) char(133)
hash<„#154“> = char(226) char(178) char(128)
hash<„#155“> = char(226) char(128) char(148) char(204) char(163)
hash<„#156“> = char(226) char(140) char(144)
hash<„#158“> = char(226) char(136) char(183) char(204) char(182)
hash<„#159“> = char(226) char(136) char(183) char(204) char(180)
hash<„#160“> = char(126) char(204) char(163)
hash<„#162“> = char(226) char(150) char(161)
hash<„#163“> = char(205) char(181)
hash<„#165“> = char(32) char(204) char(189)
hash<„#166“> = char(226) char(169) char(154)
hash<„#170“> = „II“
hash<„#200“> = char(226) char(153) char(131)
hash<„#201“> = char(226) char(152) char(141)
hash<„#202“> = char(226) char(153) char(143)
hash<„#203“> = char(226) char(153) char(141)
hash<„#204“> = char(226) char(153) char(128)
hash<„#205“> = char(226) char(153) char(144)
hash<„#206“> = char(226) char(153) char(132)
hash<„#207“> = char(226) char(152) char(137)
hash<„#208“> = char(226) char(152) char(191)
hash<„#209“> = char(226) char(152) char(190)
hash<„#210“> = char(226) char(153) char(130)
hash<„#211“> = char(226) char(153) char(145)
hash<„#212“> = char(226) char(152) char(138)
hash<„#213“> = char(226) char(153) char(136)
hash<„#214“> = char(226) char(153) char(142)
hash<„#215“> = char(226) char(153) char(138)
hash<„#216“> = char(226) char(153) char(139)
hash<„#217“> = char(226) char(153) char(133)
hash<„#218“> = char(226) char(153) char(146)
hash<„#219“> = char(226) char(153) char(137)
hash<„#220“> = char(226) char(152) char(141)
hash<„#221“> = char(226) char(152) char(189)
hash<„#222“> = char(226) char(152) char(140)
hash<„#241“> = char(226) char(152) char(139)
hash<„#242“> = char(226) char(153) char(145)
hash<„#244“> = char(226) char(153) char(140)
hash<„#245“> = char(226) char(153) char(142) char(204) char(189)
hash<„#249“> = char(207) char(128) char(226) char(152) char(190)
*
* 2006-01-27:
*

hash<„#300“> = char(226) char(135) char(131)
hash<„#303“> = „>“
hash<„#305“> = char(226) char(184) char(142)
hash<„#306“> = char(226) char(137) char(144)
*
* 2006-01-27:
*
hash<„#307“> = char(226) char(134) char(190)
*
hash<„#308“> = char(226) char(134) char(189)
hash<„#310“> = char(226) char(184) char(142)
hash<„#313“> = char(226) char(184) char(142)
hash<„#314“> = char(226) char(136) char(146) char(226) char(136) char(152)
hash<„#315“> = char(226) char(184) char(142)
hash<„#317“> = „/“
hash<„#319“> = char(226) char(151) char(143)
hash<„#320“> = char(226) char(152) char(169)
hash<„#323“> = „>“
hash<„#321“> = char(226) char(152) char(169)
hash<„#322“> = char(226) char(152) char(167)
hash<„#324“> = char(226) char(128) char(148)
hash<„#330“> = „{Drawing}“
hash<„#336“> = char(213) char(143)
hash<„#451“> = char(202) char(131)
hash<„#452“> = char(226) char(184) char(144)
hash<„#453“> = char(226) char(184) char(145)
hash<„#454“> = char(226) char(184) char(144)
hash<„#455“> = char(226) char(184) char(145)
hash<„#458“> = char(206) char(167)
hash<„#459“> = char(194) char(183)
hash<„#460“> = char(226) char(128) char(148)
hash<„#461“> = „|“
hash<„#465“> = char(226) char(152) char(167)
hash<„#468“> = char(226) char(184) char(142)
hash<„#476“> = char(202) char(131)
hash<„#504“> = char(226) char(184) char(142)
hash<„#505“> = char(226) char(129) char(156)
hash<„#506“> = char(226) char(184) char(148)
hash<„#507“> = char(226) char(184) char(149)
hash<„#508“> = char(226) char(128) char(187)
hash<„#509“> = char(204) char(133) char(204) char(145)
hash<„#512“> = char(207) char(189)
hash<„#516“> = char(206) char(148) char(205) char(133)
hash<„#519“> = char(226) char(134) char(145)
hash<„#520“> = char(226) char(152) char(169)
hash<„#523“> = char(226) char(184) char(147)
hash<„#524“> = char(226) char(138) char(151)
hash<„#525“> = char(226) char(156) char(155)
hash<„#526“> = char(226) char(134) char(144)
hash<„#527“> = char(203) char(134)
hash<„#528“> = char(206) char(187) char(204) char(173)
hash<„#529“> = char(226) char(129) char(139)
hash<„#531“> = char(205) char(156)
hash<„#532“> = char(226) char(184) char(146)
hash<„#533“> = char(207) char(154)
hash<„#534“> = char(204) char(130)
hash<„#542“> = char(206) char(161) char(204) char(182)
hash<„#544“> = char(226) char(129) char(152)
hash<„#548“> = char(226) char(128) char(150) char(204) char(180)
hash<„#550“> = „::“
hash<„#551“> = char(226) char(151) char(140)
hash<„#556“> = char(226) char(152) char(169)
hash<„#561“> = char(226) char(134) char(145)
hash<„#562“> = char(204) char(133)
hash<„#570“> = char(207) char(188)
hash<„#574“> = char(206) char(147)
hash<„#577“> = char(206) char(166)
hash<„#578“> = char(206) char(161)
hash<„#579“> = char(206) char(156)
hash<„#580“> = char(206) char(153)
hash<„#581“> = char(206) char(152)
hash<„#583“> = char(206) char(157)
hash<„#584“> = char(226) char(132) char(167)
hash<„#585“> = char(206) char(150)
hash<„#587“> = char(206) char(149)
hash<„#593“> = char(206) char(155)
hash<„#598“> = char(206) char(148)
hash<„#603“> = char(206) char(160)
hash<„#617“> = char(206) char(169)
hash<„#619“> = char(206) char(187)
hash<„#623“> = char(226) char(132) char(167)
hash<„#624“> = char(207) char(189)
hash<„#628“> = char(206) char(159)
hash<„#629“> = char(206) char(158)
hash<„#630“> = char(206) char(148)
*
hash<„#631“> = char(206) char(154)
hash<„#641“> = char(206) char(169)
hash<„#642“> = char(206) char(151)
hash<„#651“> = char(206) char(167)
hash<„#652“> = char(206) char(164)
hash<„#660“> = char(206) char(145)
hash<„#661“> = char(206) char(146)
hash<„#662“> = char(206) char(165)
hash<„#663“> = char(206) char(168)
hash<„#677“> = char(206) char(188)
hash<„#683“> = char(226) char(156) char(179)
hash<„#688“> = char(206) char(188) char(204) char(138)
hash<„#689“> = char(226) char(151) char(161)
hash<„#690“> = char(226) char(159) char(152)
hash<„#691“> = char(226) char(159) char(128)
hash<„#692“> = char(226) char(159) char(129)
hash<„#694“> = char(206) char(150)
hash<„#695“> = char(226) char(128) char(148)
hash<„#700“> = char(226) char(129) char(158)
hash<„#703“> = char(226) char(151) char(139) char(226) char(151)
+ char(139) char(226) char(151) char(139)
hash<„#704“> = char(226) char(128) char(148) char(204) char(135)
hash<„#709“> = char(226) char(136) char(187)
hash<„#710“> = char(206) char(154) char(204) char(182)
hash<„#711“> = char(207) char(187)
hash<„#717“> = char(226) char(184) char(128)
hash<„#718“> = char(226) char(184) char(129)
hash<„#719“> = char(226) char(184) char(134)
hash<„#720“> = char(226) char(184) char(135)
hash<„#722“> = char(226) char(132) char(181)
hash<„#724“> = char(226) char(132) char(140)
hash<„#730“> = char(226) char(128) char(148)
hash<„#731“> = char(226) char(143) char(151)
hash<„#732“> = char(226) char(143) char(152)
hash<„#733“> = char(226) char(143) char(153)
hash<„#751“> = char(217) char(161)
hash<„#752“> = char(217) char(162)
hash<„#753“> = char(217) char(163)
hash<„#754“> = char(217) char(164)
hash<„#755“> = char(217) char(165)
hash<„#756“> = char(217) char(166)
hash<„#757“> = char(217) char(167)
hash<„#758“> = char(217) char(168)
hash<„#759“> = char(217) char(169)
hash<„#760“> = char(217) char(160)
hash<„#762“> = char(203) char(153)
hash<„#800“> = char(226) char(156) char(179)
*
hash<„#801“> = „1/2 obol. “
hash<„#802“> = „1/4 obol. “
hash<„#803“> = char(206) char(167)
hash<„#804“> = „/“
hash<„#805“> = char(206) char(164)
hash<„#806“> = char(206) char(154)
hash<„#807“> = „5 obols “
hash<„#808“> = „5/4 obol “
hash<„#811“> = char(206) char(164)
hash<„#812“> = „5 talents “
hash<„#813“> = „10 talents “
hash<„#814“> = „50 talents “
hash<„#815“> = „100 talents “
hash<„#816“> = „500 talents “
hash<„#817“> = „1,000 talents “
hash<„#818“> = „5,000 talents “
hash<„#819“> = „10,000 talents “
hash<„#821“> = char(206) char(163)
hash<„#822“> = „5 staters “
hash<„#823“> = „10 staters “
hash<„#824“> = „50 staters “
hash<„#825“> = „100 staters “
hash<„#826“> = „500 staters “
hash<„#827“> = „1,000 staters “
hash<„#828“> = „5,000 staters “
hash<„#829“> = „10,000 staters “
hash<„#830“> = „50,000 drachmas “
hash<„#831“> = „50,000 talents “
hash<„#832“> = „50,000 staters “
hash<„#833“> = char(206) char(156)
hash<„#834“> = „10 minae “
hash<„#835“> = char(206) char(167)
hash<„#836“> = char(206) char(163)
hash<„#837“> = char(206) char(164)
hash<„#838“> = „5 chalkeioi “
hash<„#839“> = „6 chalkeioi “
hash<„#840“> = „||“
hash<„#841“> = „|||“
hash<„#842“> = char(194) char(183)
hash<„#843“> = „2 drachmas “
hash<„#844“> = char(226) char(129) char(157)
hash<„#845“> = „5 drachmas “
hash<„#846“> = „10 drachmas “
hash<„#847“> = „20 drachmas “
hash<„#848“> = „30 drachmas “
hash<„#850“> = „100,000 drachmas “
hash<„#853“> = char(206) char(153)
hash<„#862“> = char(206) char(148)
hash<„#863“> = „50 “
hash<„#865“> = „500 “
hash<„#866“> = char(206) char(167)
hash<„#867“> = „5,000 “
hash<„#900“> = char(226) char(153) char(164)
hash<„#901“> = char(226) char(156) char(135)
hash<„#927“> = „W“
hash<„#932“> = char(226) char(156) char(179)
hash<„#938“> = char(198) char(167)
hash<„#939“> = „~“
hash<„#1000“> = „1 obol “
hash<„#1001“> = „2 obols “
hash<„#1002“> = „3 obols “
hash<„#1003“> = „4 obols “
hash<„#1004“> = „5 obols “
hash<„#1005“> = char(206) char(167)
hash<„#1006“> = „1 chalkus “
hash<„#1007“> = „2 chalkoi “
hash<„#1008“> = „3 chalkoi “
hash<„#1009“> = „4 chalkoi “
hash<„#1010“> = „5 chalkoi “
hash<„#1011“> = „6 chalkoi “
hash<„#1012“> = „7 chalkoi “
hash<„#1013“> = „1/2 chalkus “
hash<„#1020“> = „<“
hash<„#1021“> = char(206) char(148) char(205) char(180)
hash<„#1022“> = char(206) char(151) char(205) char(180)
hash<„#1023“> = char(206) char(153) char(205) char(180)
hash<„#1024“> = char(206) char(155) char(206) char(146)
hash<„#1100“> = char(226) char(134) char(131)
hash<„#1103“> = char(204) char(163) char(204) char(147)
hash<„#1105“> = char(77) char(204) char(138)
hash<„#1107“> = char(83) char(204) char(181) char(83) char(204) char(182)
hash<„#1108“> = char(88) char(204) char(182)
hash<„#1109“> = „=“
hash<„#1110“> = „-“
hash<„#1111“> = char(194) char(176)
hash<„#1115“> = „|“
hash<„#1116“> = char(198) char(167)
hash<„#1117“> = „Z“
hash<„#1119“> = char(196) char(144)
hash<„#1121“> = „Z“
hash<„#1124“> = char(226) char(132) char(158)
hash<„#1126“> = „O“
hash<„#1127“> = char(118) char(204) char(184)
hash<„#1128“> = char(73) char(204) char(182) char(73) char(204)
+ char(182) char(73) char(204) char(182)
hash<„#1129“> = char(90) char(204) char(182)
hash<„#1130“> = „“
hash<„#1131“> = „\“
hash<„#1132“> = char(92) char(204) char(182)
hash<„#1133“> = char(92) char(204) char(182) char(92) char(204) char(182)
hash<„#1135“> = „9“
hash<„#1136“> = char(226) char(132) char(146)
hash<„#1200“> = char(194) char(162)
hash<„#1201“> = char(226) char(128) char(161)
hash<„#1202“> = char(226) char(130) char(164)
hash<„#1203“> = char(195) char(159)
hash<„#1204“> = char(194) char(176)
hash<„#1209“> = char(196) char(167)
hash<„#1212“> = char(68) char(204) char(182)
hash<„#1213“> = char(197) char(146)
hash<„#1214“> = char(197) char(147)
hash<„#1215“> = char(195) char(134)
hash<„#1216“> = char(195) char(166)
hash<„#1219“> = „$“
hash<„#1220“> = „@“
hash<„#1221“> = char(196) char(177)
hash<„#1222“> = char(196) char(176)
hash<„#1223“> = char(105) char(204) char(182)
hash<„#1224“> = char(226) char(138) char(149)
hash<„#1225“> = char(194) char(169)
hash<„#1226“> = char(226) char(156) char(177)
hash<„#1227“> = char(226) char(128) char(161)
hash<„#1230“> = char(226) char(150) char(173)
hash<„#1312“> = char(77) char(226) char(128) char(153)
hash<„#1313“> = char(226) char(136) char(189)
hash<„#1314“> = char(119) char(204) char(138)
hash<„#1316“> = char(202) char(146)
hash<„#1317“> = char(203) char(153) char(47) char(47) char(46)
hash<„#1318“> = char(226) char(136) char(187)
hash<„#1320“> = char(205) char(181) char(204) char(145)
hash<„#1322“> = char(226) char(153) char(132)
hash<„#1323“> = char(206) char(182) char(204) char(183)
+ char(207) char(130) char(204) char(128)
hash<„#1324“> = char(206) char(184) char(207) char(130) char(204) char(130)
hash<„#1335“> = „//“
hash<„#1337“> = „>“
hash<„#1500“> = char(206) char(179) char(204) char(138)
hash<„#1502“> = char(206) char(167) char(205) char(180)
hash<„#1506“> = char(204) char(128) char(204) char(140)
hash<„#1512“> = „<“
hash<„#1513“> = char(226) char(151) char(161)
hash<„#1514“> = char(195) char(183)
hash<„#1521“> = char(200) char(162)
hash<„#1523“> = char(226) char(129) char(155)
*
*
* Special tables for UNICODE diacritic letters (combining):
*
*
greek_diacritics = table()
greek_diacritics<„?“> = char(204) char(163)
*
* Letter-accent tables
*
*
greek_upper_tab = table(200)
greek_lower_tab = table(200)
*
*
*******************************************************************************
* *
* *
* Uppercase Greek table: *
* semi-automatically generated – do not touch! *
* *
* *
*******************************************************************************
*
*
* „Α“ – 206:145 = CE 91
greek_upper_tab<„A“> = char(206) char(145)
* „Î’“ – 206:146 = CE 92
greek_upper_tab<„B“> = char(206) char(146)
* „Γ“ – 206:147 = CE 93
greek_upper_tab<„G“> = char(206) char(147)
* „Δ“ – 206:148 = CE 94
greek_upper_tab<„D“> = char(206) char(148)
* „Ε“ – 206:149 = CE 95
greek_upper_tab<„E“> = char(206) char(149)
* „Ζ“ – 206:150 = CE 96
greek_upper_tab<„Z“> = char(206) char(150)
* „Η“ – 206:151 = CE 97
greek_upper_tab<„H“> = char(206) char(151)
* „Θ“ – 206:152 = CE 98
greek_upper_tab<„Q“> = char(206) char(152)
* „Ι“ – 206:153 = CE 99
greek_upper_tab<„I“> = char(206) char(153)
* Attic aspiration
greek_upper_tab<„J“> = „H“
* „Κ“ – 206:154 = CE 9A
greek_upper_tab<„K“> = char(206) char(154)
* „Λ“ – 206:155 = CE 9B
greek_upper_tab<„L“> = char(206) char(155)
* „Îœ“ – 206:156 = CE 9C
greek_upper_tab<„M“> = char(206) char(156)
* „Ν“ – 206:157 = CE 9D
greek_upper_tab<„N“> = char(206) char(157)
* „Ξ“ – 206:158 = CE 9E
greek_upper_tab<„C“> = char(206) char(158)
* „Ο“ – 206:159 = CE 9F
greek_upper_tab<„O“> = char(206) char(159)
* „Π“ – 206:160 = CE A0
greek_upper_tab<„P“> = char(206) char(160)
* „Ρ“ – 206:161 = CE A1
greek_upper_tab<„R“> = char(206) char(161)
* „Σ“ – 206:163 = CE A3
greek_upper_tab<„S“> = char(206) char(163)
* „Τ“ – 206:164 = CE A4
greek_upper_tab<„T“> = char(206) char(164)
* „Î¥“ – 206:165 = CE A5
greek_upper_tab<„U“> = char(206) char(165)
* „Φ“ – 206:166 = CE A6
greek_upper_tab<„F“> = char(206) char(166)
* „Χ“ – 206:167 = CE A7
greek_upper_tab<„X“> = char(206) char(167)
* „Ψ“ – 206:168 = CE A8
greek_upper_tab<„Y“> = char(206) char(168)
* „Ω“ – 206:169 = CE A9
greek_upper_tab<„W“> = char(206) char(169)
* Ἀ – 225:188:136 = E1 BC 88
greek_upper_tab<„)A“> = char(225) char(188) char(136)
* Ἁ – 225:188:137 = E1 BC 89
greek_upper_tab<„(A“> = char(225) char(188) char(137)
* Ἂ – 225:188:138 = E1 BC 8A
greek_upper_tab<„)A“> = char(225) char(188) char(138)
* Ἃ – 225:188:139 = E1 BC 8B
greek_upper_tab<„(A“> = char(225) char(188) char(139)
* Ἄ – 225:188:140 = E1 BC 8C
greek_upper_tab<„)/A“> = char(225) char(188) char(140)
* Ἅ – 225:188:141 = E1 BC 8D
greek_upper_tab<„(/A“> = char(225) char(188) char(141)
* Ἆ – 225:188:142 = E1 BC 8E
greek_upper_tab<„)=A“> = char(225) char(188) char(142)
* Ἇ – 225:188:143 = E1 BC 8F
greek_upper_tab<„(=A“> = char(225) char(188) char(143)
* Ἐ – 225:188:152 = E1 BC 98
greek_upper_tab<„)E“> = char(225) char(188) char(152)
* á¼™ – 225:188:153 = E1 BC 99
greek_upper_tab<„(E“> = char(225) char(188) char(153)
* Ἒ – 225:188:154 = E1 BC 9A
greek_upper_tab<„)E“> = char(225) char(188) char(154)
* á¼› – 225:188:155 = E1 BC 9B
greek_upper_tab<„(E“> = char(225) char(188) char(155)
* Ἔ – 225:188:156 = E1 BC 9C
greek_upper_tab<„)/E“> = char(225) char(188) char(156)
* Ἕ – 225:188:157 = E1 BC 9D
greek_upper_tab<„(/E“> = char(225) char(188) char(157)
* Ἠ – 225:188:168 = E1 BC A8
greek_upper_tab<„)H“> = char(225) char(188) char(168)
* Ἡ – 225:188:169 = E1 BC A9
greek_upper_tab<„(H“> = char(225) char(188) char(169)
* Ἢ – 225:188:170 = E1 BC AA
greek_upper_tab<„)H“> = char(225) char(188) char(170)
* Ἣ – 225:188:171 = E1 BC AB
greek_upper_tab<„(H“> = char(225) char(188) char(171)
* Ἤ – 225:188:172 = E1 BC AC
greek_upper_tab<„)/H“> = char(225) char(188) char(172)
* á¼­ – 225:188:173 = E1 BC AD
greek_upper_tab<„(/H“> = char(225) char(188) char(173)
* á¼® – 225:188:174 = E1 BC AE
greek_upper_tab<„)=H“> = char(225) char(188) char(174)
* Ἧ – 225:188:175 = E1 BC AF
greek_upper_tab<„(=H“> = char(225) char(188) char(175)
* Ἰ – 225:188:184 = E1 BC B8
greek_upper_tab<„)I“> = char(225) char(188) char(184)
* á¼¹ – 225:188:185 = E1 BC B9
greek_upper_tab<„(I“> = char(225) char(188) char(185)
* Ἲ – 225:188:186 = E1 BC BA
greek_upper_tab<„)I“> = char(225) char(188) char(186)
* á¼» – 225:188:187 = E1 BC BB
greek_upper_tab<„(I“> = char(225) char(188) char(187)
* á¼¼ – 225:188:188 = E1 BC BC
greek_upper_tab<„)/I“> = char(225) char(188) char(188)
* á¼½ – 225:188:189 = E1 BC BD
greek_upper_tab<„(/I“> = char(225) char(188) char(189)
* á¼¾ – 225:188:190 = E1 BC BE
greek_upper_tab<„)=I“> = char(225) char(188) char(190)
* Ἷ – 225:188:191 = E1 BC BF
greek_upper_tab<„(=I“> = char(225) char(188) char(191)
* Ὀ – 225:189:136 = E1 BD 88
greek_upper_tab<„)O“> = char(225) char(189) char(136)
* Ὁ – 225:189:137 = E1 BD 89
greek_upper_tab<„(O“> = char(225) char(189) char(137)
* Ὂ – 225:189:138 = E1 BD 8A
greek_upper_tab<„)O“> = char(225) char(189) char(138)
* Ὃ – 225:189:139 = E1 BD 8B
greek_upper_tab<„(O“> = char(225) char(189) char(139)
* Ὄ – 225:189:140 = E1 BD 8C
greek_upper_tab<„)/O“> = char(225) char(189) char(140)
* Ὅ – 225:189:141 = E1 BD 8D
greek_upper_tab<„(/O“> = char(225) char(189) char(141)
* ὎ – 225:189:142 = E1 BD 8E
greek_upper_tab<„)=O“> = char(225) char(189) char(142)
* ὏ – 225:189:143 = E1 BD 8F
greek_upper_tab<„(=O“> = char(225) char(189) char(143)
* ὘ – 225:189:152 = E1 BD 98
***
*** Diese Form wird von den meisten fonts noch nicht unterstuetzt:
***
*** greek_upper_tab<„)U“> = char(225) char(189) char(152)
***
*** Statt dessen verwenden wir ) plus normales Y:
***
greek_upper_tab<„)U“> = char(225) char(190) char(191) char(206) char(165)
* á½™ – 225:189:153 = E1 BD 99
greek_upper_tab<„(U“> = char(225) char(189) char(153)
* ὚ – 225:189:154 = E1 BD 9A
greek_upper_tab<„)U“> = char(225) char(189) char(154)
* á½› – 225:189:155 = E1 BD 9B
greek_upper_tab<„(U“> = char(225) char(189) char(155)
* ὜ – 225:189:156 = E1 BD 9C
greek_upper_tab<„)/U“> = char(225) char(189) char(156)
* Ὕ – 225:189:157 = E1 BD 9D
greek_upper_tab<„(/U“> = char(225) char(189) char(157)
* ὞ – 225:189:158 = E1 BD 9E
greek_upper_tab<„)=U“> = char(225) char(189) char(158)
* Ὗ – 225:189:159 = E1 BD 9F
greek_upper_tab<„(=U“> = char(225) char(189) char(159)
* Ὠ – 225:189:168 = E1 BD A8
greek_upper_tab<„)W“> = char(225) char(189) char(168)
* Ὡ – 225:189:169 = E1 BD A9
greek_upper_tab<„(W“> = char(225) char(189) char(169)
* Ὢ – 225:189:170 = E1 BD AA
greek_upper_tab<„)W“> = char(225) char(189) char(170)
* Ὣ – 225:189:171 = E1 BD AB
greek_upper_tab<„(W“> = char(225) char(189) char(171)
* Ὤ – 225:189:172 = E1 BD AC
greek_upper_tab<„)/W“> = char(225) char(189) char(172)
* á½­ – 225:189:173 = E1 BD AD
greek_upper_tab<„(/W“> = char(225) char(189) char(173)
* á½® – 225:189:174 = E1 BD AE
greek_upper_tab<„)=W“> = char(225) char(189) char(174)
* Ὧ – 225:189:175 = E1 BD AF
greek_upper_tab<„(=W“> = char(225) char(189) char(175)
* ᾈ – 225:190:136 = E1 BE 88
greek_upper_tab<„)A|“> = char(225) char(190) char(136)
* ᾉ – 225:190:137 = E1 BE 89
greek_upper_tab<„(A|“> = char(225) char(190) char(137)
* ᾊ – 225:190:138 = E1 BE 8A
greek_upper_tab<„)A|“> = char(225) char(190) char(138)
* ᾋ – 225:190:139 = E1 BE 8B
greek_upper_tab<„(A|“> = char(225) char(190) char(139)
* ᾌ – 225:190:140 = E1 BE 8C
greek_upper_tab<„)/A|“> = char(225) char(190) char(140)
* ᾍ – 225:190:141 = E1 BE 8D
greek_upper_tab<„(/A|“> = char(225) char(190) char(141)
* ᾎ – 225:190:142 = E1 BE 8E
greek_upper_tab<„)=A|“> = char(225) char(190) char(142)
* ᾏ – 225:190:143 = E1 BE 8F
greek_upper_tab<„(=A|“> = char(225) char(190) char(143)
* ᾘ – 225:190:152 = E1 BE 98
greek_upper_tab<„)H|“> = char(225) char(190) char(152)
* á¾™ – 225:190:153 = E1 BE 99
greek_upper_tab<„(H|“> = char(225) char(190) char(153)
* ᾚ – 225:190:154 = E1 BE 9A
greek_upper_tab<„)H|“> = char(225) char(190) char(154)
* á¾› – 225:190:155 = E1 BE 9B
greek_upper_tab<„(H|“> = char(225) char(190) char(155)
* ᾜ – 225:190:156 = E1 BE 9C
greek_upper_tab<„)/H|“> = char(225) char(190) char(156)
* ᾝ – 225:190:157 = E1 BE 9D
greek_upper_tab<„(/H|“> = char(225) char(190) char(157)
* ᾞ – 225:190:158 = E1 BE 9E
greek_upper_tab<„)=H|“> = char(225) char(190) char(158)
* ᾟ – 225:190:159 = E1 BE 9F
greek_upper_tab<„(=H|“> = char(225) char(190) char(159)
* ᾨ – 225:190:168 = E1 BE A8
greek_upper_tab<„)W|“> = char(225) char(190) char(168)
* ᾩ – 225:190:169 = E1 BE A9
greek_upper_tab<„(W|“> = char(225) char(190) char(169)
* ᾪ – 225:190:170 = E1 BE AA
greek_upper_tab<„)W|“> = char(225) char(190) char(170)
* ᾫ – 225:190:171 = E1 BE AB
greek_upper_tab<„(W|“> = char(225) char(190) char(171)
* ᾬ – 225:190:172 = E1 BE AC
greek_upper_tab<„)/W|“> = char(225) char(190) char(172)
* á¾­ – 225:190:173 = E1 BE AD
greek_upper_tab<„(/W|“> = char(225) char(190) char(173)
* á¾® – 225:190:174 = E1 BE AE
greek_upper_tab<„)=W|“> = char(225) char(190) char(174)
* ᾯ – 225:190:175 = E1 BE AF
greek_upper_tab<„(=W|“> = char(225) char(190) char(175)
* Ὰ – 225:190:186 = E1 BE BA
greek_upper_tab<„A“> = char(225) char(190) char(186)
* á¾» – 225:190:187 = E1 BE BB
greek_upper_tab<„/A“> = char(225) char(190) char(187)
* á¾¼ – 225:190:188 = E1 BE BC
greek_upper_tab<„A|“> = char(225) char(190) char(188)
* Ὲ – 225:191:136 = E1 BF 88
greek_upper_tab<„E“> = char(225) char(191) char(136)
* Έ – 225:191:137 = E1 BF 89
greek_upper_tab<„/E“> = char(225) char(191) char(137)
* á¿Š – 225:191:138 = E1 BF 8A
greek_upper_tab<„H“> = char(225) char(191) char(138)
* á¿‹ – 225:191:139 = E1 BF 8B
greek_upper_tab<„/H“> = char(225) char(191) char(139)
* á¿Œ – 225:191:140 = E1 BF 8C gross
greek_upper_tab<„H|“> = char(225) char(191) char(140)
* á¿š – 225:191:154 = E1 BF 9A
greek_upper_tab<„I“> = char(225) char(191) char(154)
* á¿› – 225:191:155 = E1 BF 9B
greek_upper_tab<„/I“> = char(225) char(191) char(155)
* Ὺ – 225:191:170 = E1 BF AA
greek_upper_tab<„U“> = char(225) char(191) char(170)
* á¿« – 225:191:171 = E1 BF AB
greek_upper_tab<„/U“> = char(225) char(191) char(171)
* Ῥ – 225:191:172 = E1 BF AC
greek_upper_tab<„(R“> = char(225) char(191) char(172)
* Ὸ – 225:191:184 = E1 BF B8
greek_upper_tab<„O“> = char(225) char(191) char(184)
* Ό – 225:191:185 = E1 BF B9
greek_upper_tab<„/O“> = char(225) char(191) char(185)
* Ὼ – 225:191:186 = E1 BF BA
greek_upper_tab<„W“> = char(225) char(191) char(186)
* á¿» – 225:191:187 = E1 BF BB
greek_upper_tab<„/W“> = char(225) char(191) char(187)
* ῼ – 225:191:188 = E1 BF BC
greek_upper_tab<„W|“> = char(225) char(191) char(188)
* alpha iota sub á¾¼
greek_upper_tab<„A|“> = char(225) char(190) char(188)
* upsilon and dihaeresis Ϋ
greek_upper_tab<„U+“> = char(206) char(171)
* iota dihaeresis Ϊ
greek_upper_tab<„I+“> = char(206) char(170)
* spiritus lenis: ῾
greek_upper_tab<„)“> = char(225) char(191) char(190)
* digamma capital: Ϝ
greek_upper_tab<„V“> = char(207) char(156)
*
*
*******************************************************************************
* *
* *
* Lower Greek table: *
* *
* *
*******************************************************************************
*
* „α“ – 206:177 = CE B1
greek_lower_tab<„A“> = char(206) char(177)
* „β“ – 206:178 = CE B2
greek_lower_tab<„B“> = char(206) char(178)
* „γ“ – 206:179 = CE B3
greek_lower_tab<„G“> = char(206) char(179)
* „δ“ – 206:180 = CE B4
greek_lower_tab<„D“> = char(206) char(180)
* „δ'“ – 206:180 = CE B4 27 erroneous d‘, present in some texts on the TLG CD E
greek_lower_tab<„D/“> = char(206) char(180) char(39)
* „ε“ – 206:181 = CE B5
greek_lower_tab<„E“> = char(206) char(181)
* „ζ“ – 206:182 = CE B6
greek_lower_tab<„Z“> = char(206) char(182)
* „η“ – 206:183 = CE B7
greek_lower_tab<„H“> = char(206) char(183)
* „θ“ – 206:184 = CE B8
greek_lower_tab<„Q“> = char(206) char(184)
* „ι“ – 206:185 = CE B9
greek_lower_tab<„I“> = char(206) char(185)
* Attic aspiration:
greek_lower_tab<„J“> = „h“
* „κ“ – 206:186 = CE BA
greek_lower_tab<„K“> = char(206) char(186)
* „λ“ – 206:187 = CE BB
greek_lower_tab<„L“> = char(206) char(187)
* „μ“ – 206:188 = CE BC
greek_lower_tab<„M“> = char(206) char(188)
* „ν“ – 206:189 = CE BD
greek_lower_tab<„N“> = char(206) char(189)
* „ξ“ – 206:190 = CE BE
greek_lower_tab<„C“> = char(206) char(190)
* „ο“ – 206:191 = CE BF
greek_lower_tab<„O“> = char(206) char(191)
* „Ï€“ – 207:128 = CF 80
greek_lower_tab<„P“> = char(207) char(128)
* „ρ“ – 207:129 = CF 81
greek_lower_tab<„R“> = char(207) char(129)
* „Ï‚“ – 207:130 = CF 82 – final sigma
greek_lower_tab<„ä“> = char(207) char(130)
* „σ“ – 207:131 = CF 83
greek_lower_tab<„S“> = char(207) char(131)
* „Ï„“ – 207:132 = CF 84
greek_lower_tab<„T“> = char(207) char(132)
* „Ï…“ – 207:133 = CF 85
greek_lower_tab<„U“> = char(207) char(133)
* „φ“ – 207:134 = CF 86
greek_lower_tab<„F“> = char(207) char(134)
* „χ“ – 207:135 = CF 87
greek_lower_tab<„X“> = char(207) char(135)
* „ψ“ – 207:136 = CF 88
greek_lower_tab<„Y“> = char(207) char(136)
* „ω“ – 207:137 = CF 89
greek_lower_tab<„W“> = char(207) char(137)
* „ά“ – 206:172 = CE AC
greek_lower_tab<„A/“> = char(206) char(172)
* „έ“ – 206:173 = CE AD
*** greek_lower_tab<„E/“> = char(206) char(173)
* „ή“ – 206:174 = CE AE
*** greek_lower_tab<„H/“> = char(206) char(174)
* „ί“ – 206:175 = CE AF
*** greek_lower_tab<„I/“> = char(206) char(175)
* „ÏŒ“ – 207:140 = CF 8C
*** greek_lower_tab<„O/“> = char(207) char(140)
* „ύ“ – 207:141 = CF 8D
*** greek_lower_tab<„U/“> = char(207) char(141)
* „ÏŽ“ – 207:142 = CF 8E
*** greek_lower_tab<„W/“> = char(207) char(142)
* á¼€ – 225:188:128 = E1 BC 80
greek_lower_tab<„A)“> = char(225) char(188) char(128)
* ἁ – 225:188:129 = E1 BC 81
greek_lower_tab<„A(„> = char(225) char(188) char(129)
* ἂ – 225:188:130 = E1 BC 82
greek_lower_tab<„A)“> = char(225) char(188) char(130)
* ἃ – 225:188:131 = E1 BC 83
greek_lower_tab<„A(„> = char(225) char(188) char(131)
* ἄ – 225:188:132 = E1 BC 84
greek_lower_tab<„A)/“> = char(225) char(188) char(132)
* á¼… – 225:188:133 = E1 BC 85
greek_lower_tab<„A(/“> = char(225) char(188) char(133)
* ἆ – 225:188:134 = E1 BC 86
greek_lower_tab<„A)=“> = char(225) char(188) char(134)
* ἇ – 225:188:135 = E1 BC 87
greek_lower_tab<„A(=“> = char(225) char(188) char(135)
* ἐ – 225:188:144 = E1 BC 90
greek_lower_tab<„E)“> = char(225) char(188) char(144)
* ἑ – 225:188:145 = E1 BC 91
greek_lower_tab<„E(„> = char(225) char(188) char(145)
* á¼’ – 225:188:146 = E1 BC 92
greek_lower_tab<„E)“> = char(225) char(188) char(146)
greek_lower_tab<„E)“> = char(225) char(188) char(146)
* ἓ – 225:188:147 = E1 BC 93
greek_lower_tab<„E(„> = char(225) char(188) char(147)
greek_lower_tab<„E(„> = char(225) char(188) char(147)
* á¼” – 225:188:148 = E1 BC 94
greek_lower_tab<„E)/“> = char(225) char(188) char(148)
greek_lower_tab<„E/)“> = char(225) char(188) char(148)
* ἕ – 225:188:149 = E1 BC 95
greek_lower_tab<„E(/“> = char(225) char(188) char(149)
greek_lower_tab<„E/(„> = char(225) char(188) char(149)
* á¼  – 225:188:160 = E1 BC A0
greek_lower_tab<„H)“> = char(225) char(188) char(160)
* ἡ – 225:188:161 = E1 BC A1
greek_lower_tab<„H(„> = char(225) char(188) char(161)
* á¼¢ – 225:188:162 = E1 BC A2
greek_lower_tab<„H)“> = char(225) char(188) char(162)
* á¼£ – 225:188:163 = E1 BC A3
greek_lower_tab<„H(„> = char(225) char(188) char(163)
* ἤ – 225:188:164 = E1 BC A4
greek_lower_tab<„H)/“> = char(225) char(188) char(164)
* á¼¥ – 225:188:165 = E1 BC A5
greek_lower_tab<„H(/“> = char(225) char(188) char(165)
* ἦ – 225:188:166 = E1 BC A6
greek_lower_tab<„H)=“> = char(225) char(188) char(166)
greek_lower_tab<„H=)“> = char(225) char(188) char(166)
* ἧ – 225:188:167 = E1 BC A7
greek_lower_tab<„H(=“> = char(225) char(188) char(167)
greek_lower_tab<„H=(„> = char(225) char(188) char(167)
* á¼° – 225:188:176 = E1 BC B0
greek_lower_tab<„I)“> = char(225) char(188) char(176)
* á¼± – 225:188:177 = E1 BC B1
greek_lower_tab<„I(„> = char(225) char(188) char(177)
* á¼² – 225:188:178 = E1 BC B2
greek_lower_tab<„I)“> = char(225) char(188) char(178)
greek_lower_tab<„I)“> = char(225) char(188) char(178)
* á¼³ – 225:188:179 = E1 BC B3
greek_lower_tab<„I(„> = char(225) char(188) char(179)
greek_lower_tab<„I(„> = char(225) char(188) char(179)
* á¼´ – 225:188:180 = E1 BC B4
greek_lower_tab<„I)/“> = char(225) char(188) char(180)
greek_lower_tab<„I/)“> = char(225) char(188) char(180)
* á¼µ – 225:188:181 = E1 BC B5
greek_lower_tab<„I(/“> = char(225) char(188) char(181)
greek_lower_tab<„I/(„> = char(225) char(188) char(181)
* ἶ – 225:188:182 = E1 BC B6
greek_lower_tab<„I)=“> = char(225) char(188) char(182)
greek_lower_tab<„I=)“> = char(225) char(188) char(182)
* á¼· – 225:188:183 = E1 BC B7
greek_lower_tab<„I(=“> = char(225) char(188) char(183)
greek_lower_tab<„I=(„> = char(225) char(188) char(183)
* á½€ – 225:189:128 = E1 BD 80
greek_lower_tab<„O)“> = char(225) char(189) char(128)
* ὁ – 225:189:129 = E1 BD 81
greek_lower_tab<„O(„> = char(225) char(189) char(129)
* ὂ – 225:189:130 = E1 BD 82
greek_lower_tab<„O)“> = char(225) char(189) char(130)
greek_lower_tab<„O)“> = char(225) char(189) char(130)
* ὃ – 225:189:131 = E1 BD 83
greek_lower_tab<„O(„> = char(225) char(189) char(131)
greek_lower_tab<„O(„> = char(225) char(189) char(131)
* ὄ – 225:189:132 = E1 BD 84
greek_lower_tab<„O)/“> = char(225) char(189) char(132)
greek_lower_tab<„O/)“> = char(225) char(189) char(132)
* á½… – 225:189:133 = E1 BD 85
greek_lower_tab<„O(/“> = char(225) char(189) char(133)
greek_lower_tab<„O/(„> = char(225) char(189) char(133)
* ὆ – 225:189:134 = E1 BD 86
greek_lower_tab<„O)=“> = char(225) char(189) char(128) char(204) char(145)
greek_lower_tab<„O=)“> = char(225) char(189) char(128) char(204) char(145)
* ὇ – 225:189:135 = E1 BD 87
greek_lower_tab<„O(=“> = char(225) char(189) char(129) char(204) char(145)
greek_lower_tab<„O=(„> = char(225) char(189) char(129) char(204) char(145)
* ὐ – 225:189:144 = E1 BD 90
greek_lower_tab<„U)“> = char(225) char(189) char(144)
* ὑ – 225:189:145 = E1 BD 91
greek_lower_tab<„U(„> = char(225) char(189) char(145)
* á½’ – 225:189:146 = E1 BD 92
greek_lower_tab<„U)“> = char(225) char(189) char(146)
greek_lower_tab<„U)“> = char(225) char(189) char(146)
* ὓ – 225:189:147 = E1 BD 93
greek_lower_tab<„U(„> = char(225) char(189) char(147)
greek_lower_tab<„U(„> = char(225) char(189) char(147)
* á½” – 225:189:148 = E1 BD 94
greek_lower_tab<„U)/“> = char(225) char(189) char(148)
greek_lower_tab<„U/)“> = char(225) char(189) char(148)
* ὕ – 225:189:149 = E1 BD 95
greek_lower_tab<„U(/“> = char(225) char(189) char(149)
greek_lower_tab<„U/(„> = char(225) char(189) char(149)
* á½– – 225:189:150 = E1 BD 96
greek_lower_tab<„U)=“> = char(225) char(189) char(150)
greek_lower_tab<„U=)“> = char(225) char(189) char(150)
* á½— – 225:189:151 = E1 BD 97
greek_lower_tab<„U(=“> = char(225) char(189) char(151)
greek_lower_tab<„U=(„> = char(225) char(189) char(151)
* á½  – 225:189:160 = E1 BD A0
greek_lower_tab<„W)“> = char(225) char(189) char(160)
* ὡ – 225:189:161 = E1 BD A1
greek_lower_tab<„W(„> = char(225) char(189) char(161)
* á½¢ – 225:189:162 = E1 BD A2
greek_lower_tab<„W)“> = char(225) char(189) char(162)
greek_lower_tab<„W)“> = char(225) char(189) char(162)
* á½£ – 225:189:163 = E1 BD A3
greek_lower_tab<„W(„> = char(225) char(189) char(163)
greek_lower_tab<„W(„> = char(225) char(189) char(163)
* ὤ – 225:189:164 = E1 BD A4
greek_lower_tab<„W)/“> = char(225) char(189) char(164)
greek_lower_tab<„W/)“> = char(225) char(189) char(164)
* á½¥ – 225:189:165 = E1 BD A5
greek_lower_tab<„W(/“> = char(225) char(189) char(165)
greek_lower_tab<„W/(„> = char(225) char(189) char(165)
* ὦ – 225:189:166 = E1 BD A6
greek_lower_tab<„W)=“> = char(225) char(189) char(166)
greek_lower_tab<„W=)“> = char(225) char(189) char(166)
* ὧ – 225:189:167 = E1 BD A7
greek_lower_tab<„W(=“> = char(225) char(189) char(167)
greek_lower_tab<„W=(„> = char(225) char(189) char(167)
* á½± – 225:189:177 = E1 BD B1
greek_lower_tab<„A/“> = char(225) char(189) char(177)
* á½² – 225:189:178 = E1 BD B2
greek_lower_tab<„E“> = char(225) char(189) char(178)
* á½³ – 225:189:179 = E1 BD B3
greek_lower_tab<„E/“> = char(225) char(189) char(179)
* á½´ – 225:189:180 = E1 BD B4
greek_lower_tab<„H“> = char(225) char(189) char(180)
* á½µ – 225:189:181 = E1 BD B5
greek_lower_tab<„H/“> = char(225) char(189) char(181)
* ὶ – 225:189:182 = E1 BD B6
greek_lower_tab<„I“> = char(225) char(189) char(182)
* á½· – 225:189:183 = E1 BD B7
greek_lower_tab<„I/“> = char(225) char(189) char(183)
* ὸ – 225:189:184 = E1 BD B8
greek_lower_tab<„O“> = char(225) char(189) char(184)
* á½¹ – 225:189:185 = E1 BD B9
greek_lower_tab<„O/“> = char(225) char(189) char(185)
* ὺ – 225:189:186 = E1 BD BA
greek_lower_tab<„U“> = char(225) char(189) char(186)
* á½» – 225:189:187 = E1 BD BB
greek_lower_tab<„U/“> = char(225) char(189) char(187)
* á½¼ – 225:189:188 = E1 BD BC
greek_lower_tab<„W“> = char(225) char(189) char(188)
* á½½ – 225:189:189 = E1 BD BD
greek_lower_tab<„W/“> = char(225) char(189) char(189)
* á¾€ – 225:190:128 = E1 BE 80
greek_lower_tab<„A)|“> = char(225) char(190) char(128)
* ᾁ – 225:190:129 = E1 BE 81
greek_lower_tab<„A(|“> = char(225) char(190) char(129)
* ᾂ – 225:190:130 = E1 BE 82
greek_lower_tab<„A)|“> = char(225) char(190) char(130)
* ᾃ – 225:190:131 = E1 BE 83
greek_lower_tab<„A(|“> = char(225) char(190) char(131)
* ᾄ – 225:190:132 = E1 BE 84
greek_lower_tab<„A)|“> = char(225) char(190) char(132)
* á¾… – 225:190:133 = E1 BE 85
greek_lower_tab<„A(/|“> = char(225) char(190) char(133)
* ᾆ – 225:190:134 = E1 BE 86
greek_lower_tab<„A)=|“> = char(225) char(190) char(134)
* ᾇ – 225:190:135 = E1 BE 87
greek_lower_tab<„A(=|“> = char(225) char(190) char(135)
* ᾐ – 225:190:144 = E1 BE 90
greek_lower_tab<„H)|“> = char(225) char(190) char(144)
* ᾑ – 225:190:145 = E1 BE 91
greek_lower_tab<„H(|“> = char(225) char(190) char(145)
* á¾’ – 225:190:146 = E1 BE 92
greek_lower_tab<„H)|“> = char(225) char(190) char(146)
* ᾓ – 225:190:147 = E1 BE 93
greek_lower_tab<„H(|“> = char(225) char(190) char(147)
* á¾” – 225:190:148 = E1 BE 94
greek_lower_tab<„H)/|“> = char(225) char(190) char(148)
* ᾕ – 225:190:149 = E1 BE 95
greek_lower_tab<„H(/|“> = char(225) char(190) char(149)
* á¾– – 225:190:150 = E1 BE 96
greek_lower_tab<„H)=|“> = char(225) char(190) char(150)
greek_lower_tab<„H=)|“> = char(225) char(190) char(150)
* á¾— – 225:190:151 = E1 BE 97
greek_lower_tab<„H(=|“> = char(225) char(190) char(151)
greek_lower_tab<„H=(|“> = char(225) char(190) char(151)
* á¾  – 225:190:160 = E1 BE A0
greek_lower_tab<„W)|“> = char(225) char(190) char(160)
* ᾡ – 225:190:161 = E1 BE A1
greek_lower_tab<„W(|“> = char(225) char(190) char(161)
* á¾¢ – 225:190:162 = E1 BE A2
greek_lower_tab<„W)|“> = char(225) char(190) char(162)
* á¾£ – 225:190:163 = E1 BE A3
greek_lower_tab<„W(|“> = char(225) char(190) char(163)
* ᾤ – 225:190:164 = E1 BE A4
greek_lower_tab<„W)/|“> = char(225) char(190) char(164)
* á¾¥ – 225:190:165 = E1 BE A5
greek_lower_tab<„W(/|“> = char(225) char(190) char(165)
* ᾦ – 225:190:166 = E1 BE A6
greek_lower_tab<„W)=|“> = char(225) char(190) char(166)
* ᾧ – 225:190:167 = E1 BE A7
greek_lower_tab<„W(=|“> = char(225) char(190) char(167)
* á¾² – 225:190:178 = E1 BE B2
greek_lower_tab<„A|“> = char(225) char(190) char(178)
* á½° – 225:189:176 = E1 BD B0
greek_lower_tab<„A“> = char(225) char(189) char(176)
* á¾´ – 225:190:180 = E1 BE B4
greek_lower_tab<„A/“> = char(225) char(190) char(180)
* ᾶ – 225:190:182 = E1 BE B6
greek_lower_tab<„A=“> = char(225) char(190) char(182)
* á¾· – 225:190:183 = E1 BE B7
greek_lower_tab<„A=|“> = char(225) char(190) char(183)
* á¿‚ – 225:191:130 = E1 BF 82
greek_lower_tab<„H|“> = char(225) char(191) char(130)
* ῃ – 225:191:131 = E1 BF 83
greek_lower_tab<„H|“> = char(225) char(191) char(131)
* á¿„ – 225:191:132 = E1 BF 84
greek_lower_tab<„H/|“> = char(225) char(191) char(132)
* ῆ – 225:191:134 = E1 BF 86
greek_lower_tab<„H=“> = char(225) char(191) char(134)
* ῇ – 225:191:135 = E1 BF 87
greek_lower_tab<„H=|“> = char(225) char(191) char(135)
* á¿’ – 225:191:146 = E1 BF 92
greek_lower_tab<„I+“> = char(225) char(191) char(146)
* á¿“ – 225:191:147 = E1 BF 93
greek_lower_tab<„I/+“> = char(225) char(191) char(147)
* á¿– – 225:191:150 = E1 BF 96
greek_lower_tab<„I=“> = char(225) char(191) char(150)
* á¿— – 225:191:151 = E1 BF 97
greek_lower_tab<„I=+“> = char(225) char(191) char(151)
* á¿¢ – 225:191:162 = E1 BF A2
greek_lower_tab<„U+“> = char(225) char(191) char(162)
* á¿£ – 225:191:163 = E1 BF A3
greek_lower_tab<„U/+“> = char(225) char(191) char(163)
* ῤ – 225:191:164 = E1 BF A4
greek_lower_tab<„R)“> = char(225) char(191) char(164)
* á¿¥ – 225:191:165 = E1 BF A5
greek_lower_tab<„R(„> = char(225) char(191) char(165)
* ῦ – 225:191:166 = E1 BF A6
greek_lower_tab<„U=“> = char(225) char(191) char(166)
* ῧ – 225:191:167 = E1 BF A7
greek_lower_tab<„U=+“> = char(225) char(191) char(167)
* ῲ – 225:191:178 = E1 BF B2
greek_lower_tab<„W|“> = char(225) char(191) char(178)
* ῳ – 225:191:179 = E1 BF B3
greek_lower_tab<„W|“> = char(225) char(191) char(179)
* á¿´ – 225:191:180 = E1 BF B4
greek_lower_tab<„W/|“> = char(225) char(191) char(180)
* ῶ – 225:191:182 = E1 BF B6
greek_lower_tab<„W=“> = char(225) char(191) char(182)
* á¿· – 225:191:183 = E1 BF B7
greek_lower_tab<„W=|“> = char(225) char(191) char(183)
* This is a variant which ocurs in some of the files, although it should be regarded
* as an error:
greek_lower_tab<„W|=“> = char(225) char(191) char(183)
* alpha and iota sub: á¾³ 225:190:179 E1 BE B3
greek_lower_tab<„A|“> = char(225) char(190) char(179)
* alpha and iota sub: á¾´
greek_lower_tab<„A/|“> = char(225) char(190) char(180)
* There were several errors with U+ here and in the upercase table, B.M. July 2009
* upsilon and dihaeresis Ï‹
greek_lower_tab<„U+“> = char(207) char(139)
* iota and dihaeresis ÏŠ
greek_lower_tab<„I+“> = char(207) char(138)
* eta and dihaeresis η̈
greek_lower_tab<„H+“> = char(206) char(183) char(204) char(136)
* omikron and dihaeresis ο̈
greek_lower_tab<„O+“> = char(206) char(191) char(204) char(136)
* O/+ ό̈
greek_lower_tab<„O+/“> = char(207) char(140) char(204) char(136)
greek_lower_tab<„O/+“> = char(207) char(140) char(204) char(136)
* alpha, akzent, spiritus and iota: ᾄ
greek_lower_tab<„A)/|“> = char(225) char(190) char(132)
* ommikron and circumflex: ο̑
greek_lower_tab<„O=“> = char(206) char(191) char(204) char(145)
* epsilon and circumflex: ε̑
greek_lower_tab<„E=“> = char(206) char(181) char(204) char(145)
* epsilon and circumflex: ἑ̓
greek_lower_tab<„E(=“> = char(225) char(188) char(145) char(204) char(147)
* epsilon and circumflex: ἐ̓
greek_lower_tab<„E)=“> = char(225) char(188) char(144) char(204) char(147)
* digamma lower: f
greek_lower_tab<„V“> = char(207) char(157)
* Variant sigmas:
* ä = final sigma
* ä see above (already defined)
* ü = medial sigma
*
greek_lower_tab<„ü“> = char(207) char(131)
*
* ö = lunate sigma
*
greek_lower_tab<„ö“> = char(207) char(178)
*
* Table for explicit sigma shape conversion:
*
sigmas = table()
sigmas<„1“> = „ü“
sigmas<„2“> = „ä“
sigmas<„3“> = „ö“
*
* Table for various diacritical signs in Greek and Latin:
*
diacritics = table()
diacritics<„+“> = char(204) char(136)
diacritics<„“> = char(204) char(128)
diacritics<„/“> = char(204) char(129)
diacritics<„=“> = char(204) char(130)
*
*
*******************************************************************************
*
* Define functions for later use. The main function to translate
* a string from beta code to utf8 is beta_convert(string)
* This function is a rather lengthy construct which uses the aforementioned
* eating-up algorithm.
*
* In SNOBOL4 functions must be DEFINEd, and the defining statement must be passed,
* so we use labels to „pass around“ the function body. This is unnecessary in most
* algorithmic languages
* b1-b5 and s1-s5 are local temporary variables which have to be declared here
*
* Our main translating function will consist of a really huge „switch“ kind of
* construction. In SNOBOL4, this is most easily implemented using the indirect
* goto. An indirect goto consists of a string, addressed as a label. Effectively,
* this is the same as the switch in C:
*
*******************************************************************************
*

define(„beta_convert(string)b1,b2,b3,b4,s1,s2,s3,uppercase“) :(beta_convert_end)
beta_convert
+ string pos(0) len(1) . b1 = :f(return)
*
*
* If b1 is one of markers („#@<>[]{}%$&* and the like)
* proceed to special section
* Trick: We change „;“ to „:“ , because „;“ can not be used in labels in SNOBOL4!
*
b1 = ident(b1,“;“) „:“
b1 any(markers) :s($(„be_co_“ b1))
*
* If b1 is one of the lower case alphabetic letters, we know we are in
* Latin script and do not have upper case; jump as appropriate:
*
b1 any(&lcase) :s($(„be_al_“ b1))
* Check similarly, if uppercase letter:
b1 any(&ucase) :s($(„be_au_“ b1))
* Check if space:
ident(b1,space) :s(be_space)
*
* No special sign, no lowercase letter, neither uppercase, nor space:
* We do not know what it is and put it out unconverted:
beta_convert = beta_convert b1
b1 = :(beta_convert)
*
* Older error routine for production process:
*
* terminal = „Unidentified symbol in line “ line_counter
* terminal = line
* terminal = b1 :(beta_convert)
be_space
+ beta_convert = beta_convert char(32)
b1 = :(beta_convert)
*
* Special care must be taken for final s:
*
* We check if explicit sigma shape:
*
be_au_S
+ ident(actual_language,language_greek) :f(be_au_S_end)
string pos(0) any(„123“) . b2 = :f(be_au_S_norm)
b1 = sigmas<b2> :(be_au_S_end)
be_au_S_norm
+ b1 =
+ ?(string ? pos(0) (span(final_sigma_continue) | „“)
+ (any(final_sigma_stop) | rpos(0)))
+ „ä“
be_au_S_end
*
* Old version:
*
*+ b1 = (ident(actual_language,language_greek))
*+ ?(string ? pos(0) (span(final_sigma_continue) | „“) notany(&ucase))
*+ „ä“
be_au_A
be_au_E
be_au_H
be_au_I
be_au_O
be_au_U
be_au_W
be_au_R
be_au_B
be_au_C
be_au_D
be_au_F
be_au_G
be_au_J
be_au_K
be_au_L
be_au_M
be_au_N
be_au_P
be_au_Q
be_au_T
be_au_V
be_au_X
be_au_Y
be_au_Z
+ beta_convert = ident(actual_language,language_latin)
+ beta_convert b1 :s(beta_convert)
*
* We are in Greek language: Get accents, if Greek language; error otherwise:
*
terminal = differ(actual_language,language_greek)
+ „*** Unknown language in line “ line_counter :s(beta_convert)
s2 =
string pos(0) span(beta_greek_accents) . s2 =
s3 = greek_lower_tab<b1 s2>
beta_convert = differ(s3) beta_convert s3 :s(be_au_ret)
terminal = „*** Unknown letter-accent combination ‚“ b1 s2 „‚ in line “ line_counter
terminal = line
*
beta_convert = beta_convert b1 s2
be_au_ret
+ b1 = ; b2 = ; s1 = ; s2 = ; s3 = :(beta_convert)

be_al_a
be_al_e
be_al_i
be_al_o
be_al_u
be_al_r

be_al_b
be_al_c
be_al_d
be_al_f
be_al_g
be_al_h
be_al_j
be_al_k
be_al_l
be_al_m
be_al_n
be_al_p
be_al_q
be_al_s
be_al_t
be_al_v
be_al_w
be_al_x
be_al_y
be_al_z
+ beta_convert = ident(actual_language,language_latin)
+ beta_convert b1 :s(beta_convert)
terminal = „*** Warning: lower case in language “ actual_language “ line “
+ line_counter „: “ b1
beta_convert = beta_convert b1 :(beta_convert)
*
* Older error routine for production process:
*
* terminal = „*** Erroneous lower case letter in line “ line_counter
* terminal = line
* terminal = b1 :(beta_convert)

*
* Greek uppercase letters require special treatment:
*
be_co_*
+ beta_convert = ident(actual_language,language_latin) beta_convert „*“
+ :s(beta_convert)
uppercase = „*“
*
* We fetch the accents and put them BEFORE the letter:
*
*
string pos(0) (span(beta_greek_accents) | „“) . s2 =
*
* We fetch the letter:
*
*
string pos(0) len(1) . b2 =
string pos(0) beta_iota_sub . b3 =
s1 = greek_upper_tab<s2 b2 b3>
beta_convert = differ(s1) beta_convert s1
+ :s(be_co_star_ret)
*
* In the Duke data base of documentary papyri, there some cases where
* *) is used for ‚ (ASCII 39). This is certainly an error, but we will correct it on-the-fly
* here:
*
* If a space follows, we put out ‚ and space and proceed as normal:
*
beta_convert = ident(b2,space) beta_convert „‚“ space :s(be_co_star_ret)
*
* If a bracket follows, we put it back on the input line and put out ‚ only, if this is
* not the case, we jump to the error routine:
*
string = ?(b2 any(beta_brackets)) b2 string :f(be_co_star_err)
beta_convert = beta_convert „‚“ :(be_co_star_ret)
be_co_star_err
+ beta_convert = beta_convert
+ s2
+ b2
+ b3
terminal = „*** Warning: Malformed character combination in line “ line_counter
terminal = s2 b2 b3
be_co_star_ret
+ s1 = ; s2 = ; b1 = ; b2 = ; b3 = ; uppercase =
+ :(beta_convert)
*
* Diacritics which can occur in Latin script, too:
*
be_co_/
be_co_
be_co_=
be_co_+
+ beta_convert = beta_convert
+ diacritics<b1>
b1 = :(beta_convert)
*
* Satzzeichen:
*
*
*
be_co_‘
be_co_,
be_co_.
be_co_-
be_co__
be_co_!
be_co_:
+ beta_convert = beta_convert
+ (
+ ident(actual_language,language_greek)
+ greek_zeichen<b1>
+ ,
+ latin_zeichen<b1>
+ )
b1 = :(beta_convert)
*
* Numeric symbol:
*
be_co_`
+ string pos(0) (span(numbers) | „“) . s2 =
beta_convert = beta_convert
+ space s2 space
s2 = ; b1 = :(beta_convert)

*
* If a „?“ occurs, we put the combining diacritic from
* greek_diacritics table into the output string,
* „?“ otherwise.
* Note the alternative construction here (if – then – else = (… , …)
*
be_co_?
+ beta_convert = beta_convert
+ (
+ ident(actual_language,language_greek)
+ greek_diacritics<„?“>
+ ,
+ „?“
+ ) :(beta_convert)

be_co_& actual_language = language_latin
* & and $ may be accompanied by numbers for different font qualities (bold,
* italic etc.) Since this is not defined in unicode, but only in word
* processing file formats, we just leave this out
*
*
string pos(0) span(numbers) = :(beta_convert)
be_co_$ actual_language = language_greek
* Kill all leading numbers 0-9:
string pos(0) span(numbers) = :(beta_convert)

*
* Quote symbol table for quotation marks
* We eat up any leading numbers and assign them to string s2
* We assign „0“ to s2, if there are no numbers
* We look up the corresponding unicode value in the quote table
* We put this value at the end of the resulting string
* Finally, s2 and s3 are reset
* We then proceed as normal with the next byte
*
be_co_“
string pos(0) span(numbers) . s2 =
s3 = quote<s2>
beta_convert = beta_convert
+ (
+ differ(s3) s3
+ ,
+ b1 s2
+ )
s3 = ; s2 = ; b1 = :(beta_convert)

be_co_[
be_co_]
be_co_{
be_co_}
be_co_<
be_co_>
+ string pos(0) (span(numbers) | „“) . s1 =
s2 = brackets<b1 s1>
beta_convert = beta_convert
+ (
+ differ(s2) s2
+ ,
+ b1 s1
+ )
b1 = ; s1 = ; s2 = :(beta_convert)
*
* Formatting codes. Notice the new caret quarter space routine:
*
be_co_^
+ string pos(0) span(numbers) . s2 =
s2 = (convert(s2,“INTEGER“),0)
s2 = dupl(“ „,s2 / 4)
beta_convert = beta_convert s2
s2 = b1 = :(beta_convert)
*
be_co_@ beta_convert = beta_convert space
*
* Kill all leading numbers 0-9:
string pos(0) span(numbers) = :(beta_convert)

be_co_%
+ string pos(0) (span(numbers) | „“) . s2 =
(ident(s2,“1″),ident(s2,“4″)) :f(be_perc_normal)
beta_convert = beta_convert
+ (
+ ident(actual_language,language_greek)
+ greek_percent<s2>
+ ,
+ ident(actual_language,language_latin)
+ latin_percent<s2>
+ ,
+ „%“ s2
+ )
s2 = ; b1 = :(beta_convert)
be_perc_normal
+ s1 = percent<b1 s2>
beta_convert = beta_convert
+ (
+ differ(s1)
+ s1
+ ,
+ b1 s2
+ )
s2 = ; b1 = ; s1 = :(beta_convert)

be_co_#
+ string pos(0) (span(numbers) | „“) . s2 =
s1 = hash<b1 s2>
beta_convert = beta_convert
+ (
+ differ(s1)
+ s1
+ ,
+ b1 s2
+ )
s2 = ; b1 = ; s1 = :(beta_convert)
*
*
beta_convert_end
+ define(„EOL_convert(string)num,s“) :(EOL_convert_end)
*
* EOL_convert converts parameter /EOL=nnn into byte string for end-of-line
*
EOL_convert
+ string pos(0) span(numbers) . s (any(„+,-:/&;_“) | rpos(0)) =
+ :f(return)
num = convert(s,“INTEGER“) :f(freturn)
s = (ge(num,0) le(num,255)) char(num) :f(freturn)
EOL_convert = EOL_convert s :(EOL_convert)
EOL_convert_end
*
*******************************************************************************
* *
* Main program: *
* *
* *
* First get program parameters: *
* *
*******************************************************************************
*
system = „Snobol4+“
&ERRLIMIT = 4; SETEXIT(CONTINUE)
system = host()
* Get system type:
&ERRLIMIT = 0
system =
+ (
+ ?(system ? breakx(„C“) „CSNOBOL“ )
+ „Linux“
+ ,
+ ?(system ? pos(0) „80386:Linux :Macro SPITBOL“ )
+ „Linux-SPITBOL“
+ ,
+ ?(system ? pos(0) „x86:Linux:Macro SPITBOL“ )
+ „Linux-SPITBOL“
+ ,
+ ?(system ? breakx(„M“) „Macro SPITBOL“)
+ „Spitbol“
+ )
*
* Since Snobol4+ has 16 bit integers, we initialize all counters
* to real values on this system; otherwise: integers
*
line_counter =
+ (
+ ident(system,“Snobol4+“) 0.0
+ ,
+ 0
+ )
*
*
*
write_counter =
+ (
+ ident(system,“Snobol4+“) 0.0
+ ,
+ 0
+ )
*
* Write stand-alone modules or runtime save files:
*
*
* If MacroSPITBOL is present, we write an execution module:
*
ident(system,“Spitbol“) exit(3,“betautf8.exe“)
* If Linux:SPITBOL is present, we write a load module:
*
ident(system,“Linux-SPITBOL“) exit(-3,“betautf8.spx“)
*
* If running under Snobol4+, we open a new output channel and write a save module:
*
ident(system,“Snobol4+“) output(.saveout,16,,“betautf8.sav“)
ident(system,“Snobol4+“) save(16) :s(end)
*
* Put out copyright string, process parameters, get file names
*
terminal =
terminal = „BETAUTF8 – SPITBOL/SNOBOL4 program to convert beta code to UTF8″
terminal = “ “ parms
terminal = “ (c) Burkhard Meissner, Universitaet der Bundeswehr, Hamburg (2005-2013)“
terminal =
*
* Get program parameters from command line:
* We deliberately create system errors on all systems, calling
* functions (host()) and referring to key words (&parm) which have not
* been implemented in all systems in the same manner:
*
&ERRLIMIT = 4; SETEXIT(CONTINUE)
parms = &parm
*
* Special command line treatment for SNOBOL4+ (program name as first parameter):
*
parms pos(0) (SPAN(SPACE) | “) break(space) rem . parms
*
* Get parameters for SPITBOL/CSnobol4:
*
parms = host(0)
parms = trim(parms)
*
* Reset error limit to zero:
*
&ERRLIMIT = 0
*
* identify input file and output file, if any; if none: error message and abort:
*
parms pos(0) (span(space) | „“) break(space) . input_file span(space)
+ (break(space) | rem) . output_file :f(usage)
*
* Do we regard first 32 bytes of line as references (unconverted) or not?
*
parms pos(0) breakx(„/-„) len(1) any(„nN“) . no_ref_flag
*
* Is there an explicit EOL convention change?:
*
parms pos(0) breakx(„/-„) len(1) („EOL“ | „eol“ | „Eol“) „=“ span(numbers „+,-:/&;_“) . EOL_flag
*
* Do we explicitly set the actual language?
*
parms pos(0) breakx(„-/“) len(1) any(„LlGgHh“) . actual_language (any(‚ ‚ char(9)) | rpos(0))
actual_language = replace(actual_language,&lcase,&ucase)
terminal =
terminal = „Input file: “ input_file
terminal = „Output file: “ output_file
terminal = „References: “
+ (
+ differ(no_ref_flag) „ignored“
+ ,
+ „present (32 bytes)“
+ )
*
* Display language. Note the alternative evaluation construction (SPITBOL syntax):
*
terminal = „Language: “
+ (
+ ident(actual_language,“G“) „Greek“
+ ,
+ ident(actual_language,“L“) „Latin“
+ ,
+ ident(actual_language,“H“) „Hebrew“
+ ,
+ „*** Error ***“
+ )
terminal = „End-of-line: “
+ (
+ differ(EOL_flag) EOL_flag
+ ,
+ „13,10“
+ )
terminal =
differ(EOL_flag) :f(FILE_OPEN_SECTION)
crlf = EOL_convert(EOL_flag) :f(EOL_error)
FILE_OPEN_SECTION
(ident(input_file),ident(output_file)) :s(no_file)
*
* Open files. We open the output file in binary mode to continue lines,
* if necessary:
* (1) SNOBOL4 Version:
*
(
+ ident(system,“Linux“)
+ ,
+ ident(system,“Snobol4+“)
+ )
+ :f(test_linux)
* open input file:
input(.in,1,“8000″ ,input_file) :f(no_file)
* open output file:
output(.out,2,“B“,output_file) :s(program_start)f(no_file)
*
* (2) SPITBOL Version:
*
test_linux
+ (ident(system,“Spitbol“),ident(system,“Linux-SPITBOL“))
+ :f(system_error)
*
*
* We know the system is SPITBOL compatible, open files:
*
setexit(continue)
&errlimit = 2
input(.in,1,input_file „[-l8000 -m13 -n10]“) :f(no_file)
output(.out,2,output_file „[-r8192]“) :f(no_file)
&errlimit = 0
setexit() :(program_start)
*
*
* Program start. Write BOM to outfile; get time to calculate time usage:
*
*
program_start
+ out = bom
start_time = time()
*
*******************************************************************************
* *
* *
* Main loop: The program runs between the labels AGAIN and DONE *
* *
* Read one text line. If so done, proceed to next statement. If there *
* are not any lines left („failure“ condition), go to label DONE *
* If a line could be read, increase read counter by 1 *
* *
* *
*******************************************************************************
*
reference =
again line = in :f(done)
*
* For compatibility with older SNOBOL versions, we set &TRIM = 1 (see above)
* This means: All trailing spaces are taken off upon input
* We want to keep these spaces, except for lines with breakes (ending in -)
* Therefore, we restore the space at the end, taking it off from any line
* which then ends in – space.
* To achieve this, we apply a pattern which checks for „- “ at the end of the
* line; if this signals success, we trim the line (by function):
*
line = line space
line = ?(line ? pos(0) breakx(„-„) „- “ rpos(0)) trim(line)
*
* Increment the line_counter number of lines read:
*
line_counter = line_counter + 1
*
* Replace all tabs by spaces to „normalize line“:
*
line = replace(line,char(9),char(32))
line pos(0) „~“ :s(short_line_header)
*
* Reference section of 32 bytes to be assumed?
*
ident(no_ref_flag) :f(ref_line)
*
* Take away the reference section of our example and put it into the output line:
* (first 32 bytes):
*
line pos(0) len(32) . reference = :s(ref_line)
*
* block headers are shorter: write out and back up:
* Do not put crlf before first ~line to avoid outputting empty line:
* We put out crlf to close the preceeding line, if and only if:
* it is not the first line (write_counter > 0)
*
*
short_line_header
+ outline = (gt(write_counter,0) crlf line, line) :(write)

ref_line
+ line pos(0) (any(beta_latin beta_greek) | „“) . c1 (beta_add | „“) . c2 =
+ :f(normal)
*
* In the above statement, we have checked if the line begins with
* either of the two language markers ($=Greek &=Latin), possibly followed by
* the „+“ sign, which at the start of the line marks a continuation from the
* preceeding line. We use this to determine if we should close the
* previous line by writing the end-of-line marker to the output file (or not)
* We write the end-of-line marker if and only if the line is no
* continuation, i.e. c2 refers to the null string:
*
* We close the preceeding line, if and only if
* (1) it is not the first line (write counter is >0)
* (2) it is not a continuation line (c2 == null string)
*
*
out = (ident(c2) gt(write_counter,1)) crlf
*
* If the line is a continuation, we do not need the reference any more:
*
reference = differ(c2) „“
*
* If the line is a continuation, we kill the „$“ or „&“ language signs,
* because the line continues the language under these circumstances:
*
c1 = differ(c2) „“
*
* We set the language, if so required (if there was a language marker at the beginning
* of the line)
*
actual_language = differ(c1) languages<c1>

*
* Call the conversion routine, implemented as a function
* Assign result string to variable outline:
* We replace tabs by spaces in the reference section
*
normal
+ outline = replace(reference,char(9),char(32)) beta_convert(line)
*
* The above statement does all the work – assigning it to the conversion function
* beta_convert(string)
* Write outline to output file:
*
*
write
+ out = outline
*
*
* Maintain output counter, increase by 1, and restart at label AGAIN:
*
write_counter = write_counter + 1 :(again)
*
********************************************************************************
* *
* Fatal system errors *
* *
* *
* Error: Unknown system type *
* *
********************************************************************************
*
system_error
+ terminal = „*** Unknown SNOBOL4 system – aborted ***“
+ :(end)
*
* End-of-line parameter erroneous:
*
EOL_error
+ terminal = „*** Error in end-of-line specification“
+ :(end)
*
* Error routines: File I/O
* Print error and usage messages:
*
no_file terminal = „*** I/O file(s) cannot be opened“
*
* Wrong parameters – print usage message
*
usage terminal = „Usage: betautf8.sno infile outfile“
terminal = “ [-n] [/N] [-g] [/G] [-h] [/H] [-l] [/L] [-eol=nn]“
terminal = “ Use -n or /n parameter to skip reference section processing.“
terminal = “ Use this always when working with files that have not been produced“
terminal = “ by V&F!“
terminal = “ Use -g or /g for Greek, -l or /l for Latin, -h or /h for Hebrew.“
terminal = “ Use -eol=nn,nn or /EOL=NN;NN to change end-of-line.“
terminal = “ e.d.: /EOL=13,10″
terminal = :(end)
*
* We have finished our work – Close files and print statistics:
*
done out = crlf
end_time = time()
terminal = „Conversion successfully finished!“
terminal =
terminal = „Lines read: “ line_counter
terminal = „Lines processed: “ write_counter
terminal = „Time consumed: “ ((end_time – start_time) / 1000.00) “ seconds“
terminal =
*
*******************************************************************************
* *
* Explicitly close all files: *
* *
*******************************************************************************
*
endfile(1)
endfile(2)
end

HSU

Letzte Änderung: 20. März 2018