00001 ***** 07/27/98 00002 * DTSIL143 00003 * MACIL143 BUILD A RECORD WITH VARIABLE LENGTH FIELDS LV001 00004 * MODULE LINKAGE. DTSIL143 00005 * DTSIL143 00006 * DTSIL143 00007 * IN BUILDING A RECORD, CALL THIS MODULE ONCE FOR EACH FIELD DTSIL143 00008 * TO BE INCLUDED IN THE RECORD. EACH TIME THIS MODULE IS DTSIL143 00009 * CALLED THE FOLLOWING FIELDS NEED TO BE SET BY THE CALLING DTSIL143 00010 * MODULE: DTSIL143 00011 * L143-FIELD-DELIM DTSIL143 00012 * L143-STRING-DELIM DTSIL143 00013 * L143-EDIT-FIELD-IND DTSIL143 00014 * L143-EMBED DTSIL143 00015 * L143-FIELD-SIZE DTSIL143 00016 * L143-FIELD DTSIL143 00017 * DTSIL143 00018 * WHEN FIRST CALLING THIS MODULE FOR A GIVEN RECORD, SET DTSIL143 00019 * L143-REC-SIZE TO ONE LESS THAN THE POSITION IN THE RECORD DTSIL143 00020 * AT WHICH YOU WANT MACBU143 TO POSITION THE FIRST FIELD IT DTSIL143 00021 * IS PASSED (E.G. SET L143-REC-SIZE TO +0 TO POSITION THE DTSIL143 00022 * FIRST FIELD IN THE FIRST BYTE). FROM THERE ON, MACBU143 DTSIL143 00023 * ALWAYS SETS L143-REC-SIZE TO THE POSITION OF THE LAST BYTE DTSIL143 00024 * IT HAS MOVED INTO THE RECORD. DTSIL143 00025 * DTSIL143 00026 * L143-TRIM-OUTSIDE-SPACES WILL RESULT IN ALL SPACES AT THE DTSIL143 00027 * START AND END OF THE FIELD PASSED TO BE DROPPED. DTSIL143 00028 * DTSIL143 00029 * L143-TRIM-LEADING-ZEROES WILL RESULT IN ALL LEADING ZEROES DTSIL143 00030 * UP TO BUT NOT INCLUDING THE DIGIT TO THE LEFT OF THE DECIMAL DTSIL143 00031 * POINT (OR, IF THERE IS NO DECIMAL POINT, THE LOW ORDER DTSIL143 00032 * DIGIT) BEING DROPPED. DTSIL143 00033 * DTSIL143 00034 * IF NOT L143-EMBED-NO-REPLACE DTSIL143 00035 * - IF NOT L143-STRING-DELIM-NO THEN ANY EMBEDDED DTSIL143 00036 * OCCURANCES OF THE STRING DELIMITER ARE REPLACED BY DTSIL143 00037 * L143-EMBED. DTSIL143 00038 * - IF L143-STRING-DELIM-NO BUT NOT L143-FIELD-DELIM-NO THEN DTSIL143 00039 * ANY EMBEDDED OCCURANCES OF THE FIELD DELIMITER ARE DTSIL143 00040 * REPLACED BY L143-EMBED. DTSIL143 00041 * DTSIL143 00042 * DTSIL143 00043 ***** DTSIL143 00044 SKIP1 DTSIL143 00045 10 L143-LENGTH PIC S9(04) COMP. DTSIL143 00046 SKIP1 DTSIL143 00047 10 L143-FIELD-DELIM PIC X(01). DTSIL143 00048 88 L143-FIELD-DELIM-NO VALUE 'N'. DTSIL143 00049 88 L143-FIELD-DELIM-COMMA VALUE ','. DTSIL143 00050 88 L143-FIELD-DELIM-SEMI VALUE ';'. DTSIL143 00051 88 L143-FIELD-DELIM-SPACE VALUE ' '. DTSIL143 00052 10 L143-STRING-DELIM PIC X(01). DTSIL143 00053 88 L143-STRING-DELIM-NO VALUE 'N'. DTSIL143 00054 88 L143-STRING-DELIM-DOUB-QUOTE VALUE '"'. DTSIL143 00055 10 L143-EDIT-FIELD-IND PIC X(01). DTSIL143 00056 88 L143-EDIT-FIELD-NO VALUE 'N'. DTSIL143 00057 88 L143-TRIM-OUTSIDE-SPACES VALUE ' '. DTSIL143 00058 88 L143-TRIM-LEADING-ZEROES VALUE '0'. DTSIL143 00059 10 L143-EMBED PIC X(01). DTSIL143 00060 88 L143-EMBED-NO-REPLACE VALUE 'N'. DTSIL143 00061 88 L143-EMBED-REPLACE-SPACE VALUE ' '. DTSIL143 00062 88 L143-EMBED-REPLACE-SING-QUOTE VALUE ''''. DTSIL143 00063 10 FILLER PIC X(05). DTSIL143 00064 SKIP1 DTSIL143 00065 10 L143-FIELD-SIZE PIC S9(04) COMP. DTSIL143 00066 10 L143-FIELD. DTSIL143 00067 15 L143-FIELD-CHAR PIC X(01) DTSIL143 00068 OCCURS 200 DTSIL143 00069 INDEXED BY L143-FIELD-IDX. DTSIL143 00070 SKIP1 DTSIL143 00071 10 L143-RESULT-IND PIC X(01). DTSIL143 00072 88 L143-OK VALUE '0'. DTSIL143 00073 88 L143-ERROR VALUE '1'. DTSIL143 00074 SKIP1 DTSIL143 00075 10 L143-MAX-REC-LENGTH PIC S9(04) COMP DTSIL143 00076 VALUE +4099. DTSIL143 00077 10 L143-REC-SIZE PIC S9(04) COMP. DTSIL143 00078 10 L143-REC. DTSIL143 00079 15 L143-REC-CHAR PIC X(01) DTSIL143 00080 OCCURS 0 TO 4099 DTSIL143 00081 DEPENDING ON L143-REC-SIZE DTSIL143 00082 INDEXED BY L143-REC-IDX. DTSIL143