| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| shuko Beginner
 
 
 Joined: 08 Nov 2005
 Posts: 73
 Topics: 20
 
 
 | 
			
				|  Posted: Wed Jul 18, 2007 11:39 am    Post subject: COBOL Remove duplicate values from an array |   |  
				| 
 |  
				| I have an array with several values. I want to remove the duplicate values. 
 
  	  | Code: |  	  | Example
 
 Name1         Name2        Flag
 
 Pink           Floyd         D
 Jack           Daniel
 James          Bond          I
 Mike           Jackson
 Dave           Seibert       I
 Pink           Floyd         I
 James          Bond          D
 
 
 | 
 
 The duplicates will always have a flag.  I want to discard the duplicate names with the flag I
 
 Expected output
 
 
  	  | Code: |  	  | 
 Name1         Name2       Flag
 
 Pink          Floyd         D
 Jack          Daniel
 Mike          Jackson
 Dave          Seibert       I
 James         Bond          D
 | 
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| kolusu Site Admin
 
  
 
 Joined: 26 Nov 2002
 Posts: 12394
 Topics: 75
 Location: San Jose
 
 | 
			
				|  Posted: Wed Jul 18, 2007 11:53 am    Post subject: |   |  
				| 
 |  
				| shuko, 
 Are you reading a file and loading these values into an array or how is the array populated?
 
 If you are reading from a file or a DB2 table you can eliminate the dups right when you are loading the array it self
 
 Kolusu
 _________________
 Kolusu
 www.linkedin.com/in/kolusu
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| shuko Beginner
 
 
 Joined: 08 Nov 2005
 Posts: 73
 Topics: 20
 
 
 | 
			
				|  Posted: Wed Jul 18, 2007 1:32 pm    Post subject: |   |  
				| 
 |  
				| Kolusu 
 I am reading a file and populating the array and then I do some processing
 with the values in the array. The duplicates are causing a problem for me.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| kolusu Site Admin
 
  
 
 Joined: 26 Nov 2002
 Posts: 12394
 Topics: 75
 Location: San Jose
 
 | 
			
				|  Posted: Wed Jul 18, 2007 1:53 pm    Post subject: |   |  
				| 
 |  
				| shuko, 
 Try this code.
 
 
  	  | Code: |  	  | 01 W-NAMES-TABLE.
 05 W-NAMES-TBL OCCURS 0 TO 30000 TIMES
 INDEXED BY W-NAMES-NDX.
 
 10 W-FULL-NAME.
 15 W-FIRST-NAME   PIC X(10).
 15 W-LAST-NAME    PIC X(10).
 10 W-NAME-IND        PIC X(01).
 
 01 W-NAME-KEY.
 05 W-FNAME-KEY            PIC X(10) VALUE SPACES.
 05 W-LNAME-KEY            PIC X(10) VALUE SPACES.
 
 
 
 OPEN FILE
 READ FILE
 PERFORM 1000-LOAD-INTERNAL-TABLE UNTIL END-OF-FILE
 
 1000-LOAD-INTERNAL-TABLE
 
 MOVE FILE-FIRST-NAME     TO W-FNAME-KEY
 MOVE FILE-LAST-NAME      TO W-LNAME-KEY
 SET W-NAMES-NDX                TO 1
 
 SEARCH W-NAMES-TBL
 AT END
 MOVE W-NAMES-REC     TO W-FULL-NAME(W-NAMES-NDX)
 MOVE FILE-IND        TO W-NAME-IND(W-NAMES-NDX)
 WHEN W-FULL-NAME(W-NAMES-NDX) = W-NAME-KEY
 CONTINUE
 END-SEARCH
 
 READ FILE
 .
 
 
 | 
 
 Kolusu
 _________________
 Kolusu
 www.linkedin.com/in/kolusu
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| dbzTHEdinosauer Supermod
 
 
 Joined: 20 Oct 2006
 Posts: 1411
 Topics: 26
 Location: germany
 
 | 
			
				|  Posted: Wed Jul 18, 2007 2:25 pm    Post subject: |   |  
				| 
 |  
				| Kolusu, 
 
  	  | Code: |  	  | ...
 WHEN W-FULL-NAME(W-NAMES-NDX) = W-NAME-KEY
 EVALUATE W-NAME-IND(W-NAMES-NDX)
 WHEN 'I'
 MOVE FILE-IND TO W-NAME-IND(W-NAMES-NDX)
 WHEN OTHER
 CONTINUE
 END-EVALUATE
 END-SEARCH
 
 | 
 when there is a dup, and the table item is an I, you need to change it.  Does not matter if the FILE-IND is I or D.
 _________________
 Dick Brenholtz
 American living in Varel, Germany
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| shuko Beginner
 
 
 Joined: 08 Nov 2005
 Posts: 73
 Topics: 20
 
 
 | 
			
				|  Posted: Wed Jul 18, 2007 2:27 pm    Post subject: |   |  
				| 
 |  
				| Thank you Kolusu. This will get me going. |  | 
	
		| Back to top |  | 
	
		|  | 
	
		|  | 
	
		|  |