An inform job has a header containing some key information that the controller uses to execute the job. It also includes metadata about the job for organizational purposes. 

## Sample Inform Header
```

/JOB
//NAME SAMPLE3
//POS
///NPOS 2,2,2,0,0,0
///TOOL 0
///POSTYPE BASE
///RECTAN
///RCONF 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
C00000=820.000,0.000,614.000,180.0000,0.0000,0.0000
C00001=1120.945,125.866,693.276,174.9881,-5.2855,-4.3206
///RCONF 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
BC00000=0.000,0.000
BC00001=168.151,-13.261
///POSTYPE PULSE
///PULSE
EC00000=0
EC00001=15505
//INST
///DATE 2008/10/23 12:00
///ATTR SC,RW,RJ
///FRAME BASE
///GROUP1 RB1,BS1,ST1

```

## Inform Header Fields
### JOB
* Function: Shows that this is a job.
* Format: `/JOB`

### NAME
* Function : Represents the job name.
* Format : `//NAME <Name>`
* Notes : up to 32 characters
* Example from sample inform header : `//NAME SAMPLE3`

### POS

* Function : Represents the position data.
* Format : `//POS`
* Notes : The position data is represented in the next few lines.
* Example from sample inform header : `//POS`

* ###  NPOS
    *   Function : Represents the number of position data items.
    *   Format : `///NPOS <C>,<BC>,<EC>,<P>,<BP>,<EX>`

    |Tag|Description|
    | -- | -- |
    |C| Number of robot axis teaching positions|
    |BC| Number of base axis teaching positions|
    |EC| Number of external (station) axis teaching positions|
    |P| Number of robot axis position variables|
    |BP| Number of base axis position variables|
    |EX| Number of external (station) axis position variables|

    *   Example from sample inform header : `///NPOS 2,2,2,0,0,0`

* ### USER
    *   Function: Represents the currently selected user coordinate system No.
    *   Format : `///USER <N>`

    |Tag|Description|
    | -- | -- |
    |N| User coordinate system No. (1 to 63)|

    *   Example : `///USER 1`
* ### TOOL
    *   Function: Represents the currently selected tool No.
    *   Format : `///TOOL <N>`

    |Tag|Description|
    | -- | -- |
    |N| Tool No. (0 to 63)|

    *   Example from sample inform header: `///TOOL 0`
* ###  POSTYPE
    *   Function: Represents the position data type.
    *   Format: `///POSTYPE<T>`

    |Tag|Description|
    | -- | -- |
    |T | PULSE, BASE, ROBOT, TOOL, USER, MTOOL |
    |PULSE | Pulse data|
    |BASE | Cartesian data, base coordinate system|
    |ROBOT |Cartesian data, robot coordinate system|
    |TOOL |Cartesian data, tool coordinate system|
    |USER |Cartesian data, user coordinate system|
    |MTOOL| Cartesian data, master tool coordinate system|

    *   Example from sample inform header: `///POSTYPE PULSE`

* ### PULSE
    *   Function: Represents that pulse data is defined during and after this instruction.
    *   Format: `///PULSE`

    |Tag|Format|
    | -- | -- |
    |   C |`<Cxxxxx>=<S>,<L>,<U>,<R>,<B>,<T>,<E>`|
    |   BC| `<BCxxxxx>=<1>,<2>,<3>`|
    |   EC| `<ECxxxxx>=<1>,<2>,<3>,<4>,<5>,<6>`|
    |   P| `<Pyyyy>=<S>,<L>,<U>,<R>,<B>,<T>,<E>`|
    |   BP|`<BPyyyy>=<1>,<2>,<3>`|
    |   EX| `<EXyyyy>=<1>,<2>,<3>,<4>,<5>,<6>`|

    |Tag|Description|
    | -- | -- |
    |   Cxxxxx| Robot axis teaching position|
    |   BCxxxxx| Base axis teaching position|
    |   ECxxxxx| External (station) axis teaching position|
    |   Pyyyy| Robot axis position variables|
    |   BPyyyy| Base axis position variables|
    |   EXyyyy| External (station) axis position variables|
    |   S | S-axis pulse data|
    |   L | L-axis pulse data|
    |   U | U-axis pulse data|
    |   R | R-axis pulse data|
    |   B | B-axis pulse data|
    |   T | T-axis pulse data|
    |   E | E-axis pulse data|
    |   1 | 1-axis pulse data|
    |   2 | 2-axis pulse data|
    |   3 | 3-axis pulse data|
    |   4 | 4-axis pulse data|
    |   5 | 5-axis pulse data|
    |   6 | 6-axis pulse data|
    |   xxxxx | A number from 00000 to 09997|
    |   yyyy | A number from 0000 to 9999|
    *   Example from sample inform header:
    ``` 
    
    ///PULSE 
    EC00000=0
    EC00001=15505  
    
    ```

* ### RECTAN
    *   Function: Represents that Cartesian data is defined during and after this instruction.
    *   Format: `///RECTAN`

    |Tag|Format|
    | -- | -- |
    |   C | `<Cxxxxx> = <X>,<Y>,<Z>,<Rx>,<Ry>,<Rz>,<Re>`|
    |   BC | `<BCxxxxx> = <1>,<2>,<3>`|
    |   P | `<Pyyyy> = <X>,<Y>,<Z>,<Rx>,<Ry>,<Rz>,<Re>`|
    |   BP | `<BPyyyy> = <1>,<2>,<3>`|

    |Tag|Description|
    | -- | -- |
    |   Cxxxxx | Robot axis teaching position|
    |   BCxxxxx | Base axis teaching position|
    |   Pyyyy | Robot axis position variables|
    |   BPyyyy | Base axis position variables|
    |   X | X-axis Cartesian data|
    |   Y | Y-axis Cartesian data|
    |   Z | Z-axis Cartesian data|
    |   Rx | Rx-axis Cartesian data|
    |   Ry | Ry-axis Cartesian data|
    |   Rz | Rz-axis Cartesian data|
    |   Re | Re-axis Cartesian data|
    |   1 | 1-axis Cartesian data|
    |   2 | 2-axis Cartesian data|
    |   3 | 3-axis Cartesian data|
*   ### RCONF
    *   Function : Represents the manipulator type of the Cartesian data defined
    *   during and after this pseudo instruction.
    *   Format : `///RCONF <l>,<m>,<n>,<o>,<p>,<q>,<r1>,<r2>,<r3>,<r4>,<r5>,<r6>,<r7>,<r8>,<r9>,<r10>,<r11>,<r12>,<r13>,<r14>,<r15>,<r16>,<r17>,<r18>`

    |Tag|Description|
    | -- | -- |
    |   l | 0: Flip, 1: No-flip|
    |   m | 0: Upper arm, 1: Lower arm|
    |   n | 0: Front, 1: Rear|
    |   o | 0: R < 180, 1: R >= 180|
    |   p | 0: T < 180, 1: T >= 180|
    |   q | 0: S < 180, 1: S >= 180|
    |   r1 to r18 | unused|

    *   Example from sample inform header : 
    ```
    ///RCONF 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    C00000=820.000,0.000,614.000,180.0000,0.0000,0.0000
    C00001=1120.945,125.866,693.276,174.9881,-5.2855,-4.3206
    ```
### INST
* Function : Represents that it is an instruction.
* Format : //INST
*   ###  DATE
    *   Function : Represents the date.
    *   Format : `///DATE <YYYY>/<MM>/<DD> <HH>:<TT>`

    |Tag|Description|
    | -- | -- |
    |   YYYY| Year|
    |   MM| Month|
    |   DD| Day|
    |   HH| Hour|
    |   TT| Minute|

    *   Example from sample inform header : `///DATE 2008/10/23 12:00`
*   ###  COMM
    *   Function : Represents that it is a job comment.
    *   Format : `///COMM <Comment character line>`
    *   `<Comment character line>` : Up to 32 characters
    *   Example : `///COMM This is a comment`
*   ###  ATTR
    *   Function : Represents the job attribute.
    *   Format : `///ATTR <Attribute 1>,<Attribute 2>,···,<Attribute16>`

    |Tag|Description|
    | -- | -- |
    |  JD | Job Destroy|
    |  DD | Directory Destroy|
    |  SC | Save Complete|
    |  RO | Writing disabled “Edit-lock” (Read Only)|
    |  WO | Reading disabled (Write Only)|
    |  RW | Reading/Writing capable (Read/Write)|
    |  RJ | Relative job|
    |   Example from sample inform header : `///ATTR SC,RW,RJ`|

*   ###  FRAME
    *   Function : Represents relative job teaching coordinate system.
    *   Format : `///FRAME <C>`

    |Tag|Description|
    | -- | -- |
    |C| BASE, ROBOT, USER\<N>|
    |BASE| Base coordinate system (Cartesian)|
    |ROBOT| Robot coordinate system (Cartesian)|
    |USER| User coordinate system (Cartesian)|
    |N| User coordinate system No. (1 to 63)|

    *   Example from sample inform header : `///FRAME BASE`
*   ###  GROUP`<GN>`
    *   Function : Represents 1st MOVE control group.
    *   Format : `///GROUP<GN> <m1>,<m2>,<m3>`

    |Tag|Description|
    | -- | -- |
    |GN|Group number (1 to 4)|
    |m1|Motion control group 1|
    |m2|Motion control group 2|
    |m3|Motion control group 3|

    *  NOTE: Motion control group is specified by RBN (Robot Base Number) where N is 1-8, BSN (Base Number) where B is 1-8 or STN (Station Number) where N is 1-24.  

    * Example from sample inform header : `///GROUP1 RB1,BS1,ST1`

*   ### LVARS
    *   Function : Represents the number of local variables.
    *   Format : `///LVARS <LB>,<LI>,<LD>,<LR>,<LS>,<LP>,<LBP>,<LEX>`

    |Tag|Description|
    | -- | -- |
    |LB|Number of byte type local variables   |
    |LB| Number of byte type local variables|
    |LI| Number of integer type local variables|
    |LD| Number of double-precision type local variables|
    |LR| Number of real number type local variables|
    |LS| Number of character type local variables|
    |LP| Number of robot axis position type local variables|
    |LBP|: Number of base axis position type local variables|
    |LEX|: Number of external (station) axis position type local variables|
    
    Example : `///LVARS 0,0,0,0,0,0,0,0`

### Revisiting the Sample Inform Header

```
/JOB
//NAME SAMPLE3
```
*   The job name is `SAMPLE3`
```
//POS
///NPOS 2,2,2,0,0,0
///TOOL 0
```
*   There are 2 robot axis teaching positions, 2 base axis teaching positions, 2 external (station) axis teaching positions, 0 robot axis position variables, 0 base axis position variables and 0 external (station) axis position variables. The currently selected tool is 0.
```
///POSTYPE BASE
///RECTAN
///RCONF 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
```
*   The position data type is Cartesian data in the base coordinate system. Cartesian data is defined after the RECTAN instruction. The RCONF tag in this case designates that the manipulator configuration is No-flip, Upper arm, Front, R < 180, T < 180, S < 180. 
```
C00000=820.000,0.000,614.000,180.0000,0.0000,0.0000
C00001=1120.945,125.866,693.276,174.9881,-5.2855,-4.3206
```
*   C00000 is the first robot axis teaching position and C00001 is the second robot axis teaching position. The first position is at X=820.000, Y=0.000, Z=614.000, Rx=180.0000, Ry=0.0000, Rz=0.0000. The second position is at X=1120.945, Y=125.866, Z=693.276, Rx=174.9881, Ry=-5.2855, Rz=-4.3206.

```
///POSTYPE PULSE
///PULSE
EC00000=0
EC00001=15505
```
*   The position data type is pulse. EC00000 is step 0 of the external (station) axis pulse data, EC00001 is step 1 of the external (station) axis pulse data etc. EC00000 is a position of 0 pulse counts and EC00001 is 15505 pulse counts.
```
//INST
///DATE 2008/10/23 12:00
///ATTR SC,RW,RJ
///FRAME BASE
///GROUP1 RB1,BS1,ST1
```
*   The date is 2008/10/23 12:00. The job attribute is Save Complete, Reading/Writing capable, Relative job. The relative job teaching coordinate system is the base coordinate system. The 1st MOVE control group is RB1, BS1, ST1.


