The code below has been copied from the CW2.0 manual (page 38). It is included here for those who are have a different version of CW

----------------------------------------------------------------

        PROGRAM
        MAP
MyProc	PROCEDURE
AddQue	PROCEDURE(PassGroup,NameQue)
                            !Receives a GROUP defined the same as PassGroup and a QUEUE
                            ! defined the same as NameQue
 	END

PassGroup	GROUP,TYPE	!Type definition: GROUP with 2 STRING(20) fields
F1            	  STRING(20)
F2            	  STRING(20)
        	END    

NameGroup    	GROUP		!Name group
First             STRING(20)	!    first name
Last              STRING(20)	!    last name
Company           STRING(30)
        	END    

NameQue    	QUEUE,TYPE	!Name Queue
First             STRING(20)	!    first name
Last              STRING(20)	!    last name
		END    

	CODE
 	MyProc

MyProc        	PROCEDURE	
LocalQue       	QUEUE		!Local Name Queue
FirstName         STRING(20)	!    first name
LastName          STRING(20)	!    last name
        	END    
    	CODE
    	NameGroup.First = 'Fred'
    	NameGroup.Last = 'Flintstone'
    	AddQue(NameGroup,LocalQue)    !Pass NameGroup and the LocalQue to AddQue
    	NameGroup.First = 'Barney'
    	NameGroup.Last = 'Rubble'
    	AddQue(NameGroup,LocalQue)    
    	NameGroup.First = 'George'
    	NameGroup.Last = 'O''Jungle'
    	AddQue(NameGroup,LocalQue)    
    	LOOP X# = 1 TO RECORDS(LocalQue)    !Look at what's in the LocalQue now
        		GET(LocalQue,X#)
        		MESSAGE(CLIP(LocalQue.FirstName) & ' ' & LocalQue.LastName)
    	END

AddQue		PROCEDURE(PassedGroup,PassedQue)
	CODE
	PassedQue.First = PassedGroup.F1
	PassedQue.Last  = PassedGroup.F2
	ADD(PassedQue)                  												!Add an entry into the PassedQue (LocalQue)
	IF ERRORCODE() THEN STOP(ERROR()).