/* MERGE - Merge Two Sorted Files Together BY: BILL BLASINGIM ON: 06/10/94 */ IN_FILE1='LSERV F31 A' IN_FILE2='LSERV F41 A' OUT_FILE='LSERV PRDAMRG A' READ1_CNT=0 READ2_CNT=0 /* DO FOREVER SAY 'Enter Input File #1' PULL FLN FLT FLM IF FLT='' THEN DO SAY 'Please Enter File Type' ITERATE END IF FLM='' THEN FLM='D' LEAVE END IN_FILE1=FLN||' 'FLT||' 'FLM DO FOREVER SAY 'Enter Input File #2' PULL FLN FLT FLM IF FLT='' THEN DO SAY 'Please Enter File Type' ITERATE END IF FLM='' THEN FLM='D' LEAVE END IN_FILE2=FLN||' 'FLT||' 'FLM DO FOREVER SAY 'Enter Output File ' PULL FLN FLT FLM IF FLT='' THEN DO SAY 'Please Enter File Type' ITERATE END IF FLM='' THEN FLM='A' LEAVE END OUT_FILE=FLN||' 'FLT||' 'FLM */ SET CMSTYPE HT 'ERASE 'OUT_FILE SET CMSTYPE RT EOF_READ1=0 EOF_READ2=0 KEY_LEN=8 HIGH_VALUES=COPIES(X2C('FF'),KEY_LEN) CALL READ_IT1 CALL READ_IT2 DO UNTIL EOF_READ1 & EOF_READ2 IF KEY1 < KEY2 THEN DO OUT_REC='1: 'IN_REC1 CALL WRITE_IT CALL READ_IT1 ITERATE END IF KEY2 < KEY1 THEN DO OUT_REC='2: 'IN_REC2 CALL WRITE_IT CALL READ_IT2 ITERATE END OUT_REC='1: 'IN_REC1 CALL WRITE_IT OUT_REC='2: 'IN_REC2 CALL WRITE_IT CALL READ_IT1 CALL READ_IT2 END SAY 'FILE 1 READ : 'READ1_CNT SAY 'FILE 2 READ : 'READ2_CNT EXIT READ_IT1: 'EXECIO 1 DISKR 'IN_FILE1' (VAR IN_REC1' RC_SAVE=RC IF RC_SAVE = 2 THEN DO KEY1=HIGH_VALUES EOF_READ1 = 1 RETURN END IF RC_SAVE > 0 THEN DO SAY 'Read Error, Code: 'RC_SAVE EXIT END KEY1=SUBSTR(IN_REC1,1,KEY_LEN) READ1_CNT=READ1_CNT+1 RETURN READ_IT2: 'EXECIO 1 DISKR 'IN_FILE2' (VAR IN_REC2' RC_SAVE=RC IF RC_SAVE = 2 THEN DO KEY2=HIGH_VALUES EOF_READ2 = 1 RETURN END IF RC_SAVE > 0 THEN DO SAY 'Read Error, Code: 'RC_SAVE EXIT END KEY2=SUBSTR(IN_REC2,1,KEY_LEN) READ2_CNT=READ2_CNT+1 RETURN WRITE_IT: OUT_REC=STRIP(OUT_REC,'T') 'EXECIO 1 DISKW 'OUT_FILE' 0 F 80 (VAR OUT_REC' RC_SAVE=RC IF RC_SAVE > 0 THEN DO SAY 'Write Error, Code: 'RC_SAVE EXIT END RETURN EXIT