STANDARD DATA DICTIONARY #.85 -- LANGUAGE FILE 6/27/25 PAGE 1 STORED IN ^DI(.85, (534 ENTRIES) SITE: WWW.BMIRWIN.COM UCI: VISTA,VISTA (VERSION 22.2) DATA NAME GLOBAL DATA ELEMENT TITLE LOCATION TYPE ----------------------------------------------------------------------------------------------------------------------------------- The LANGUAGE file is used both to officially identify a language, and to store MUMPS code needed to do language-specific conversions of data such as dates and numbers. The KIDS build for FileMan 22.2 contains all languages in ISO 639-2:1998(as revised 11/21/2012). When installed without the KIDS build, FileMan 22.2 installs 11 languages. A pointer to this file from the TRANSLATION multiple on the DIALOG file also allows non-English text to be returned via FileMan calls. A note to VISTA developers: Although users can select entries by name, software should use the official two or three letter codes to eliminate mistakes resulting from languages that have similar spelling. DD ACCESS: ^ WR ACCESS: ^ DEL ACCESS: ^ LAYGO ACCESS: ^ IDENTIFIED BY: TWO LETTER CODE (#.02), THREE LETTER CODE (#.03) PRIMARY KEY: A (#123) Uniqueness Index: B (#1344) File, Field: 1) NAME (.85,.01) SECONDARY KEY: B (#124) Uniqueness Index: D (#1346) File, Field: 1) THREE LETTER CODE (.85,.03) POINTED TO BY: LANGUAGE field (#.001) of the sub-field (#.007) of the File (#0) LANGUAGE field (#.001) of the sub-field (#.008) of the File (#0) LANGUAGE field (#.001) of the sub-field (#.009) of the File (#0) LANGUAGE OF HEADING field (#709.1) of the PRINT TEMPLATE File (#.4) LANGUAGE IN WHICH COMPILED field (#1819.1) of the PRINT TEMPLATE File (#.4) LANGUAGE field (#.01) of the TRANSLATION sub-field (#.847) of the DIALOG File (#.84) LINGUISTIC CATEGORY field (#.08) of the LANGUAGE File (#.85) MEMBER OF LANGUAGE SET field (#.09) of the LANGUAGE File (#.85) LANGUAGE field (#.001) of the sub-field (#1.008) of the FILE File (#1) LANGUAGE field (#200.07) of the NEW PERSON File (#200) DEFAULT LANGUAGE field (#207) of the KERNEL SYSTEM PARAMETERS File (#8989.3) CROSS REFERENCED BY: ALTERNATE NAME(F) INDEXED BY: NAME (B), TWO LETTER CODE (C), THREE LETTER CODE (D), ALTERNATE THREE LETTER CODE (E) LAST MODIFIED: DEC 18,2023@14:43:27 .85,.001 ID NUMBER NUMBER INPUT TRANSFORM: K:+X'=X!(X>9999999999)!(X<1)!(X?.E1"."1.N) X LAST EDITED: OCT 31, 2012 HELP-PROMPT: Type a number between 1 and 9999999999, 0 decimal digits. DESCRIPTION: A number that is used to uniquely identify a language. This number corresponds to the Kernel system variable DUZ("LANG"), which is set during Kernel signon to signify which language Fileman should use. TECHNICAL DESCR: Entries in this file are standardized, with the contents controlled by the Fileman Primary Development Team. The ID Number field is used to help protect referential integrity in VISTA databases during upgrades to the file. ID Number assignment corresponds to the order in which languages were added to the file. They were added in segments. The first segment consists of language numbers 1-7, 10-12, and 18, which were the first eleven languages added, in order. English is first because Fileman was originally written in English. German is second because Marcus Werners of Germany led the effort to create Fileman's dialog framework, to make translating VISTA into other languages easier. Spanish, French, Finnish, Italian, and Portuguese follow in the order in which the Fileman team was approached by potential translators about adding those languages to the file (though Finnish actually predates all other translation efforts except English). Arabic was assigned ID Number 10 instead of 8 in recognition of the debt English owes Arabic for introducing the decimal numbering system to Europe. Russian and Greek were the next two translations the Fileman team was approached about. I do not recall why for Hebrew we skipped ahead to ID Number 18, but I'm sure there was a reason. Thereafter, languages are added in segments, in order by Name, starting with ID Number 8. The segments correspond to the ISO 639 language standards, in order (639-1 languages in segment two, 639-2 in three, and so on). Each language has one unique record in this file, so wherever a language in one segment has already been included in an earlier segment, it is not included in the later segment (e.g., Greek was in segment one, so it is not also added as a duplicate in segment two). This segmented approach makes it comparatively easy to upgrade the file in discrete batches, to keep the update projects manageable. .85,.01 NAME 0;1 FREE TEXT (Required) (Key field) Language-Name INPUT TRANSFORM: K:$L(X)>60!($L(X)<1) X MAXIMUM LENGTH: 60 LAST EDITED: OCT 31, 2012 HELP-PROMPT: Answer must be 1-60 characters in length. DESCRIPTION: Enter the English name of the language, not the native name. The default is the English name from ISO 639, converted where necessary to ASCII. Where the ISO 639 standards disagree (cf. "Central Khmer" in ISO 639-1 to "Khmer" in ISO 639-3), the most recent standard's spelling is used. However, this use of ISO 639's spelling as a default is overridden in several different ways to improve consistency across entries and to reduce selection error. TECHNICAL DESCR: This is the English name of the language, not the native name. It defaults to the English name from ISO 639, mixed case, converted where necessary to ASCII. Where the ISO 639 standards disagree (cf. "Central Khmer" in ISO 639-1 to "Khmer" in ISO 639-3), the most recent standard's spelling is used. However, this use of ISO 639's spelling as a default is overridden in several different ways to improve consistency across entries and to reduce selection error. For example, for most modern languages, the form of the name that includes the word "Modern" and the parenthesized dates is an alternate name, but ISO 639 reverses that with Modern Greek. In this file, we reassert the pattern by making the ISO 639 name "Greek, Modern (1453-)" an alternate name and making the name "Greek" instead. Since most users of these systems are medical professionals rather than linguists or historians, we emphasize modern languages and group historical ones away from the modern names to reduce accidents. For example, "French, Old (842-ca.1400)" as so named in ISO 639-2 is used as an alternate name for "Old French" in this file, to move the obsolete form of the language away from the modern one. Thus, "Old" languages, "Ancient" ones, and "Middle" ones will tend to sort together. However, languages whose names look like historical ones, such as "Old Church Slavonic", that are still living languages or in active liturgical use are kept in this form if that is how they are best known. Also, such forms that include parenthetical dates are changed to remove the dates and parentheses from the Name field; the original forms and variants are preserved in the Alternate Name field. For similar reasons, language collections like "Banda languages" are renamed as "Languages, Banda" to move them away from individual language a patient might speak, like "Banda-Banda". The same was preserved from ISO 639 with creoles and pidgins (such as "Creoles and Pidgins, Portuguese-Based"), which are collective languages, to kepp them separate from the individual languages they might be confused with (such as "Portuguese"). However, individual languages like "Haitian Creole" and "Chinook Jargon" whose ISO 639 names makes them sound like language collections are nevertheless left as is, since these are the names they are known by and since the distinguishing part of the name does come first, allowing for unambiguous selection. Where the language name from ISO 639 is a list of alternative names, as in "Catalan, Valencian", the dominant name (based on other code sets, Ethnologue, Wikipedia, e.g. "Catalan") is used as the Name, with the other name(s) (e.g., "Valencian") added to the Alternate Name field. As a general rule (except in the case of language collections), ISO 639 names that use commas to invert a language name (like "Sorbian, Upper") are corrected (like "Upper Sorbian"), and the ISO 639 name is made an Alternate Name. We do not try to use commas in the Name field to group together all related languages or dialects, though we do in the Alternate Name field. In the Name field, parenthetical comments are generally restricted to distinguishing between unrelated languages that have the same name, like "Lele (Democratic Republic of Congo)" and "Lele (Papua New Guinea)". The parenthetical words will be (in order of preference) a country, a people, or an alternate name of the language, so long as it distinguishes it from the other identically named languages. To date, we have not had to change any of the ISO 639 names we've imported to make or correct these distinctions, but we stand ready to do so to enforce this pattern. FIELD INDEX: B (#1344) REGULAR IR LOOKUP & SORTING Unique for: Key A (#123), File #.85 Short Descr: Regular new-style B Index Set Logic: S ^DI(.85,"B",X,DA)="" Kill Logic: K ^DI(.85,"B",X,DA) Whole Kill: K ^DI(.85,"B") X(1): NAME (.85,.01) (Subscr 1) (forwards) .85,.02 TWO LETTER CODE 0;2 FREE TEXT INPUT TRANSFORM: K:$L(X)>2!($L(X)<2) X MAXIMUM LENGTH: 2 LAST EDITED: NOV 01, 2012 HELP-PROMPT: Answer must be 2 characters in length. DESCRIPTION: Enter the two-letter code defined for this language in the ISO 639-1 standard. Not every language has a two-letter code; for those that do not leave this field blank. TECHNICAL DESCR: Future versions of this file wil include an optional key on this field. FIELD INDEX: C (#1345) REGULAR IR LOOKUP & SORTING Short Descr: Regular new style index on two letter language codes Set Logic: S ^DI(.85,"C",X,DA)="" Kill Logic: K ^DI(.85,"C",X,DA) Whole Kill: K ^DI(.85,"C") X(1): TWO LETTER CODE (.85,.02) (Subscr 1) (forwards) .85,.03 THREE LETTER CODE 0;3 FREE TEXT (Key field) INPUT TRANSFORM: K:$L(X)>3!($L(X)<3) X MAXIMUM LENGTH: 3 LAST EDITED: NOV 01, 2012 HELP-PROMPT: Answer must be 3 characters in length. DESCRIPTION: Enter the three-letter code defined for this language in the ISO 639-2/B standard. TECHNICAL DESCR: When this file is upgraded to ISO-639-6, an optional key will be added to this field. FIELD INDEX: D (#1346) REGULAR IR LOOKUP & SORTING Unique for: Key B (#124), File #.85 Short Descr: Regular new-style index for three letter abbreviations for languages Set Logic: S ^DI(.85,"D",$E(X,1,30),DA)="" Kill Logic: K ^DI(.85,"D",$E(X,1,30),DA) Whole Kill: K ^DI(.85,"D") X(1): THREE LETTER CODE (.85,.03) (Subscr 1) (Len 30) (forwards) .85,.04 FOUR LETTER CODE 0;4 FREE TEXT INPUT TRANSFORM: K:$L(X)>4!($L(X)<4) X MAXIMUM LENGTH: 4 LAST EDITED: NOV 01, 2012 HELP-PROMPT: Answer must be 4 characters in length. DESCRIPTION: Enter the four letter code associated with the language in ISO-639-6. TECHNICAL DESCR: This field is currently not used in this version of the release (as of Fileman V22.2). In a future version when this file is upgraded to ISO-639-6, a key will be added to this field. .85,.05 ALTERNATE THREE LETTER CODE 0;5 FREE TEXT INPUT TRANSFORM: K:$L(X)>3!($L(X)<3) X I $D(^DI(.85,"D",X,DA)) D EN^DDIOL("Three letter code already exists!") K X MAXIMUM LENGTH: 3 LAST EDITED: AUG 01, 2023 HELP-PROMPT: Enter the alternate three letter code, 3 characters in length. DESCRIPTION: This is the alternate three letter code for a language. This will only be used in cases where the language abbreviation is different in English than in the native language. E.g. GER instead of DEU; for German instead of Deutsch. This alternate abbreviation can be found in ISO 639-2/B. TECHNICAL DESCR: In a future version of Fileman, this field will have an optional key. NOTES: XXXX--CAN'T BE ALTERED EXCEPT BY PROGRAMMER FIELD INDEX: E (#1347) MUMPS IR LOOKUP & SORTING Short Descr: (Pseudo-)Mnemonic index for the Alternate three letter code Description: This will add entries to the D index for the three letter code a la the mnemonic style. If you need re-cross-reference this field, you need to kill of the entries in the regular D index, set the D index, and then set this index to update the D with the mnemonic xrefs. Set Logic: S ^DI(.85,"D",X,DA)=1 Kill Logic: K ^DI(.85,"D",X,DA) X(1): ALTERNATE THREE LETTER CODE (.85,.05) (Subscr 1) (forwards) .85,.06 SCOPE 0;6 SET 'I' FOR Individual; 'M' FOR Macrolanguage; 'C' FOR Collective; 'S' FOR Special; 'L' FOR Local; LAST EDITED: NOV 01, 2012 HELP-PROMPT: Select a language's scope DESCRIPTION: Enter the Scope of a Language. Individual if the language is an individually identifiable language (e.g. 'Cantonese'). Macrolanguage if the language encopasses several other languages (e.g. 'Chinese') Collective if the language is a language group (e.g. 'Languages, Sino-Tibetan') Special and Local are reserved for specific entries. .85,.07 TYPE 0;7 SET Historical Status 'L' FOR Living; 'C' FOR Constructed; 'A' FOR Ancient; 'H' FOR Historical; 'E' FOR Extinct; LAST EDITED: NOV 01, 2012 HELP-PROMPT: Select a choice. DESCRIPTION: Living means that the language is spoken today (e.g. English). Constructed means that the language is artificial (e.g. Esperanto). Ancient means that the language is very old and not spoken any more (e.g. Ancient Egyptian). Historical means that the language was being used in the Medieval times and is not spoken any more (e.g. Old High German). Extinct means that the language was being used recently but has died out (e.g. Cornish). .85,.08 LINGUISTIC CATEGORY 0;8 POINTER TO LANGUAGE FILE (#.85) INPUT TRANSFORM: S DIC("S")="I $P(^(0),U,6)=""C""" D ^DIC K DIC S DIC=$G(DIE),X=+Y K:Y<0 X LAST EDITED: NOV 01, 2012 HELP-PROMPT: Select a choice. DESCRIPTION: Enter a language collection to which this language belongs. TECHNICAL DESCR: The current version of this file does not distribute data for this field. SCREEN: S DIC("S")="I $P(^(0),U,6)=""C""" EXPLANATION: Only collective languages are selectable .85,.09 MEMBER OF LANGUAGE SET 0;9 POINTER TO LANGUAGE FILE (#.85) INPUT TRANSFORM: S DIC("S")="I $P(^(0),U,6)=""M""" D ^DIC K DIC S DIC=$G(DIE),X=+Y K:Y<0 X LAST EDITED: NOV 01, 2012 HELP-PROMPT: Enter a choice. DESCRIPTION: If this language is a dialect of a macrolanguage, select the macrolanguage to which it belongs. (E.g. Cantonese is a dialect of Chinese; thus Chinese is Cantonese's macrolanguage.) TECHNICAL DESCR: The current version of this file does not distribute data for this field. SCREEN: S DIC("S")="I $P(^(0),U,6)=""M""" EXPLANATION: You may only select Macrolanguages .85,1 ALTERNATE NAME 1;0 Multiple #.8501 DESCRIPTION: This multiple contains other names by which the language in this entry is known. .8501,.01 ALTERNATE NAME 0;1 FREE TEXT (Multiply asked) INPUT TRANSFORM: K:$L(X)>60!($L(X)<1) X MAXIMUM LENGTH: 60 LAST EDITED: NOV 01, 2012 HELP-PROMPT: Answer must be 1-60 characters in length. DESCRIPTION: This field contains other synonyms for a language. E.g. for Greek, synonyms include Ellinika and Romaic. CROSS-REFERENCE: .8501^B 1)= S ^DI(.85,DA(1),1,"B",$E(X,1,30),DA)="" 2)= K ^DI(.85,DA(1),1,"B",$E(X,1,30),DA) CROSS-REFERENCE: .85^F 1)= S ^DI(.85,"F",$E(X,1,30),DA(1),DA)="" 2)= K ^DI(.85,"F",$E(X,1,30),DA(1),DA) 3)= WHOLE FILE CROSS REFERENCE FOR ALTERNATE NAME Whole file cross-reference for ALTERNATE NAME multiple. .85,10 DESCRIPTION 10;0 WORD-PROCESSING #.8502 (IGNORE "|") LAST EDITED: OCT 31, 2012 LAST EDITED: OCT 31, 2012 HELP-PROMPT: Enter free text data. Items within '|' will NOT be evaluated. DESCRIPTION: An optional description of the language can be entered. .85,10.1 ORDINAL NUMBER FORMAT ORD;E1,245 MUMPS INPUT TRANSFORM: K:$L(X)>245 X D:$D(X) ^DIM LAST EDITED: MAR 07, 1994 HELP-PROMPT: This is Standard MUMPS code. DESCRIPTION: MUMPS code used to transfer a number in Y to its ordinal equivalent in this language. The code should set Y to the ordinal equivalent without altering any other variables in the environment. Ex. in English: Y=1 becomes Y=1ST Y=2 becomes Y=2ND Y=3 becomes Y=3RD etc. WRITE AUTHORITY: @ .85,10.2 DATE/TIME FORMAT DD;E1,245 MUMPS INPUT TRANSFORM: K:$L(X)>245 X D:$D(X) ^DIM LAST EDITED: MAR 07, 1994 HELP-PROMPT: This is Standard MUMPS code. DESCRIPTION: MUMPS code used to transfer a date or date/time in Y from FileMan internal format, to printable format equivalent to English MMM DD,YYYY@HH.MM.SS. The code should set Y to the output, without altering any other variables in the environment. Ex. in English: Y=2940612.031245 becomes Y=JUN 12,1994@03:12:45 WRITE AUTHORITY: @ .85,10.21 DATE/TIME FORMAT (FMTE) FMTE;E1,245 MUMPS INPUT TRANSFORM: K:$L(X)>245 X D:$D(X) ^DIM LAST EDITED: JUN 24, 1994 HELP-PROMPT: This is Standard MUMPS code. DESCRIPTION: MUMPS code used to transfer a date or date/time in Y from FileMan internal format, to printable format based on the various outputs from routine FMTE^DILIBF. This is an extrinsic function. Coming in to this MUMPS code, in addition to the internal date in Y, a third parameter will be defined to contain flags equivalent to the flag passed as the second input parameter to FMTE^DILIBF. The code should set Y to the output, without altering any other variables in the environment. The output should be formatted based on these flags: 1 MMM DD, YYYY@HH:MM:SS 2 MM/DD/YY@HH:MM:SS no leading zeroes on month,day 3 DD/MM/YY@HH:MM:SS no leading zeroes on month,day 4 YY/MM/DD@HH:MM:SS 5 MMM DD,YYYY@HH:MM:SS no space before year,no leading zero on day 6 MM-DD-YYYY @ HH:MM:SS spaces separate time 7 MM-DD-YYYY@HH:MM:SS no leading zeroes on month,day letters in the flag S return always seconds U return uppercase month names P return time as am,pm D return only date part WRITE AUTHORITY: @ .85,10.22 TIME TIME;E1,245 MUMPS INPUT TRANSFORM: K:$L(X)>245 X D:$D(X) ^DIM LAST EDITED: MAR 18, 1996 HELP-PROMPT: This is Standard MUMPS code for the output of time only. DESCRIPTION: The code stored here will be used to get formatted output of the time part belonging to a FileMan Date/Time value. WRITE AUTHORITY: @ .85,10.3 CARDINAL NUMBER FORMAT CRD;E1,245 MUMPS INPUT TRANSFORM: K:$L(X)>245 X D:$D(X) ^DIM LAST EDITED: MAR 08, 1994 HELP-PROMPT: This is Standard MUMPS code. DESCRIPTION: MUMPS code used to transfer a number in Y to its cardinal equivalent in this language. The code should set Y to the cardinal equivalent without altering any other variables in the environment. Ex. in English: Y=2000 becomes Y=2,000 Y=1234567 becomes Y=1,234,567 WRITE AUTHORITY: @ .85,10.4 UPPERCASE CONVERSION UC;E1,245 MUMPS INPUT TRANSFORM: K:$L(X)>245 X D:$D(X) ^DIM LAST EDITED: MAR 08, 1994 HELP-PROMPT: This is Standard MUMPS code. DESCRIPTION: MUMPS code used to convert text in Y to its upper-case equivalent in this language. The code should set Y to the external format without altering any other variables in the environment. In English, changes abCdeF to: ABCDEF WRITE AUTHORITY: @ .85,10.5 LOWERCASE CONVERSION LC;E1,245 MUMPS INPUT TRANSFORM: K:$L(X)>245 X D:$D(X) ^DIM LAST EDITED: MAR 08, 1994 HELP-PROMPT: This is Standard MUMPS code. DESCRIPTION: MUMPS code used to convert text in Y to its lower-case equivalent in this language. The code should set Y to the external format without altering any other variables in the environment. In English, changes: ABcdEFgHij to: abcdefghij WRITE AUTHORITY: @ .85,20.2 DATE INPUT 20.2;E1,245 MUMPS INPUT TRANSFORM: K:$L(X)>245 X D:$D(X) ^DIM LAST EDITED: JUL 14, 1994 HELP-PROMPT: This is Standard MUMPS code. WRITE AUTHORITY: @ FILES POINTED TO FIELDS LANGUAGE (#.85) LINGUISTIC CATEGORY (#.08) MEMBER OF LANGUAGE SET (#.09) INPUT TEMPLATE(S): PRINT TEMPLATE(S): SORT TEMPLATE(S): FORM(S)/BLOCK(S):