KB Article #66745

Transfers from InterPel 7.2.2. Z/OS to InterPel 6.3.3 failing

Problem

-- Error receiving, reason="Invalid event in current state (PEL automaton)"
-- *NDL 999



Interpel Aborts file reception in middle of a transfer with an *NDL 999 (generic error) code


Resolution

* Unlike other protocols as PeSIT, the PEL protocol has no notion of pre-defined PDU lengths. Hence it "analyses" all data passing by, interpreting PEL protocol commands.



Example :



20100805 151404 100 PEL   I TRACE     Prot trace for: PGREM590        (3)  req:Read  len:3520  Prot:PEL      <- R PGREM590   3
20100805 151404 100 PEL   I TRACE      Type: DATA - CMD: (data)      - Xfer: 960    - Rang: 175              <- R PGREM590   3    <--- data (fine)
20100805 151415 100 PEL   I TRACE     Prot trace for: PGREM590        (3)  req:Read  len:3520  Prot:PEL      <- R PGREM590   3
20100805 151415 100 PEL   I TRACE      Type: PROT - CMD: *OK         - Xfer: 960    - Rang: 175              <- R PGREM590   3   <------ *OK



Read as a protocol Command, dumped packet follows :



20100805 151415 100 PEL   I TRACE        0000  5CD6D25C F7F3F4F0 F15CE4E2 C10DD5F1     [*OK*73401*USA.N1]    <- R PGREM590   3
20100805 151415 100 PEL   I TRACE        0010  5CC2E35C D4D5C140 C1C3C3D6 E4D5E3E2     [*BT*MNA ACCOUNTS]    <- R PGREM590   3
20100805 151415 100 PEL   I TRACE        0020  40D7C1E8 C1C2D3C5 5CF9F25C E2C5C540     [ PAYABLE*92*SEE ]    <- R PGREM590   3




The problem is the presence of the data : *OK*73401*USA etc etc



*OK is a PEL protocol command and is not expected here.



This can not be avoided, that is how the PEL protocol works (old protocol, many limitations compared to todays requirements)



Solutions :



- zip/compress the file before sending  ---> in most cases, data like *OK, once compressed, will change into something else (though it is still not excluded that compressed data wouldn't contain any protocol commands by coincidece)
- use by preference the PeSIT protocol for instance (which doesn't have such impact, as blocks are defined and it isn't reading the data inside of the blocks for protocol commands)