While masking IMS segments, we see '00170W Record no [n] too short to contain field ZMIMSNAM_EXTRACT_RECORD.INT_PARTY_NUMBER_NAM, masking rule ignored’ error.
We're able to mask the majority of the IMS segments without issue, and trying to understand what's causing this error.
TDM Mainframe Add-on
This was caused by the way the FMI extract copybook, which was processed from the File Definition Manager, to generate the corresponding AFL. The AFL is missing some required information.
When generating the AFL, there must be a segment name for each of the segments extracted through FMI+.
For example:
Extracted FMI copybook
01 SE1339P-EXTRACT-RECORD.
02 SE1339P-EXT-CNTL-INFO.
05 SE1339P-ACTION-CODE PIC X(01).
05 FILLER PIC X(01).
05 SE1339P-SEGMENT-NAME PIC X(08).
05 SE1339P-DBDNAME PIC X(08).
05 FILLER PIC X(02).
05 SE1339P-FORMAT-CKEY-LEN PIC 9(09) COMP.
05 SE1339P-SEG-LEN PIC 9(09) COMP.
05 SE1339P-VAR-AREA-LEN PIC 9(09) COMP.
05 SE1339P-ROOT-LOCATION PIC X(08).
02 SE1339P-FORMATTED-CKEY.
05 SE1339P-LEVEL-1-SEG-NUM PIC 9(03).
05 SE1339P-LEVEL-1-SE1339P-KEY PIC X(05).
05 FILLER PIC X(33). 02 CATDM-RECORD.
03 SE1339P-REDEF-V01.
Once you generate the output file, there should be an entry similar to the following in the generated AFL files:
0,LOGICALFILE=SampleIMS,0.01,2018.12.13 07:57:28,HEADER=N,TRAILER=N,,,,,,,
1,RECNAME=SE1339P_EXTRACT_RECORD,,,,,,,,,,,
2,SE1339P_SEGMENT_NAME,8,2,3,String,,EQ,SE1339P,,,, 3,SE1339P_EXTRACT_RECORD,901,0,1,Structure,,,,,,,
3,SE1339P_EXT_CNTL_INFO,40,0,2,Structure,,,,,,,
3,SE1339P_ACTION_CODE,1,0,3,String,,,,,,,
3,FILLER,1,1,3,String,,,,,,,
3,SE1339P_SEGMENT_NAME,8,2,3,String,,,,,,,
3,SE1339P_DBDNAME,8,10,3,String,,,,,,,
3,FILLER1,2,18,3,String,,,,,,,
3,SE1339P_FORMAT_CKEY_LEN,4,20,3,"BinaryUnsigned:10,0",,,,,,,
3,SE1339P_SEG_LEN,4,24,3,"BinaryUnsigned:10,0",,,,,,,
3,SE1339P_VAR_AREA_LEN,4,28,3,"BinaryUnsigned:10,0",,,,,,,
3,SE1339P_ROOT_LOCATION,8,32,3,String,,,,,,,
3,SE1339P_FORMATTED_CKEY,41,40,2,Structure,,,,,,,
3,SE1339P_LEVEL_1_SEG_NUM,3,40,3,"Numeric:999",,,,,,,
3,SE1339P_LEVEL_1_SE1339P_KEY,5,43,3,String,,,,,,,
3,FILLER2,33,48,3,String,,,,,,,
3,CATDM_RECORD,205,81,2,Structure,,,,,,,
3,SE1339P_REDEF_V01,205,81,3,Structure,,,,,,,
3,EL00299_SE1339P_REDEF_V01,2,81,4,"BinarySigned:5,0",,,,,,,
3,GR06066_SE1339P_REDEF_V01,140,83,4,Structure,,,,,,,
3,EL13859_SE1339P_REDEF_V01,5,83,5,"PackedSigned:9,0",,,,,,,
3,EL04247_SE1339P_REDEF_V01,1,88,5,String,,,,,,,
3,EL09672_SE1339P_REDEF_V01,1,89,5,"Numeric:9",,,,,,,
The key field in question is “02”, since this field will allow you to control the masking based off the segment specified, in this example that will be SE1339P.