00001 ***** 09/06/00 00002 * DTSIL090 00003 * DTSIL090 PARAGRAPH FORMATING MODULE LINKAGE. LV006 00004 * DTSIL090 00005 * INPUT UP TO 50 WORDS OR GROUPS OF WORDS AND A DTSIL090 00006 * DESIRED LINE LENGTH (AS WELL AS A COUNT OF THE DTSIL090 00007 * NUMBER OF GROUPS OF WORDS) AND THIS MODULE WILL DTSIL090 00008 * RETURN PARAGRAPH LINES AS CLOSE TO THE DESIRED DTSIL090 00009 * LENGTH AS POSSIBLE WITHOUT RUNNING OVER. DTSIL090 00010 * DTSIL090 00011 * BETWEEN WORDS IN EACH WORD GROUP THAT ARE NOT DTSIL090 00012 * TO APPEAR ON SEPARATE PARAGRAPH LINES, THE DTSIL090 00013 * CALLING MODULE MUST REPLACE EACH SPACE WITH DTSIL090 00014 * L090-SPECIAL-CHAR. THE SPECIAL CHARACTER DTSIL090 00015 * WILL BE, IN TURN, REPLACED BY A SPACE IN THE DTSIL090 00016 * PARAGRAPH THAT IS RETURNED. TO BYPASS THIS DTSIL090 00017 * PROCESSING, SET L090-SPECIAL-CHAR TO LOW-VALUE. DTSIL090 00018 * DTSIL090 00019 * IF A GIVEN WORD GROUP IS TO BE UNDERLINED OR DTSIL090 00020 * BOLDED THE CALLING MODULE NEEDS TO SET DTSIL090 00021 * L090-PHRASE-OVERSTRIKE-IND ACCORDINGLY AND DTSIL090 00022 * DTSBU090 WILL RETURN A PARAGRAPH LINE WHICH CL**2 00023 * IS TO BE WRITTEN AFTER ADVANCING +0 AS INDICATED DTSIL090 00024 * BY L090-PARAGRAPH-LINE-DUPE-88. OTHERWISE DTSIL090 00025 * L090-PHRASE-OVERSTRIKE-IND NEEDS TO BE INITIALED DTSIL090 00026 * TO SOMETHING OTHER THAN 'B' OR 'U' BY THE DTSIL090 00027 * CALLING MODULE. DTSIL090 00028 * DTSIL090 00029 * SPACES AT THE END OF A GROUP OF WORDS ARE DTSIL090 00030 * COMPRESSED TO ONE SPACE (OR TWO SPACES IF THE DTSIL090 00031 * GROUP OF WORDS ENDS IN A PERIOD). SPACES AT THE DTSIL090 00032 * BEGINNING OF A WORD GROUP AND SPACES BETWEEN DTSIL090 00033 * TWO WORDS IN A WORD GROUP ARE LEFT ALONE. DTSIL090 00034 * DTSIL090 00035 * L090-INDENT WILL INDENT ALL LINES BUT THE FIRST DTSIL090 00036 * LINE IN THE RETURNED PARAGRAPH BY THE STATED DTSIL090 00037 * AMOUNT (STARTING COLUMN = 1 + L090-INDENT). TO DTSIL090 00038 * INDENT THE FIRST LINE PUT LEADING SPACES IN DTSIL090 00039 * L090-PHRASE(1). TO LEFT-JUSTIFY SET L090-INDENT DTSIL090 00040 * TO ZERO. DTSIL090 00041 * DTSIL090 00042 * BECAUSE OF A FLUKE THAT CAN OCCUR WITH PUNCTUA- DTSIL090 00043 * TION, THE CALLING MODULE SHOULD MAKE THE VALUE DTSIL090 00044 * OF L090-DESIRED-LINE-LIMIT 1 LESS THAN THE LENGTHDTSIL090 00045 * IT WILL ACTUALLY PULL OFF OF L090-PARAGRAPH-LINE.DTSIL090 00046 * DTSIL090 00047 ***** DTSIL090 00048 SKIP1 DTSIL090 00049 10 L090-LENGTH PIC S9(04) COMP VALUE +9382. DTSIL090 00050 SKIP1 DTSIL090 00051 10 L090-DESIRED-LINE-LIMIT PIC S9(03) COMP-3. DTSIL090 00052 10 L090-INDENT PIC S9(03) COMP-3. DTSIL090 00053 SKIP1 DTSIL090 00054 10 L090-SPECIAL-CHAR PIC X(01). DTSIL090 00055 88 L090-NO-SPECIAL-CHAR-88 VALUE LOW-VALUE. DTSIL090 00056 88 L090-SPECIAL-CHAR-STD-88 VALUE '\'. DTSIL090 00057 SKIP1 DTSIL090 00058 10 L090-PHRASE-CNT PIC S9(04) COMP. DTSIL090 00059 10 L090-PHRASE-TABLE OCCURS 50 TIMES DTSIL090 00060 INDEXED BY L090-PHRASE-IDX. DTSIL090 00061 15 L090-PHRASE PIC X(80). CL**6 00062 15 L090-PHRASE-OVERSTRIKE-IND DTSIL090 00063 PIC X(01). DTSIL090 00064 88 L090-PHRASE-UNDERLINE-88 VALUE 'U'. DTSIL090 00065 88 L090-PHRASE-BOLD-88 VALUE 'B'. DTSIL090 00066 88 L090-PHRASE-OVERSTRIKE-88 VALUE 'B' 'U'. DTSIL090 00067 SKIP1 DTSIL090 00068 10 L090-RETURN-CODE PIC X(01). DTSIL090 00069 88 L090-SUCCESSFUL-88 VALUE '0'. DTSIL090 00070 88 L090-UNSUCCESSFUL-88 VALUE '8'. DTSIL090 00071 SKIP1 DTSIL090 00072 10 L090-PARAGRAPH-LINE-CNT PIC S9(04) COMP. DTSIL090 00073 10 L090-PARAGRAPH-TABLE OCCURS 40 TIMES DTSIL090 00074 INDEXED BY L090-PARAGRAPH-IDX. DTSIL090 00075 15 L090-PARAGRAPH-LINE-DUPE-IND DTSIL090 00076 PIC X(01). DTSIL090 00077 88 L090-PARAGRAPH-LINE-DUPE-88 VALUE 'Y'. DTSIL090 00078 15 L090-PARAGRAPH-LINE PIC X(132). CL**6