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, nЏbo, neboskrЏbas nebo, nЏbo, neboskrЏb(with the normal order ...eЏ.... the resulting sort sequence would be nebo, neboskrЏb, nЏbo).

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.

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