Defining fields manually: Difference between revisions

From m204wiki
Jump to navigation Jump to search
No edit summary
Line 122: Line 122:


<p>In most cases, only one of these may be specified on any field (see the UTF attributes). The default is STRING</p>
<p>In most cases, only one of these may be specified on any field (see the UTF attributes). The default is STRING</p>


<table>
<table>
Line 154: Line 155:
</td>
</td>
</tr>
</tr>
<td></td>
<tr></tr>
<tr>
<tr>
<td>FLOAT</td>
<td>FLOAT</td>
Line 165: Line 166:
<td></td>
<td></td>
</tr>
</tr>
<tr>
<td rowspan="2">
<td rowspan="2">
<p>VISIBLE</p>
<p>VISIBLE</p>
Line 176: Line 178:
</tr>
</tr>
<tr>
<tr>
<td></td>
</tr>
<td rowspan="2">
<p>UTF-8</p>
<p>UTF-16</p>
</td>
<td rowspan="2">
<p>UTF8</p>
<p>UTF16</p>
</td>
<td rowspan="2">
<p>Note that this is used in conjunction with</p>
<p>either the STRING or one of the large object datatypes.</p>
</td>
</tr>
</tr>
<tr>
<tr>
Line 217: Line 205:
<tr>
<tr>
</tr>
</tr>
<tr>
<td>
<td>
<p>LENGTH <var class="term">m</var></p>
<p>LENGTH <var class="term">m</var></p>
Line 235: Line 224:
</tr>
</tr>
<tr>
<tr>
<td rowspan="2">LEVEL <var class="term">k</var></td>
<td rowspan="2">LVL <var class="term">k</var></td>
<td rowspan="2">No level</td>
</tr>
</tr>
<tr>
<tr>
</tr>
<td>
<tr>
<td rowspan="2">
<p>PAD <var class="term">character</var></p>
<p>PAD <var class="term">character</var></p>
<p>LENGTH <var class="term">m</var></p>
</td>
</td>
<td rowspan="2">
<td>
<p>-</p>
<p></p>
<p>LEN <var class="term">m</var></p>
</td>
</td>
<td rowspan="2">
<td>
<p>Character = X'00'</p>
<p>Character = X'00'</p>
<p>No preallocated length</p>
</td>
</td>
</tr>
</tr>
Line 284: Line 265:
</td>
</td>
<td rowspan="2">REPT (except in 1NF files), or inside an RFG (where it is EXONE)</td>
<td rowspan="2">REPT (except in 1NF files), or inside an RFG (where it is EXONE)</td>
</tr>
<tr>
</tr>
<tr>
<td rowspan="2">
<p>UNIQUE</p>
<p>NON-UNIQUE</p>
</td>
<td rowspan="2">
<p>UNIQ</p>
<p>NUNIQ</p>
</td>
<td rowspan="2">NON-UNIQUE</td>
</tr>
</tr>
<tr>
<tr>
Line 339: Line 307:
<th>Abbreviation</th>
<th>Abbreviation</th>
<th>Notes</th>
<th>Notes</th>
</tr>
<tr>
<td rowspan="2">
<p>UNIQUE</p>
<p>NON-UNIQUE</p>
</td>
<td rowspan="2">
<p>UNIQ</p>
<p>NUNIQ</p>
</td>
<td rowspan="2">NON-UNIQUE</td>
</tr>
<tr>
</tr>
<tr>
<td>
<p>LEVEL </p>
</td>
<td>
<p>LEV</p>
</td>
<td>
<p>See [[Security]]</p>
</td>
</tr>
<tr>
</tr>
<tr>
<td rowspan="2">
<p>UTF-8</p>
<p>UTF-16</p>
</td>
<td rowspan="2">
<p>UTF8</p>
<p>UTF16</p>
</td>
<td rowspan="2">
<p>Only UTF format data may be stored</p>
</td>
</tr>
</tr>
<tr>
<tr>
Line 369: Line 381:
</tr>
</tr>
</table>
</table>
==== Defining a field inside a Repeating Field Group ====
<table>
<caption>Linking a field to a Repeating Field Group with the DEFINE command</caption>
<tr class="head">
<th>Attribute</th>
<th>Abbreviation</th>
<th>Notes</th>
</tr>
<tr>
<td>FIELDGROUP</td>
<td>FG</td>
<td>If not the last attribute specified, requires an ' AND ' after it</td>
</tr>
<tr>
</tr>
</table>


===OCCURS and LENGTH clauses===
===OCCURS and LENGTH clauses===

Revision as of 01:47, 2 May 2013

This chapter describes the use of DEFINE command, which allows you to define the fields in a file. For the full syntax, follow that link.

Defining fields

After you create and initialize a Model 204 file, use the DEFINE command or the IFDFLD Host Language Interface function to establish the names and types of the fields in the file.

The format of the DEFINE command is:

Syntax

DEFINE FIELD name [(attribute [,[attribute ...]]) | WITH [attribute][,[attribute ...]]]

where:

name is a 1 to 255 character name that must begin with a letter and can contain any alphanumeric characters, including spaces, except:

 ?? ?$ ?& @ (or an alternative delete character) # (or an alternative flush character)

attribute is a member of the list in Field attributes.

If you specify the ORDERED attribute, you can follow it with a list of qualifying parameters that designate the type of ordering and the space utilization characteristics of the Ordered Index. See the discussion of the ORDERED attribute in ORDERED and NON-ORDERED attributes.

Example

In the following example the field CUSTID is named and given the ORDERED CHARACTER attribute:

DEFINE FIELD CUSTID ORDERED CHARACTER

Specify as many field attributes as needed from Field attributes. For each attribute pair shown in the list, only one of the alternatives can be specified; conflicting attributes, such as KEY and NON-KEY, cannot be used together in a single description.

Note

Every attribute has a default value. Therefore, you only need to specify the attribute if it is not the default.

When to use the FIELD keyword

The keyword FIELD is required before field names that begin with the word FIELD, PRINTER, or DATASET. It is optional with other field names. If FIELD is specified, only one field can be defined or redefined per command. For example:

DEFINE FIELD POLICYHOLDER DEFINE POLICYHOLDER

Each example above defines a field with the name POLICYHOLDER. The following example defines a field with the name FIELD LOCATION:

DEFINE FIELD FIELD LOCATION

Defining sort key, hash key, and record security fields

The DEFINE command cannot be used to define sort key fields, hash key fields, or record security fields. These fields can be defined only with the INITIALIZE command, described in INITIALIZE command, and the appropriate parameter settings.

Field attributes

The attributes listed in the following tables are introduced in Field Design, along with a summary of the rules follow in assigning them. A number of the attributes have additional optional attributes (in particular, see the ORDERED attribute) that can be specified with the DEFINE FIELD command, which are also described in Field Design.


Indexing attributes

The overall effect of the defaults is that, unless specified, the field is not indexed.

Indexing field attributes with the DEFINE command
Attribute Abbreviation Default

ORDERED CHARACTER

NON-ORDERED

ORD CHAR

NORD

NON-ORDERED

ORDERED NUMERIC

NON-ORDERED

ORD NUM

NORD

NON-ORDERED

KEY

NON-KEY

-

NKEY

NON-KEY

FRV

NON-FRV

The ORD attribute is preferable; shown for compatibility.

-

NFRV

NON-FRV

[NUMERIC] RANGE

NON-RANGE

Obsolete; supported for compatibility.

NR

NNR

NON-RANGE

Datatypes

In most cases, only one of these may be specified on any field (see the UTF attributes). The default is STRING


Data type attributes with the DEFINE command
Attribute Abbreviation Notes
STRING STR
BINARY BIN

BINARY-LARGE-OBJECT

CHARACTER-LARGE-OBJECT

BLOB

CLOB

must have Table E enabled

FLOAT FLT must have LEN specified
DATETIME DT

VISIBLE

INVISIBLE

VIS

INV

Data Content Attributes

Data content field attributes with the DEFINE command
Attribute Abbreviation Default

UPDATE IN PLACE

UPDATE AT END

UP

UE

UPDATE IN PLACE

LENGTH m

LEN m

No preallocated length

OCCURS n OCC n No preallocated occurrences

PAD character

Character = X'00'

DEFERRABLE

NON-DEFERRABLE

DEF

NDEF

DEFERRABLE

AT-MOST-ONE

EXACTLY-ONE

REPEATABLE

ONE

EXONE

REPT

REPT (except in 1NF files), or inside an RFG (where it is EXONE)

CODED

NON-CODED

COD

NCOD

NON-CODED

FEW-VALUED

MANY-VALUED

FV

MV

MANY-VALUED


Field constraints

Field constraint attributes with the DEFINE command
Attribute Abbreviation Notes

UNIQUE

NON-UNIQUE

UNIQ

NUNIQ

NON-UNIQUE

LEVEL

LEV

See Security

UTF-8

UTF-16

UTF8

UTF16

Only UTF format data may be stored

Concatenated fields

Concatenated field attributes with the DEFINE command
Attribute Abbreviation Notes

Automatic fields

Automatic field attributes with the DEFINE command
Attribute Abbreviation Notes

Defining a field inside a Repeating Field Group

Linking a field to a Repeating Field Group with the DEFINE command
Attribute Abbreviation Notes
FIELDGROUP FG If not the last attribute specified, requires an ' AND ' after it


OCCURS and LENGTH clauses

The variables n and m specified for OCCURS and LENGTH must be decimal numbers between 1 and 255. The PAD character can be specified in decimal, hexadecimal (X'xx'), or character (C'c') form, and can take on any value equivalent to a number between 0 and 255.

All preallocated fields (fields that have an OCCURS clause) must be defined before any records are added to the file.

Note: After records are loaded, you can add a preallocated field definition only by reinitializing the file, defining all the fields-including the new preallocated field-and reloading the records. Non-preallocated field definitions can be added at any time.

Defining field retrieval attributes

If you do not know if a field will be used in retrievals, you can define it initially as NON-KEY, NON-ORDERED, and NON-RANGE. Then, you will be able to monitor the use of the field in FIND statements using information written to the journal data set and redefine it as KEY, NUMERIC RANGE, or ORDERED when necessary.

For details, see Monitoring field retrievals in FIND statements.

Implementing the date-time stamp feature (DTS)

The date-time stamp feature in Model 204 lets you can easily discern when a record in a file was last changed. The date-time stamp feature is supported for ONLINE and BATCH204.

See Setting Up the Date-Time Stamp Field for the steps the System Manger must take before this feature is used,
and Adding a Date-Time Stamp field for rules on using the feature.

Preventing definition of new field names

Model 204 permits a user to define new fields at any time. This is an advantage in some applications, because it enables the file to evolve beyond its original definition. If your site does not want users to add new field names, reset the FOPT parameter to X'01' from its default value of X'00'. This file option causes Model 204 to issue the following response, when a user issues a DEFINE command:

*** M204.1261: NEW FIELD NAMES NOT PERMITTED

Regardless of the setting of the FOPT parameter, users with file manager privileges (see the PRIVDEF parameter) can define new fields at any time. See the discussion in FOPT parameter for more detail.