The pjs.define() API is used within Profound.js modules to declare fields, arrays, and data structures with a strong data type. All IBM i data types are available.
To declare fields that are loosely typed, use the var clause in JavaScript instead.
Parameters
- Field name (String)
- Config (Object)
Config object
A config object is required when defining fields. It is what gives your field attributes, like type, length, and decimal places. The following config properties are available:
Property name | Property type | Description |
---|---|---|
type | String | The following data types can be specified:
Some config properties only apply to certain types. |
length | Number | Specifies the field length. It is required for most data types; exceptions are:
|
decimals | Number | Specifies the number of decimal positions. It required for packed and zoned fields. |
varying | Boolean | Specifies that a character field is of varying length; otherwise, the field will be a fixed length field padded with spaces. |
initValue | String/Number/Boolean/Array | Specified the field's initial value. |
dim | Number | Available to all data types. Using dim makes your field into an array. Arrays are 1-indexed. |
orderBy | String | Available to all types when dim element is used. Either of these values are required:
|
elements | Object | Required when using data-structure type. Read about data-structures below. |
qualified | Boolean | Available when using data structure type. |
special | String | Available to data-structure subfields. Acceptable values are: PSDS
INFDS
|
nullable | Boolean / String | Use this property to create null-capable fields.
|
likeRec | Object | Available when using a data structure type. This object requires two elements.
When likerec is specified, the data structure becomes qualified automatically. |
likeDS | String | Used on a data structure to specify the name of another data structure from which the configuration is derived. |
dataArea | String | Available to all data types, except from the pointer type. String pointing to data-area object. Example values:
|
statusDS | Boolean | Identifies a Status Data Structure. A Status Data Structure is automatically populated with information about the current Profound.js module and job. It is an easy way to retrieve information, such as the IBM i job name, user id, etc. |
Examples
Example 1: packed decimal
pjs.define("Num", { type: 'packed decimal', length: 3, decimals: 2 }); Num = 5;
Example 2: date with initValue
pjs.define("loandate", { type: 'date', initValue: pjs.date('2000-01-01') });
Example 3: char field with pointer to that field
pjs.define("stg", { type: 'char', length: 4 }); pjs.define("ptr", { type: 'pointer', initValue: pjs.getBuffer("stg") });
Example 4: char field array with initValue
This does mean that every element in this array will be initilized with the initValue.
pjs.define("arr", { type: 'char', length: 10, dim: 3, initValue: '0123456789' });
Data structures
When you declare a field of data-structure type, this means you need to provide an 'elements' object. Each key in this object will be the name of the subfield and the value of this key will be another config element. If a data-structure is qualified, the data-structure will act similar to a JavaScript object.
Example 5: Data structure with two subfields (non-qualified)
pjs.define("someDS", { type: 'data structure', elements: { "Field1": { type: 'char', length: 10, initValue: '1' }, "Field2": { type: 'char', length: 10 } }}); Field2 = '2';
Example 6: Data structure array, qualified and two subfields
pjs.define("dsarr", { type: 'data structure', qualified: true, dim: 2, elements: { "field1": { type: 'char', length: 1 }, "field2": { type: 'char', length: 1 } }}); dsarr[1].field1 = '1'; dsarr[1].field2 = '2'; dsarr[2].field1 = '3'; dsarr[2].field2 = '4';
Example 7: Null-capable field with null assignment
pjs.define("myNumber", { type: 'packed decimal', length: 10, decimals: 0, nullable: true }); //Set value to 5 myNumber = 5; //Set null-indicator to true myNumber = null; //Set value to 10, sets the null-indicator to false myNumber = 10; //Set null-indicator to true pjs.nullInd(myNumber, true);