Compared to standard RDBMS, T24 applications (or table) have their structure hard-coded. Who said 🙁 ??!
Fields definitions relates to the dictionary of the application (table). It contains all the field data types and specific rules attached to every single field.
If you create a new table (or application), you will have to
– either add an attached program that contains all the field’s definitions (using a CALL <your.table>.FIELD.DEFINITIONS in the label “DEFINE.PARAMETERS:” if you’re using a standard template)
– or include those in the main program (still positionned in the label “DEFINE.PARAMETERS:” if you’re using a standard template).
A field is defined by specific variables named F, N, T.
Field content can be controlled by a list of values using CHECKFILE.
In field definitions programs (or label), fields are not identified by their field numbers as displayed in T24 by end-users. Field numbers are the result of a variable increment, commonly named “Z“. You will then find fields definitions prefixed with a “Z+=1”, and related definitions common variables F(), N(), T() will appear as F(Z), N(Z), T(Z). Variables N() and T() refers to the main display core program named “IN2“.
For a full description of all other common variables, see this page.
The F(x) common variable
Contain a maximum of 18 characters to define a field name.
Example : Z+=1 ; F(Z) = “FX.PIP.TYPE” ; N(Z) = “11..C” ; T(Z) = “” ; T(Z)<2> = ‘PERCENTAGE_PIPS’
‘XX.LL.’ and – 12 char. field description when multivalue field in connection with language code e.g. ‘XX.LL.DESCRIPTION’
‘XX.’ and – 15 char. field description when multivalue fields (sub fields) used e.g. ‘XX.REMARKS’
‘XX.LOCAL.REF’ will (via LOCAL.REF.FIELD) relate to the files ‘LOCAL.REF.TABLE’ and ‘LOCAL.TABLE’ and replaces F(x), N(x), T(x) by users definition
When no definition then T(x)<3> = ‘NOINPUT’
‘XX<‘, ‘XX-‘, ‘XX>’ and – 15 char. field description when associated multi value fields
‘XX<‘ = first association
‘XX-‘ = next (if not last)
‘XX>’ = last association
Example:
2 fields No. 3 + 4 are multi value fields and both have 2 lines:
Case ‘XX.’ sequence = 3.1, 3.2, 4.1, 4.2
Case ‘XX>’ etc. = 3.1, 4.1, 3.2, 4.2
‘XX.XX.’, ‘XX.XX.LL’, etc. = like before with sub fields
The T(x) common variable
This variable defines the data type of a field. All types are using by default a display program named “IN2”. When T(Z) is not null (T(Z) = “xxx”, this means the field type is described in a specific program, implicitly prefixed by “IN2” (thus named “IN2xxx”).
Further parameters can be added either to the “IN2” (when T(Z) is null) or the the “IN2xxx” when T(Z) = “xxx”. You can find expected parameters in the header of all “IN2” types programs.
Example:
Z+=1 ; F(Z) = “FX.PIP.TYPE” ; N(Z) = “11..C” ; T(Z) = “” ; T(Z)<2> = ‘PERCENTAGE_PIPS’
Here T(Z) is null which means standard “IN2” display type should apply.
T(Z) = “” means T(Z) = “IN2”, then possible parameters are defined in IN2 program.
T(x) = 8 Fields possible (delimiter = <f>):
– Field 1
= “” = numeric or Input Table
= ‘.ACCD’ = combination of a) ‘ACC’, b) ‘/’, c) ‘D’
= ‘.CCYD’ = combination of a) numeric, b) ‘CCY’, c) ‘D’
= ‘.D’ = combination of a) numeric, b) ‘/’, c) ‘D’
= ‘.YM’ = combination of a) numeric, b) ‘/’, c) ‘YM’
= ‘A’ = alphanumeric char. = ‘A…Z’, ‘a…z’, ‘0…9’, ‘ !”#$%&'()+,-./[\]`’
= ‘AA’ = like ‘A’, but 1st char. must be ‘A…Z’ resp. ‘a…z’
= ‘AAA’ = possible char. only ‘A…Z’ resp. ‘a…z’
= ‘ACC’ = 2-16 numeric char. incl. checkdigit or 3-10 char. ‘MNE’-type (will be converted to ACCOUNT.NUMBER)
= ‘ALL’ = any account no. – ‘ACC’ resp. ‘ANT’ or ‘INT’
= ‘ALL’ = same input like ‘ACC’ or 6-12 alphanumeric char. INTERNAL.ACCOUNT.NUMBER
= ‘AMT’ = amount input
= ‘ANT’ = same input like ‘ACC’ or 6-12 alphanumeric char. INTERNAL.ACCOUNT.NUMBER
= ‘COM’ = alphanumeric char. (see pgm. COMPANY.CODE) or 1-5 char. ‘MNE’-type (will be converted to COMPANY.CODE)
= ‘CUS’ = 1-6 numeric char. or 3-10 char. ‘MNE’-type (will be converted to CUSTOMER.CODE)
= ‘D’ = Date char.
internal format always YYYYMMDD (Y=year, M=month, D=day), but input may be ‘D’, ‘DD’, ‘DMM’ resp. ‘MDD’ (when R.USER defines ‘MMDD’-input), ‘DDMM’ resp. ‘MMDD’, ‘DMMYY’ resp. ‘MDDYY’, ‘DDMMYY’ resp. ‘MMDDYY’, ‘YYYYMMDD’
and: ‘MM’ may be inputted with 3 char. month’s name
(in accordance to language table TEXT.MONTH)
< 8 char. are updated with TODAY (today’s date)
– caution in connection with USER-record and check by computer date !)
‘YYYY’ = ‘1950…2049’
= ‘FNO’ = Field no. (may include value and sub no.)
= ‘FQU’ = date + FreQUency code
default date = today’s date transformed to next frequency date
Input of a date not in accordance to frequency (e.g. ‘1984-11-01 TWMTH’) will be accepted for the date may be the last one of another frequency and new frequency works first time after this date
Frequency codes are:
‘DAILY’ – Input may be ‘D’ only = next frequency date = next day
‘WEEKn’ (n = 1…9)
– Input may be ‘Wn’
– Input ‘W’ only = ‘WEEK1’
= next frequency date = in n weeks
‘TWMTH’ – Input may be ‘T’ only
= next frequency date = the ultimo date or the 15th of next month
‘Mnndd’ (nn = 01…99 = number of months, dd = 01…31 = day)
= next frequency date in n months (+ day definition)
(e.g. M0131 = every month on ultimo)
= ‘INT’ = 6-12 alphanumeric char. or
3-10 char. ‘MNE’-type (will be converted to INTERNAL.ACCOUNT.NUMBER)
= ‘MNE’ = MNEmonic field =
char. ‘0…9’, ‘A…Z’, ‘.’
= ‘PG’ = ProGram name or abbreviation (will be converted to full name)
= ‘PV’ = like ‘PG’ with possible using of Version
– more informations about PGM.TYPE in PGM.TABLE
= ‘R’ = (normally) 10 numeric char., but only up to 6 integer and 9 decimal char.
= ‘S’ = SWIFT char. =
‘A…Z’, ‘0…9’, ‘ ‘()+,-.’
‘-‘ can’t be the 1st char.
= ‘SS’ = like ‘S’, but 1st char. ‘A…Z’
= ‘SSS’ = all char. must be ‘A…Z’
= ‘YM’ = Year and Month
internal format always YYYYMM (Y=year, M=month) but input may be ‘M’, ‘MM’, ‘MYY’, ‘MMYY’, ‘YYYYMM’
– Field 2 – See IN2… pgms.
– Field 3
= “”
= ‘EXTERN’ in field 3 = automatically updated field (in connection with other pgms)
= ‘NOCHANGE’ in field 3 = field content can only be inputted in accordance with a new record (or very first record is not authorised)
= ‘NOINPUT’ in field 3 = indirectly updated by input of another feld (e.g. ievery input changes the fields RECORD.STATUS, DATE.TIME etc.)
= ‘NV.EXTERN’ in field 3 = same like ‘EXTERN’ but
Not Visible (No display when displaying record)
– Field 4 = “” or Mask
– Field 5 = “” or ‘R’ = Right justified DISPLAY
– Field 6 – not described yet
– Field 7 = Fields to be deleted when containing
– Field 8 = Can be set to the following values :-
‘NOMODIFY’ – No changes allowed to association
‘NODELETE’ – No deletion allowed to association
‘NOEXPAND’ – No expansion allowed to association
The value must be specified for the first field
in the association.
default figures after input of this field
VM = Fieldmarker when more than one field defined
The N(x) common variable
Define the numbers of characters + a code for special check. 3 Fields (delimiter = ‘.’) :
Field 1 = Maximum characters – Leading char. ‘0’, ’00’. ‘ ‘ = special meaning (see following examples)
Field 2 = Minimum characters
Field 3 = “” or ‘C’ (= special Check in main pgm. -return from pgm. FIELD.INPUT resp. FIELD.MULTI after input to this field)
Examples:
’35’ = input up to 35 characters possible
‘35.3’ = input from 3 to 35 characters
’01’ means: no input or digits ‘0…9’ – ‘0’ is a valid input and won’t be cancelled
‘006.6’ = input of 6 characters including zero (minimum ‘000000’, maximum ‘999999’)
‘ 54’ = blanks won’t be cancelled (no use of TRIM)
‘3.1.C’, ’16..C’ = any combination with ‘C’-option
The IN2 Standard display program
This program receives two parameters: (N1, T1) and returns:
COMI = may be modified
DISPLAY = masked COMI
N1
a) Number of maximum char. (including mask char.),
b) ‘.’,
c) Number of minimum char.
T1
Field 1 = “” = Numeric Input or Specified Input by Table
Field 2 =
a) Numeric
Value 1 = “” or ‘-‘ (=when Minus possible)
Value 2 = “” or ‘1…9’ (=possible Decimals)
b) Table
ba) by ‘…’, e.g. ‘1…35’ or ‘B…D’
bb) by ‘_’, e.g. ‘NO_Y’ or ‘R_’
Field 4 = “” or Mask, e.g. ‘R##-###’ for Category
Field 5 = “” or ‘R’ (when right adjusted)
or ‘C’ (= ‘R’ + Converting space to zero)
CHECKFILE(x)
Looks for available ID and brings enrichment resp. error message back from pgm. DBR
Field 1 = file name (without ‘F.’)
Field 2 = field number
Field 3 = miscellanous arguments (delimiter = ‘.’)
a) “” or ‘L’ = take value field in accordance to language code
b) not used
c) not used
d) delimiter argument, e.g. ‘YM’
Examples of often used defintions: “L”, “L…YM”
Field 4-6 = next squence, etc.
when using 2 definitions (or more)e.g. ‘ACCOUNT<f>CUSTOMER<f><f>CUSTOMER<f>SHORT.NAME’
CONCATFILE(x)
FILE to build a CONCATenation Subfield 1 = ‘AL’ = Table is left adjusted = ‘AR’ = Table is right adjusted = ‘NEW’ = Only 1 concatenation is possible (e.g. Mnemonic must be unique) Subfield 2 = File name (without ‘F.’)