IDENTIFICATION DIVISION.

PROGRAM-ID.		REMTABLIB.
AUTHOR.		BOB RIBOKAS.
INSTALLATION.	TERADYNE, INC.
DATE-WRITTEN.	26-JUNE-1984.
DATE-COMPILED.	TODAY.
*REMARKS.		REMOTE TABLE LIBRARY GENERATOR.

ENVIRONMENT DIVISION.

CONFIGURATION SECTION.

SOURCE-COMPUTER. VAX-11.
OBJECT-COMPUTER. VAX-11.

INPUT-OUTPUT SECTION.
FILE-CONTROL.

	SELECT TABLE-DEFINITIONS
		ASSIGN TO "REMOTE$TABLES:"
		ORGANIZATION IS SEQUENTIAL
		ACCESS MODE IS SEQUENTIAL
		FILE STATUS IS TABLE-FILE-STATUS.

	SELECT LIBRARY-FILE
		ASSIGN TO "SYS$DISK:"
		ORGANIZATION IS SEQUENTIAL
		ACCESS MODE IS SEQUENTIAL.

	SELECT LIBRARY-UPDATES
		ASSIGN TO "SYS$DISK:"
		ORGANIZATION IS SEQUENTIAL
		ACCESS MODE IS SEQUENTIAL.


DATA DIVISION.

FILE SECTION.

FD	TABLE-DEFINITIONS

	LABEL RECORDS ARE STANDARD
	VALUE OF ID IS "REMTAB.DEF"
	DATA RECORD IS TABLE-DEF-RECORD.

01	TABLE-DEF-RECORD.

	02 TABLE-DEFINITION-CODE		PIC X(1).
	   88 TABLE-DEF				VALUE "*".
	02 TABLE-REST				PIC X(79).

FD	LIBRARY-FILE

	LABEL RECORDS ARE STANDARD
	VALUE OF ID IS LIBRARY-FILE-ID
	RECORD IS VARYING IN SIZE FROM 1 TO 80 CHARACTERS
	 DEPENDING ON LIB-SIZE
	DATA RECORD IS LIBRARY-RECORD.

01	LIBRARY-RECORD				PIC X(80).

FD	LIBRARY-UPDATES

	LABEL RECORDS ARE STANDARD
	VALUE OF ID IS "LIBUPD.COM"
	DATA RECORD IS UPD-RECORD.

01	UPD-RECORD				PIC X(40).
	
WORKING-STORAGE SECTION.

01	LIBRARY-FILE-ID.

	02 LIBRARY-FILE-NAME			PIC X(9).
	02 FILLER				PIC X(4), VALUE ".TXT".

01	LIB-SIZE				PIC 9(2), COMP.

01	TABLE-FILE-STATUS			PIC X(2).

	88 TABLE-FILE-NOT-FOUND			VALUE "97".

01	TABLE-FILE-RETRY-FLAG			PIC 9(1), COMP.

	88 TABLE-FILE-OK			VALUE 0.
	88 TABLE-FILE-RETRY			VALUE 1.

01	END-OF-FILE-FLAG			PIC 9(1), COMP.

	88 VALID-READ				VALUE 0.
	88 END-OF-FILE				VALUE 1.

01	TABLE-INDEX				PIC 9(3), COMP.
01	ELEMENT-INDEX				PIC 9(3), COMP.

01	TABLE-MAX				PIC 9(3), COMP.
01	ELEMENT-MAX				PIC 9(3), COMP.

01	START-POS				PIC 9(3), COMP.

01	HOLD-AREA.

	02 HOLD-NAME				PIC X(30).
	02 HOLD-TYPE				PIC X(1).
	02 HOLD-LENGTH				PIC 9(2).
	02 HOLD-OTHER				PIC X(3).
	02 HOLD-DECIMAL				PIC 9(2).
	02 HOLD-KEY				PIC X(3).
	   88 KEY-ELEMENT			VALUE "KEY".

01	TABLE-DEF-TABLE				VALUE SPACES.

	02 TABLE-DEF-ENTRY			OCCURS 200 TIMES
						INDEXED BY TABLE-DEF-IDX.

	   03 TABLE-DEF-NAME			PIC X(40).
	   03 TABLE-DEF-CODE			PIC X(5).
	   03 TABLE-DEF-KEYS			PIC 9(1).
	   03 TABLE-DEF-ELEMENT-IDX		PIC 9(3).

01	ELEMENT-DEF-TABLE			VALUE SPACES.

	02 ELEMENT-DEF-ENTRY			OCCURS 500 TIMES
						INDEXED BY ELEMENT-DEF-IDX.

	   03 ELEMENT-DEF-NAME			PIC X(30).
	   03 ELEMENT-DEF-TYPE			PIC X(1).
	      88 ELEMENT-DEF-CHARACTER		VALUE "C".
	      88 ELEMENT-DEF-NUMERIC		VALUE "N".
	   03 ELEMENT-DEF-START			PIC 9(3).
	   03 ELEMENT-DEF-LENGTH		PIC 9(2).
	   03 ELEMENT-DEF-DECIMAL		PIC 9(2).
	   03 ELEMENT-DEF-TABLE-IDX		PIC 9(3).

01	AST-LINE				PIC X(80) VALUE ALL "*".

01	BET-LINE.

	02 FILLER				PIC X(2) VALUE "**".
	02 FILLER				PIC X(76) VALUE SPACES.
	02 FILLER				PIC X(2) VALUE "**".

01	NAM-LINE.
	02 FILLER				PIC X(8) VALUE "**      ".
	02 NAM-TOK				OCCURS 32 TIMES
						PIC X(2).
	02 FILLER				PIC X(8) VALUE "      **".

01	DEF-NAME-HOLD.

	02 DEF-TOK-HOLD				OCCURS 32 TIMES
						PIC X(1).

01	I					PIC 9(3), COMP.

01	ENTRY-SIZE				PIC 9(3).

01	FRONT-LENGTH				PIC 9(3).

01	COBOL-DATA-TYPE				PIC X(1).

01	PTR					PIC 9(3), COMP.

01	NUMBER-OUT				PIC ZZ9.

01	NUMBER-OUT-RED				REDEFINES NUMBER-OUT.

	02 NOR-1				PIC X(1).
	02 NOR-2				PIC X(1).
	02 NOR-3				PIC X(1).

01	BUILD-LINE.

	02 FRONT-PART				PIC X(40).
	02 BACK-PART				PIC X(40).

01	INPUT-LINE				PIC X(10).

	88 INPUT-NULL				VALUE SPACES.
	88 INPUT-HELP				VALUE "H", "HELP".
	88 INPUT-LIST				VALUE "L", "LIST".
	88 INPUT-END				VALUE "E", "END".
	88 INPUT-ALL				VALUE "A", "ALL".

01	INPUT-SELECTIONS			VALUE SPACES.

	02 INPUT-SEL				OCCURS 200 TIMES
						INDEXED BY INPUT-IDX
						PIC X(5).

01	ALL-FLAG				PIC 9(1), COMP, VALUE 0.

	88 DO-ALL				VALUE 1.
	88 DONT-DO-ALL				VALUE 0.

PROCEDURE DIVISION.

DECLARATIVES.

TABLE-DEFINTION-ERROR SECTION.
	USE AFTER STANDARD ERROR PROCEDURE ON TABLE-DEFINITIONS.
TABLE-DEFINITION-DECODE.
	IF TABLE-FILE-NOT-FOUND
		SET TABLE-FILE-RETRY TO TRUE.

END DECLARATIVES.

000-REMTABLIB SECTION.
001-INIT.

	DISPLAY " ".
	DISPLAY "[REMTABLIB] Remote Table Library Generator".
	DISPLAY " ".

	PERFORM 100-LOAD-DEFINITIONS.

	MOVE TABLE-INDEX TO TABLE-MAX.
	MOVE ELEMENT-INDEX TO ELEMENT-MAX.
	MOVE ZERO TO ELEMENT-DEF-TABLE-IDX (ELEMENT-MAX + 1).

	PERFORM 010-GET-SELECTIONS.

	PERFORM 200-GENERATE-LIBRARIES.

	STOP RUN.

010-GET-SELECTIONS.

	PERFORM 015-GET-SEL
		VARYING I FROM 1 BY 1
		UNTIL I > 200 OR INPUT-END.

015-GET-SEL.

	DISPLAY "Table name: " WITH NO ADVANCING.
	ACCEPT INPUT-LINE.

	IF INPUT-NULL
		GO TO 015-GET-SEL.

	IF INPUT-HELP
		DISPLAY " "
		DISPLAY "Enter the name of a table to generate library"
		DISPLAY " entries for"
		DISPLAY "Type ALL for all tables"
		DISPLAY "Type LIST for a list for table names"
		DISPLAY "Type END when done with selections"
		DISPLAY "Type HELP for this"
		DISPLAY " "
		GO TO 015-GET-SEL.

	IF INPUT-LIST
		DISPLAY " "
		PERFORM 020-LIST-TABLES
			VARYING TABLE-INDEX FROM 1 BY 1
			UNTIL TABLE-INDEX > TABLE-MAX
		DISPLAY " "
		GO TO 015-GET-SEL.

	IF INPUT-ALL
		SET DO-ALL TO TRUE
		MOVE "END" TO INPUT-LINE
	ELSE IF NOT INPUT-END
		SET TABLE-DEF-IDX TO 1
		SEARCH TABLE-DEF-ENTRY
		 AT END
			DISPLAY "?Invalid Table Name"
			GO TO 015-GET-SEL
		 WHEN TABLE-DEF-IDX > TABLE-MAX
			DISPLAY "?Invalid Table Name"
			GO TO 015-GET-SEL
		 WHEN TABLE-DEF-CODE (TABLE-DEF-IDX) = INPUT-LINE
			MOVE INPUT-LINE TO INPUT-SEL (I).

020-LIST-TABLES.

	DISPLAY
	 TABLE-DEF-CODE (TABLE-INDEX) " - " TABLE-DEF-NAME (TABLE-INDEX).

100-LOAD-DEFINITIONS.

	SET TABLE-FILE-OK TO TRUE.
	OPEN INPUT TABLE-DEFINITIONS.
	IF TABLE-FILE-RETRY
		DISPLAY "?Could not OPEN Table Definition File... Aborting..."
		STOP RUN.

	MOVE ZERO TO TABLE-INDEX, ELEMENT-INDEX.
	SET VALID-READ TO TRUE.

	PERFORM 105-READ-DEF.

	IF VALID-READ
		PERFORM 110-PROCESS-DEFINITIONS
			UNTIL END-OF-FILE.

	CLOSE TABLE-DEFINITIONS.

105-READ-DEF.

	MOVE SPACES TO TABLE-DEF-RECORD.
	READ TABLE-DEFINITIONS
	 AT END
		SET END-OF-FILE TO TRUE.

	INSPECT TABLE-DEF-RECORD REPLACING ALL "	" BY " ".

110-PROCESS-DEFINITIONS.

	IF TABLE-DEF
		PERFORM 120-DEFINE-TABLE
	ELSE
		IF TABLE-DEF-RECORD NOT = SPACES
		 AND TABLE-INDEX > ZERO
			PERFORM 130-DEFINE-ELEMENT.	

	PERFORM 105-READ-DEF.

120-DEFINE-TABLE.

	ADD 1 TO TABLE-INDEX.
	UNSTRING TABLE-REST
	 DELIMITED BY ","
	  INTO TABLE-DEF-NAME (TABLE-INDEX), TABLE-DEF-CODE (TABLE-INDEX).
	MOVE ZERO TO TABLE-DEF-KEYS (TABLE-INDEX).
	COMPUTE TABLE-DEF-ELEMENT-IDX (TABLE-INDEX) = ELEMENT-INDEX + 1.
	MOVE 1 TO START-POS.

130-DEFINE-ELEMENT.

	ADD 1 TO ELEMENT-INDEX.
	MOVE SPACES TO HOLD-AREA.
	UNSTRING TABLE-DEF-RECORD
	 DELIMITED BY "," OR ALL SPACES
	  INTO HOLD-NAME, HOLD-TYPE, HOLD-LENGTH, HOLD-OTHER, HOLD-KEY.
	IF HOLD-OTHER = "KEY"
		MOVE "0" TO HOLD-OTHER
		MOVE "KEY" TO HOLD-KEY.
	IF HOLD-OTHER = SPACES
		MOVE "0" TO HOLD-OTHER.
	UNSTRING HOLD-OTHER
	 DELIMITED BY ALL SPACES
	  INTO HOLD-DECIMAL.
	MOVE START-POS TO ELEMENT-DEF-START (ELEMENT-INDEX).
	MOVE HOLD-NAME TO ELEMENT-DEF-NAME (ELEMENT-INDEX).
	MOVE HOLD-TYPE TO ELEMENT-DEF-TYPE (ELEMENT-INDEX).
	MOVE HOLD-LENGTH TO ELEMENT-DEF-LENGTH (ELEMENT-INDEX).
	MOVE HOLD-DECIMAL TO ELEMENT-DEF-DECIMAL (ELEMENT-INDEX).
	MOVE TABLE-INDEX TO ELEMENT-DEF-TABLE-IDX (ELEMENT-INDEX).
	IF KEY-ELEMENT
		ADD 1 TO TABLE-DEF-KEYS (TABLE-INDEX).
	ADD HOLD-LENGTH TO START-POS.

200-GENERATE-LIBRARIES SECTION.
201-INIT.

	OPEN OUTPUT LIBRARY-UPDATES.

	PERFORM 210-GENERATE-LIBRARY
		VARYING TABLE-INDEX FROM 1 BY 1
		UNTIL TABLE-INDEX > TABLE-MAX.

	CLOSE LIBRARY-UPDATES.

	GO TO 299-EXIT.

210-GENERATE-LIBRARY.

	IF DO-ALL
		PERFORM 220-GENERATE-LIBS
	ELSE
		SET INPUT-IDX TO 1
		SEARCH INPUT-SEL
		 AT END
			CONTINUE
		 WHEN INPUT-SEL (INPUT-IDX) = TABLE-DEF-CODE (TABLE-INDEX)
			PERFORM 220-GENERATE-LIBS.

220-GENERATE-LIBS.

	MOVE SPACES TO LIBRARY-FILE-NAME.
	STRING	TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"TAB"					DELIMITED BY SIZE
	 INTO LIBRARY-FILE-NAME.
	DISPLAY "[Generating " LIBRARY-FILE-ID "]".
	OPEN OUTPUT LIBRARY-FILE.

	MOVE SPACES TO UPD-RECORD.

	STRING	"$ LIBRARY/TEXT/REPLACE 'P1' "		DELIMITED BY SIZE
		LIBRARY-FILE-NAME			DELIMITED BY SPACES
	 INTO UPD-RECORD.

	WRITE UPD-RECORD.

	MOVE AST-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.
	MOVE BET-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE TABLE-DEF-NAME (TABLE-INDEX) TO DEF-NAME-HOLD.
	PERFORM 310-MOVE-DEF-NAME
		VARYING I FROM 1 BY 1
		UNTIL I > 32.
	MOVE NAM-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.
	MOVE BET-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.
	MOVE AST-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE TABLE-DEF-ELEMENT-IDX (TABLE-INDEX) TO I.
	MOVE ZERO TO ENTRY-SIZE.
	PERFORM 320-GET-ENTRY-SIZE
	 UNTIL ELEMENT-DEF-TABLE-IDX (I) NOT = TABLE-INDEX.

	MOVE ENTRY-SIZE TO NUMBER-OUT.
	PERFORM 330-FIX-NUMBER-OUT.

	MOVE SPACES TO BUILD-LINE.
	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	STRING	"01  "					DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"-ENTRY-SIZE"				DELIMITED BY SIZE
	 INTO FRONT-PART.

	STRING	"PICTURE 9(3), COMP, GLOBAL, VALUE "	DELIMITED BY SIZE
		NUMBER-OUT-RED				DELIMITED BY SPACES
		"."					DELIMITED BY SIZE
	 INTO BACK-PART.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE SPACES TO BUILD-LINE.
	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	STRING	"01  "					DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"-MAX-ENTRY"				DELIMITED BY SIZE
	 INTO FRONT-PART.

	MOVE "PICTURE 9(3), COMP, GLOBAL, VALUE 100." TO BACK-PART.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE SPACES TO BUILD-LINE.
	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	STRING	"01  "					DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"-TABLE, GLOBAL."			DELIMITED BY SIZE
	 INTO BUILD-LINE.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE SPACES TO BUILD-LINE.
	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	STRING	"    02 "				DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"-ENTRY"				DELIMITED BY SIZE
	 INTO FRONT-PART.

	MOVE "OCCURS 100 TIMES"	TO BACK-PART.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE SPACES TO BUILD-LINE.

	STRING	"INDEXED BY "				DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"-IDX."					DELIMITED BY SIZE
	 INTO BACK-PART.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE TABLE-DEF-ELEMENT-IDX (TABLE-INDEX) TO I.

	MOVE SPACES TO BUILD-LINE.
	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	PERFORM 400-GENERATE-ELEMENTS
		UNTIL ELEMENT-DEF-TABLE-IDX (I) NOT = TABLE-INDEX.

	MOVE SPACES TO BUILD-LINE.
	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	STRING	"01  "					DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"-COUNT"				DELIMITED BY SIZE
	 INTO FRONT-PART.

	MOVE "PICTURE S9(3), COMP, GLOBAL." TO BACK-PART.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE SPACES TO BUILD-LINE.
	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	STRING	"    88 "				DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"-LOAD-FAILED"				DELIMITED BY SIZE
	 INTO FRONT-PART.

	MOVE "VALUE -1." TO BACK-PART.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	CLOSE LIBRARY-FILE.

	MOVE SPACES TO LIBRARY-FILE-NAME.
	STRING	TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		"LOD"					DELIMITED BY SIZE
	 INTO LIBRARY-FILE-NAME.
	DISPLAY "[Generating " LIBRARY-FILE-ID "]".
	OPEN OUTPUT LIBRARY-FILE.

	MOVE SPACES TO UPD-RECORD.

	STRING	"$ LIBRARY/TEXT/REPLACE 'P1' "		DELIMITED BY SIZE
		LIBRARY-FILE-NAME			DELIMITED BY SPACES
	 INTO UPD-RECORD.

	WRITE UPD-RECORD.

	MOVE SPACES TO BUILD-LINE.
	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	STRING	'		BY DESCRIPTOR "'	DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SIZE
		'", BY REFERENCE '			DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		'-TABLE, '				DELIMITED BY SIZE
	 INTO BUILD-LINE.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	MOVE SPACES TO BUILD-LINE.
	STRING	'		 '			DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		'-ENTRY-SIZE, '				DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		'-MAX-ENTRY, '				DELIMITED BY SIZE
		TABLE-DEF-CODE (TABLE-INDEX)		DELIMITED BY SPACES
		'-COUNT'				DELIMITED BY SIZE
	 INTO BUILD-LINE.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	CLOSE LIBRARY-FILE.

230-WRITE-LIB.

	PERFORM VARYING LIB-SIZE FROM 80 BY -1
	 UNTIL LIB-SIZE = 1 OR LIBRARY-RECORD (LIB-SIZE : 1) NOT = SPACE
		CONTINUE
		END-PERFORM.

	WRITE LIBRARY-RECORD AFTER 1.

299-EXIT.

	EXIT.

300-MISCELLANEOUS-SUBROUTINES SECTION.

310-MOVE-DEF-NAME.

	MOVE DEF-TOK-HOLD (I) TO NAM-TOK (I).

320-GET-ENTRY-SIZE.

	ADD ELEMENT-DEF-LENGTH (I) TO ENTRY-SIZE.
	ADD 1 TO I.

330-FIX-NUMBER-OUT.

	PERFORM 335-FIX-DIGIT
		UNTIL NOR-1 NOT = SPACE.

335-FIX-DIGIT.

	MOVE NOR-2 TO NOR-1
	MOVE NOR-3 TO NOR-2
	MOVE SPACE TO NOR-3.

400-GENERATE-ELEMENTS SECTION.
401-INIT.

	MOVE SPACES TO BUILD-LINE.

	STRING	"       03 "				DELIMITED BY SIZE
		ELEMENT-DEF-NAME (I)			DELIMITED BY SPACES
	 INTO FRONT-PART.

	INSPECT FRONT-PART REPLACING ALL "_" BY "-".

	IF ELEMENT-DEF-CHARACTER (I)
		MOVE "X" TO COBOL-DATA-TYPE
	ELSE
		MOVE "9" TO COBOL-DATA-TYPE.

	COMPUTE FRONT-LENGTH =
	 ELEMENT-DEF-LENGTH (I) - ELEMENT-DEF-DECIMAL (I).

	MOVE FRONT-LENGTH TO NUMBER-OUT.
	PERFORM 330-FIX-NUMBER-OUT.
	MOVE 1 TO PTR.

	STRING	"PICTURE "				DELIMITED BY SIZE
		COBOL-DATA-TYPE				DELIMITED BY SIZE
		"("					DELIMITED BY SIZE
		NUMBER-OUT-RED				DELIMITED BY SPACES
		")"					DELIMITED BY SIZE
	 INTO BACK-PART
	  WITH POINTER PTR.

	IF ELEMENT-DEF-DECIMAL (I) > ZERO
		MOVE ELEMENT-DEF-DECIMAL (I) TO NUMBER-OUT
		PERFORM 330-FIX-NUMBER-OUT
		STRING	"V"				DELIMITED BY SIZE
			COBOL-DATA-TYPE			DELIMITED BY SIZE
			"("				DELIMITED BY SIZE
			NUMBER-OUT-RED			DELIMITED BY SPACES
			")"				DELIMITED BY SIZE
		 INTO BACK-PART
		  WITH POINTER PTR.

	STRING	"."					DELIMITED BY SIZE
	 INTO BACK-PART
	  WITH POINTER PTR.

	MOVE BUILD-LINE TO LIBRARY-RECORD.
	PERFORM 230-WRITE-LIB.

	ADD 1 TO I.
