/*************************** REXX *******************************/ /* (c) Copyright Roger Lacroix 1996 */ /* */ /* Designed, developed and programmed by Roger Lacroix */ /******************************************************************/ /* */ /* Remove all duplicate lines from a dataset. */ /* */ /* Required: Before you run this rexx program, you must allocate */ /* the following: */ /* */ /* INFILE - input file ddname */ /* OUTFILE - output file ddname */ /* */ /* Examples: */ /* */ /* tso %removdup */ /* */ /******************************************************************/ trace n SAY 'Beginning the search ... - 'TIME() CALL INIT CALL READ_FILE CALL PROCESS CALL WRITE_FILE SAY 'max qual = 'max_qual SAY 'done...- 'TIME() EXIT /*--------------------------------------------+ | Subroutine to read the user's data file. | +--------------------------------------------*/ READ_FILE: oldinput. = '' SAY 'starting the read...- 'TIME() ADDRESS TSO 'EXECIO * DISKR INFILE (STEM oldinput. FINIS' RETURN ADDRESS TSO 'EXECIO * DISKW F2 (FINIS' ADDRESS TSO 'FREE F(F2)' ADDRESS TSO 'EXECIO * DISKR INFILE (STEM direct. FINIS' /*--------------------------------------------+ | | +--------------------------------------------*/ PROCESS: SAY 'processing...- 'TIME() ptr = 1 outlist. = '' all_outlist = '' max_qual = 0 DO i=1 to oldinput.0 -1 DO j=i+1 TO oldinput.0 IF oldinput.i = oldinput.j THEN DO LEAVE /* match found - skip it */ END ELSE DO outlist.ptr = oldinput.i ptr = ptr + 1 LEAVE END END /* do j=1 */ END /* do i=1 */ outlist.0 = ptr -1 SAY 'outlist.0='outlist.0 RETURN /*-------------------------+ | | +-------------------------*/ WRITE_FILE: SAY 'writing the file...- 'TIME() "EXECIO * DISKW OUTFILE (STEM outlist. FINIS" RETURN /*-----------------------------+ | Initialize contant variables | +-----------------------------*/ INIT: oldinput. = '' RETURN