General Information

Star4Win v. 2.00 (September 2004)

This is the Star4Win program for multilingual database and texts processing - the Windows successor of STARLING.
It combines all capabilities of the DOS version with the graphic WYSIWYG possibilities of Windows.
Star4Win functions on all Windows 9x and above (Windows 95, 98, Milennium, NT, 2000, XP, and Server 2003). It will not run on Windows 3x, where the DOS version should be used.
Star4Win is written in a combination of GCC and xHarbour, by Philipp Krylov and the author of StarLing, Sergei Starostin.

The basic features of Star4Win are:

  • Capability of creating and processing powerful databases specifically suited for linguistic purposes.
  • Capability of Internet database and text publishing.
  • Capability of creating and processing text files in ASCII (text), RTF and HTML formats.
  • Capability of handling complicated linguistic and multilingual graphic systems, utilizing TrueType fonts and Windows Unicode capabilities.
  • A built-in morphological processor and dictionaries.
  • A set of powerful glottochronological and genealogical procedures.
  • WYSIWYG presentation of databases and texts.
  • Full compatibility with the DOS STARLING program.


WHAT'S NEW IN THIS VERSION

Version 2.00.

This version introduces the following major innovations:

Platform change.
The compiling platform has been changed from Alaska xBase++ to the cross-platform Open Source xHarbour compiler, which has several speed and memory advantages, and will allow to transfer the STAR32 program to the Unix and MacOS platforms.
IMPORTANT: besides downloading the installer Star4win.exe you may now go to http://starling.rinet.ru/download and download the file star_hb.exe. This is always the very latest compiled version of Star4win which will work if placed into the BIN subdirectory of your Star4win installation directory. Star_hb.exe does not overwrite the standard Star32.exe and may be used concurrently. It is not an installer, but an executable file and will not work if placed in any other place. Star_hb.exe always contains the latest innovations and bug fixes, so before reporting a bug you may try it out: the bug may have been already fixed. On the other hand, star_hb.exe is automatically compiled on the Web server and is never sufficiently tested, so you should use it with caution and at your own risk.

Database registry
In this version you can add any DBF file to the central database registry - which is by default stored as a database called BASES.DBF. If registered, any database file will be backed up automatically on a regular basis; the BASES.DBF registry can be also used as the repository for Web-based DBF publishing (coming up later). BASES.DBF and the backups are by default kept in the DATA subdirectory of the Star4win installation directory.

Hyperlinks
In this version we have tried to make the hyperlink system more user-friendly: e.g., if a file is already included into the list of local hyperlink databases for the one you are working with, and if it is open in an adjacent window, the link menu will by default present you with that database name and its current record. Also, if you work with registered databases and change the order of records (by deleting, inserting, packing or sorting them) the hyperlinks in all databases concerned will now be rewritten accordingly.

Fonts
Several new letters and diacritics have been added to the standard font and keyboard layout.

Procedures
Two converting procedures have been added to the Procedures->Convert menu: Converting Starling DBF files to standard DBF files (which converts variable length fields to standard character fields) and Converting Starling DBF files to ODBC databases. The latter requires that an ODBC engine is installed on the computer; by default the databases are converted to the Excel spreadsheet format. Additionally, the "Converting DBF's to text files/delimited" procedure now has an option of storing text in Unicode format.
A procedure called "Accentuate" has been added which accentuates words in any Russian text file.
For technical reasons the procedure "Recover" has been renamed to "Recovery".

New functions
The procedures described above utilize some new functions that can also be independently used in scripts. Those are:
dbfcopy(cDbfName, cTargetName, nMaxLength) - where cDbfName is the original file, cTargetName is the target file, nMaxLength is the maximum length of resulting character fields
dlmcopy(cDbfName, cTxtName, cDelim, cParen, lUnicode, lShow) - where cDbfName is the original DBF, cTxtName is the resulting text file, cDelim specifies the chosen delimiter between fields, cParen specifies the chosen parentheses, lUnicode (may be .T. or .F.) specifies whether the resulting text should be in Unicode format, lShow (may be .T. or .F.) specifies whether the resulting text should be displayed after the procedure
odbccopy(cDbfName, cTargetName, cDriver) - where cDbfName is the original file, cTargetName is the target file, cDriver is the chosen ODBC driver

Another useful new function added is any() (without parameters). It can be used e.g. in search or replace routines. E.g., a condition like "any() = 0" will search for any field with the value 0. If you use any() in Replace conditions, make sure to check the box "Suppress errors" in the Replace dialog (by default a condition like "any() = 0" will cause an error if there are non-numeric fields in your database, so to make it work error handling should be disabled).

New command line options
Star32 may now be called with a /V switch. If specified, the /V option disables the quit confirmation dialog (so just pressing Escape closes the program). In this way Star32 may be set up as, e.g., a standard viewer for DBF/VAR files in your operating system environment.

Search enhancements
The search dialog now contains the "Word search" option which allows for wholeword searching (valid for Search and Locate routines).
During DBF Edit the found expression is now highlighted in any field.

File menu enhancements
The "Save as" option has been added. Now you can easily save the file edited (both text and DBF) under a different name.

Glottochronology and genealogy
The glottochronological and genealogical component of Star4win has been considerably enhanced.
One can now choose between three glottochronological methods: Standard, Swadesh and Experimental.
1. Standard.
This is the original glottochronological routine as described in "Comparative Linguistics and Lexicostatistics" by S. Starostin. It is possible now to vary replacement rates (by default the rate is 5 words per millennium).
2. Swadesh
This is the classic Swadesh routine (not available in previous versions). The standard replacement rate is 14 words per millennium.
3. Experimental
This is a new method being tested right now. It is based on determining individual replacement rates for all cognates in every pair of compared languages, and an attempt to automatically determine the replacement rate individually for every set of cognates.
In every case it is now possible to limit the set of compared words to the first n of most stable meanings (as calculated in "Determining the Vocabulary Stability" by S. Starostin). While doing it one can choose between the stability ranks within Swadesh's 100 and 110 lists (hopefully a 200 stability ranking will also be available soon).
If you choose the "Two languages" option you will now be able to view the results of lexicostatistical comparison (a list of matches, a list of mismatches and a list of zeroes - i.e. words either absent or borrowed in at least one of the compared wordlists).
If you choose the "All languages" and if the box "Show tree" is checked (which is the default option) the program will generate a -calc.dbf file and instantly generate a genealogical tree. If the "Show tree" box is unchecked the program will generate a special report file (e.g., for SLAV.DBF it will be SLAVRPT.DBF) and display it. The format of -RPT files is the same as of former -CALC files. The format of -CALC.DBF has been slightly modified: percentages for each pair of languages are stored as corrected values (so that percentages between ancient languages will be represented as values different from those actually observed); the values in the lower triangle now represent not the dates but replacement rates and stability indexes in the format "replacement rate * 1000"."stability index"; in case of Standard and Swadesh glottochronology the "stability index" value is actually the same as the respective percentage).

In the "Genealogy" menu it is now possible also to vary between different replacement rate values, as well as specify the minimum time distance between nodes and the averaging / minimizing border (see the description of the functions quotient(), epsilon() and limit()).


Alphabets

SWITCHING BETWEEN ALPHABETS

Star4Win has a sophisticated and highly flexible system of character input and visualization. You can read more about it in the sections on Keyboard Layout and Encoding. Here we shall only deal with the standard configuration, which allows input and output of standard letters, standard linguistic (IPA) letters, Cyrillic letters, Church Slavonic letters, Greek letters, Arabic letters, Chinese letters and Japanese letters.
  • The standard keyboard works as usual.
  • Various alphabets are assigned to different keyboard registers.
  • Keyboard registers are chosen by pressing (simultaneously) Alt + register number (0-9). Currently there are five active registers, of which the default is 0.
  • Within each register, modifiers (None = left Shift, right Shift, Alt and Ctrl) can be used. Remember that those should be pressed and released in order to switch the keyboard into a new state. Simultaneously pressing a key and a modifier will lead to quite different results: e.g., pressing Ctrl and then i will produce the letter ; pressing Ctrl and i simultaneously will switch the font input to italic.
  • The StarLing keyboard settings are contained in the keyboard.dbf file. They are highly tunable: in fact, it is easy to reprogram every single key by editing the contents of the above database file. However, this is not recommended for the sake of compatibility and format standards.
  • For Chinese / Japanese input read the section on CJK Alphabets.
NOTE: All keyboard settings are active both in text and graphic mode. However, all alphabets besides the standard character set will be correctly visualized only in graphic mode.


standfont.htm

StarLing standard alphabet

General linguistic symbols

Letter | Keyboard register | Keyboard modifier | Key
ʔ | 0 | Alt | j
ʕ | 0 | Alt | y
ʡ | 0 | Alt | =
ȵ | 0 | Ctrl | ;
 | 0 | Alt | A
 | 0 | Alt | a
 | 0 | Ctrl | a
Ӕ | 0 | Ctrl | e
 | 0 | Ctrl | A
ƀ | 0 | Ctrl | B
 | 0 | Alt | C
‰ | 0 | Alt | c
 | 0 | Ctrl | c
 | 0 | Ctrl | x
 | 0 | Alt | d
 | 0 | Ctrl | D
 | 0 | Ctrl | d
 | 0 | Alt | E
ɛ | 0 | Alt | e
ə | 0 | Alt | [
 | 0 | Alt | {
ǥ | 0 | Ctrl | G
ɣ | 0 | Alt | g
’ | 0 | Alt | r
ɦ | 0 | Alt | h
“ | 0 | Alt | H
ḫ | 0 | Ctrl | h
 | 0 | Ctrl | H
 | 0 | Alt | I
ɨ | 0 | Alt | i
 | 0 | Ctrl | i
 | 0 | Ctrl | I
ȷ | 0 | Ctrl | Y
ḳ | 0 | Alt | k
ɫ | 0 | Alt | l
 | 0 | Alt | L
 | 0 | Alt | ;
 | 0 | Alt | '
 | 0 | Ctrl | l
 | 0 | Alt | n
 | 0 | Alt | O
 | 0 | Alt | o
 | 0 | Ctrl | o
 | 0 | Ctrl | O
 | 0 | Ctrl | E
ɔ | 0 | Alt | ]
 | 0 | Alt | }
ṗ | 0 | Alt | p
 | 0 | Alt | q
ɿ | 0 | Alt | R
ʁ | 0 | Ctrl | R
 | 0 | Ctrl | s
 | 0 | Alt | s
ʃ | 0 | Ctrl | S
ṭ | 0 | Alt | t
ŧ | 0 | Ctrl | t
 | 0 | Ctrl | &
 | 0 | Alt | f
ʮ | 0 | Ctrl | F
 | 0 | Ctrl | T
 | 0 | Alt | U
 | 0 | Alt | u
 | 0 | Ctrl | u
ʌ | 0 | Alt | ^
ʯ | 0 | Alt | x
 | 0 | Alt | z
ʒ | 0 | Alt | b
 | 0 | Alt | m

Diacritics and non-alphabetic symbols

Diacritic | Keyboard register | Keyboard modifier | Key
~ | 0 | None | ~
^ | 0 | None | ^
̑ | 0 | Ctrl | ^
_ | 0 | None | _
 | 0 | Alt | 0
 | 0 | Alt | 1
 | 0 | Ctrl | 1
 | 0 | Alt | 2
 | 0 | Ctrl | 2
 | 0 | Alt | 4
 | 0 | Alt | 5
 | 0 | Alt | 6
 | 0 | Alt | 7
 | 0 | Alt | 8
̮ | 0 | Ctrl | 8
 | 0 | Alt | 9
 | 0 | Alt | -
 | 0 | Alt | |
 | 0 | Alt | v
ʷ | 0 | Alt | w
 | 0 | Ctrl | @
 | 0 | Alt | 3
 | 0 | Ctrl | -
 | 0 | Ctrl | "
 | 0 | Ctrl | #
 | 0 | Ctrl | =
 | 0 | Ctrl | >
 | 0 | Ctrl | 9
 | 0 | Ctrl | :
 | 0 | Ctrl | <
 | 0 | Ctrl | ]
 | 0 | Ctrl | [
 | 0 | Ctrl | _
 | 0 | Ctrl | `
 | 0 | Ctrl | {
 | 0 | Ctrl | |
 | 0 | Ctrl | }
 | 0 | Alt | ~
≠ | 0 | Alt | #
 | 0 | Alt | `
 | 0 | Alt | <
 | 0 | Alt | >


standfont.htm

Additional IPA symbols

A number of additional IPA symbols are assigned to keyboard register 5.

General linguistic symbols

Letter | Keyboard register | Keyboard modifier | Key
ǂ | 5 | None | =
ˑ | 5 | None | '
˥ | 5 | None | 1
˦ | 5 | None | 2
˧ | 5 | None | 3
˨ | 5 | None | 4
˩ | 5 | None | 5
ː | 5 | None | :
ɐ | 5 | None | a
ɑ | 5 | Alt | a
ɒ | 5 | Ctrl | a
ɓ | 5 | None | b
ɞ | 5 | Alt | b
ʘ | 5 | None | B
ʚ | 5 | Alt | B
ɕ | 5 | None | c
ɖ | 5 | None | d
ɗ | 5 | Alt | d
ɘ | 5 | None | e
ɚ | 5 | Alt | e
ɜ | 5 | Ctrl | e
ɠ | 5 | None | g
ɡ | 5 | Alt | g
ɤ | 5 | Ctrl | g
ʛ | 5 | None | G
ɥ | 5 | None | h
ɧ | 5 | Alt | h
ɩ | 5 | None | i
ɟ | 5 | None | j
ʝ | 5 | Ctrl | j
ʖ | 5 | Alt | j
ʢ | 5 | None | J
ʞ | 5 | Alt | k
ƙ | 5 | None | k
ɬ | 5 | None | l
ɭ | 5 | Alt | l
ɮ | 5 | Ctrl | l
ʎ | 5 | None | L
ɱ | 5 | None | m
ɲ | 5 | None | n
ɳ | 5 | Alt | n
ɵ | 5 | None | O
ʠ | 5 | None | q
ɹ | 5 | None | r
ɺ | 5 | Alt | r
ɻ | 5 | Ctrl | r
ɼ | 5 | None | R
ɽ | 5 | Alt | R
ɾ | 5 | Ctrl | R
ʂ | 5 | None | s
ʄ | 5 | None | S
Ʀ | 5 | None | t
ƭ | 5 | Alt | t
ʇ | 5 | Ctrl | t
ʈ | 5 | None | T
ʉ | 5 | None | u
ʊ | 5 | Alt | u
ʋ | 5 | Ctrl | U
ɯ | 5 | None | w
ɰ | 5 | Alt | w
ʍ | 5 | Ctrl | w
ʐ | 5 | None | z
ʑ | 5 | Alt | z
ǀ | 5 | None | |
ˌ | 5 | Alt | |

Diacritics

Diacritic | Keyboard register | Keyboard modifier | Key
 | 5 | None | )
 | 5 | None | +
 | 5 | None | 0
 | 5 | None | 6
 | 5 | None | 7
 | 5 | None | 8
 | 5 | None | 9
 | 5 | None | ;
 | 5 | None | [
 | 5 | None | ]
 | 5 | Ctrl | |


cyrillic.htm

CYRILLIC ALPHABET

The standard Cyrillic alphabet is accessed by using the Right Shift keyboard modifier in keyboard register 0, and is tuned to the standard Cyrillic keyboard. It may be inconvenient, though, if you don't have one. In this case you may use keyboard register 4, with the following (mostly phonetic) keyboard settings:
Letter | Keyboard register | Keyboard modifier | Key
А, а | 4 | Right Shift | A, a
Б, б | 4 | Right Shift | B, b
В, в | 4 | Right Shift | V, v
Г, г | 4 | Right Shift | G, g
Д, д | 4 | Right Shift | D, d
Е, е | 4 | Right Shift | E, e
Ж, ж | 4 | Right Shift | ;, :
З, з | 4 | Right Shift | Z, z
И, и | 4 | Right Shift | I, i
Й, й | 4 | Right Shift | J, j
К, к | 4 | Right Shift | K, k
Л, л | 4 | Right Shift | L, l
М, м | 4 | Right Shift | M, m
Н, н | 4 | Right Shift | N, n
О, о | 4 | Right Shift | O, o
П, п | 4 | Right Shift | P, p
Р, р | 4 | Right Shift | R, r
С, с | 4 | Right Shift | S, s
Т, т | 4 | Right Shift | T, t
У, у | 4 | Right Shift | U, u
Ф, ф | 4 | Right Shift | F, f
Х, х | 4 | Right Shift | H, h
Ц, ц | 4 | Right Shift | C, c
Ч, ч | 4 | Right Shift | Q, q
Ш, ш | 4 | Right Shift | W, , w
Щ, щ | 4 | Right Shift | X, x
Ъ, ъ | 4 | Right Shift | {, [
Ы, ы | 4 | Right Shift | Y, y
Ь, ь | 4 | Right Shift | }, ]
Э, э | 4 | Right Shift | |, \
Ю, ю | 4 | Right Shift | ", '
Я, я | 4 | Right Shift | ~, `

Regional and outdated Cyrillic letters

Letter | Keyboard register | Keyboard modifier | Key
 | 0, 4 | Ctrl | P
 | 0, 4 | Ctrl | '
ѣ | 0, 4 | Ctrl | z
ѧ | 0, 4 | Ctrl | Z
ѫ | 0, 4 | Ctrl | J
ђ | 0, 4 | Ctrl | j
 | 0, 4 | Ctrl | k
 | 0, 4 | Ctrl | y


chslav

CHURCH SLAVONIC ALPHABET

The Church Slavonic alphabet is currently only tuned to the standard Cyrillic keyboard and goes like this:
Letter | Keyboard register | Keyboard modifier | Key
А, а | 3 | Right Shift | F, f
Б, б | 3 | Right Shift | <, ,
В, в | 3 | Right Shift | D, d
Г, г | 3 | Right Shift | U, u
Д, д | 3 | Right Shift | L, l
Е, е | 3 | Right Shift | T, t
Ж, ж | 3 | Right Shift | :, ;
З, з | 3 | Right Shift | P, p
Ѕ, ѕ | 3 | Ctrl | P, p
И, и | 3 | Right Shift | B, b
Й, й | 3 | Right Shift | Q, q
К, к | 3 | Right Shift | R, r
Л, л | 3 | Right Shift | K, k
М, м | 3 | Right Shift | V, v
Н, н | 3 | Right Shift | Y, y
О, о | 3 | Right Shift | J, j
П, п | 3 | Right Shift | G, g
Р, р | 3 | Right Shift | H, h
С, с | 3 | Right Shift | C, c
Т, т | 3 | Right Shift | N, n
У, у | 3 | Right Shift | E, e
Ф, ф | 3 | Right Shift | A, a
Х, х | 3 | Right Shift | {, [
Ц, ц | 3 | Right Shift | W, w
Ч, ч | 3 | Right Shift | X, x
Ш, ш | 3 | Right Shift | I, i
Щ, щ | 3 | Right Shift | O, o
Ъ, ъ | 3 | Right Shift | }, ]
Ы, ы | 3 | Right Shift | S, s
Ь, ь | 3 | Right Shift | M, m
Я, я | 3 | Right Shift | Z, z
,  | 3 | Ctrl | Z, z
Ѡ, ѡ | 3 | Ctrl | W, w
Ѣ, ѣ | 3 | Ctrl | M, m
Ѥ, ѥ | 3 | Ctrl | T, t
Ѫ, ѫ | 3 | Ctrl | E, e
Ѧ, ѧ | 3 | Ctrl | F, f
Ѭ, ѭ | 3 | Alt | E, e
Ѵ | 3 | Ctrl | I
Ѹ | 3 | Ctrl | J
э | 3 | Right Shift | >
ѓ | 3 | Ctrl | u


greek

GREEK ALPHABET

Standard alphabet

Letter | Keyboard register | Keyboard modifier | Key
A, a | 2 | None | A, a
v | 2 | Alt | a
B, b | 2 | None | B, b
G, g | 2 | None | G, g
D, d | 2 | None | D, d
E, e | 2 | None | E, e
Z, z | 2 | None | Z, z
H, h | 2 | None | H, h
V | 2 | Alt | h
Q, q | 2 | None | Q, q
I, i | 2 | None | I, i
K, k | 2 | None | K, k
L, l | 2 | None | L, l
M, m | 2 | None | M, m
N, n | 2 | None | N, n
O, o | 2 | None | O, o
P, p | 2 | None | P, p
R, r | 2 | None | R, r
S, s | 2 | None | S, s
j | 2 | None | j
T, t | 2 | None | T, t
F, f | 2 | None | F, f
C, c | 2 | None | C, c
X, x | 2 | None | X, x
Y, y | 2 | None | Y, y
W, w | 2 | None | W, w
J | 2 | Alt | w
# | 2 | Ctrl | w

Diacritics

Diacritic | Keyboard register | Keyboard modifier | Key
^ | 2 | None | ~
— | 2 | Alt | -
@ | 2 | Alt | 0
/ | 2 | Alt | 1
þ | 2 | Alt | 2
` | 2 | Alt | 4
' | 2 | Alt | 5
” | 2 | Alt | 7
– | 2 | Alt | 9
“ | 2 | Alt | 6
• | 2 | Alt | 8
??? | 2 | Alt | =
‘ | 2 | Alt | @
’ | 2 | Alt | #


Arabic

ARABIC / PERSIAN ALPHABET

While switching between the Arabic and other fonts use Ctrl Backspace to toggle the direction of printing.

Letter | Keyboard register | Keyboard modifier | Key
B A F E | 1 | None/Alt/Ctrl | A, a
J I K L | 1 | None/Alt/Ctrl | B, b
N M O P | 1 | None/Alt/Ctrl | T, t
R S T Q | 1 | None/Alt/Ctrl | ,, <
V U W X | 1 | None/Alt/Ctrl | J, j
Z Y Ÿ ` | 1 | None/Alt/Ctrl | O, o
b a c d | 1 | None/Alt/Ctrl | X, x
f e | 1 | None | D, d
h g g | 1 | None/Alt | ., >
l k | 1 | None | Z, z
n m o p | 1 | None/Alt/Ctrl | S, s
r q s t | 1 | None/Alt/Ctrl | W, w
v u w x | 1 | None/Alt/Ctrl | {, [
z y | ~ | 1 | None/Alt/Ctrl | }, ]
¢ ¡ | 1 | None | :, ;
¦ ¤ | 1 | None | ", '
¨ § © ª | 1 | None/Alt/Ctrl | E, e
¬ « ® | 1 | None/Alt/Ctrl | |, \
° ¯ ± ² | 1 | None/Alt/Ctrl | F, f
´ ³ µ ¶ | 1 | None/Alt/Ctrl | Q, q
˜ — � ž | 1 | None/Alt/Ctrl | K, k
¼ » ½ ¾ | 1 | None/Alt/Ctrl | L, l
À ¿ Á Â | 1 | None/Alt/Ctrl | M, m
Ä Ã Å Æ | 1 | None/Alt/Ctrl | N, n
È Ç É Ê | 1 | None/Alt/Ctrl | H, h
Ì Ë | 1 | None | U, u
× Ö Ï Ð | 1 | None/Alt/Ctrl | Y, y
Ü Ý | 1 | None | +, =
Š ‹ | 1 | None | ?, /
‡ † ˆ ‰ | 1 | None/Alt/Ctrl | C, c
� Œ • – | 1 | None/Alt/Ctrl | G, g
Î Í Ó Ô | 1 | None/Alt/Ctrl | I, i
ƒ ‚ „ … | 1 | None/Alt | P, p

Diacritics

Diacritic | Keyboard register | Keyboard modifier | Key
ö | 1 | None | 0
ä | 1 | None | 1
ê | 1 | None | 2
å | 1 | None | 3
æ | 1 | None | 4
é | 1 | None | 5
Õ | 1 | None | 6
ç | 1 | None | 8
ë | 1 | None | 9


cjk

CJK ALPHABETS

Currently there are three CJK fonts available in StarLing: two fonts for Chinese (traditional Big5, simplified GB) and one for Japanese (SJIS). These fonts are summoned from the editor by pressing F2; to switch between them press function keys (F1, F2, F3). The characters can be chosen by their modern reading.

The Japanese katakana / hiragana letters can also be chosen from the menu, but there is a keyboard shortcut: if you press Ctrl either before pressing F2 or after it and type the syllabic value of the letter, the letter will be input directly into your text without any menu choice.


ASSIST

ASSIST is a collection of frequently used database operations and procedures.

Using ASSIST you may append new records to your database files, do some simple mathematical operations (sum or average the contents of numeric fields, count the number of records meeting specified conditions), delete or undelete (recall) records, index or sort databases in various ways, list their contents, do various replacements (using the Replace, Reform or Update options), and use the general purpose ? option.

In Star4Win, unlike the DOS version, the special Procedures are also located in the general Assist menu.

See also: ?, Append blank(s), Append from, Average, Count, Delete, Index, List, Pack, Procedures, Recall, Reform, Sort, Sum, Update.


APPEND BLANK(S)

This ASSIST option is used to append new blank records to the bottom of your file. After choosing it you will be asked: Number of blanks? Enter the requested number. If your database has the field NUMBER, you can also check the Enumerate new records checkbox. The requested number of blank records will be added, and if you have asked to assign new numbers to records, that will be also done.


APPEND FROM

This option is used to append information from one file to the bottom of another. For example, you may create a new file with the fields WORD and AVA. If you open this file and request to APPEND FROM AAND, all the information contained in AAND.DBF in the fields WORD and AVA will be added to your new file.
In Star4Win the APPEND FROM command is enhanced by the SCOPE and CONDITION clauses.

  • The SCOPE is a string of numbers (e.g. 10-200) meaning that the operation should be performed only for the records specified. If you enter -100 the program will automatically suppose that the starting record is 1; if you enter 100- the program will suppose that the final record is the last record of the file.
  • The CONDITION is any valid dBase expression (by default it is .T., which means that all records will be appended). You may also write, e.g.:
    "s" $ WORD
    in which case only records from AAND.DBF containing the letter s in the field WORD will be added.

NOTE: make sure that the field types of identical fields in both files have the same type. For example, if the field AVA in your newly created database has the field type N(umeric) while the field AVA in the AAND.DBF is C(haracter), no information will be added and you will receive only an error message.

You can use the same ASSIST option to append information from a text file to the bottom of your database file. If the system does not recognize the file you specified as a valid database file it treats it as a text file. In that case you will see a different dialogue box and will be asked for a delimiter and parentheses.
In text format fields may be delimited by some delimiter (e.g. a comma or a semicolon); the contents of a character string may be enclosed into parentheses (e.g., "ashes, dust") which are useful so as not to treat commas or semicolons within parentheses as delimiters. This is the so called SDF format ("standard delimited format") and many database systems can export their databases in this shape. SDF texts will be recognized by the APPEND FROM command and the text will be distributed into the fields of your database.
If you do not enter any specific delimiter or parentheses Star4Win will treat comma (,) as the default delimiter and the double quote (") as the default parenthesis.

On other ways of converting a text file to a database see Converting file formats.


AVERAGE

Gives you the average of any numeric field or a derived expression.

If you choose this option, you will be prompted: Average expression: Enter the expression (usually a field name, but derived expressions like Val(x) are also permitted) and you will see the average result.

Note that the records are averaged starting from the current record to the end of file. To get a proper result for the whole file make sure you are positioned on the first record.


CONFIGURATION

See Star4Win configuration for the list of options manually configurable in config.str.

Starting with version 1.0.7 runtime system configuration may be performed using the Configuration option of the Assist menu. The configuration menu has following sections:

Configuration file. Here you can manually edit the content of the configuration file - by default config.str. You can also create multiple configuration files and use them intermittently.

General. This section so far allows to edit six runtime parameters that correspond to the following lines in config.str: DICTIONARY, VARWIDTH, NUMERIC, MEMOWIDTH, AUTOSAVE and SYSCOLORS. If SYSCOLORS is unchecked, you can also choose a user-defined color set.

Fonts. Here you can choose parameters for the system fonts: the default fonts used in graphic and text modes, CJK fonts and additional fonts. For every position you may choose actual fonts and encoding tables (with the extension .tbl for CJK fonts and .lst for other fonts). The Star4Win package includes by now four .lst files (standard.lst for Times New Roman Star and Lucida Console Star; arab.lst for PersianNaskh Star, oldgreek.lst for GreekMousa Star and chslav.lst for Izhitza UniCode). Standard CJK support for Star4Win includes big5.tbl for UWCXMF (Big5 Chinese), gb0.tbl for UWPSTJ (GB Chinese) and jis0.tbl for UWJMG3 (SJIS Japanese). Additionally there are big524.dbf, gb24.dbf and jis24.dbf containing the character readings for the respective fonts.
If you install the additional fonts package, you will be able to use Palatino LinoStar as your default font: the easiest way to do it is to specify config.pal as your default configuration file.
Two more .lst files are contained in the additional fonts package: arial.lst for the font Arial Unicode MS and unicode.lst for other unicode fonts (e.g. Lucida Sans Unicode). If those fonts are installed in your system, you may specify them in the Fonts configuration page together with arial.lst or unicode.lst. The texts that you save with this font combination will be readable in all Windows Unicode applications.
The current configuration system does not yet contain an .lst editor, and the best way to do it is still by using the DOS StarLing system.

Keyboard. Here you can choose the keyboard layout, by default contained in the file keyboard.dbf. Another keyboard layout (for Semitic transcriptions) is contained in the provided keyboard.sem, and any number of keyboard layouts may be produced by editing keyboard.dbf or creating similar files.

Lookup databases. Here you can define a set of databases that will be used as global reference files for hyperlinks.

To activate your configuration changes you must press the Apply button. Some changes will be applied instantly, and some - only after you open a new window. Press the Save button to save your configuration. The last used configuration - if saved - will be automatically loaded during the next program startup.


COUNT

This ASSIST option is used to count the number of records in your database file which meet a specified condition. This is where the dBASE expressions come in handy.

For example, you have a standard wordlist file with a field WORD containing Swadesh's 100 word list (plus 10 supplementary words) and you want to count how many of them contain the letter 's'.

  1. First open your file.
  2. Next choose the COUNT option. You will be prompted: Condition to count for:...
  3. Enter your expression (in this case it will be: 's' $ word) and you will get the answer: 25 records.


DELETE

This command is used to delete records in your files, so use caution while executing it. You will be prompted:
Condition to delete for:
If you want to delete just one - current - record, choose OK or press Return. If you want to delete several records matching a particular condition (e.g., all records containing 's', or all records following record 53 etc.), formulate your condition and enter it. All matching records will be deleted.
There may be cases, when you have to delete ALL records: just enter ALL as condition.
Deleting records is a risky business - that is why when you DELETE them, they are not yet physically removed from your file. To do that you have to choose the Pack option of the Assist menu. Only when you DELETE a record and PACK the file, the record is removed permanently. While the file is not yet PACKed, you may undelete (restore) the re cord using the Recall command (see below).


INDEX

This command is used to INDEX files, i.e. to arrange them in a specified (numeric or alphabetical) order. The Index command creates the so called index files, which are stored on disk with the extension .ntx.

Suppose you have a aand.dbf with the field AVA containing Avar words and you want to arrange them in alphabetical order. Open aand.dbf using the File menu. Then choose the Index option of the Assist menu. You will be asked:

Index file name:
Enter any name you like (just as long it consists of Latin characters and contains no inside blanks - these are usual requirements to any filename), e.g. ava. Next you will be asked:
Key expression:
This must be the expression on which you index the file. In most cases you can just enter a fieldname - in our case AVA - and a requested index file will be created. If afterwards you will BROWSE, EDIT or LIST the aand.dbf with the AVA index (which is stored on disk as ava.ntx) the whole file will be arranged according to the alphabetical order of the AVA field. (Note that there is nothing changed in the original file - if you use it without the .ntx file, it will be exactly the same as it had been).

To switch between different indexes you may use the Ctrl D key combination while editing your files. Star4Win will prompt you with a menu of existing index files from which you can choose. By default you will be proposed to use an index file whose name corresponds to the name of your database (truncated to six characters) + the number of the field you are currently editing. If such an index exists it will be used, but you will be preliminarily asked whether you wish to update it or not (index information may be outdated if you have modified your database without this index file previously). If it does not exist it will be automatically created using the current alphabet order provided in the ORDER line of config.str.

To turn the index off and restore the physical order of records you have to press Ctrl D for the second time.

You may enter more complicated expressions as index keys. For example, you may want to index your file according to the inverse order of entries in the AVA field (to make an inverse dictionary). In this case you will want the file indexed on reverted Avar words. Since these words are of different length, the whole expression will look rather complicated:

reverse(Trim(AVA)))
Use the information about functions contained in this file to formulate any expressions valid for indexing.


LIST

This Assist option is used for LISTing information in your files. It corresponds both to the xBASE LIST and DISPLAY commands.

The List option in Star4Win generates an RTF file (whose name you have to specify) containing a simple table with the specified fields and their contents. The listed RTF file can be then viewed and edited either by the Star4Win text editor or by any other word processor accepting RTF format (e.g., Microsoft Word). Because of limited table presentation capabilities of the Star4Win text editor (which uses the standard Windows RichEdit library) the listed file may look not quite properly there; but wordprocessors like Microsoft Word or Word Perfect should be able to handle it better.


PACK

This Assist option is used after the Delete command when you want a record or a group of records to be permanently removed from a file.

The Pack command also packs (defragments) the contents of variable length fields. It is recommended to Pack your files periodically in order to optimize all database operations.


PROCEDURES

Star4Win includes several standard procedures which can simplify many of your tasks. Many procedures supported by the DOS version (like COLOR, ADDCHAR etc.) are not included, but many are still there, often in an improved variant.

COLUMN
This procedure can rearrange your text file into a specified number of text columns, thus being useful for printing indices etc. The output is rather rough, though; in Windows environment we recommend using standard means of word processors like Microsoft Word.
COMPOSE
Procedure COMPOSE transforms two (or more) records with partly identical content into one record where the coinciding parts of these two records remain intact while the content of the fields that do not coincide will be COMPOSEd, i.e. enumerated inside one record and separated with the chosen delimiter.
As a rule, procedure COMPOSE should be applied only to those files which are previously SORTed on some field (or concatenation of several fields); this field (these fields) should be declared as "base", i.e. containing "basic information".
If the content of all "basic" fields in two neighbouring records is identical, then the procedure COMPOSE affects the content of "composable" fields. The content of every "composable" field in all neighbouring records will be COMPOSEd, i.e. replaced with the concatenation of all character data in these records, separated by the chosen delimiter (if the composable field is a character field) or with the arithmetical/logical sum of all data in these records (if the composable field is numeric or logical). As far as composition of character fields is concerned, the procedure COMPOSE is reverse to the procedure DECOMPOSE.
Suppose we have a database file germengl.dbf with the character fields GERM and ENGL, previously SORTed on the field GERM, and choose the delimiter ";".
Recno() | GERM | ENGL
1 | der Monat | month
2 | der Monat | moon
3 | die Stunde | hour
4 | die Stunde | lesson
5 | die Uhr | hour
6 | die Uhr | time
7 | die Uhr | clock
8 | die Uhr | watch
Procedure COMPOSE will unite the following records: (2) will be joined to (1); (4), (5) and (6) - to (3); (8) - to (7). As a result, we get the following database file:
Recno() | GERM | ENGL
1 | der Monat | month; moon
2 | die Stunde | hour; lesson
3 | die Uhr | hour; time; clock; watch
The default delimiter is comma (",").
Another example: suppose we have a database payment.dbf with two character fields FIRSTN, LASTN and a numeric field PAID, previously SORTed on LASTN+FIRSTN:
Recno() | FIRSTN | LASTN | PAID
1 | John | Cook | 10
2 | John | Cook | 5
3 | Mary | Cook | 8
4 | Samuel | Harris | 20
5 | Samuel | Harris | 15
6 | George | Smith | 22
7 | George | Smith | 40
8 | Peter | Smith | 11
8 | Peter | Smith | 17
Assuming you have declared the field PAID as "composable", the procedure COMPOSE will unite the following records: (2) will be joined to (1); (5) - to (4); (7) - to (6); (9) - to (8); and the corresponding PAIDs will be summed. Thus, you should get:
Recno() | FIRSTN | LASTN | PAID
1 | John | Cook | 15
2 | Mary | Cook | 8
3 | Samuel | Harris | 35
4 | George | Smith | 62
5 | Peter | Smith | 28
CONVERT
CONVERT includes a number of programs for converting database files to text files and vice versa. Also included are programs (which may be of some use to Sinologists and Japanologists) for converting STAR4WIN files into various Chinese formats and vice versa.
There is also an option for converting text files from the LEXICON text format into STAR4WIN, as well as for converting STAR4WIN files to HTML format.
For converting you can also use conversion tables. A conversion table is a DBF with two fields (source and target). You can use such files for any symbolic conversions in your text or DBF files.
As for exporting and importing files from different systems, STAR4WIN has a conversion procedure from FOXPRO format. Utilities supporting the Microsoft Excel and Access databases are now in preparation.
DECOMPOSE
You may DECOMPOSE any character field with a lot of enumerated items. Suppose you have a database germengl.dbf with two character fields GERM and ENGL, and the field ENGL contains some enumerated data (delimited with ";"):
Recno() | GERM | ENGL
1 | der Monat | month; moon
2 | die Stunde | hour; lesson
3 | die Uhr | hour; time; clock; watch
Procedure DECOMPOSE transforms such file into a "simpler" database file where no delimiters are needed, while all the corresponding data in the chosen fields are related with a one-to-one correspondence:
Recno() | GERM | ENGL
1 | der Monat | month
2 | der Monat | moon
3 | die Stunde | hour
4 | die Stunde | lesson
5 | die Uhr | hour
6 | die Uhr | time
7 | die Uhr | clock
8 | die Uhr | watch
ITALICIZE
This procedure processes a text file and marks unrecognized words with a specified style mark (by default - Italic). You may specify any other delimiters (e.g., \B for Bold, etc.). The procedure is based on the StarLing morphological analysis for Russian and English. The output, of course, still needs to be processed manually, but a fairly high proportion of words that need to be italicized are processed correctly. The output is stored in a file with the extension .itc.
LANGINDEX
This procedure creates a word index to any paginated text file. You must specify the opening and closing delimiters that you use for marking needed words. If you do not specify the closing delimiter, ' ' (space) is assumed as such.
The program needs a database file with three fields: LANGNAME, WORD and PAGES (all of them must have the type Character). If such a file exists, it is being opened and updated; if not, it is being created automatically.
The program searches your text file for all cases of delimited sequences and places them into the field WORD. The field LANGNAME is being occupied by the previous word in the text, and the field PAGES - by the page where the word occurred. Thus, if your text on page 5 contains the sequence "Turk. \Ikitab\i" and you have specified "\I" and "\i" as delimiters, you will have a record in the .dbf file with "Turk." in the field LANGNAME, "kitab" in the field WORD and "5" in the field PAGES. If, in addition, you have on page 10 the sequence "Arab., Turk. \Ikitab\i", you will obtain the following records in the .dbf file:
LANGNAME | WORD | PAGES
Arab. | kitab | 10
Turk. | kitab | 5,10
MERGE
This procedure merges the contents of two database files with identical structure, but containing different records (e. g., a database edited by two or more people on different computers).
The database fields must have identical names and follow in the same order in both database files. The contents of the databases are compared and written to the third database (for which you must specify a name).
All fields in the resulting database file are of variable length. The contents of the fields / records are compared in the following way: if a record field in both databases is identical, nothing is done; if a record field in one database is included into the same record field of the second database (i. e. forms a substring of the latter), the larger record field is copied to the resulting database, followed by the marker "||" (to draw your attention to it); if the record fields are just different (not forming substrings of each other), they are concatenated, with the separator "||".
Note that the procedure does not perform any other checking of the record contents. So if you process one database on remote computers, do not insert new records (you should rather append them to the file bottom), do not delete records and do not sort the file - all these operations will invalidate the MERGE procedure (it will work, but with unpredictable results).
NOTEFIELD
This procedure will transfer the contents of a .stm file into a character field in the corresponding database file (you are free to choose the name of the field). Although STAR4WIN no longer supports .stm files, this procedure may be used to update old files.
RECOVERY
This procedure tries to recover a damaged database file (.dbf) in case the associated .var file (containing fields with variable length) is preserved. The result of the procedure is a file pair called temp.dbf and temp.var, with one field (called FIELD1; unfortunately, the field names are not stored in the .var file). The field entries within this field are delimited by the symbol "|".
REFERENCE
This procedure creates yet another type of index (reference) files. You may mark any words within some particular field by a special symbol (by simultaneously pressing Alt Q on the keyboard). After applying the REFERENCE procedure, those words will be picked out and the contents of another correlated field will be enumerated next to those words within another field of a newly created database file.
Suppose you have a file named subjind.dbf with two character fields SUBJECT and PAGES:
SUBJECT | PAGES
program | 53, 203, 222-237
program body | 203
program #development | 130, 151
program #development system | 151
public | 120, 254, 259-264
public #data | 254
public #data base | 260
public #data network | 262
public domain software | 259
The procedure works like this:
Enter file name: SUBJIND
Enter reference file name: SUBJIND2
Enter field name: SUBJECT
Enter reference field name: PAGES
After applying the procedure you obtain a new file called subjind2.dbf with the following contents:
SUBJECT | PAGES
development | 130, 151
data | 254, 260, 262
This procedure may be useful for creating different kinds of glossaries and subject indices.
RENUMBER
With this procedure it is now possible to renumber entries in interrelated files without having to update references in linked files manually.
Suppose you have a file called germet.dbf with a subordinate file germ.dbf (Germanic 100 word list) and a superfile called ieet.dbf containing numeric references to germet.dbf. If you, e. g., sort the germet.dbf you might wish to change the numbers of the entries in the sorted file. Earlier this was possible, but you had to change the referencing numbers of the entries in ieet.dbf and germ.dbf manually - which is a very tedious process. Now all you have to do is summon the RENUMBER procedure, specifying the file name (germet.dbf). The procedure will automatically renumber all the entries in germet.dbf and all the references in ieet.dbf and germ.dbf.
If you choose to renumber ieet.dbf, the procedure will do that, taking care of all the references to ieet.dbf in germet.dbf: even if such references did not exist before, they will be now inserted into germet.dbf.
RENUMBER will also renumber all crossreferences in nonetymological linked files. It takes into account all the alias data contained in .inf files.
NB: RENUMBER does not make any backups, and the changes introduced are permanent. As in all other cases, it is strongly recommended to make a backup of your current files before applying the RENUMBER procedure.
REVERT
This procedure transposes any database file, converting records to fields and fields to records. Contents of the first field will be converted to field names in the resulting database. This procedure has following restrictions:
  • Since field names can only contain standard Roman characters, record contents of the original database will be modified and sometimes significantly changed.
  • A current restriction in Star4Win is a maximum of 2046 fields per database. This means that if the original database has more than 2046 records, the contents of the converted database will be truncated.
SUBJINDEX
This procedure creates a subject index to any paginated text file. You must have a list ready (it should be a text file with each item on a new line). The program will check the occurrences of each word from the list in your paginated text and put the page numbers into the list file. Note that you may enter only stems into the list file: this will result in finding all occurrences of these stems within larger units (thus, if you have 'rhym' in your list file, the program will find all occurrences of 'rhym' within 'rhyme', 'rhymes', 'rhymed', 'rhyming' etc.).
SUBSTITUTE
The SUBSTITUTE procedure should be applied only to those files which are previously SORTed on some field (or concatenation of some fields). It allows to avoid repetition of long strings by replacing the second (third etc.) occurrence of this string with the chosen symbol of repetition (e.g. "-" or "=").
Suppose you have a file named subjind.dbf with two character fields SUBJECT and PAGES:
SUBJECT | PAGES
program | 53, 203, 222-237
program body | 203
program development | 130, 151
program development system | 151
public | 120, 254, 259-264
public data | 254
public data base | 260
public data network | 262
public domain software | 259

Enter file name: SUBJIND
Enter field name: SUBJECT
Enter replica: -
Then the field SUBJECT will be SUBSTITUTEd, and you get the following result:
SUBJECT | PAGES
program | 53, 203, 222-237
- body | 203
- development | 130, 151
- - system | 151
public | 120, 254, 259-264
- data | 254
- - base | 260
- - network | 262
- domain software | 259
As a result, you get shorter strings in the field SUBJECT, while their meaning is clear. This way of abbreviation is widely used in subject indexes.


RECALL

This is the "undelete" option of the Assist menu which must be used to restore any record or group of records marked for deletion by the Delete command. That is why all expressions that you may enter during the Delete procedure (and in the same order; see above) are valid also for Recall (you may RECALL just the current record, a group of records matching a specified condition, or ALL records).

Note that after your file is PACKed, you can not RECALL any records any more. Remember it before PACKing.


REFORM

This option allows you to change characters and character combinations in your database and text files. If you choose the Reform option you will be given a dialogue box with the following entries:

  • File to reform - file to be reformed (either database or text)
  • Enter the expression(s) to change - list of expressions to change
  • Field (if the reformed file is a database); by default all fields are processed
  • Record (if the reformed file is a database); by default all records are processed

Suppose you have a file called span germ.dbf with a field GRM (for German) and you want to change all occurrences of "sch" to "«", and all occurrences of "ch" to "x". If you enter:

sch «;ch x
in the list of expressions, all sch's will be changed to «'s, and all ch's to x's.

Remember that the order is significant here: if you enter

ch x;sch «
all ch's will be changed to x's, but sch's will be changed to sx's, not «'s - because the sequence "ch" is being processed first.

It is recommended to backup your files before attempting to Reform them: the Reform procedure does not have any undo mechanism and you may accidentally ruin your data.

Be especially cautious trying to change sequences containing control characters like "\". It is highly recommended to use the xBase Chr() function in these cases. For example, if you wish to change the sequence "\B" to "\I" and "\b" to "\i" (bold to italic) you should write:

Chr(92)+"B" Chr(92)+"I";Chr(92)+"b" Chr(92)+"i"
The sequence "\B \I;\b \i" will be processed incorrectly.

The function Chr() is convenient also when you want to process spaces (Chr(32)) or semicolons (Chr(59)) which otherwise will be understood as delimiters. E.g., if you wish to change the sequence "space + semicolon" to "space + comma", the expression

 ; ,
will be understood incorrectly and may ruin your data. The correct way to do it is:
Chr(32)+Chr(59) Chr(32)+Chr(44)


REPLACE

This command is used when you want to replace the contents of some field with some expression while not editing this field directly.

In the Replace dialog box you have to choose the field name, scope of replacement (by default only the current record will be affected, but you may specify ALL for all records or enter the starting and optionally the last record to replace, e.g. "3-" for all records starting with 3 or "3-15" for records from 3 to 15); you may also specify the condition of replacement (e.g. "s" $ proto will mean that only the records where the field PROTO contains the letter "s" will be affected). Finally you must enter the replacing expression. This must be any valid xBase expression, e.g. a name of some other field in this database, or a constant, function or variable. For example, in the above case if you specify Upper(PROTO) the field PROTO will be all replaced by its former content in uppercase.

Since Star4Win 1.0.7 the Replace option of the Assist menu has been enhanced. Instead of just one field you can replace a range of fields by any chosen expression.

A field range can be specified by enumerating field names or their numbers delimited by "-" and ",". Thus, in a database with fields NUMBER, PROTO, GREEK, RUSSIAN, NOTES valid field ranges will be:
1, 2, 3 (= NUMBER, PROTO, GREEK)
1-4 (= NUMBER, PROTO, GREEK, RUSSIAN)
NUMBER-NOTES (= NUMBER, PROTO, GREEK, RUSSIAN, NOTES)
NUMBER, NOTES ( = NUMBER, NOTES) etc.
Any number above the overall number of fields will be truncated: e. g., for the above database the range 1-20 will be equivalent to 1-5.

To facilitate the work with field ranges a new function FIELDNO() is introduced, which returns the number of the field within the field range. Thus, if you replace the field range PROTO, NOTES with "Upper(getfield(fieldno()))" or "upper(getfield())" the contents of both PROTO and NOTES will be changed to uppercase. Note that the call "getfield()" without parameters is equivalent to "getfield(fieldno())".

Type errors are frequent during REPLACE. For example, if you will try to replace the field range 1-5 with the expression "Upper(getfield())", an error will occur when the system will try to replace numeric NUMBER with "Upper(NUMBER)". To avoid it, the Replace dialog box now has an option Suppress errors. If it will be switched on, no error will be generated and the field NUMBER will just stay intact, while the other fields will be changed to uppercase.

Please remember that all REPLACE operations are not undoable, and make sure you have backed up your database before REPLACEing!


SORT

This command works rather like Index, but instead of creating an index file it creates a new permanent file where all records are SORTed according to your wishes.

In Star4Win the syntax of the Sort command (and its scope) is exactly the same as that of the Index command.


SUM

This is a mathematical command which may be of some use (see also AVERAGE, COUNT). It sums the contents of any numeric field (or expression based on any field value) and displays the result on the screen.


UPDATE

This option of the Assist menu may be used when you want to copy the contents of a certain field in one file to a certain field in another file.

Suppose you have a file aand.dbf with the Avar (AVA) wordlist and you have a file andcez.dbf with a blank field, also AVA. If you use the Append from command here, records from aand.dbf containing the field AVA will be appended to the bottom of the Append from - but what if you have already some Append from fields filled up and want to copy the AVA field beginning from the first record?

This is possible with the Update command if your two files (aand.dbf and andcez.dbf) have some other field in common - e.g., NUMBER or WORD.

Open the andcez.dbf (containing the blank field AVA) and choose the Update option. You will first have to choose a file to update from and then be given a dialog box with the following choices:

On key (field) - name of the field common to both databases. In our case such fields are NUMBER and WORD. The key value may be also RecNo() - i.e. record number (this is not a field, but something common to all databases in general).

Scope - range of records (e.g. "10-" - all records starting with 10 or "100-200" - all records between 100 and 200). The default scope is all records of the second file (for which you do not have to enter anything).

Field to be updated - the field in your database (in our case andcez.dbf) which has to be updated from the second file. In our case this will be AVA.

Field to update from - the field in the second database (in our case aand.dbf) which must be transferred into the field AVA of andcez.dbf. In our case this will be also AVA.

This whole procedure will result in filling up the AVA field in andcez.dbf with AVA records from aand.dbf. If there is surplus information in AVA, the surplus record contents will be appended to the bottom of your andcez.dbf file.

You can also use the expression RecNo() instead of a field name (key value) while updating. If you update on RecNo(), the contents of the updating field in the second database will be transferred to the first database simply in their physical order. If you replace by RecNo() (the updated field should be numeric in this case), the updated field will be filled with record numbers of the updating file for the cases when linked fields match. This is useful for automatically interlinking different files having common fields.

The Star4Win Update command is careful: if the updatable record is not empty, the updating value does not replace it, but is added to the bottom of the file. If you wish to replace the existing record values by new ones, make sure first to REPLACE them all by empty values.


?

The question sign is one of the most useful commands in ASSIST. It accepts any expressions and evaluates them according to dBASE rules. For example:

  • Type in: 12 (without quotes).You will get an answer: 12 (because 12 = 12).
  • Type in: "12" (in quotes). You will also get an answer: 12 (the computer evaluates any sequence of enquoted symbols as a character constant expression).
  • Type in: 12/4. You will get an answer: 3 (because 12/4 = 3). This is useful because you can use the ? sign as a calculator for all types of mathematical expressions (see below on their syntax rules).
  • Type in: "12/4". This time the computer understands it as a symbolic constant and gives a response: 12/4.
  • Type in: GREETING (without quotes). You will get an answer: Unknown variable! - because the computer evaluates any character string without quotes as a name of a certain memory variable, but it can not in this case find a variable called GREETING. However, if you had previously assigned the string "Hello!" to the variable GREETING (using the assignment operator: GREETING := "Hello!" ), the computer will find it and answer: Hello!.
  • Type in: 2*2=4. You will get an answer: Y (because it's true).
  • Type in: 2*2=5. You will get an answer: N (because it's false).
"Y" and "N" stand for special dBASE logical expressions .T. and .F. (denoted by two dots; about other expressions of this type see below).
  • Open aand.dbf (in Edit or Browse), go to record 4 and after choosing the ? command type in: WORD (without quotes). You will get the answer: ashes. The computer interprets field names of an open file as memory variables and demonstrates to you their current values.
  • Type in: TIME() (this way - with round brackets after TIME). You will be told the current time (if there is a clock driver installed in your machine).

The last examples demonstrates the use of a dBASE function as an expression. You can use any valid dBASE expressions as input to the ? commands (and some others, too - see below). So now we will pass on to the important question of the structure of dBASE expressions. You will find much of this information very useful (if you are not yet acquainted with dBASE) because it can help you in lots of file operations (LOCATing/SEEKing, INDEXing, SORTing, LISTing etc.).

One more remark about the ? command. Star4Win, like StarLing, has a built-in interpreter. You may write a .prg file and execute it by typing: "DO name of the .prg" in the ? window. However, the syntax of the built-in interpreter is somewhat different from the standard DBase language. This, and a great number of new functions and procedures available for use is covered in other Help sections. For details about the interpreter, see STAR4WIN PROGRAM INTERPRETER.

The ? window can also be used to run external executable files; to enter a DOS command you can type "DOS " followed by the command name (e.g. DOS dir).

In Star4Win you can also call internal procedures (such as NOTEFIELD, COMPOSE etc.) as functions using the ASSIST ? option. It means that entering COMPOSE() in the ? window will have the same results as running the COMPOSE procedure from the Procedures option of the main menu.

See also: Syntax of xBase expressions, Standard xBase functions, StarLing / Star4Win functions.

[Compatibility: The StarLing clauses PRINT ON/OFF, DECIMALS ON/OFF are not supported in Star4Win].


BROWSE

In the BROWSE mode you can edit your database file as an electronic table, or a spreadsheet. On the screen you will see rows and columns, through which you can browse using cursor keys.

To edit any field you must place the cursor or mouse on its cell and press Enter or click the mouse. After that the whole contents of this field will be highlighted and accessible to editing; you will be also able to press Ctrl T and edit the field in the fullscreen mode.

Column header delimiters may be dragged by the mouse, so you may vary the length of the portions of fields displayed on the screen.

You may also freeze the contents of any field on the screen by pressing Ctrl R or choosing Freeze field from the Field menu. All other fields in that case will be moved either by the scrollbar or by control keys, but the frozen fields will always stay on the screen. To switch between the frozen and unfrozen area on the screen use the mouse or Shift + arrow keys.

Note that some keyboard combinations have special functions:

Ctrl + and Ctrl - resize the boundaries of all fields displayed in the window.
Ctrl <- and Ctrl -> move fields to the left or to the right. This move is virtual, i. e., the actual position of fields in the database is unchanged.
Ctrl Up and Ctrl Down move records upwards or downwards. This move is permanent, i. e. the physical position of records in the database is changed.
Ctrl Home and Ctrl End move the field pointer to the first or last field respectively.
Ctrl PgUp and Ctrl PgDn move the record pointer to the first or last record respectively.
Shift Del will cut the current record and move its content to the clipboard.
Shift Ins will insert a new record and fill it with the value stored in the clipboard.
F5 will select records: press F5 on the starting record and F5 again on the last record of the selection. To unselect, press F5 again. The selected records may be then sorted (Alt F5) or removed permanently (Ctrl F8).

If you click the left mouse button on the field header, a standard index (i.e. sorted order) for that field is generated automatically. Another mouse click will remove the index.
If you click the right mouse button on the field header, you will be given an index menu and will be able to set a standard index, update it or remove it. The menu also allows to set this index as default, in which case the file will be always opened with this index order.


COMMAND LINE PARAMETERS

Star4Win accepts the following command line parameters:

File name (e.g. star32 MYFILE)
starts the program bypassing the main menu in the text editor or database editor mode (depending on the type of the file summoned). Filename extensions must be specified explicitly; however, .dbf file names can be specified without extension. A .prg file without extension will be executed by the built-in StarWin program interpreter.
/E
opens a database file in Edit mode.


COMPARATIVE LINGUISTICS

The STAR4WIN system includes a number of programs designed specially for comparative linguists. You may:

  • Enter standard 100-word lists of related languages and evaluate their relationships by means of an improved glottochronological formula
  • Enter etymostatistical lists (lists of roots of a certain language taken from a text, with etymological parallels from a related language / languages) and evaluate the relationship of languages according to the etymostatistical method
  • Build genealogical trees of linguistic families

If you wish, you may automate the process: the system may itself try to establish phonetic correspondences in wordlists, identify related words and build a provisional genealogical tree of a given linguistic family.


ETYMOLOGICAL DATABASES

STAR4WIN provides a multilevel database system for etymological studies (etymostatistical studies are handled separately), see the section on ETYMOSTATISTICS).

  1. Level 1.

    Lexicostatistical wordlists. These are files with a fixed structure, including fields NUMBER, WORD (obligatory) and a separate field for each compared language. Language names have a restriction: they may consist of 3 letters maximum. Each language field must have a respective numeric field with the extension NUM (e.g. RUS - RUSNUM, ENG - ENGNUM etc.). Numeric fields refer to the field NUMBER in the upper level etymological files.

    Since each lexicostastical file can have an upper level etymological file with name ending in ...et.dbf, there is another restriction: lexicostatistical file names cannot consist of more than 4 letters (excluding the .dbf extension).

    The first record in each lexicostatistical file should contain the datings of every wordlist, in centuries A.D. or B.C., entered into the respective character fields (not -NUM fields!) for each language. Other records should contain the entries of the standard Swadesh 100-wordlist.

    You may keep synonyms with different root numbers for each entry, but no more than two of them.

    Lexicostatistical files may be generated automatically (see CREATING SPECIAL FILES).

  2. Level 2.

    Etymological files for one family. These should have a name ending in ...et.dbf (for germ.dbf it will be germet.dbf etc.) and also a fixed structure: NUMBER, PROTO, PRNUM (obligatory) followed by a separate field for each included language. They may also have other fields - usually there is MEANING, or various fields containing meanings for each language, comments etc.

    If you have a lexicostatistical file, an etymological file can be created from it automatically.

    The field PRNUM in an etymological file is a numeric reference to the root number in the next level (stock) file, see below. The name of the stock file, however, is not known from either the level 2 file name or from the fields contained within it. It should be contained in a special auxiliary file with a name ending in ...1.dbf (for germ.dbf and germet.dbf this will be germ1.dbf), which should have a field FAMILY containing the name of the stock (without ...et) in the first record. In our case it will be IE (or, if ieet.dbf is in a different directory, the full path, e.g. \DATA\IE\IE).

  3. Level 3.

    Etymological files for a stock (several families). These also have usually a name ending in ...et.dbf (e. g., ieet.dbf) and a fixed field structure: NUMBER, PROTO, followed by separate fields for each subordinate etymological file, e. g., GERM, SLAV etc. Each of such fields should have a corresponding numeric field with an extension ...NUM (GERMNUM, SLAVNUM etc.). The contents of these fields are numeric references to root numbers in subordinate etymological files.

    A stock file may also have an optional field PRNUM, if there exists a still higher level etymological file.

  4. Higher levels.

    The hierarchy may continue ad infinitum, but all upper level files should have a structure similar to level 3.

    In this way you can construct hierarchical systems of related database files, e. g.:

    NOSTRATIC (nostret.dbf)
    IE ALT URA ...
    | |
    INDOEUROPEAN (ieet.dbf) | ALTAIC (altet.dbf)
    SLAV | GERM | TURC | MONG
    | | | |
    SLAVIC (slavet.dbf) | GERMANIC (germet.dbf) | TURKIC (turcet.dbf) | MONGOLIAN (monget.dbf)
    RUS POL SRB ... | GRM ENG SWD ... | TRK UZB CHV ... | KHA BUR KLM ...
    | | | |
    slav.dbf | germ.dbf | turc.dbf | mong.dbf

    The existence of the field NUMBER in all of these files gives them a certain flexibility, because any etymology may actually contain more than one record in the database. However, this creates some inconveniencies, especially when the files are sorted, and record numbers start to differ considerably from the contents of the NUMBER field. For all search purposes it is also desirable (although not at all obligatory) that the root number should coincide with the figure in the NUMBER field.

    In STAR4WIN v. 9.05 I have finally added a procedure called RENUMBER which renumbers all the related database files automatically. See its description in PROCEDURES.


ENTERING GLOTTOCHRONOLOGICAL DATA

The STAR4WIN system presents you with a convenient program for entering, editing and processing glottochronological wordlists.

There are several things you should remember:

1. You must provide the most exact translation of Swadesh's items into your languages. However, there are many cases when several translations are equally possible (like Polish 'chłodny' and 'zimny' for 'cold' or Russian 'prichodit'' and 'prijti' for 'come' etc.). STAR4WIN allows you to enter 2 synonyms for every Swadesh item (two is enough in most cases).

2. While entering lexical data, you must assign each lexical entry a certain number using the following techniques:

a) When you start entering your wordlists, give every root a unique positive integer number if the root is genuine, and a negative number if it is borrowed. For example - if you start with the English wordlist, enter:

  • 'all' with number 1;
  • 'big' with number -1 (the word is probably of Scandinavian origin);
  • 'black' with number 2;
  • 'bone' with number 3;
  • 'breast' with number 4 etc.

If any root occurs twice (or more times) within one and the same list - which is often the case (e.g. English 'what' and 'who') you should be careful to assign it the same number. If you fail to do so, it won't affect the result of calculations, but will have unfavourable consequences for building up your etymological files.

If you have two synonyms for a single item or - as is sometimes the case - a single compound word consisting of two equivalent roots, you should still assign a different number to each of the roots. Please enter both roots on different lines.

For example:

NUMBER | WORD | POL(ish) | POL(ish)NUM(ber)
15 | cold | chłodny | 70
15 | cold | zimny | 71

If you have two entries for a single item (as in the above case), and your next language has only one word, please place it in the top record and do not enter any value in the next one, e.g.:

NUMBER | WORD | POL | POLNUM | RUS | RUSNUM
15 | cold | chłodny | 70 | xolodnyj | 70
15 | cold | zimny | 71 |  | 0

Other ways of entering data may cause occasional trouble in the glottochronological programs.

If your wordlist is incomplete, please enter negative numbers in the free lines (I like to use the number -666 for these cases, but you may choose any number you like) and make sure you do that - otherwise the calculation results will be incorrect.

b) When you have entered data for the first language, pass to the second (or you may prefer to handle several languages at a time, processing Swadesh's items one by one: this routine is more convenient in the EDIT mode). You should take care to provide related roots in all languages within a single file with identic numbers. Thus, if you process the German list after the English one, your list must look like this:
NUMBER | WORD | ENG | ENGNUM | GRM | GRMNUM
1 | all | all | 1 | all | 1
2 | big | big | -1 | gross | 102
3 | black | black | 2 | schwarz | 103
4 | bone | bone | 3 | Knochen | 104
5 | breast | breast | 4 | Brust | 4

etc. (we assume here that the last English word number had been 101; all the numbers in the above table are, of course, provisional).

c) The numbers you enter have to be consistent within a single file. Thus, if you have a file for Germanic languages and a file for Slavic languages, you should:

provide both Russian 'voda' and Polish 'woda' with one and the same number (say, 95);

provide both German 'Wasser' and English 'water' with one and the same number (say, 93).

But you should not try to necessarily provide all those Slavic and Germanic words with one and the same number (although they are,of course, related). This would be too difficult to do, especially if your families have as many languages as Indoeuropean. The STAR4WIN system has a way of dealing with this problem (see HELP on ETYMOLOGICAL PROCESSING OF DATA).

d) When you begin editing a new wordlist file, it has an empty first record. Please type in the dates of your wordlists in centuries B.C. or A.D. (e.g. -7, 17, 20 etc.) under your language names. This information will be vital for your calculations.


CREATE AND TRANSFER DATA INTO ETYMOLOGICAL DATABASES

After creating the wordlist file for any language family, you may create the corresponding etymological database. Just answer the computer's questions about the source (wordlist) file and the number of records you need in your etymological file.

Now you can enter etymological data. The computer can do a lot of work for you because it can transfer data from your wordlists immediately into the etymological files.

Choose the Transfer data option and see what happens.

After you have transferred data from wordlists into your etymological file, you can edit it in the fullscreen mode, change and add any information you like, including references, bibliography etc. Protolanguage reconstructions must be placed in the field PROTO. You can, of course, add new roots to the file - just don't forget to enumerate them.

If you have related linguistic families, e.g. Slavic and Germanic, and do not wish to store all the material in a single file (which will be huge and rather inconvenient to process), you may create two wordlist files and respectively two etymological files (say, slavet.dbf and germet.dbf). Since the two language families are related to each other, the databases must have a common field. This common field in your etymological database files is PRNUM (= "proto-number"). When you first edit your etymological file, say, slavet.dbf, assign each reconstruction a unique number (the numbers can also be negative, if the assumed protoform is a loanword from some other language or protolanguage).

Next create a new file and give it some name (e.g. ie.dbf for Indo-European). This procedure is now (beginning with STAR4WIN version 4.00) automatic (just choose the necessary option from the menu). The resulting file will contain following fields: NUMBER, PROTO, MEANING, and fields for particular proto-languages (SLAV, GERM etc.). Each of these fields will have a ...NUM counterpart (SLAVNUM, GERMNUM etc.).

After you have created the secondary etymological file (in our case, ie.dbf), provide that it has a sufficient number of blank records for all your SLAV and GERM roots.

Next choose the Reconstructions -> secondary etymological files option and transfer the Slavic reconstructions into the Indo-European file.

Now you can assign numbers to Germanic roots in the germ.dbf PRNUM field. If the Germanic root is related to a present Slavic root, it must be assigned the same PR(oto)NUM(ber). If there is no related Slavic root in the slavet.dbf, give the Germanic root a new number (just make sure that your ie.dbf has enough records for all roots).

This procedure may seem complicated, but in fact it is rather simple if you are working in the EDIT 2 FILES mode.

After you have dealt with the Germanic roots, choose the Reconstructions -> secondary etymological files option and transfer the Germanic reconstructions into the Indo-European file.

You now have a preliminary variant of your secondary etymological file (in our case, ie.dbf). You can edit it, type in reconstructions, missing Slavic and Germanic forms, meanings, references etc.


SPECIAL STAR4WIN FILES FOR COMPARATIVE LINGUISTICS

Depending on the particular STAR4WIN program that is being executed, the STAR4WIN system will create following types of database files (files with the .dbf extension):

  1. Wordlist files. These are files named after the particular linguistic families you choose (e.g. slav.dbf, turc.dbf etc.).
  2. Etymological files. These files are automatically created from wordlist files (although later they can be modified and amplified in any way you choose) and must have a name ending in ...et.dbf (e.g. slavet.dbf, turcet.dbf etc.).
  3. Files containing the results of glottochronological calculations. These files have a name ending with ...calc.dbf (slavcalc.dbf, turccalc.dbf) and are automatically generated when you execute lexicostatistical procedures.
  4. Files containing the results of phonemic and phonostatistic analysis for each of your languages, with a name ending in ...fr.dbf. Thus, if within the SLAV family you have a language called RUS, the system will automatically create (if asked) a file called rusfr.dbf containing the list of RUS phonemes and frequencies.
  5. Files for storing phonetic correspondences. These have a name ending in ...corr.dbf (e.g. slavcorr.dbf, turccorr.dbf etc.).
  6. Files for etymostatistics (root chronology). This is a special kind of files with names ending in ...texN.dbf, added to the name of a particular language (e.g. rustex1.dbf, engtex12.dbf, poltex8.dbf etc.).
  7. Files containing the results of etymostatistical calculations, with ...tall.dbf added to the language name (e.g. rustall.dbf, engtall.dbf etc.).

You should not be troubled by this abundance of file types (note that there also exist files with the .fon extension created by phonetic programs). Most of them will be created, processed and displayed without your immediate participation: you just have to keep track of the families and languages you choose to process.


STANDARD GLOTTOCHRONOLOGY

While you're working with glottochronology you are able to perform following operations (provided you have already done all the etymological processing of your data):

  • Calculate the date of divergence of any 2 languages. If both of them are within one file, you can do it right after entering your material; otherwise you must first perform the operations described in INTERFAMILIAR CALCULATIONS. Remember that on the first line of each wordlist file, above your wordlists you must enter respective dates in centuries (e.g. Russian: 20, Old Chinese: -7 etc.).

  • You can calculate dates of divergence for all pairs of languages within one or two families. Each time you perform this operation, a new file is added to your directory.

    For example, if you process the SLAV wordlist, you obtain a file called slavcalc.dbf. It is a matrix file: in the upper triangle of the matrix you can see percentages, while in the lower triangle you will see dates (in millennia from our time). If you process two files, e.g. slav.dbf and germ.dbf, you automatically obtain a file called germ-slav.dbf which has the same structure.

    If you have several interrelated families, e.g., SLAV, GERM and ROM, you must do all the calculations separately and you will obtain the following files: germ-slav.dbf, germ-rom.dbf, and rom-slav.dbf, which will contain all the percentages and datings.

  • Instead of doing pairwise calculations you may wish to combine all wordlist files for related language groups within one large wordlist file. If you have, e.g., a file ieet.dbf with subordinate germet.dbf, slavet.dbf, and romet.dbf files (based on the wordlists germ.dbf, slav.dbf and rom.dbf) you can combine all the wordlists into one - ie.dbf - using the Combining wordlists option.

The default rate of lexical replacement in Swadesh's wordlist is taken to be 0.05. This value may be changed either by setting the RATE variable in config.str (e.g. RATE = 0.14), or by using the function quotient().


INTERFAMILIAR CALCULATIONS

To make glottochronological interfamiliar calculations possible (if, e.g., Russian data are placed into the slav.dbf, while German data are in the germ.dbf) your databases must meet following conditions:

  • You must have already prepared source wordlist files and primary etymological files (that is, files slav.dbf, germ.dbf, slavet.dbf, and germet.dbf must exist and must be already processed). Please read the HELP notes on ENTER AND EDIT ETYMOLOGICAL DATA.
  • You may or may not yet have created the secondary etymological file (in our case, the ie.dbf). You can do without it, but in this case you still have to have common numbers in the field PRNUM of your two primary etymological files (that means that you must have identified common roots in two families before trying to do glottochronology).

    If you have all this done, choose the Interfamiliar calculations option and answer the computer's questions. After this procedure you will have two new files on your directory - in our case, slav1.dbf and germ1.dbf. They are merely auxiliary and you need not view or edit them, but make sure you don't delete them accidentally.

  • You may wish to combine all matrix files for related language groups within one large matrix file (this is useful, e.g., when you want to build a genealogical tree). Just answer the computer's questions and assign the new file a proper name. We recommend that its name should end with ...calc.dbf (e.g. iecalc.dbf): in this case it will be easier for you to make classifications. [An alternative way to do it is combine all the available wordlists in one big wordlist file - see STANDARD GLOTTOCHRONOLOGY].

    Please remember that before combining matrix files you must have already done all the preliminary calculations. For example, if you have the germslav.dbf and germrom.dbf files, but have not yet processed the ROM - SLAV pair (and thus lack the romslav.dbf), you will achieve nothing by trying to combine the GERM, ROM and SLAV data within one file.


ROOT GLOTTOCHRONOLOGY

The etymostatistical methodics consists in writing out a certain number of roots (we usually use the standard number 100) from any language text and searching for related roots in related languages. The root morphemes taken from your text must be genuine, not borrowed; we also recommend you to exclude personal names and toponyms.

The resulting list must contain 100 roots (one and the same root must not occur twice: thus, out of several occurrences of any root within your text you should choose only one).

Every root in the list must also be assigned a unique number. We recommend you to use the same numbers as in your etymological and wordlist files. The most convenient full-screen mode for editing your etymostatistical files is therefore the EDIT 2 FILES mode which allows you to enter etymostatistical information while at the same time checking for root numbers in the etymological file (with name ending in ...et.dbf).

If you are working on etymostatistics, the STAR4WIN system will automatically produce files with names ending in ...tall.dbf. These files contain the tally results for each ...tex.dbf file, average percentages on the top line and respective datings on the bottom line.


GENETIC CLASSIFICATION

The STAR4WIN system provides you with a program of genetic classification based on glottochronological calculations.

You must remember that the resulting genealogical tree is not an ultimate truth. There is a lot of equally probable classifications - depending on the criteria you use. Moreover, changes and improvements in your etymologies may significantly modify the results of classification. If there's something wrong with your tree, first try to check the source data. We must say in general that the older the family, the better the classification (classifying closely related languages and dialects is often difficult because of interdialectal borrowings and literary influences).

[We have not yet developed a classification program on basis of etymostatistical files, but it is forthcoming.]

If you want to run the GENETIC CLASSIFICATION program for a certain family, remember that you must have a ready ...calc.dbf file (i.e. you must have already done the necessary calculations). Also mind that you must have the source wordlist file in the current directory - otherwise the computer will create a new file and ask you to fill in the datings of individual language lists.

The same remarks hold when you want to classify languages after having processed two families. If you have obtained a germ-slav.dbf with datings and percentages you can run the classification program only after renaming the germ-slav.dbf to a file with name ending in ...calc.dbf, e.g. gslcalc.dbf.

While building genealogical trees you may vary several parameters by using special functions: quotient(), border() and epsilon() - see their description in Star4Win functions.


IDENTIFYING WORDS

You may wish to identify roots in your wordlist files using the computer-established correspondences (but please remember that a good specialist will always do this task better and faster - unless, of course, there exist no specialists on this particular language family!).

You may ask the computer to identify roots in all of your languages (but that will take a long time!) or just in the couple of languages you had previously chosen. In the latter case after the program is complete you will have two new files on your directory (e.g., if you had processed RUS and POL languages, you would have a new ruspol.dbf and a new ruspolco(rr).dbf). You may preserve them or delete them later.


PHONEMIC ANALYSIS

Before establishing phonetic correspondences, the STAR4WIN first tries to establish the list of "phonemes" of each language. Certainly, mistakes may arise during this process: transcription systems may be very different and we could not write a universal program of transcription analysis. Therefore we recommend you to check and correct the computer's results after running this program.

The "phonemic analysis" program will produce a file with name ending in ...fr.dbf (FR for "frequency") for every language processed. This file will contain not only the list of phonemes, but also the list of their respective frequencies within your file. There is also a third (blank) field in the ...fr.dbf file which will be needed for other programs. If you are making phonemic corrections, please correct also the statistical data.


SOUND CORRESPONDENCES

This procedure should not be overestimated: for closely related languages (like Slavic, Turkic etc.) it yields about 85% correct results. For more distant relationships (like Indoeuropean) the percentage is decreasing - although we expect that running this program with more voluminous data will bring better results.

Please note that by now the STAR4WIN system is yet unable to: a) establish correspondences between vowels in one language and consonants in another (like Rus. -l : Serb. -o etc.); b) establish cases of phonemic loss (like x- > 0- in Tungus); c) make any comments on the complementary distribution of phonemes or their variants.

When you run the Phonetic correspondences procedure, you may choose:

a) the Single Phonemes option;

b) the Whole Sets of Phonemes option.

In the first case STAR4WIN will try to find correspondences for every phoneme you choose. It will ask you for the "deviation" value. This is a statistical feature, and you may enter any number above zero: we recommend to use the value 3.5 to obtain best results. If a larger number is given, you will probably get no results at all; with a lesser number, you will be proposed several probable correspondences, but most of them faulty. However, you can try it yourself.

In the second case the STAR will try to find correspondences for all phonemes present in its ...fr.dbf files.

You may wish to store correspondences in a file: the STAR will then automatically create a file with name ending in ...corr.dbf (e.g. slavcorr.dbf) which will be preserved on your directory.


COMPATIBILITY OF STAR4WIN FILES

Database files generated and handled by Star4Win are fully compatible with StarLing and support the same database format. Fields of variable length in Star4Win, however, lack the restrictions of StarLing (65000 bytes per field in one record). If you wish you may enter text longer than 65000 symbols into your fields. The DOS StarLing program will still be able to handle these files but will truncate the fields which are too long.

StarLing / Star4Win databases are in principle compatible with dBase III/IV and FoxBase / FoxPro. The mechanism of the variable length fields, however, is quite different, so the contents of those fields will be lost in other database system. You should use Star4Win converting or exporting routines before trying to read Star4Win databases in other database management systems.

StarLing had a mechanism of storing comments to database records in special STM files. These files actually became excessive already in StarLing, after the introduction of variable length fields. Star4Win no longer supports STM files, so if you still have them, you should convert them to database fields by using the StarLing / Star4Win NOTEFIELD procedure.

Text files generated and handled by STARLING are in ASCII format and can be accessed by any ASCII word processor. Star4Win reads those files and automatically translates them into the standard RTF format (Rich Text Format). Star4Win text files can be saved either as StarLing compatible ASCII files or as RTF files readable in almost any Windows word processor (e. g. Microsoft Word). This eliminates the need for special converting programs which had earlier to be used with StarLing text files. Optionally you can also save Star4Win text files in HTML format.


STAR4WIN CONFIGURATION

Rather than keeping configuration parameters in the Windows registry, Star4Win keeps them in a special initialization file called config.str. This file may contain both information needed for StarLing (most of which is ignored by Star4Win) and for Star4Win (most of which is ignored by StarLing). config.str is an ASCII file which can be edited by any text editor, including STAR4WIN itself. However, since the file contains many special and control characters, different text editors may handle them in different ways. A general recommendation for those who wish to modify their config.str file is: use the DOS version of STARLING (starling.exe or realstar.exe) to do that. This guarantees the safest processing of various control codes.

config.str consists of lines with the general structure:

PARAMETER = ...

Every time Star4Win is initialized it reads the configuration parameters from config.str. Different configuration files may be stored in different folders (directories), and Star4Win first loads its inner default parameters, next corrects them according to the config.str which is stored in its home folder (the folder where the program star32.exe is located), and finally corrects them according to the config.str which it may find in the current directory.

By now the following parameters are valid:

AUTOSAVE
Specifies the time (in seconds) before making a backup copy of the text file edited, e.g.: AUTOSAVE = 300 (the default setting). So far the backup copy is stored in the same folder with the same name as the edited file but preceded and followed by #.
CJK_FONT
Specifies the name and parameters of a Unicode CJK (Chinese/Japanese/Korean) font. The format of this line is like this:
CJK_FONT = 1, big5.tbl, UWCXMF (Big5), BIG524.dbf, Big5
Here 1 is the number of the font (from 1 to 7), corresponding to the respective number of the StarLing font (in this case big524.chr); big5.tbl is the name of the encoding file translating Big5 codes to Unicode and vice versa; UWCXMF (Big5) is the name of the Unicode font containing Chinese characters; BIG524.dbf is the database file containing Chinese readings; Big5 is the encoding parameter.
You may use up to 7 CJK fonts with STAR4WIN. The standard CJK package (starcjk.exe) contains fonts for Big5 (Traditional non-simplified Chinese characters), GB (the Beijing simplified Chinese characters) and JIS (Japanese characters).
CONSULT n
E.g.:
CONSULT1 = database1
CONSULT2 = database2, field1
CONSULT3 = database2, field3
Lines like this will enable you to search for the word under cursor by pressing Shift F1 - in the database1, by pressing Shift F2 - in the field field1 of the database database2, etc. Note that if you specify a particular field it requires that the database should be sorted on this field - otherwise search results will be incorrect. If you do not specify any field the search will be performed on the whole database, and may be continued by pressing, as usual, F4.
DICTIONARY
Specifies the location of Russian and English dictionary files (Z_... and M_...).
Example:
DICTIONARY = C:\STAR\DICT
EXTRACT
Specifies the sequence of comma-delimited characters (or sequences of characters) that will be ignored during search, sort and index procedures, as well as within the ALIKE() function.
Example:
EXTRACT = ´,°,¯
FONTSIZEMAX
Specifies the standard font size in points.
Example:
FONTSIZEMAX = 12
If this parameter is not specified, the default font size is 10 points.
FONTSIZEMIN
Specifies the condensed (small) font size in points.
Example:
FONTSIZEMIN = 10
If this parameter is not specified, the default condensed font size is 8 points.
KEYBOARD
Specifies the name of the file containing current keyboard settings. Provided with the system is a file called keyboard.dbf. It is in fact a database file, containing the following fields: LEFTSHIFT, RIGHTSHIFT, ALT, CTRL, ALT1LS, ALT1RS, ALT1ALT, ALT1CT etc. (up to ALT5CT). This means that you can configure as many as six keyboard registers, and within each of them you can switch between four subregisters by pressing left Shift, right Shift, Alt or Ctrl keys. Switching between 6 main registers is done by simultaneously pressing Alt and figure keys (Alt 1, Alt 2... etc.); returning to the default register is done by pressing Alt 0.
Note that it is possible to program any single key for a string of any length (not just a single letter). The length of a string is confined only by the length of fields in keyboard.dbf (by default - 6 letters maximum). If you are experienced enough in database handling, you may modify the structure of keyboard.dbf so as to meet your requirements.
You may devise your own alternative keyboard definition files and enter their names in the config.str as follows: KEYBOARD = MYNAME.KBD
Example:
KEYBOARD = C:\STAR\KEYBOARD.STR
NUMERIC
NUMERIC = ON lets the system show all numeric fields. NUMERIC = OFF hides them all.
ORDER
Specifies the string of letters regulating alphabetic order for the ORDER() function.
If you want, e.g., to make the letter b immediately follow the letter c, just place b immediately after c in this string and delete b in its original place. After that, when you will sort or index your database files using the ORDER() function, your data will be automatically positioned in the specified alphabetic order.
See the description of the ORDER() function to learn more about sorting in Star4Win.
Example:
ORDER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ€aƒ„…bcˆ‰Š...."
RATE
Specifies the t replacement rate for glottochronological calculations (the default value is 0.05).
SYSCOLORS
SYSCOLORS = ON (default setting) lets the program use the current system color set. The setting SYSCOLORS = OFF allows the user to choose his own color set.
TOOLBAR
TOOLBAR = ON (default setting) makes the toolbar visible. TOOLBAR = OFF turns it off.
VARWIDTH
Specifies the width of variable fields used in INDEXing, SORTing and LISTing procedures. Increasing this figure will increase the precision of indexing but will also increase the size of index (.ntx) files.
Example:
VARWIDTH = 10
WINFONT
Specifies the name of a TrueType Windows font used in Star4Win.
Star4Win is constantly converting the default StarLing encoding into the encoding used in Windows fonts and vice versa. Therefore for every TrueType font a special file with the extension LST (which can be edited like any text file) is used.
The main font is introduced by the line:
WINFONT = c:/star/convert/standard.lst, Times New Roman Star, Lucida Console Star

Here standard.lst is the name of an auxiliary file with a recoding table from DOS STARLING format into STAR4WIN and vice versa; Times New Roman Star is the basic font file (used in the default "graphic" mode), Lucida Console Star is the font used in "text" mode.
Other fonts may be also introduced on separate lines as follows:
WINFONT = c:/star/convert/arab.lst, PersianNaskh Star
WINFONT = c:/star/convert/greek.lst, GreekMousa Star
Note that the main font can be a Unicode font. You may, for example, use the file arial.lst (provided in the setup package), specially shaped for the Arial Unicode MS font. Additional fonts (for the time being) are symbol fonts containing a maximum of 256 characters each - although we plan to adjust them for Unicode as well in the nearest future.

The FUNCTION and MACRO parameters of StarLing are not yet included into Star4Win, due to certain Windows keyboard restrictions, but may become available later.

The following parameters are obsolete, because of a complete change in the output system of Star4Win: COLOR, GRFILE, GRFILE2, GRFONT, HIGHDIA, HYPHENATE, LOWDIA, MEMOWIDTH, OFFSET, PRFILE, RESIZE, SCROLL, STARKEYS, TABULATION, TEXTMODE, TEXTROWS, TFONT, VIDEOMODE.


CREATE AND MODIFY STRUCTURE

Create a database

This menu option is used to create new database files. If you choose it, you will be given an empty file structure with four fields: FIELD_NAME, FIELD_TYPE, FIELD_LEN and FIELD_DEC.

To add a new field to your database structure use the Down key to append a blank record and enter the following information:

  1. Enter the name of your field in the Field name column (please note that field names must not begin with numbers, must not contain blanks and must be at least 2 letters long).
  2. Choose the type of your field in the Field type column. You may choose C (Character) - if your field will contain characters, N (Numeric) - if your field will contain only numbers, L (Logical) - if your field will contain only Yes/No statements; you can also choose M (Memo) and D (Date) although you probably won't need it. The most useful value is the type V (Variable), which means that the field can contain character content of unlimited length.
  3. Next enter the length of your fields in the Field length column. You can type in any positive number (although if the field is numeric it must not be more than 15 letters long). If you create a logical, date, memo or variable field you don't have to specify its length.
  4. Finally enter the number of decimal places for numeric fields in the Field decimals column (do not enter anything here for other field types).

Field values can be edited, deleted, moved up and down by means of the Ctrl Up and Ctrl Down keys - just like during the regular Browse databases option. Some Assist options - like Append, Replace, Reform, Append from - are also available, which can be especially helpful when dealing with databases containing very many fields. Thus you can, e.g., append field structure from any other database (using the Append from) option, and then replace all "C" field types to "V" using the Replace or Reform options.

If you make any mistake, Star4Win will give you a warning and resume editing.

If afterwards you will wish to change the database structure, you may choose the File structure option of the File menu and do the necessary modifications.

Create special files

This menu option will help you create special files for glottochronological purposes. These files generally have a standard database structure, but have a restriction: names of languages as field names there should consist of three letters maximum. This is a restriction taken over from StarLing and we hope to overcome it soon.


DATABASE FILES

The basic type of files which Star4Win generates and works with are database files, with a usual extension .dbf. These files are generally compatible with widely used software products like dBASE III+, dBASE IV and FoxBase. Star4Win database files, however, have their own peculiar features. In order to explain them, we have to dwell in some detail on databases in general.

A database file (sometimes called electronic table or a spreadsheet) is a table-like structure consisting of a certain amount of records ( = lines), each record being subdivided into fields ( = columns). The number, types and names of fields are fixed and can be changed only by means of a special procedure (called "modifying structure"), whereas the number of records is optional and can be easily increased or decreased by the user. The fixed structure of the database files allows for a very quick access to all records even in huge databases.

Fields in a database file can belong to several types, serving different purposes. Standard dBase files have five basic field types:

Character fields
For input of all kinds of character information.
Numeric fields
For numbers only.
Date fields
For dates only.
Logical fields
For binary logical input (these fields may only contain the information "Yes"/"No" or "True/False")
Memo fields
For input of character (memo) information.
While the first four field types have fixed field length (a maximum of 255 symbols for character fields, 15 symbols for numeric fields; always 1 symbol for logical fields and 6 symbols for date fields), memo fields have no field boundary. Still I do not recommend to use memo fields (however convenient they seem) for the following reason.

Memo fields in standard dBase are, in fact, not fields in the strict sense of the word. The database itself contains only numeric pointers to the field information contained in a separate file (with a standard extension .dbt). These numeric pointers themselves occupy special fields (10 bytes long for every memo field) within the .dbf file. Once you input anything (even 1 symbol) into a memo field within a certain record, a standard block of 512 bytes is added to the .dbt file - and most of these 512 bytes remain unused. On the other hand, if you edit an already occupied memo field and cross the 512-byte boundary, the whole content of the field is overwritten in two 512-byte blocks which are then added to the end of the .dbt file - while the old 512- byte block stays in its original place (although it is not being used any more). All this results in the fact that .dbt files may grow even longer than .dbf files.

Star4Win supports all the original dBase field types, which means that you can safely view and edit original dBase files while working with Star4Win. It has, however, its own specific features:

  • Character fields are no longer restricted in length (the maximum field length is 65535 symbols).
  • The number of possible fields is increased (from a dBase III+ maximum in 127 fields to 2046 fields).
  • Star4Win also introduces a new type of fields: fields with variable length. They can be effectively used for any character information and usually occupy much less space than standard character fields and memo fields (which are still supported for compatibility).
    Variable length fields are in many respects similar to memo fields: each variable ("V") field occupies 6 bytes within a database file, and their contents are actually stored in a separate file with the extension .var. However, each entry within a V-field occupies exactly the space it needs.
    You should remember several things concerning the new field type:
    a) Special Star4Win files (wordlists etc.) are created without V-fields. Any character (or memo) field, however, can be easily transformed to a V-field by using the File structure option of the File menu.
    b) You can create new files (using the Create a database menu option) already with V-fields, or else modify the structure of already existing files.
    c) All operations that were supported for character ("C") and memo ("M") fields, are also supported for V- fields.
    d) In Star4Win, when you edit your database files, contents of each field (whether it is a C-field, M-field or Vfield) immediately appear on the screen. However, there may be cases when long M-fields or V-fields do not fit into one screen. In such cases you can press Ctrl T to enter the full-screen editing mode, and the content of the field will be edited just like a text file with a text editor. If you wish to save the field content as it is (with margins, line breaks and indents), please enter the  character (by pressing Ctrl and then [) in the field's beginning.
    e) The .var files (containing the variable length fields) also have a tendency to grow unnecessarily, although not at all as rapidly as the .dbt files with memo fields. This happens when you make a new input within an already occupied record, overwriting its previous content and exceeding it in length. In this case the new field content is written to the end of file, while the old record stays in its original place. You may shrink your files periodically, choosing the option Pack in the Assist menu. This command first does the checking of the variable fields fragmentation: if it is encountered, you are asked whether you wish to pack your file or not. Only afterwards the usual routine of packing deleted records (if any) is performed.
    Periodical PACKing of your files is also recommended, because some operations (e.g., searching for string values using the F3 key) may be hindered by the file's fragmentation.
  • Starting with version 1.0.7 the database system of StarLing / Star4Win has been enhanced by field aliases. A field alias is a field description that can be optionally used instead of the real field name in database headers. Unlike field names, field aliases are not restricted in length, can consist of several words, contain spaces and non-Roman (e.g. Cyrillic) letters. You can change field aliases while modifying structure or while changing any field name (Change field name... option of the Field menu).
    A single field may have multiple aliases: in this case they should be preceded by slash + number + semicolon (e.g. \1:Fieldname1\2:Fieldname2). All aliases having the same number are united within an alias set, and it is possible to assign any of these sets to your database file. Note that if the alias set 0 is chosen, only original field names will be displayed.
    Field aliases, as well as some other information, are stored in special text files with the extension .inf (officially also introduced in version 1.0.7). These files are optional - i.e., the .dbf/.var files will still be editable without .inf files, but many useful parameters can be stored in this way. The parameters that .inf files now support are:
    • a) Links to related databases. E.g., in the database \data\alt\turcet containing the field PROTO the line
      PROTO = \data\alt\altet
      means that the field PROTO relates turcet.dbf to altet.dbf.
      In many cases (for standard lexicostatistical files) there exist automatic relations to lower level and upper level files; note that the settings within INF files override automatic relations.
    • b) field aliases and alias sets (see below): the syntax is FIELD_ALIAS[field name] = alias; ALIASSET = 1 (2, 3...n)
    • c) default indexes (see below): the syntax is INDEX = index file name
    • d) list of fields to display and order of fields. Here the syntax is: FIELD_LIST = field range
    • e) list (of unlimited length) of databases that can be linked to any segment of text surrounded by the delimiters \X0....\x, \X1....\x etc. Every database name should be located on a new line with the syntax LOOKUP[1] = database file) etc. Links of this type differ from global links specified in config.str in that the list of linked databases may be different for any individual database, thus allowing for more flexibility. At this time for such links you cannot specify default reference fields; however, it is possible to directly specify record numbers in linked databases, see below on links.
      Note: \X0....\x refers to the current database.
    • f) file description - a text of unlimited length that may contain any information concerning the current database. There can be any number of file descriptions, corresponding to the number of alias sets available for the file. The descriptions should be started by the line DBINFO START number and ended by the line DBINFO END.
    You see that .inf files have become a rather important part of the database system - if you wish to skip the necessity of readjusting the list of linked databases, displayed fields and their order, as well as the field aliases every time you open the database you are working it. So if you transfer a database to a different directory, drive or computer, do not forget to copy the .inf file and place it in the same folder.
    All the parameters within the .inf file can be viewed or edited by the Star32 text editor, or in fact by any text editor program. However, for user convenience there are now several new options in the File menu specially suited for this purpose. Those are:
    • File info: general technical information about the current database (this option was there before but was located in the Assist menu).
    • File configuration: A menu dialog similar to the general configuration, but allowing to edit information pertaining to the current file. So far it contains two sub-options:
      • INF file content: here you can view and edit the .inf file.
        For user convenience the options of editing the .inf file as text and editing file decriptions are also located in the general File menu, as INF file text edit and File description, with the keyboard shortcuts Alt F2 and Alt F1 respectively.
      • Lookup databases: here you can add any number of lookup databases for hyperlinks within your file.


DATABASE NAVIGATION AND OPERATIONS

Databases can be viewed and edited in two basic modes: Browse mode and Edit mode.

Some keys and operations are mode-specific - see Help on Browse databases and Edit databases. However, a great deal of operations are common for the two modes. Let us describe them.

File menu.
  • File info - will display information about the current database.
  • File description (Alt F1) - will display a text containing the description of the current database file (if any). The description itself can be edited and will be recorded in the .inf file for the current database.
  • File structure - will display a table with the file structure that can be viewed or modified (see Create / Modify structure).
  • File configuration - will display the contents of the current .inf file. This option also allows to choose lookup files for creating hyperlinks (see Database relations).
  • INF file text edit - will display the contents of the current .inf file as a text that can be edited manually. Recommended only for advanced users.
  • Print - will produce a file preprocessed for printing (see Printing).
View menu.
  • Toggle Graphic/Text mode (Alt F9) - will change your graphic font to text font and vice versa.
  • Toggle EDIT/BROWSE mode (Ctrl F10) - will change Browse to Edit and vice versa.
  • Hide/show all numeric fields (Ctrl N) - the numeric fields in your database can be hidden or revealed using this option.
Record menu.
  • Copy to clipboard (Alt F11) - will copy the whole current record to the clipboard.
  • Paste from clipboard (F12, Alt F12) - will paste the clipboard contents into the current record, overwriting its current contents.
  • Insert record (Ctrl F7) - will insert an empty record in the current position.
  • Append record (or Down key at the end of the database) - will append an empty record to the bottom of the database.
  • Empty record (Ctrl E) - will permanently remove the contents of the current record.
  • (Un)Delete record (F8) - will mark the current record as deleted. The record will be highlighted, but not removed permanently. To permanently remove all deleted records use the Pack command of the Assist menu. Pressing F8 once more will remove the highlighting and unmark the record as deleted.
  • Zap record (Ctrl F8) - will permanently remove the current record, whether it is marked as deleted or not.
  • Print record (Ctrl F11) - will produce a text file with standard formatting that can be sent to the printer.
  • Print a range of records (Ctrl F12) - can be used to print several records with standard formatting.
  • Print a record using PRT - this option will generate the record output using the current .prt formatting file. If such a file is absent (the file had not been printed yet), a default .prt file is automatically generated, To modify the print settings you can then use the Print option of the File menu.
Field menu.
  • Copy field (F5) - will copy the current field to the clipboard. Note that to do that in Browse mode you must first press Enter and activate the field editor.
  • Paste field (F6) - will paste the clipboard contents into the current field. Note that to do that in Browse mode you must first press Enter and activate the field editor.
  • Full screen field editing (Ctrl T) - will open a new text window with the contents of the current field. This option is particularly useful when the field contains a very long text.
  • Field list (Ctrl Shift F) - will open a special window containing the current database field list. You can use Ctrl Up and Ctrl Down keys to move fields around; Ins to select or deselect individual fields; Ctrl Ins to select and deselect the whole field list. After pressing OK only selected fields will be visible and editable, in the order that you have specified. This information is remembered and permanently stored in the .inf file.
  • Index (Ctrl D) - allows you to choose an .ntx file (previously created, see Index) that will be applied to your current database. Pressing Ctrl D once again will remove the index.
  • Change field name (Ctrl F). This option allows you to change the current field name. It can also be used to specify and change the field alias for the current field that will be displayed and printed instead of the actual field name. Additionally you may change the so called alias sets for the whole file: e.g., if the field name is WRD and the alias is specified as \1:Word\2:Wort, choosing the 1st alias set will result in displaying the field name as Word, while choosing the 2nd alias set will result in Wort.
Search menu.
  • Search, Continue (F3, F4, Shift F11, Shift F12) - see Search.
  • Maximum word number (Ctrl Shift N) - will search for the maximum number value (only in standard wordlist files).
  • Filter (Ctrl |) - will set the filter to a specified condition, i.e. will display only records satisfying this condition.
  • Go to (Ctrl G) - will position the record or field pointer to the specified record number / field name.
  • Related database call (F7, Alt F7) - will open a new window with the related database (if any); see Database relations.
  • Compare databases (RightShift F12) - with two databases open, will search for the first difference between them and position the record / field pointer correspondingly.
Assist menu.
See Assist options.
Comparative studies menu.
See Comparative Linguistics.
Window
  • Duplicate (F11) - will duplicate your database in another window. This will not create a new database, and changes applied in one window will be immediately duplicated in the other.


DATABASE RELATIONS

Databases can be related to each other in various ways, allowing to construct hierarchical multidimensional database systems. It is often quite convenient to store information in several files from which it can be easily retrieved when needed.

STARLING provides following mechanisms of interrelating database files.

  1. You can use the Update option in the Assist menu (see UPDATE) to transfer the contents of some field from one database into another.
  2. You can have reference fields in your database, relating it as a whole to some other database.
    By default, if the database has a field whose name coincides with the name of another database present in the current directory, this field serves as a reference field to that database. E. g., a field GERM in germanic.dbf will refer to a file germ.dbf (if it exists). When you press F7 while positioned within GERM, you will be transferred to a record within germ.dbf containing the value of the field GERM in germanic.dbf. This is a very rough method of relating files: you might not always retrieve the information you need, because only exact matches between files are in this way accounted for. A more precise and recommended method is using numeric references.
    If the field GERM in germanic.dbf is numeric, it can contain direct references to record numbers in germ.dbf. These references can be either inserted manually or obtained by using the Update command (UPDATING using some common field and replacing the field GERM by RecNo()).
    You can also keep the field GERM in germanic.dbf as character or variable, but still be able to interlink the files precisely. To do that you have to introduce an additional numeric field with the extension REC, in this case GERMREC. Its contents will also be directly linked to record numbers in the germ.dbf file.
    Other examples of database relationships:
    If you have, e.g., a germ.dbf file you may relate it to the subordinate file eng.dbf by introducing a field called ENG within the germ.dbf. If you place the cursor on the contents of the field ENG and press F7, the file eng.dbf will be automatically searched for the identical string value; if found, the respective record will be dis- played in a special screen window. You may then press F4 to search for the next similar entry. You may use Alt F7 instead of F7, to search not for the whole field contents, but only for the word under the cursor. E.g., if you have a file germ.dbf with a field ENG and a record "water" in it, pressing F7 will activate the search for "water" in the subordinate file eng.dbf. There may be several occurrences of that word in the file eng.dbf, but F7 will bring you to the first one (to move to the next one you will have to press F4, as usual). If you, however, introduce a numeric field ENGREC in the file germ.dbf, you may place there the precise record number you need in eng.dbf; pressing F7 in the field ENGREC will instantly activate the record you need in the file eng.dbf.
    This is the default mechanism of relating database files. For etymological databases a special sophisticated system of file relations is designed in STARLING - see the sections on COMPARATIVE STUDIES, ENTERING GLOTTOCHRONOLOGICAL DATA, CREATING SPECIAL FILES.
    Related files do not necessarily have to have names coinciding with field names in linked files. You can link files with different names and in different directories, overriding standard conventions for both regular files and etymological files. To do that you must edit the contents of the .inf files. Again, if you have a germ.dbf with a field ENG, but your English file is called english.dbf, you may edit germ.inf and insert the line: ENG = ENGLISH
    If the english.dbf is located in a different directory, e.g. F:\ANGLAIS, the line should look like: ENG = F:\ANGLAIS\ENGLISH.
  3. You can use dynamic cross-reference hyperlinks between databases. This is a feature available starting with Star4Win 1.99.
    Hyperlinks are especially useful when you commit your files to the Web server, and wish to explicitly point out relations between databases. Any text sequence within any character or variable length field can be enclosed into the sequence \X....\x and be turned into a hyperlink. So far there are two types of hyperlinks:
    a) Global hyperlinks referring to databases listed in the main configuration file, config.str. The list of referrable databases should be contained in config.str, with the following syntax:
    LOOKUP = database1 [, field]; database2 [, field];...;database9 [, field]
    Links to these databases are configured as: \X1....\x (a link to database1), \X8...\x (a link to database8) etc., and are accessible from any database file.
    b) Local hyperlinks referring to databases listed in a particular .inf file, with the syntax:
    LOOKUP[n] = database
    Links to these databases are configured as: \X n....\x. A link can refer to a database generally, in which case a dynamic search of the referred database is performed; or as a link to a particular database record. In the latter case the link should be configured as \X n1.n2...\x, where n1 is the number of the database referred, and n2 is the number of the record within the referred database.
    Note that \X0...\x is always a link to the current database.
    The list of lookup databases can be manually entered into the general configuration file (config.str) and into individual .inf files. An interface for doing it is, however, also provided through the Configuration option of the Assist menu and through the File configuration option of the File menu.
    Links can be entered manually in text mode, but there is also an interface for entering them. Any text sequence can be selected, and the Hyperlink option chosen from the Format menu (keyboard shortcut is Ctrl [; or press Shift Ctrl [ to automatically select the current word for hyperlinking). In the resulting menu dialog, check the Apply link formatting box - after which you will be able to choose from a list of either global or local referrable databases.
    The hyperlinked text sequence will be highlighted and the link will be activated by pointing the mouse on it in the edit window and clicking the left mouse button. Clicking the right mouse button will activate the menu dialog once more. You can then either change the reference parameters or remove the link by unchecking the Apply link formatting box.


EDIT

In this mode you can edit your database file one record at a time. Every field is immediately accessible - unlike Browse, where you have to press Enter or a letter key before starting to edit a field.

Special navigation keys while Editing:
PgUp, PgDn - move up or down one record.
Ctrl PgUp, Ctrl PgDn - move to the top or bottom of the file.
Ctrl Up, Ctrl Down - scroll the record being edited.

All the other navigation and operation keys are the same as in Browse - see Database navigation and operation.


TEXT EDITOR

To edit text files you may use the Star4Win text editor. Choose the Edit text file option from the File menu and specify a file name.

The Star4Win text editor can edit text files in three formats:

  1. Raw text format

    This is the default option. Any file you edit in this format will appear on the screen just as it looks in DOS, with paragraphs corresponding to lines in a standard ASCII text file. StarLing text files are supposed to look on the screen basically in the same way as they look in StarLing graphic mode.

    The raw text file can be saved in text format (either raw or formatted) or as an RTF (rich text format) file.

  2. Formatted text

    If you choose formatted text, Star4Win will attempt to remove line breaks in the text file while preserving paragraph indents. Note that the appearance of a text file in such case may be damaged, so be careful while choosing this option. If your file contains tables or outdents, make sure that they are marked as such in StarLing (tables should be tabbed using the tabulation mark (Chr(20)), and outdents should be marked in the beginning by Chr(18), and in the end - by Chr(19)).

    If the appearance of your text is damaged you should better try to open it in raw text format. You can then format the paragraphs and tables manually.

    The formatted text may be saved as such or in RTF (rich text format) file.

  3. RTF format

    The Star4Win text editor, like all other editing routines in StarLing, operates in the so called Rich Text Format (RTF). All RTF files are editable and can be saved as such. This allows, e.g., to view and edit text files produced by Microsoft Word or other word processors. All Star4Win files can also be saved in HTML format.

    When you save an RTF file in text format, however, be prepared that much of the formatting and font information may be lost. Proper conversion of RTF to StarLing text format is only guaranteed for files that use fonts registered in the Star4Win configuration file, config.str, and do not contain embedded pictures, diagrams and other graphic objects.

While editing text files you can modify page setup options (indents and page numbering): these changes, however, are only valid for printing and will not be visible on the screen. If you wish to find out the number of pages in your document, use the Paginate option of the File menu.


ENCODING

This section is written for advanced users who wish to learn how the information is stored within STARLING and STAR4WIN files.

STARLING / STAR4WIN is specially designed to handle multilingual and multifont information. Most existing word processors do that by utilizing the concept of code pages: special tables establishing the correspondence of machine codes to national font symbols. A code page is usually restricted to a maximum of 256 characters and switching between different code pages within one document is extremely difficult and uncomfortable. The concept of UNICODE (a universal code page containing 65536 characters) is becoming more and more popular, but is not yet properly implemented in most word processors, browsers and operating systems.

To avoid all these difficulties STARLING / STAR4WIN has a tunable encoding system which can be theoretically adjusted to any code page or code page combination, including UNICODE. Let us now look at some details.

Encoding in STARLING

STARLING utilizes a combination of two encoding systems:

  1. Single byte character encoding.
    Single byte character encoding means that a single byte (a sequence of 8 bits) represents a single character, allowing for a complete set of 256 characters. The most known one-byte encoding system is ASCII (American Standard Code for Information Interchange). In this encoding, however, only the first half (characters 0 - 127) represents an international standard. The second half (characters 128-255) may represent different symbols in different versions of national code pages.
    STARLING has its own standard "code page", where the second half roughly corresponds to the standard DOS cyrillic code page (CP866), but contains a large variety of phonetic symbols allowing for the input of sophisticated linguistic texts. The bitmap font for this encoding is contained in the file stvga.fnt, but even if it is not there, the bitmaps are automatically loaded into video memory every time STARLING is being run.
    Some of the symbols may be used as diacritic signs, and the set of diacritics is explicitly declared in config.str (the HIGHDIA set and the LOWDIA set). If a symbol is declared as a diacritic, it will be shifted to the left in graphic mode and on printed output; depending on whether it is a HIGHDIA or a LOWDIA it will be lifted above the previous character or dropped below it.
    The standard set of characters may be completely redefined by any user. For example, when outputting Russian morphological and dictionary information on the screen, a different set of characters (contained in the file transvga.fnt) is used, which contains a set of one-byte accented Russian letters and some additional IPA characters used for English transcription. The easiest way to design new characters is to use the zz.exe utility (contained in the STARLING package). However, this is not recommended except for the most experienced users: changes in the standard font will lead to a necessity of additional changes in keyboard settings, printer fonts, and a reconfiguration of the Windows version. To use a different font (other than stvga.fnt) the parameter TFONT in config.str has to be modified, e. g.:
    TFONT = TRANSVGA.FNT
    Just about 90% of existing STARLING databases and texts are utilizing the standard STARLING codepage. However, it is clearly not enough for all linguistic purposes, and therefore STARLING also has a double byte character encoding system.
  2. Double byte character encoding.
    The idea behind the doublebyte encoding is that two bytes (16 bits) of information are used for a single character, theoretically allowing for a complete set of 65536 characters. STARLING can actually use many more characters than that utilizing additional means of font changing.
    A STARLING text can consist of a combination of singlebyte and doublebyte encodings. Control characters with codes 1, 2, 3, 4, 5, 6, 7 and 127 are used as switches within a text sequence. Characters 1-7 initiate doublebyte encoding (under which every two bytes are interpreted as a single character); any character within the 0-127 range terminates the doublebyte encoding (although if it is a code from 1 to 7, the doublebyte encoding is immediately initiated again); character 127 is invisible itself and used only to break the flow of doublebyte characters. E.g.:
    1. the sequence of bytes "114, 97, 110, 103, 101" will be interpreted as "range";
    2. the sequence "114, 97, 110, 103, 101, 32, 1, 164, 64, 164, 81" will be interpreted as "range 一十";
    3. the sequence "114, 97, 110, 103, 101, 32, 1, 164, 64, 164, 81, 32, 49, 45, 49, 48" - as "range 一十 1-10";
    4. the sequence "114, 97, 110, 103, 101, 32, 1, 164, 64, 164, 81, 127, 174, 164, 168, 173, 45, 164, 165, 225, 239, 226, 236" - as "range 一十один-десять".
    Note that symbols 64 (@) and 81 (Q) in example 2 do not end the stream of doublebyte characters, being themselves second bytes within doublebyte symbols. However, code 32 (space) in example 3 and code 127 in example 4 do end the stream of twobyte characters. This is because in the STARLING system - just like in traditional Chinese and Japanese encoding systems, and unlike the UNICODE system, only doublebyte combinations starting with a byte higher than 127 are interpreted as single characters. This allows for an efficient method of combining singlebyte and doublebyte encoding within one text.

    The doublebyte character array in STARLING thus includes seven sets (each of them determined by the switcher code from 1 to 7), each containing a theoretical maximum of 28544 characters [this is less than the theoretical possibility of 65536 characters, because codes from 0 to 32 are not allowed in the second position, and codes from 0 to 127 are not allowed in the first position] - all in all a theoretical possibility of 199808 characters. Note that all these characters are becoming visible only in graphic mode; in text mode you will observe a senseless combination of symbols.

    Any doublebyte character can also be defined as a diacritic. This is done by the parameter GRDIA in config.str. If a particular character is defined as a diacritic, it will be shifted to the left both on the screen and on printed output.

    Each set of doublebyte characters is further subdivided into two subsets:
    a) doublebyte sequences starting with a code higher than 160. This is the traditional range of CJK (Chinese, Japanese and Korean) characters. It is used as such within STARLING. A particular encoding system (e.g. BIG5, GB or JIS - one of various ways to associate doublebyte sequences with particular characters) may be chosen by the user. This is regulated by the parameter GRFILE in config.str. Thus, the line: GRFILE = BIG524.CHR;GB24.CHR;JIS24.CHR means that code 1 will introduce the BIG5 encoding system and the actual characters for it are contained in the graphic (bitmap) file BIG524.CHR; code 2 will introduce the GB encoding system with the graphic file GB24.CHR; and code 3 will introduce the JIS encoding system with the graphic file JIS24.CHR.
    In the graphic mode of STARLING all characters within this range are displayed as 24x24 pixel graphic bitmaps.
    b) doublebyte sequences starting with a code higher than 127, but lower than 161. This is the "user define" area where all sorts of different characters can be contained. The parameters for this area are set in config.str by the line: GRFILE2 = STAR16.CHR
    This means that code 1 will introduce characters contained in STAR16.CHR. On the screen (in graphic mode) they will appear as 8x16 pixel graphic bitmaps.
    The file STAR16.CHR right now contains bitmaps for Greek and Arabic characters. In the nearest future we plan to include many more characters in order to implement the complete UNICODE character range.

Styles

Styles in StarLing are marked by a combination of '\' (ASCII code 92) with letters: \I - italic, \B - bold, \C - small (condensed), \U - underlined, \L - subscript, \H - superscript. They are cancelled respectively by \i, \b, \c, \u, \l, and \h.

Encoding in STAR4WIN

STAR4WIN is a Windows program and it has to use the Windows TrueType fonts. Moreover, it can easily use Unicode fonts and the Unicode encoding. However it also has to be compatible with STARLING for DOS: both are guaranteed to share common database and text files. Therefore it is also constructed as a tunable system, with all recoding (from DOS to Windows and vice versa) done on the fly.

If STAR4WIN meets a STARLING doublebyte sequence of the CJK range (i.e. starting with a byte higher than 160) this sequence is converted to Unicode and displayed as such using one of the available Unicode fonts. The conversion tables have the extension .tbl and are by default located in the bin/convert folder. To enable proper CJK conversion config.str must contain the following lines:

CJK_FONT = 1, big5.tbl, UWCXMF (Big5), BIG524.dbf, Big5
CJK_FONT = 2, gb0.tbl, UWPSTJ (GB), GB24.dbf, GB
CJK_FONT = 3, jis0.tbl, UWJMG3 (SJIS), JIS24.dbf, JIS

All conversion parameters are explicitly specified there. The lines above mean that:
1) if the system meets a doublebyte sequence initiated by code 1 it will use the Big5 encoding, recode it to Unicode using the big5.tbl, use the UWCXMF font and the BIG524.dbf (containing Chinese readings of characters);
2) if the system meets a doublebyte sequence initiated by code 2 it will use the GB encoding, recode it to Unicode using the gb0.tbl, use the UWPSTJ font and the GB24.dbf (containing Chinese readings of characters);
3) if the system meets a doublebyte sequence initiated by code 3 it will use the JIS encoding, recode it to Unicode using the jis0.tbl, use the UWJMG3 font and the JIS24.dbf (containing Japanese readings of characters).

If STAR4WIN meets a doublebyte sequence below the CJK range (i. e. starting with a byte higher than 127 but lower than 161) it interprets it according to one of the .lst files contained by default in the bin/convert folder. The standard config.str contains two lines regulating this process:

WINFONT = arab.lst, PersianNaskh Star
WINFONT = oldgreek.lst, GreekMousa Star

This means that that Arabic letters are converted from the STARLING double byte encoding into codes corresponding to the encoding used in the font PersianNaskh Star. In a similar fashion Greek letters are converted from the STARLING doublebyte encoding into codes corresponding to the font GreekMousa Star. The structure of the .lst files is explained below.
If STAR4WIN meets a onebyte sequence it is rendered in the standard font currently defined in config.str. The default parameters are given as:

WINFONT = standard.lst, Times New Roman Star, LucidaConsole Star

This means that the default Windows font used is Times New Roman Star, with the recoding table from STARLING to STAR4WIN and vice versa contained in the file standard.lst. The second font specified (LucidaConsole Star) is used for the "text" mode of STAR4WIN (on which see below).

Times New Roman Star contains a basic code page corresponding to the one contained in the DOS stvga.fnt font for STARLING. However, it is actually a Unicode font and contains more characters than 256. Some of them are declared in the standard.lst file as combinations of code 29 + Roman letter: e. g. the crossed o with the Unicode number F1F8 will be converted to STARLING as a sequence of character 29 and "o" (character 111). More letters can be actually added to the .lst file and used in this way.

The structure of the .lst file is simple. It is an ASCII file with two columns, the first containing the actual STARLING letters and the second containing the code numbers in the respective truetype font. The file can be edited by any word processor (although STARLING is of course preferable because it can show the actual letters, not just their codes); any line can be commented out by using an initial asterisk (*). If a STARLING code is converted to a single byte, this single byte should be entered as a decimal number (e.g. "a = 97"); if a STARLING code is converted to Unicode (double byte), the Unicode should be entered in the format "U+...." (e.g. "À = U+0410", with Unicode in a hexadecimal format).
Note that STARLING letter sequences can also be converted to single codes (or Unicodes), e.g. the line

ƒ´ = U+0301
will mean that a combination of a long a + acute is converted to Unicode 0301.

When STAR4WIN writes the output to disk it is automatically stored in STARLING encoding, unless you save your files in the RTF format, to utilize them later in other Windows programs (such as Microsoft Word etc.). If STAR4WIN encounters a code not contained in any of the .lst files (e.g., pasted from some other Windows program), it stores it in a special format, namely, in figure brackets plus the "U+...." combination (e.g. {U+2367}). This sequence will be visualized normally in STAR4WIN, but will be unreadable in STARLING for DOS.
Note that it is preferable to use different truetype fonts for different encodings within the CJK range. It is in fact permitted to specify just one Unicode font for all of them, e.g.:

CJK_FONT = 1, big5.tbl, Arial Unicode MS, BIG524.dbf, Big5
CJK_FONT = 2, gb0.tbl, Arial Unicode MS, GB24.dbf, GB
CJK_FONT = 3, jis0.tbl, Arial Unicode MS, JIS24.dbf, JIS

You may always correct and enhance your .lst files manually and even produce your own .lst files tuned to the TrueType fonts that you prefer. This operation, however, requires considerable computer experience: ability to handle the fonts and find out particular character codes contained therein.
All STARLING data can be converted to Unicode completely. For that purpose a special .lst file is provided (but not included by default into config.str). It is called arial.lst and is tuned to the TrueType font Arial Unicode MS.

STAR4WIN is a graphic program, but it can also imitate the STARLING text mode. For that purpose the font LucidaConsole Star is used by default, and you can always switch to text mode by pressing the Alt F9 key combination. In this mode you will see the content of STARLING files just like in the STARLING DOS text mode: as a sequence of one-byte symbols in a single font.


ENGLISH DICTIONARY

Star4Win, like StarLing, uses Mueller's English-Russian dictionary (but we are planning to include the more comprehensive BARS soon). You can inspect the available dictionary items by pressing the F9 key (on an English word). English spellchecking is also functioning (summoned by Ctrl F9 key combination).

The dictionary is contained in 26 files whose names begin with M_ (M_A, M_B, Z_ (Zaliznyak) files are located (see above about the DICTIONARY line in config.str).

The entries in Zaliznyak's dictionary are supplied by their English equivalents (transferred there automatically from Mueller's dictionary). You may switch from one dictionary to another by moving the cursor around and pressing F9 on the word you wish to inspect (be it Russian or English). Remember that you may move the cursor in this way even while inspecting Russian paradigms: this is valuable because you may proceed in this way from perfective verbs (which rarely have English equivalents in the present dictionary) to their imperfective correlates. No matter how deep you proceed in your investigations, you can always move back one step by pressing the Escape key or go back to the original text / database by pressing Alt Escape.

If the word you need is not contained in the dictionary, you may add it after answering a number of diagnostic menu questions. The resulting information will be stored in the file user.dic.


FONTS IN STAR4WIN

Being a Windows program, Star4Win has all Windows WYSIWYG capabilities. StarLing files are by default displayed and edited in the way they should look both on the screen and on printed output. However, the text mode of StarLing is not completely forgotten: you may press Alt F9 or click the Text/Graphic icon on the toolbar to switch from "graphic" mode to "text" mode and vice versa.

In text mode only one font is used in StarWin, and the screen appearance matches the screen appearance in StarLing in text mode: all control codes are displayed as symbols and double byte codes are displayed as a sequence of two bytes. In this way you may control the "inner" representation of Star4Win texts and databases and see exactly the bytes that constitute the contents of your files. In database files this option is useful for many replace and locate operations.

In graphic (default) mode Star4Win uses the fonts specified in config.str.

The default font set used now is:
Times New Roman Star as the main font in graphic mode (timestar.ttf file);
Lucida Console Star as the only font in text mode (luconstr.ttf file);
Greek Mousa Star as the Greek font
Persian Naskh Star as the Arabic/Persian font.

For CJK users three default fonts are installed:
UWCXMF (Big5) containing nonsimplified Chinese characters;
UWPSTJ (GB) containing simplified Chinese characters;
UWJMG3 (SJIS) containing Japanese characters;

To install the CJK component you have to run the installation file starcjk.exe.


KEYBOARD AND TOOLBAR SHORTCUTS

Function | Key | Scope of operation
Bolden / remove bold | Ctrl B, Ctrl Shift B | All editing modes
Calling a related DBF | F7, Alt F7 | Browse, Edit
Calling a consult file | Shift F1-F10 | All editing modes
Carriage return within a field | Ctrl Enter +  | Browse, Edit
Change direction of input | Shift Backspace | All editing modes
Change field names / aliases | Ctrl F | Browse, Edit
Chinese (pinyin) input | F2 | All editing modes
Close a window | Escape | All modes
Compare databases | Right Shift F12 | Two databases open
Condense / remove condensed | Ctrl S, Ctrl Shift S | All editing modes
Continue search | F4 | All editing modes
Continue search backwards | Ctrl F4 | All editing modes
Copy a field | F5 | Browse, Edit
Copy contents of a record | Alt F11 | Browse, Edit
Copy selection | Ctrl C, Ctrl Ins, Ctrl Shift C | All editing modes
Cut selection | Ctrl X, Shift Del | All editing modes
Cut record(s) | Shift Del | Browse
Decrease size | Ctrl Grey -, Ctrl Shift Grey - | All editing modes
Delete | Del, Backspace | All editing modes
Delete line | Ctrl Y | All editing modes
Delete records | Ctrl F8 | Browse, Edit
Duplicate database window | F11 | Browse, Edit
Edit field in a window | Ctrl T | Browse, Edit
Empty record | Ctrl E | Browse, Edit
Exit | Escape | All editing modes
Field list | Ctrl Shift F | Browse, Edit
Filter records | Ctrl \, Ctrl | | Browse, Edit
Format paragraph | Ctrl F5 | Text editor
Format table | Ctrl F7 | Text editor
Footnotes insert / edit | Ctrl N | Text editor
Freeze / unfreeze field | Ctrl R | Browse
Go to a record | Ctrl G | Browse, Edit
Grammar / dictionary | F9 | All editing modes
Help | F1 | All editing modes
Hide numeric fields | Ctrl N, Toolbar | Browse, Edit
Increase size | Ctrl Grey +, Ctrl Shift Grey + | All editing modes
Index set / remove | Ctrl D | Browse, Edit
Insert a record | Ctrl F7 | Browse, Edit
Italicize / remove italics | Ctrl I, Ctrl Shift I | All editing modes
Largest number in wordlists | Ctrl Shift N | Browse, Edit
Locate | Ctrl F3 | Browse, Edit
Mark a record for deletion | F8 | Browse, Edit
Move a field left | Ctrl Left | Browse
Move a field right | Ctrl Right | Browse
Move a record down | Ctrl Down | Browse
Move a record up | Ctrl Up | Browse
Page down within a record | Ctrl Down | Edit
Page up within a record | Ctrl Up | Edit
Paste | Ctrl V, F6, Shift Ins | All editing modes
Paste contents of a record | F12, Alt F12 | Browse, Edit
Paste a record with insertion | Shift Ins | Browse
Print | Printer button | All editing modes
Print a record | Ctrl F11 | Browse, Edit
Print a range of records | Ctrl F12 | Browse, Edit
Query window | F10 | All editing modes
Redo | Ctrl Shift Z | All editing modes
Search | F3 | All editing modes
Search for similar meaning | Right Shift F11 | Two databases open
Search for similar shape | Left Shift F11 | Two databases open
Search for similar shape + meaning | Left Shift F12 | Two databases open
Seek | Alt F3 | Browse, Edit
Select | Shift + arrows | All editing modes
Select all | Ctrl A | All editing modes
Select and copy field | F5 | Browse, Edit
Select records for sorting | F5 start, F5 end | Browse
Smart italic | Ctrl F6 | All editing modes
Sort records in selection | Alt F5 | Browse
Start editing | Enter | Browse
Subscripts | Ctrl L, Ctrl Shift L | All editing modes
Superscripts | Ctrl H, Ctrl Shift H | All editing modes
Spellchecking | Ctrl F8 | Text editor
Tabulate selection | Ctrl F7 | Text editor
Toggle Browse/ Edit | Ctrl F10; Toolbar | Browse, Edit
Toggle text/graphic mode | Alt F9, Toolbar T/G | All editing modes
Undelete marked record | F8 | Browse, Edit
Underline / remove underline | Ctrl U, Ctrl Shift U | All editing modes
Undo | Ctrl Z | All editing modes
Undo field edit | Ctrl Backspace | Browse, Edit
Unformat table | Ctrl Shift F7 | Text editor
Unselect records | F5 | Browse
Zoom In/Out | Toolbar + / - | Edit, Text editor


GENERAL KEYBOARD LAYOUT

This section explains the basic Star4Win keyboard layout; see the ALPHABETS section for a detailed layout of the Star4Win keyboard system.

All keyboard settings are defined in the keyboard.dbf (which is actually a database file and can be edited with help of the BROWSE/EDIT commands). The Star4Win keyboard layout is completely independent from the currently loaded Windows keyboard drivers.

The default keyboard setting is as follows:

  1. The standard keyboard set is standard U.S. English (QWERTYU....).
  2. If you press and release the Right Shift key, the keyboard is reassigned to Cyrillic letters. Their order is following:

    [Right Shift+]
    q:é w:ö e:ó r:ê t:å y:í u:ã i:ø o:ù p:ç [:õ ]:
    a:ô s:û d:â f:à g:ï h:ð j:î k:ë l:ä ;:æ ':ý
    z:ÿ x:÷ c:ñ v:ì b:è n:ò m:ü ,:á .:þ

    To get back to the standard set, press and release the Left Shift key.

  3. You can use the alternative "phonetic" character set if you press and release the Alt key:

    1: ´ 2: ° 3: ¬ 4 : ¢ 5: ¯ 6: · 7 : ¨ 8 : ¸ 9 : • 0: † = : ‚
    q:ª w:º e: r:’ t:® y: u:µ i:— o:£ p:© [: ]:¥
    a:„ s:« d:‹ f:± g:‘ h:” j:€ k:™ l:š ::œ ":
    z:¼ x:» c:‰ v :¹ b:½ n:Ÿ m:¾

  4. More special characters are available if, after pressing and releasing Alt, you press (and hold) the Shift key:

    ^ : ¿ | : §
    E:Œ U:³ I:- O:¡ {:Ž }:¦
    A:ƒ H:“ L:› C:ˆ

  5. Still more special characters are available if you press and release the Control key:

    u:¶ i:˜ o:¤
    a:… s:
    x:‡ c:Š

  6. Star4Win also has additional keyboard registers, summoned by the key combinations Alt 1, Alt 2, Alt 3, Alt 4, Alt 5, Alt 6. Most of them are not used in the default configuration, but Alt 1 and Alt 2 are assigned respectively to Arabic and Greek letters. Pressing Alt 0 will summon the default zero keyboard register, described above.

While editing your files you will see the name of the current keyboard mode and register in the lower right corner of each window: LS stands for "left shift" (the default status of every register), RS - "right shift", AL for "Alt" and CT for "Control".

In text mode you can also directly enter Unicode characters in the format {U+xxxx}; when you switch to graphic mode, the character will be displayed in the currently active Unicode font.

CJK KEYBOARD LAYOUT

If you have installed the CJK component you may enter Chinese or Japanese characters into your texts or databases.

Pressing F2 activates the CJK input window on the toolbar. Enter the reading of the character you need and choose from the menu by using the Down arrow and the Enter key.

If you do not enter any reading and press the Down arrow, the list of recently typed characters will be displayed.

To switch between different character systems (Traditional (non-simplified) Chinese (default), Simplified Chinese, and Japanese, press F1, F2, and F3 respectively while the CJK input window is active.

You may also switch between different keyboard registers by using the small combo box located on the toolbar.


DICTIONARIES AND MORPHOLOGY

The Star4Win package includes by default two dictionary databases (in a special format): A. Zalizniak's Russian Grammatical Dictionary and Mueller's English-Russian dictionary.

Morphological analysis and synthesis is supported in Star4Win just like in StarLing. Press F9 while the cursor is positioned on any Russian (or English) word and watch the results.

The result of morphological analysis and synthesis is placed by Star4Win into a separate text window which can be viewed, edited, printed and closed like any other text window.

Starting with Star4Win 1.0.6 an optional multilingual (English-German-French-Spanish-Italian-Dutch) dictionary can be installed. It is available as a separate installation package (multilang.exe) which will install varia.dbf and varindex.dbf into the default StarSoft\Dict folder. The dictionary is actually a concatenation of several dictionaries available on the Web (see www.freelang.net), and the lexicographical qualities are rather low. But it can certainly be useful for a quick lookup of a German or Spanish word. No morphological engines for languages except English and Russian are present so far, so the words will be looked up primarily in their source form (although some ready-built word forms can be also found). Information from the multilingual dictionary will be summoned by pressing the standard F9 key, as long as the dictionaries are present in the StarSoft\Dict folder.


PRINT

While you edit your files, you can print DBF records (either a single current record, or a range of records), as well as whole texts and text blocks: use the Printer option of the Toolbar to do that. Star4Win will generate an RTF preview of the record or range of records which you can view or modify before actually sending to the printer.

To obtain more sophisticated reports and printouts Star4Win can generate database reports in RTF format which can be viewed, edited, saved and printed like any text files.

If you choose the Print option from the File menu, you will be presented a table with several options. This table is actually a special database file with the extension .prt. It will contain the list of your database fields (displayed as records) and a number of special columns [we will use the term 'column' here to avoid confusion between fields in the .prt file and fields in your database file which are here displayed as records]. The columns are called:

  1. NEWFN - a character column which contains names of your database fields.You can change any of these names or delete any of them (if you do not want the field header to be printed).
  2. PRFD - a logical column specifying whether any particular field should be printed or not.
  3. PRFN - a logical column specifying whether the field name (field header) should be printed or not.
  4. MINI - a logical column specifying whether a particular field should be printed in a condensed (petit) font or not.
  5. ITALIC - a logical column for italic printing.
  6. SUBSCR - a logical column for underscored printing.
  7. DOUBLE - a logical column for bold (doublestrike) printing.
  8. OPDELIM - a character column where you can specify opening delimiters for a particular field.
  9. CLDELIM - a character column where you can specify closing delimiters for a particular field.
  10. LNFD - a numeric column. Its 0 content means that a particular field will be printed without linefeed (i.e. immediately after the preceding field). A non-zero value means that the field will be printed on a new line, with the indent width specified in LNFD.
  11. BLFD - a logical column, instructing the printing program either to print blank fields either as spaces (if the content of BLFD is Y) or to skip them.
  12. HYPHEN - a logical column, instructing the printing program to print hyphens instead of blank fields.
  13. SUBORD - a character column, containing the names of subordinate files to be printed (if any).
  14. AFTPRINT - a logical column, regulating the order of fields to be printed. If a subordinate file is specified in the field SUBORD, its contents will be printed immediately after the basic file field if AFTPRINT is set to .F., but only after all basic file fields are printed if AFTPRINT is set to .T.. If no subordinate file is specified in the field SUBORD, the respective file field itself will be printed in the normal order if AFTPRINT is set to .F., but after all other fields if AFTPRINT is set to .T. All this allows for much freedom while formatting your printed output from database files.

Once you finish editing the .prt table, its contents will be remembered and you will not have to edit it again (unless you wish to change some parameters). However, the table will appear on the screen each time before you start printing. Just close the window or press the Print icon on the Toolbar to proceed if you do not wish to change its contents.

[NB: You may also edit .prt files in the standard BROWSE/EDIT modes. If you do so, you will note that there are some other columns there which are not shown within the printing program: FIELD_NAME which still contains the field names of your database, even though you may have changed them in NEWFN; FIELD_TYPE containing the type of each field; and POLYPRINT which automatically contains Y (T) in the first record if subordinate file printing is specified in SUBORD. You should not try to change contents of these fields: this will probably crash your printed output.]

After you finish editing the .prt, you will be presented with a dialog box concerning your immediate printing requirements (margins, lines per inch, lines per page, number of records to be printed.).

Next an .rtf file will be generated and shown to you. Its contents can also be modified like the contents of any other text file. You can then send it to the printer or save it on disk for further use.


RUSSIAN DICTIONARY

Star4Win operates on the basis of Zalizniak's Russian Grammatical Dictionary, and it is possible to access information from the dictionary directly by using the F9 function key (when the text caret is on the analyzed form).

[Below we reproduce a piece of information from StarLing help, but most of it - except the screen formatting - applies to Star4Win as well].

For example, when analyzing the word 'голова', you will see the following:

Analyzed form: голова
Source form: головаґ, Ns Source form: головаґ, Ns Choose from the menu: Press Return to view paradigm, F2 to view dictionary entry
(Escape to get back to text)

You may choose one of these two forms of 'головаґ' as if they were options on any other menu by using the Up and Down arrows. If you press Return, you will see two paradigms which differ from one another in accent in the accusative case, although no information from the dictionary will appear.

By pressing F2, you will call up the following:

For the first form:

ж 1F' (_в обычн. знач._) % заґ голову//за гоґлову; наґ голову//на гоґлову; схватиґться заґ голову (_прийти в ужас_); постаґвить с ноґг наґ голову (_в перен. знач._); наґ голову выґше (_в перен. знач._); как снеґг наґ голову (_поговорка_)

And for the second form:

мо жо 1F (_должностное лицо_)

The expressions "ж 1F'" and "мо жо 1F" are Zalizniak's morphological indices followed by comments about the usage of the forms and their meaning.

All of this information is taken from the dictionary which is stored as a set of simple ASCII files (from Z_160 to Z_239). You may read this dictionary with any text viewer (including STARLING) and use it for any purposes you like.
Note!
These files are the lexical basis for STARLING, and if they are distorted in any way, the program may become unusable. It is therefore advisable to make copies of the files if you plan to use them otherwise.

The dictionary is basically a computerized version of the book: A.A.Зализняк, Грамматический словарь русского языка, Москва 1980 (second edition). There are, however, some differences in notation between the book and the computerized version.

Zalizniak STARLING

a (accent paradigm) а
[Cyrillic а instead of Latin a]

b (accent paradigm) в
[Cyrillic в instead of Latin b]

c (accent paradigm) с
[Cyrillic с instead of Latin c]

d (accent paradigm) D

e (accent paradigm) е
[Cyrillic е instead of Latin e]

f (accent paradigm) F

Circle (denoting a standard Double quotes ("")
deviation from conjugation/
declination)

Triangle (denoting a morpho- @
logical anomaly)

Quadrangle (denoting %
phraseologisms)

Stroked circle (before $
aspect indexes)

§ - sign separating flections Space (no sign at all)
from the inflexible stem

Cross (signifying that the !
adjectival short form is
hard to build)

Cross within a quadrangle ?
(signifying:
a) that the adjective does
not have a short masculine
form, and the other short
forms are hard to build
b) that the verb does not
have a passive past parti-
ciple

Small circle to the right **
from the index figure
(signifying some morphono-
logical subtypes)

Paragraph sign (denoting a #
reference to some additio-
nal peculiarity in conjuga-
tion or declination)

We will not go into great detail here in describing the structure of Zalizniak's morphological indices since they are described in the book (pp. 3-142). You may also arrive at your own conclusions by comparing the actual paradigms with the morphological indices.

Note that actual Russian lexemes are not accented in the computerized version of the dictionary. Instead, the accents are transformed into numerical indices next to every lexical item. These indices are either simple (e.g. голова 6 = головаґ) or else they contain a comma or a period. If there is a comma in the index, it means that the word contains a "еЁ" letter (e.g., грабеж 5,5 = грабеЁж). The period signifies that there is a secondary accent on the letter specified by the number after the dot (e.g. медсестра 9.2 = ме°дсестраґ).


SEARCH IN STAR4WIN

Searching in text files

Any search process is initiated by pressing F3 and entering the string you want to find.

After finding a string you may continue search by pressing F4.

Search and continue searching backwards by pressing Ctrl F4.

Case sensitivity of the search may be changed in the initial search dialog.

During search you may use wildcards: ? stands for any single letter, @ - for any combination of letters. The wildcard characters may be changed by means of the SETLIKE() function.

Any search will ignore symbols specified in the EXTRACT line of config.str. It is therefore possible to search for sequences ignoring various diacritic signs. The result of such a search, however, will also depend on the current encoding settings. If your configuration uses, e.g., palatino.lst, the diacritics will never be ignored - because they are encoded together with their parent letters as single Unicode characters. If you use the standard configuration (standard.lst) where diacritics are encoded as separate symbols, the search will effectively ignore them - unless, of course, you are searching for a sequence that itself contains diacritics.

Searching in databases

There are three basic ways to search for information in database files.

  1. Search (initiated by F3 and continued by F4; continued backwards by Ctrl F4).

    This way of searching is quite similar to text search. However, after finding the necessary sequence the cursor is positioned not on the found sequence but rather in the beginning of the field where it is contained within the respective database record. If the field is very large you may press Ctrl T and search within this field just as if it were a text file.

  2. Locate (initiated by Ctrl F3 and continued by F4; continued backwards by Ctrl F4).

    This is a more sophisticated procedure, because it searches not just for strings but for results of xBase expressions (see the section on the syntax of xBase expressions). That means that with Locate you may search for almost anything. For example if you want to find a record where the contents of field X are equal to the contents of field Y you may specify X == Y as the Locate expression.

    The most frequent usage of Locate (as experience shows) is finding something in some field. To find the string "x" in the field Y, specify "x" $ y as the Locate expression.

    The dollar sign (the xBase substring operator) is crucial here. Locate is an exact search and is not affected by the case sensitivity settings. To locate ignoring case you must use the Lower(), RLOWER(), Upper() and RUPPER() functions. So, instead of just "x" $ y you must write "x" $ Lower(y) or "X" $ Upper(y).

    Locate is usually slower than simple search. In Star4Win you may also initiate a faster Locate if you use single rather than double quotes in your expressions (thus, if you write 'x' $ y the locate process should be faster). This search, however, may be less exact if your database file is considerably fragmented, so search with double quotes is preferable.

  3. Seek (initiated by Alt F3).

    This type of search operates only on indexed or sorted database files and is the quickest. However, it only performs search on the indexed or sorted field.

    To use this sort of search you must first index or sort your file. If while indexing you use the StarLing ORDER() function, the file will be arranged according to the alphabetical order specified in the ORDER line of config.str. Otherwise plain ASCII order will be used. To index your file use the ASSIST Index option and specify ORDER(X) as the key expression (X here is the name of the field that is to be rearranged).

    During seek with the ORDERed key expression all diacritics specified in the EXTRACT line of config.str are also ignored.

    Files can be physically sorted using the ORDER() function. However, in sorted files only plain ASCII Seek may be performed.

When two databases are open simultaneously, more sophisticated search routines can be performed:

  • Search for similar shape (LeftShift F11) - will search for a record where the phonetic shape of the field PROTO (or the first character/variable field in general) in one database is similar to the phonetic shape of the same field in the other database. The parameters of similarity are specified in the file sound.dbf.
  • Search for similar meaning (RightShift F11) - will search for a record where the meaning of the field MEANING in one database is similar to the meaning of the same field in the other database. The parameters of similarity are specified in the file sense.dbf. So far semantic search is only valid for English entries.
  • Search for similar shape and meaning (LeftShift F12) - two previous search methods combined.

Search and Replace

Search and Replace is also possible, both in text files and in database files (although in the latter the preferable way is the more sophisticated Reform procedure).


SPELLCHECKING AND SYNTAX

If, while having a selected text on the screen, you press Ctrl F8, the program will start analyzing all the words in the selection. Incorrect spellings or words not contained in the dictionary, such as proper nouns, will be highlighted, and automatically marked by a special sign (ASCII code 17) for future corrections.

A preliminary version of syntax analysis for Russian, operating only on simple sentences, is included starting with version 1.0.7. Pressing Ctrl Shift F9 delineates a sentence and tries to build its syntactic dependency tree. This function is still rather raw and may hang the system: please use it with caution.


STAR4WIN PROGRAM INTERPRETER

Just like STARLING, STAR4WIN has a built-in program interpreter. You can write a program in the STARLING command language and then execute it. There are several things that should be kept in mind before you write your own program:

  1. The program must be kept in a text file with the extension .prg. At present the size of the .prg files must not exceed 500 lines.
  2. The programs are executed from the Assist menu (option ?). If your program file is called myown.prg you must write: do myown or do myown.prg.
  3. The programs executed by the STARLING program interpreter are considerably slower than built-in compiled programs. However, if you are experienced enough, you can do a lot of things with your data that are impossible within the limits of standard menu procedures.
  4. Being a Windows program, Star4Win must use the Windows output functions. All standard STARLING output functions will not work under Star4Win. The following substitutes should be used:
    • To open a terminal window where all text output will be redirected, use the function OPENOUT(), e.g.: OPENOUT("Terminal") will open a terminal window with the caption "Terminal".
    • To output a string to the terminal window use the function OUT(), e.g.: OUT("Hello, world!")
    • To close the terminal window use the function CLOSEOUT() without parameters.
    • The function STMESSAGE() is a multi-purpose message box. The message itself should be passed as first parameter, the box caption - as the second, and the icon type (e.g., question mark or a warning symbol) as the third parameter, e.g.: STMESSAGE("Hello, world!", "Greeting", 64)
      The two second parameters are optional.
    • The function DLGSTRING() is already documented; you can also use AREQUEST() as a synonym.
    • STDIALOG(). This function create special multipurpose dialogs; we intend to document it in the close future.

STARLING COMMAND LANGUAGE

The STARLING command language is a subdialect of the xBase programming language. Its basic distinctions and restrictions are the following:
  1. STAR4WIN does not yet accept xBase commands (like USE, GOTO, @...SAY etc.). It accepts, however, all valid function names, including all the standard functions (see STANDARD FUNCTIONS), standard xBase command substitutes (see STANDARD COMMANDS => FUNCTIONS) and specific STAR4WIN functions (see STAR4WIN FUNCTIONS). Thus, instead of the standard dBase sequence, e.g. :
    SELECT 1
USE MYOWN.DBF
    you will have to write:
    stUse("MYOWN.DBF","",1)
  2. A major restriction for the time being is the impossibility of using user-defined functions and procedures within your .prg files. A program file can contain only one program (procedure). We hope to improve the situation in future versions.
  3. The syntax of the STARLING programming language has the following characteristics:
    • Besides standard data types (described in SYNTAX of the dBase expressions) STARLING (like Clipper) has also a special NIL type. For example, when a new array is created (see below), all its elements are not yet assigned to any of the data types (character, numeric, date or logical) and have a NIL type.
    • Arrays. STARLING supports all the array capabilities of Clipper. An array is a series of enumerated variables, e.g. a[1], a[2], a[3]...a[n], everyone of which can be assigned any value.
      Arrays can be created in several ways:
      a) with the help of the Array() function, e.g.:
      a := Array(25)
      This creates an array of 25 elements with NIL values.
      b) by means of a special assignment using figure quotes:
      a := { 1, 2, 3, 4 }
      This creates an array of four elements: a[1] = 1, a[2] = 2, a[3] = 3, a[4] = 4.
      c) as a result of special functions like Directory() that return array values.

      Arrays can have several dimensions. E. g. the assignment
      a := Array(3, 4)
      will create an array of 3 elements, everyone of which has 4 subelements: a[1][1], a[1][2], a[1][3], a[1][4], a[2][1], a[2][2], etc.

      Array elements after being created are treated like all other memory variables. They can not, however, be directly evaluated by the macro (&) operator.
    • Conditional constructions.
      The IF...ELSE...ENDIF construction is the same as in dBase and Clipper; however, the Clipper ...ELSEIF... extension is not supported.
      The DO CASE...CASE...OTHERWISE...ENDCASE construction is supported.
    • Loops. The DO WHILE...ENDDO construction is the same as in dBase and Clipper. However, the Clipper FOR...NEXT construction is not supported.
    • Statements. Only three statements are supported (in the same way as in dBase and Clipper):
      EXIT (to exit a loop)
      LOOP (to move to the start of the loop)
      RETURN (to exit the program)
      There is no equivalent for other statements, like DECLARE, PUBLIC, PRIVATE, LOCAL, STATIC, FIELD, BEGIN SEQUENCE...(BREAK)...END SEQUENCE. To declare a (Private) variable or an array, use the inline assignment := (see below).
    • Operators. See the description of operators in SYNTAX OF THE DBASE LANGUAGE.
      Note that in the STARLING command language the = operator only tests for a match of its operands. The assignment of variable values is done by means of the inline assignment operator := (which also replaces the STORE command of dBase). For example, the line:
      a := 10
      will create a variable a and assign it a value of 10 (in Clipper you could have written: "a := 10", "a = 10" or "STORE 10 TO a"; only the first method is acceptable for STARLING).

      The line:
      a := Array(10)
      will create an empty array consisting of ten elements (a[1], a[2]...., a[10]).

      The line:
      a := { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
      will also create an array of 10 elements, but with values already assigned (a[1] = 1, a[2] = 2 etc.).
    • Functions. All functions described in STANDARD FUNCTIONS, STARLING FUNCTIONS, STANDARD COMMANDS => FUNCTIONS are allowed within expressions.


Standard XBase Functions

[This HELP section is not complete yet: read the respective section in STARLING for DOS Help].

In the expressions that are passed to STARLING you can use the following function names (parameters are included within round brackets).

You can use all of them in your expressions. If you make some mistake (forget about parentheses, brackets or misspell some string or variable), the system will display an error message - it is up to you to correct your expression.

SEE ALSO

?, Syntax of XBase expressions, StarLing functions.

AAdd(aArray, expr, [nElement]) --> xValue

Adds one element to an array. The new element is the last element in the array or the element at the position nElement. The new element has the value associated with expr. The length of the array is not limited. AAdd() is used to manage dynamic lists. The function ASize() has a similar purpose, allowing the size of any array to be set. The advantage of AAdd() is that the value expr is also assigned to the new element.

When the value of expression is an array, the new element in aArray contains a reference to the array specified in expr. aArray then becomes a multidimensional array.

SEE ALSO

Array functions, ADel, AEval, AIns, ASize

Abs(nExpr) --> nPositive

Returns a number >= 0 which represents the absolute value of nExpr.

SEE ALSO

Numeric functions, Exp, Log, Max, Min, Mod

AClone(aArray) --> aClonedArray

Used to create copies of multidimensional arrays. Since the function ACopy() only copies the elements in the first dimension of an array and does not consider subarrays, it cannot be used to copy a multidimensional array. AClone(), on the other hand, also creates copies of subarrays if array references are contained in the elements of aArray.

SEE ALSO

Array functions, ACopy, ADel, AIns, ASize

ACopy(aSource, aTarget, [nStartSource], [nCount], [nStartTarget]) --> aTarget

Copies elements of an array into another array.

PARAMETERS

aSource
The array whose elements are copied
aTarget
The array into which elements of aSource are copied
nStartSource
A numeric value specifying the starting position in the array aSource to copy. The default value is 1.
nCount
A numeric value specifying the number of elements to copy, starting from position nStartSource. If nCount is missing, the elements are copied from nStartSource to the last element of aSource.
nStartTarget
A numeric value specifying the starting position in the array aTarget to which copies are transferred. The default value is 1.

NOTE

Only values in the first dimension of aSource are copied. If aSource has subarrays (is a multidimensional array), only the array references and not the content of the subarrays are copied into aTarget. In this case, both arrays have the reference to the same subarrays. To completely copy a multidimensional array, the function AClone() must be used.

The array aTarget must be large enough to hold the copied values. If aSource is greater than aTarget, all the elements are not copied.
The array aTarget can be identical to aSource. When this is the case, elements in aSource may be moved in blocks.

SEE ALSO

Array functions, AClone, ADel, AEval, AFill, AIns, ASort

ADel(aArray, nElement) --> aSource

Deletes the contents of nElementth element from array aArray. The content (or value) of the element is lost and all subsequent elements shift up one position. The value of the last element becomes NIL. The number of array elements Len(aArray) remains unchanged by ADel(). To remove the last element after ADel(), the function ASize() must be used.

SEE ALSO

Array functions, AAdd, ACopy, AFill, AIns, ASize

AEval(aArray, bBlock, [nStart], [nCount], [lAssign]) --> aArray

Allows operations to be performed on the contents of array elements. The operations are programmed in a code block which is executed nCount times beginning with array element nStart. The contents of the current array element are passed to the code block as the first argument and the element index is passed as the second argument. After each execution, the index is incremented and the code block is evaluated with the next array element. If lAssign equals .T., the array element is passed to the code block by reference. If an assignment to the first code block parameter is made, it is reflected in the corresponding array element.

NOTE

The contents of the array elements are not relevant to AEval(), since the function merely passes the contents of each element on to the code block. However, the code block must assure that only correct data types are processed.

SEE ALSO

Array functions, Code block functions, DbEval, Eval

AFill(aArray, [expr], [nStart], [nCount]) --> aArray

Fills nCount (all by default) elements of array aArray with a single value expr (NIL by default), starting with array element nStart (1 by default). The value can be of any data type. If the value is an object or an array, all the elements of the filled array contain the same reference to the object or subarray. The function assigns the value only to the elements of the first dimension. Multidimensional arrays cannot be filled with AFill().

SEE ALSO

Array functions, AAdd, AEval, DbStruct, Directory, stDbStruct, stRecordStruct

AIns(aArray, nElement, [expr]) --> aArray

Inserts the value expr at the position nElement within the array. All array elements, starting with this position, are shifted down one element and the content of the last element is lost. The number of array elements Len(aArray) remains unchanged by AIns(). To avoid losing the value in the last element the function AAdd() can be used. AAdd() adds an element to the end of the array prior to the insertion.

SEE ALSO

Array functions, AAdd, ACopy, ADel, AEval, AFill, ASize

AllTrim(s) --> sTrimmed

Removes all blank spaces (Chr(32)) at the beginning and end of a character string. The similar functions LTrim() and RTrim()|Trim() remove blank spaces only at the beginning or end of a character string. The counterpart to AllTrim() is the function PadC(), which adds blank spaces to the beginning and end of a character string.

SEE ALSO

Character functions, PadC|PadL|PadR

Array(nDimension1 [, nDimensionN...]) --> aArray

Creates an array which contains the value NIL in all elements (except for Array(0) which creates an empty array which has no elements). If the argument nDimensionX is included, an array with nDimensionX elements is assigned to each array element of the dimension nDimension1. These arrays also have the value NIL in all elements. Neither the number of dimensions nor the number of elements per array is limited.

SEE ALSO

Array functions, AAdd, AClone, ACopy, ADel, AEval, AFill, AIns

Asc(s) --> n

Returns the ASCII code for the first character of string s. The counterpart of Asc() is the function Chr(), which converts an ASCII code to an ASCII character.

SEE ALSO

Conversion functions, Chr, Str, Val

AScan(aArray, bxSeekExpr, [nStart], [nCount]) --> nElement

Search an array for a value. If bxSeekExpr is not a code block, the value of bxSeekExpr is compared with the value of each array element. The search begins with the element nStart (1 by default) and compares nCount (all by default) array elements. As soon as a match is found, AScan() terminates the search, returning the position of this array element as a numeric value. AScan() uses the simple equals operator (=) for the comparison. Because of this, the search of character strings is dependent on the settings SET EXACT, SET LEXICAL and SET COLLATION.

When bxSeekExpr is a code block, the search occurs as just described, except that AScan() evaluates the code block passing it the contents of each array element. The code block must perform a comparison and return a logical value. As soon as the code block returns .T., AScan() terminates and returns the position of this element. The code block is necessary when a complex search condition must be used or when the search is performed on a multidimensional array.
Returns 0 if the search is unsuccessful.

SEE ALSO

Array functions, AEval, Eval

ASize(aArray, nElements) --> aArray

Increases or decreases the number of elements in an array. When the array is lengthened, the new elements are at the end of the array and have the value NIL. If the array is shortened, the elements at the end of the array are deleted and their contents are lost.

NOTE

Another function which changes the size of an array is AAdd() which attaches a single array element at the end and optionally assigns it a value. The contents of array elements can also be manipulated with the functions AIns() and ADel(), which do not change the size of the array.

SEE ALSO

Array functions, AAdd, ADel, AFill, AIns

ASort(aArray, [nStart], [nCount], [bOrder]) --> aArray

Sorts the elements of an array. One dimensional arrays are sorted in ascending order by default. This means that smaller values are placed at the beginning of the array, with larger values at the end. Sorting in descending order or sorting multidimensional arrays requires that a code block bOrder be specified. The code block must contain a logical expression comparing two values. Two values x1 and x2 are passed to the code block from ASort(). To create ascending order, the code block must return the result of evaluating whether x1 < x2. To create descending order, the code block must return the result of evaluating whether x1 > x2.

NOTE

Character strings are sorted according to their lexical order. Sorting depends on the settings SET EXACT, SET LEXICAL and SET COLLATION. Logical values are sorted with .F. being less than .T.. Date values are sorted chronologically and numeric values according to their size.

SEE ALSO

Array functions, AEval, AScan, DbSort, Eval


Star4Win Functions

[This HELP section is not complete yet: read the respective section in STARLING for DOS Help: you can use the file starhelp.dbf in Star4Win just like any other database. Note: most of StarLing functions can be used both in StarLing and Star4Win, but interface functions (involving screen output) are usually different.]

There are some new functions available in Star4Win, both compared with standard xBase and DOS StarLing.

You can use all of them in your expressions. If you make some mistake (forget about parentheses, brackets or misspell some string or variable), the system will display an error message - it is up to you to correct your expression.

All of these functions are supposed to function also within the Star4Win program interpreter.

SEE ALSO

?, Syntax of XBase expressions, Standard functions.

aLike(s1, s2, [n]) --> n

This is the standard wildcard search function. It searches for the first occurrence of s1 within s2 and returns the value as a numeric integer; if the search fails, the return value is 0. If specified without wildcard characters, the function works just like the standard At function. The standard wildcard characters are '?' and '@', but you can change them by calling the setLike function from ASSIST. n is an optional parameter which on the return of the function contains the length of the found string.

EXAMPLES

aLike("ild","wildcard") == 2
aLike("l?c","wildcard") == 3
aLike("c@d","wildcard") == 5
aLike("c@p","wildcard") == 0

NOTE for programmers

There is also a similar function called atLike where you can explicitly set all three parameters: the wildcard characters and the delimiter. Moreover, if you create a numeric variable and pass it to the atLike function by reference, on return it will contain a value corresponding to the last symbol position of s1 within s2 - which may be useful. The atLike function is, in fact, the inner mechanism of aLike implemented in C, so it works a little faster.

SEE ALSO

String functions, setLike

alpha(s) --> flag

Returns .T. if s is an alphabet letter (including cyrillic letters and STARLING-specific letters like ‰, » etc.).

SEE ALSO

String functions

appBlank(n) --> NIL

Appends n blank records to the bottom of the currently open database file.

SEE ALSO

Database functions

appFrom(filename, cond, scope) --> NIL

Appends a database file (named filename) to the bottom of the database file currently open, with the logical condition cond and scope scope (both are passed as character strings).

NOTE

[Not yet supported in Star4Win]

SEE ALSO

Database functions

average([expr1], expr2) --> n

Returns the average value of a numeric expression expr2 (passed as a character string) throughout the whole database. The first parameter should be passed as an empty value: e.g. average(, "NUMBER") or average("", "NUMBER").

SEE ALSO

Database statistics, count

border([expr]) --> n

A lexicostatistical function. Returns the distance between two dates (by default - 0.1, i.e. 100 years) which is enough for constructing a new node on the genealogical tree. Entering border() with some parameter (e.g., border(0.3)) changes the current border setting.

change(s, [rulefile], [refresh])

The function will change the expression s according to the set of rules listed in the database file rulefile. Note that the database information is only read once, and the second call of the function uses already the information stored in memory, and you can call the change function with a single parameter (s). However, if you wish to renew the information (e.g., use a different database file containing rules), you must specify the refresh parameter as .T..
Note that the database file must have four fixed character fields: CLASS, DEFINITION, RULES, CONDITION. We provide a demonstration file called testrule.dbf. Try to call the function change(), e.g. like this: change("kºetwores","testrule"). See what happens and inspect the structure of the testrule.dbf file!

SEE ALSO

String functions

charStart(s, n1, n2)

Returns the starting position within s of any symbol within the range of ASCII codes between n1 and n2. Thus you can, for example, find out the starting place of cyrillics within any given symbol sequence, and take appropriate action.

SEE ALSO

String functions

common(s1, s2) --> s3

This function is for commodity only and is fully equivalent to sense(s1+s2).

SEE ALSO

Semantic functions, sense

count(cond) --> n

Returns the number of records in the currently open database file matching the condition cond (passed as a character string).

NOTE

Use this function with files containing variable fields.

SEE ALSO

Database statistics, average

dlgString(caption, prompt) --> s

[Synonym: AREQUEST]

Opens a single-line input window with caption caption and prompt prompt. Returns the input as a character string.

NOTE

This function is Star32-only! In DOS version, use aRequest(prompt) --> s

SEE ALSO

User interface functions.

ends(s, s1, [s2...sn]) --> flag

Returns .T. if the string s ends in at least one of the strings specified as the rest parameters.

SEE ALSO

String functions, starts

epsilon([expr]) --> n

A lexicostatistical function. Returns the value that is currently chosen for evaluating the distance between two languages (A, B) within a node and any other language (C) in the tree (the default value is 0.75). If the distance is >= epsilon(), the distances are averaged (i.e. the distance between A&B and C is measured as (A&C + B&C) / 2); if the distance is < epsilon(), the minimum distance is taken (i.e. the distance between A&B and C is measured as min(A&C, B&C)).

exclusive(s) --> flag

A function working only with etymological files. The parameter must be a string consisting of two valid field names, e.g. "AND, AVA". Returns .T. if the record represents an exclusive isogloss between the two languages.

extract(s, s1) --> s2

Returns the string s with string s1 extracted from it. This function can be combined with INDEXes (e.g., if you have a field called LEXEME, you may INDEX on extract(LEXEME, '*'): this will result in arranging your file according to the alphabetic order of LEXEME, but ignoring the sign * occurring anywhere in the field). Note that s1 may be a string of several values separated by commas (e.g. extract("abc", "a,b,c")): all of them will be extracted from the string s.

NOTES for programmers

The function now accepts an optional third parameter specifying the delimiter between extracted substrings (by default - a comma). Examples:
extract("STARLING","A,L") == "STRING"
extract("STARLING","A;L") == "STARLING"
extract("STARLING","A;L",";") == "STRING"
The delimiter may only consist of one byte. For speed's sake extract operates now directly on the passed string value, leaving it modified. If you wish to preserve the original value, make a copy of it beforehand. Examples:
a := "STARLING"
b := extract(a,"A,L")
After these operations b == "STRING", but a == "STRINGGG" (sic!). To preserve everything intact you should rather do:
a := c:= "STARLING"
b := extract(a,"A,L")
a := c

SEE ALSO

String functions

Filled(s) --> flag

The function accepts as parameter a string consisting of field names separated with commas. It returns .T. if all the listed fields in the current record are not empty, otherwise it returns .F..

The notation Filled("field1, field2")is therefore equivalent to the expression !Empty(field1) .AND. !Empty(field2).

NOTE

The function returns a meaningful result only when a database is open.

SEE ALSO

Database statistics, Empty, FilledFields, FilledOnly

FilledFields(s) --> n

s is a string consisting either of field names separated with commas, or of two numbers separated with a hyphen.
The expression FilledFields("field1,field2,field3")will return the number of filled fields among the set of the three mentioned fields.
The expression FilledFields("1-20") will return the number of filled fields among the first twenty fields of the database.

NOTE

The function returns a meaningful result only when a database is open.

SEE ALSO

Database statistics, Empty, Filled, FilledOnly

FilledOnly(s1, [s2]) --> flag

s1 is a string consisting of field names separated with commas. s2 is a string consisting either also of field names separated with commas, or of two numbers separated with a hyphen.
The expression FilledOnly("field1,field2", "field3,field4") will return .T. only if both FIELD1 and FIELD2 are not empty, while FIELD3 and FIELD4 are empty.
The expression FilledOnly("field1,field2", "1-18") will return .T. only if both FIELD1 and FIELD2 are not empty, while all the fields from No. 1 up to 18 (excluding, of course, FIELD1 and FIELD2) are empty.
If only s1 is passed (the string of field names), s2 is assumed to be the range of all fields within the database.

NOTE

The function returns a meaningful result only when a database is open.

SEE ALSO

Database statistics, Empty, Filled, FilledFields

grammar(s, l, s2) --> s3

This function returns the result of morphological analysis of s. If this is an English word, returned is its source form and the set of Russian translations from Mueller's dictionary. If this is a Russian word, returned are all its possible source forms and morphological characteristics. If the second (logical) parameter is passed, returned is also information from Zalizniak's dictionary and a set of English translations. The third optional parameter is a delimiter. If it is passed, all the previous information is returned together with all forms from the word's paradigm. The paradigm forms are separated from the rest of information by the delimiter s2.

SEE ALSO

Morphological analysis

howMany(s, s1) --> n

Returns the number of occurences of the string s1 within the string s.

EXAMPLE

howMany("papapap", "pap") == 3

SEE ALSO

String functions

in(s, s1, [s2...sn]) --> n

Returns a numeric value denoting the first occurrence of some of its parameters (starting from s1) within s.

EXAMPLE

in("voice", "i", "b", "d") == 3

SEE ALSO

String functions

index(ntxName, expr) --> NIL

Creates an index file named ntxName (with the default file extension .NTX) for the currently open database file using as the key expression the logical expression expr.

SEE ALSO

Database functions

match(fieldname1, [fieldname2]) --> value

It is similar to stRecordGet, but works on two databases, returning the first match within the database related to the current one through fieldname1, either as a complete record with field names (if no fieldname2 parameter is passed) or as the content of If fieldname2 is passed, but is not a valid field name in the related database, the record is still returned as a whole, but with fieldname2 serving as a delimiter.

NOTE

match behaves exactly like the F7 key during database editing. It fully supports the hierarchical structure of the STARLING wordlist and lexicostatistical files.

For programmers: matchopens the second (related) database in the select area 15, and keeps it there. If you use matchin programs, do not forget to close the area after it is no longer needed (either by means of the stUse function, or by means of DbCloseAll function).

SEE ALSO

Database functions, DbCloseAll, stRecordGet, stUse

order(s1) --> s2

This function is used in conjuction with the INDEX or SORT commands in order to change the standard ASCII order while indexing. If you specify simply: INDEX on (field_name), the order will be standard. However, if you specify: INDEX on order(field_name), the order of symbols will be changed. The default changed order is specified in the file CONFIG.STR. You may change it however you like just by editing the CONFIG.STR (e.g. you may change the places of A and B, so B will come before A in your indexed file). Remember, however, that the string enclosed in quotes after the words ORDER = in CONFIG.STR must contain the whole alphabet you use, and if you add a letter in one place you must delete it in any other place; otherwise the result is unpredictable. The STARLING learns the new order every time it is being loaded. The process of indexation on the order function is somewhat slower; however, it is often useful.

An addition since STARLING 7.00 is the possibility to include digraphs and nested elements in the ORDER string. E.g., if you wish dh to come after d (but before e) the respective fragment of the ORDER string in CONFIG.STR must look like this: .....d{dh}e....
If you wish „ to be linked together with a, the respective fragment of the ORDER string must look like ...a(„)b...
If you write: .....(e())..... STARLING will sort the sequence of nebo, nbo, neboskrbas nebo, nbo, neboskrb(with the normal order ...e.... the resulting sort sequence would be nebo, neboskrb, nbo).

SEE ALSO

String functions

quotient(n) --> s2

Without parameters this function just displays the current lexicostatistical replacement rate value (by default - 0.05). If you enter, e.g., quotient(0.1), it will change the rate value to 0.1.

reverse(s1) --> s2

Returns any string in a reversed shape. May be useful (in combination with REPLACE and SORT) for building up reversed dictionaries etc. However, reverse can not yet be combined with INDEXes.

SEE ALSO

String functions

rLower(s1) --> s2

Returns string s1 with all Cyrillic characters (ASCII codes 128-175 and 224-239) converted to lower case.

SEE ALSO

String functions, Lower, rUpper

rUpper(s1) --> s2

Returns string s1 with all Cyrillic characters (ASCII codes 128-175 and 224-239) converted to upper case.

SEE ALSO

String functions, Upper, rLower

sense(s1, [flag]) --> s2

Returns the common semantic constituent(s) of all the words in s1 - if any.
If flagis passed as .T., the function sensereturns all the semantic constituents of all the words constituting s1(excluding articles, prepositions and some other "empty" words).

EXAMPLE

sense("tree") == "grass;leaf;root;tree;stick;forest"
sense("bush") == "root;tree;thorn;grass;fruit"
sense("tree; bush") == "grass;root;tree"
sense("tree; bush", .T.) == "grass;leaf;root;tree;stick;forest;thorn;grass;fruit"

SEE ALSO

Semantic functions, common, similar

setLike(s1, s2, [n]) --> NIL

This function sets the environment for the aLike function. It changes the default wildcard characters from '?' to s1 and from '@' to s2. Do not forget to specify both of the two first parameters and to make them not longer than one symbol each: otherwise the results are unpredictable. Parameter n is optional: it specifies the ASCII code of the symbol used as delimiter for the atLike search (the default delimiter is space, code 32). Thus, the default return value for the expression:
aLike("these are strings","s*s")
is 11 ("s*s" is identified with "strings"). If, however, you specify: setLike("?","*",0)- setting the delimiter value to zero, the same expression will return 4 (identifying "s*s" with the sequence "se are s").

SEE ALSO

String functions, aLike

similar(form1, form2, mean1, mean2)

This is a complex function with four possible character arguments. The former two are compared on the basis of the sound function, while the latter two are compared on the basis of the sense function. The parameter mean1 is supposed to be the meaning of form1, and the parameter mean2 - the meaning of form2. Thus,
SIMILAR("hound","Hund","hound","dog") == .T.
SIMILAR("dog","Hund","dog","dog") == .F.
If only the first two parameters are passed, they are compared merely by sound; if the first two parameters are empty, the last two are compared merely by meaning. Thus,
SIMILAR("hound", "Hand") == .T.
(while SIMILAR("hound","Hand","hound","hand") is of course .F.).
SIMILAR("","","hound","dog") == .T.
(while SIMILAR("","","hound","hand") is .F.).
The function SIMILAR can now be automatically summoned while editing database files. The files are presently supposed to be standard etymological files with the fields PROTO and MEANING. Pressing Left Shift + F11 while editing one file will result in an automatic issuing of the Locate procedure equivalent to LOCATE FOR SIMILAR(FILE1->PROTO,FILE2->PROTO).
Pressing Right Shift + F11 will result in issuing the Locate procedure equivalent to LOCATE FOR SIMILAR("","",FILE1->MEANING,FILE2->MEANING).
Notethat in this case only semantic matches are searched and the performance is generally slow.
Finally, pressing Shift + F12 will summon the Locate procedure equivalent to LOCATE FOR SIMILAR(FILE1->PROTO, FILE2->PROTO, FILE1->MEANING, FILE2->MEANING).
By pressing F4 you can continue search and browse through the whole second file looking for possible similarities.

SEE ALSO

Semantic functions,sense, sound

sound(s1, [flag]) --> s2

Works with strings consisting of standard ASCII characters plus the extended STARLING set of phonetic symbols, changing any string into an artificial phonetic carcass (e.g. both "panat" and "banad" are transformed into "PNT" etc.). The function is convenient for searching similar phonetic shapes in different languages. It can be used in indexes to database files and for other purposes.

NOTE

The length of the string transformed is the same as that of the original string (i.e. in reality "panat" and "banad" are transformed to "PNT  "). This is necessary for simplifying the use of sound in index files. If for some purpose you need trimmed values, use Trim(sound(s1)) or trimSound(s1) (the latter function works slightly faster than sound).
The function soundhas now become customizable. Sound values now can be entered and edited in the file SOUND.DBF. Local copies of SOUND.DBF may be placed in different subdirectories. STARLING first searches for SOUND.DBF in the current directory, then - in the main STARLING directory (where STAR32.EXE is located). If SOUND.DBF is not found, default phonetic values are used.
The structure of SOUND.DBF is very simple. It contains one character field called SOUNDS, and any number of records you like. Each record must start with a character value considered to be common for all subsequent symbols, e.g.: Tt®Dd means that all the dental phonemes specified will be regarded as "T". If a record starts with "H","J" or "W", all the subsequent letters will be regarded as such if they start the analyzed sequence, but will be disregarded completely in all the following positions. Thus, the function SOUND will normally return "HT" for "hada" or "ata", "JT" for "yada" or "jutu", but just "T" for "taha", "taja" or "tuwe".
Digraphs and diacritics, as well as spaces between letters are not recognized. Therefore make sure your "dental" string, e.g., is not something like "Tt®dth dht'".
Adjustments to the sound strings can be made directly in the SOUND.DBF. Note, however, that they are actually acknowledged only after restarting STARLING.
Note also that the sound function can accept a flag logical parameter. If it is specified as .T., all the letters in the sequence are analyzed, otherwise the resulting string is truncated to a maximum of three letters. Thus, sound("letter") == sound("letter",.F.) == "LTT", but sound("letter",.T.) == "LTTR".

SEE ALSO

Phonetic functions, vocSound

starts(s, s1, [s2...sn]) --> flag

Returns .T. if the string s starts in any of the strings specified as the rest parameters.

SEE ALSO

String functions, ends

stDbCreate(filename, aStruct)

[Synonym: DBCRE]

Creates a new database file named filename using database structure in array aStruct.

NOTE

Remember that the length value is meaningful only for character and numeric fields. In other cases the function automatically establishes the default values (1 for logic fields, 6 for variable fields, 8 for date fields, 10 for memo fields).

EXAMPLE

stDbCreate("new", { {"field1", 'C', 15, 0},
                    {"field2", 'N', 3, 0},
                    {"field3", 'N', 5, 2},
                    {"field4", 'V', 6, 0} })
will create a file called NEW.DBF (with a corresponding NEW.VAR) containing four fields:
Field name | Field type | Field length | Field decimals
FIELD1 | C | 15
FIELD2 | N | 3
FIELD3 | N | 5 | 2
FIELD4 | V | 6

SEE ALSO

Database functions

stDbfName() --> s

[Synonym: DBF()]

Returns the name of the currently selected database file (without extension).

SEE ALSO

Database functions, stDbfNameExt

stDbfNameExt() --> s

[Synonym: F_DBF]

Returns the name of the currently selected database file (with extension).

SEE ALSO

Database functions, stDbfName

stFieldGet(n) --> xValue

[Synonym: GETFIELD]

Returns the value of a field in the current record of the database file currently selected. n is a positive integer specifying the ordinal position of a field in the record. n can also be a character string specifying a field name.

NOTE

Use this function instead of FieldGet with files containing variable fields.

SEE ALSO

Database functions, FieldGet, FieldPos, stFieldPut, stReplace

stFieldPut(n, xValue) --> NIL

[Synonym: PUTFIELD]

Works exactly like stReplace with some optimizations turned off. n is a positive integer specifying the ordinal position of a field in the record.

Use this function with files containing variable fields.

SEE ALSO

Database functions, FieldGet, FieldPos, stFieldGet, stReplace

stMemoRead(filename) --> buffer

[Synonym: M_READ]

Returns the contents of the file filename as a character string.

SEE ALSO

File functions, stReadFile

stReadFile(filename) --> aStrings

Returns the contents of the file filename as an array of character strings.

SEE ALSO

File functions, stMemoRead

stRecordGet(nRecord, [cField], [cFile]) --> cont

[Synonym: RECORD]

where:

nRecord - record number to return, defaults to current RecNo(). A string value (instead of numeric) means exclude field names from output.

cField - specifies the fields to be included. Can be:
NIL - all fields delimited with a space
cFieldName - a field name
cFieldRange - a range of fields
bFieldBlock - fields for which this codeblock evaluates to .T.
cAnyOtherString - all fields delimited with this string.

cFile - DBF file name. Defaults to current area.
Examples:
RECORD() - current record without delimiters
RECORD(5) - fifth record with all field names and without delimiters
RECORD("5") - fifth record without field names and without a delimiter
RECORD(5, "#") - fifth record with all field names and "#" as delimiter
RECORD("5","#") -fifth record without field names and with "#" as a delimiter
RECORD(5, "RUS") - field RUS (with fieldname) in record 5
RECORD("5", "RUS") - field RUS (without fieldname) in record 5
RECORD(5, "2-5") - fields from 2 to 5 in record 5 (with fieldnames)
RECORD("5", "2-5") - fields from 2 to 5 in record 5 (without fieldnames)
RECORD(5, {|field_name, field_pos| stFieldType(field_pos) != 'N' }) - all non-numeric fields (with fieldnames)
RECORD("5", {|field_name, field_pos| stFieldType(field_pos) != 'N' }) - all non-numeric fields (without fieldnames)
RECORD(5, "PROTO", "ALTET") - field proto (with fieldname) from record 5 in the altet.dbf
RECORD("5", "PROTO", "ALTET") - field proto (with fieldname) from record 5 in the altet.dbf

In case a certain field is specified as 2nd param and no fieldname is included into the return value, the field type of the requested field is preserved; otherwise all fields are translated to string values.

SEE ALSO

Database functions, match, stRecordStruct

stRecordStruct([n], [block]) --> aCont

Returns the contents of record n (the current record by default) in the currently open database file as an array. If you specify the block parameter, only the fields for which the code block will return .T. will be put into array.

EXAMPLE

stRecordStruct(, {|n| n==1 .OR. n==4}) will return a 2-element array containing the 1st and the 2nd fields.

SEE ALSO

Database functions, match, stRecordGet

stReplace(n, xValue) --> NIL

[synonym: repfield]

Replaces the contents of field n by the value xValue. n is a positive integer specifying the ordinal position of a field in the record. n can also be a character string specifying a field name.

Use this function instead of stFieldPut with files containing variable fields.

SEE ALSO

Database functions, FieldPos, FieldPut, stFieldGet, stFieldPut

strToArr(a, s1, [s2]) --> NIL

Fills a previously created array a with portions of the string s1 delimited by the delimiter s2.

NOTE

The array must be passed by reference (with the @ operator).

SEE ALSO

String functions

stUse(dbfName, [ntxName], [areaNo]) --> dbfHandle

[Synonym: SUSE]

This is the STARLING analog of the USE command, which should always be used for using database files with fields of variable length.

  • dbfName is the name of the file to be USEd
  • ntxName is the name of the associated index (NTX) file (optional)
  • areaNo is the selected area, where the file should be opened (by default - 1)
Returns the number of the DOS handle associated with the opened DBF file.
Use this function with files containing variable fields.

SEE ALSO

Database functions

syntax(s, [n])

This function performs the syntax analysis of a simple Russian sentence (complex sentences are not yet analysed). It normally returns an array of syntax structures, each being regarded as a possible syntax (dependancy) tree of the analysed sentence. The function only does a surface syntactic analysis, and no lexeme-specific government rules are incorporated. I shall not give here a complete description of syntax relations: you can try to figure out yourself what is meant by "SubjS", "ObjA" or "PRED". But I promise that a complete description will follow (luckily together with an improved version of syntax).

Technical notes: the first parameter which must always be present should be a string containing a Russian simple sentence (with or without stops which are not taken into account). E. g., the expression syntax("Ó ìåíÿ áîëèò ãîëîâà") will return the following variants of analysis:

  1. [3.1]{adv}>ó 1.1|[1.1]{prep}>ìåíÿ 2.1|{PRED.} áîëèò 3.1|[3.1]{subjS}>ãîëîâà 4.1|
  2. [3.1]{adv}>ó 1.1|[1.1]{prep}>ìåíÿ 2.2|{PRED.} áîëèò 3.1|[3.1]{subjS}>ãîëîâà 4.1|
  3. [3.1]{adv}>ó 1.1|[1.1]{prep}>ìåíÿ 2.1|{PRED.} áîëèò 3.1|[3.1]{subjS}>ãîëîâà 4.2|
  4. [3.1]{adv}>ó 1.1|[1.1]{prep}>ìåíÿ 2.2|{PRED.} áîëèò 3.1|[3.1]{subjS}> ãîëîâà 4.2|
(Four analyses are returned because the forms "ìåíÿ" and "ãîëîâà" are ambivalent - the former being either genitive or accusative [the function, as I said, does not yet incorporate government rules and thus does not know that "ó" requires only the genitive case], and the latter having two lexico-morphological analyses, as "head" and "chief" respectively).
[The following service is available for StarLing, but not yet functioning in Star4Win]
After each of these variants is displayed, the function will pause and wait for a keypress. If you press Enter, the next variant is displayed; if you press F10, a graphic tree of the sentence will be displayed. The latter is actually done by a separate program, PHRAS.EXE, written by V. Portnov. The executable file PHRAS.EXE must be either in the current directory or accessible through the AUTOEXEC.BAT PATH settings.
The function syntax can also accept a second numeric parameter which is the number corresponding to each of the generated syntactic variants. In this case the function returns a single string which can be, e. g., placed into a database field by means of the REPLACE command. For example, syntax("Ó ìåíÿ áîëèò ãîëîâà", 1) will return the string "[3.1]{adv}>ó 1.1|[1.1]{prep}>ìåíÿ 2.1|{PRED.} áîëèò 3.1|[3.1]{subjS}>ãîëîâà 4.1|".
If the second parameter is 0, the function will return a more detailed account of the phrase including individual morphological characteristics of the constituents and possible syntactic relations between them.

SEE ALSO

Syntax functions

trueDBF(dbfName) --> flag

Checks if dbfName is a name of an existing database file. Returns .T. if the file exists and is a database file, or .F. if it does not exist or is not a database file.

NOTE

The function does not check whether associated .DBT or .VAR files are also available.

SEE ALSO

Database functions, File functions, File

voc(s, n) --> flag

Returns .T. if the nth character s is a vowel, .F. - otherwise. Specifying n as a negative number changes the direction of count (the n symbol is taken from the right side of the word).

NOTE

The function reacts in a correct way on STARLING-specific symbols (like cyrillic vowel letters and special letters like –, µ etc.).

SEE ALSO

Phonetic functions

vocSound(s) --> s

Returns the vocal structure of s wordform.

EXAMPLE

vocSound("kapi") == "AI"

SEE ALSO

Phonetic functions, sound


StarLing Functions -- Database functions

Database functions

  • appBlank
  • appFrom
  • index
  • match
  • stDbCreate
  • stDbfName
  • stDbfNameExt
  • stFieldGet
  • stFieldPut
  • stRecordGet
  • stRecordStruct
  • stReplace
  • stUse
  • trueDBF


StarLing Functions -- Database Statistics

Functions for database statistics

  • average
  • count
  • exclusive
  • Filled
  • FilledFields
  • FilledOnly


StarLing Functions -- Phonetic functions

Phonetic functions

  • sound
  • voc
  • vocSound


StarLing Functions -- File functions

File functions

  • stMemoRead
  • stReadFile


StarLing Functions -- Database Statistics

Grammar functions

  • grammar


StarLing Functions -- Semantics

Semantic functions

All the semantic functions deal only with the English language and are of interest mostly for comparative linguists. They require the semantic database SENSE.DBF (plus SENSE.VAR) which must be located together with STAR32.EXE.

SENSE.DBF is a collection of about 7000 English headwords described in terms of their semantic "attributes" or "constituents" (all in all around 400). All the data was extracted from existing etymological computer databases. A record like (HEADWORD) require (V) (ITEMS) to want;to search;to be;able means that in several cases the meaning "require" was associated with semantic "primitives" "to want", "to search", "to be" and "able".

  • common
  • sense
  • similar


StarLing Functions -- String functions

String functions

  • aLike
  • alpha
  • change
  • charStart
  • ends
  • extract
  • howMany
  • in
  • order
  • reverse
  • rLower
  • rUpper
  • starts
  • setLike
  • strSort
  • strToArr


StarLing Functions -- Database Statistics

Syntax functions

  • syntax


StarLing Functions -- User interface functions

User interface functions

  • dlgString


SYNTAX OF XBASE EXPRESSIONS

The xBase expressions consist of following components:

  1. Constants. There exist numeric constants (1, 2, 0, -5, 7.3 etc.), character constants (symbol strings enclosed in quotes: "Hello!", 'H', " " etc.) and logical constants (only two of them: .T. and .F.).

    [NOTE. Single or double quotes usually have no effect on the evaluation of xBase expression. In Star4Win, however, there is an important distinction: if you edit a database file with variable length fields, specifying an expression with single quotes while LOCATing will result in a quicker (but less accurate) search. Use single quotes in Locate expressions (e.g.: 'something' $ somefield) if you want the search to be conducted quicker, but be aware that some information may never be found (especially if you use complex function syntax in your request). Use double quotes (e.g.: "something" $ somefield if you do not want to miss anything.]

  2. Memory variables. These are denoted as character strings without quotes, e.g. A, b, GREETING, chaR etc. (the letter case has no relevance for memory variables: GREETING is the same as GReEtIng). Only standard Roman characters and the _ sign can be used in memory variable names.

  3. Function names. A function is noted like a memory variable (without quotes), but must include round brackets: Time(), Chr(221), Sqrt(343), SubStr(Trim("Hello! ", 2, 4)) etc. A function is in fact a symbolic conversion of a standard procedure (which may be very long in a real programming language). The expression in brackets itself may be any valid dBASE expression and is called the function argument.

    A function must return a value for its argument, and this value itself becomes a constant, e.g. Sqrt(4) = 2 (Sqrt() returns the square root). A function may also have several arguments (in which case they are separated by commas within the round brackets) or none - e.g. the function Time() which returns the current time without any arguments specified.

  4. Operators. There exist several kinds of operator signs:

    • MATHEMATICAL OPERATORS. These are + (addition), - (subtraction), / (division), * (multiplication), ** or ^ (power), % (modulus operator returning the division remainder). E.g.: 2+3 = 5, 7-6 = 1, 6/3 = 2, 3*3 = 9, 2**3 = 8, 20%3 = 2 etc. You can also use round brackets in their standard mathematical meaning (indicating the priority of operation): (2+3)*5 = 25. Note that the expression 2+3*5 without brackets is equivalent to 2+(3*5) (which equals to 17).
      NOTE: The operator + can be used also with character strings, adding one string to another: "Hello, "+"world!" = "Hello, world!".
    • COMPARING OPERATORS. These are = (equal to), > (greater than), < (less than), >= (greater or equal), <= (less or equal), != (not equal to, also can be specified as <>). E.g. a <= b, 4>3 etc.
      NOTE: Comparing operators may be used also with character strings, in which case they compare strings according to the order of alphabet. For example, the string "ABC" is considered "less" than "ABD" (since C precedes D). Note also, that the alphabet is ordered not quite in a standard way: uppercase letters precede the lowercase (thus while "ABD" is "more" than "ABC", it is "less" than "abc" or even "aBC"). All other signs (commas, dots, spaces etc.) are also ordered according to the standard ASCII character order.
    • LOGICAL OPERATORS. These are .and., .or., and .not. (dots are obligatory!). The operator .not. can be combined with the other two, forming new complex operators .and..not. and .or..not.. For example:
      a = b .and. b = d (meaning: a is equal to b while b is equal to d);
      x > 3 .or. x < -2 (meaning: x more than 3 or x less than -2 - the interval between -2 and +3 is excluded from the possible values of x);
      x > 4 .and..not. x < 7 (meaning: x more than 4, but not less than 7) which is in fact equivalent to an expression: x >= 7 etc.
    • STRING OPERATORS. As was told above, some mathematical and comparing operators can be used with strings. There exists, however, a special SUBSTRING operator $ which evaluates whether a certain string is a substring of another string or not. For example:
      'stop' $ 'bus-stop' = .T. ('stop' is contained within the string 'bus-stop').
      'st ' $ 'bus-stop' = .F. (the combination 'st' within 'bus-stop' is followed by 'o', not by a space) etc.
      You will find this operator most useful while trying to locate any character data within your database files. For example if you ask the computer (by pressing F3 while editing your file) to locate for: "o" $ grm - it will move the cursor to the first record where the GRM (German) word contains the letter o (pressing F4 will move you to the next record satisfying this condition etc.). Note that if you will ask to locate for: grm="o", this will move the cursor to the first record where the German word begins with o.
    • SEQUENTIAL OPERATOR. This is comma (,), which is used in two cases: first, as a separator of parameters in function brackets (see below); second, as a normal comma when you list field names in a file (e.g.: NUMBER, WORD, RUS, POL etc.).

See also: ?, STANDARD FUNCTIONS, STARLING FUNCTIONS.


TEXT FORMATTING

Text formatting rules apply both to editing database fields and separate text files. Options for text formatting are displayed in the Format menu.

For the most part they are the same as in major word processors: you can use Ctrl Z to undo changes, Shift Ctrl Z to restore the undone changes; select blocks of text using the mouse or Shift + arrow keys; copy the contents of the selection to the clipboard using Ctrl C or Ctrl Ins; cut the contents of the selection using Del; cut the contents of the selection (moving it to the clipboard) using Ctrl X or Shift Del; paste the clipboard contents using Ctrl V, Shift Ins or F6; bolden the selection font using Ctrl B; italicize the selection font using Ctrl I; underline the selection font using Ctrl U.

However, Star4Win has its peculiarities:

  • Since the Tab key in Star4Win is used to shift between windows, it does not insert a tab. Use Ctrl Tab instead.
  • Fonts can not be chosen in the Format menu. Since every font used in Star4Win must have a special recoding file (.lst), fonts can only be specified in the Configuration option on the Assist menu.
  • You can use Shift combined with most format commands to simultaneously select and execute the command for the word under the cursor. Thus, Shift Ctrl C copies the current word to the clipboard; Shift Ctrl B boldens the current word, etc.
  • All the changes made can be undone instantly using Ctrl Backspace. This operation is not undoable; do not confuse it with Shift Backspace which changes the direction of text input.
  • A text line can be deleted using Ctrl Y.
  • Font in the selection may be increased in size using Ctrl Grey+, and decreased using Ctrl Grey-. This operation can be only applied to text files; database files only allow two basic font sizes (normal and condensed).
  • Font in the selection can be condensed using Ctrl S (or Shift Ctrl S).
  • Font in the selection can be made subscript (Ctrl L) or superscript (Ctrl H).
  • A selection can be turned into a hyperlink using Ctrl [ (see more on hyperlinks in Database relations). To select the current word and turn it into a hyperlink, press Shift Ctrl [. A hyperlink can subsequently be edited or removed by clicking it with the right mouse button and editing the hyperlink options.

Additional available commands performed on selected text are:

  • Format paragraph - Ctrl F5
  • Smart italic - Ctrl F6. This procedure will italicize all words that cannot be analyzed using the Starling morphological component.
  • Check spelling - Ctrl F8. This procedure will mark all unrecognized words in the selection by a special marker.
  • Format table - Ctrl F7. This procedure will attempt tabulating the selection.
  • Unformat table - Ctrl Shift F7. This procedure will remove tabulation in the selection.
  • Enter footnote - Ctrl N. This procedure will insert a footnote reference in the current position of the text caret (if there is not a footnote reference already) and open a separate window containing editable footnotes to the text; it is only applicable to text files (not to database fields). To open the footnote window without inserting a new footnote reference press Shift Ctrl N. The notes should be readable and editable in other RTF word processors (like Microsoft Word) as well.
  • Renumber footnotes. This will renumber all footnotes.
  • Convert to DOS, Convert to Windows. This will change the encoding in the selection: this option may be useful when you copy / paste text blocks from non-Star4Win windows into Star4Win and have problems with encoding.

While editing text you can also use the toolbar commands: Switch between raw / formatted modes (Ctrl F10) and Switch between text / graphic modes (Alt F9). Note that by doing it you cause the system to reread the whole contents of your text, and some formatting damage may occur - especially if your text contains tables and complicated graphics. If you do not want your paragraphs to be reformatted during these procedures, make sure that they start with an indent (at least one space) or that there is an empty line above every paragraph.


Standard XBase Functions -- Array functions

Array functions

  • AAdd()
  • AClone()
  • ACopy()
  • ADel()
  • AEval()
  • AFill()
  • AIns()
  • Array()
  • AScan()
  • ASize()
  • ASort()
  • ATail()
  • Len()