include c:\cxpl\stdlib; char Dict(10,10); int Entries; proc BSort(A, N); \Bubble sort array A's key string into ascending order char A; \address of array int N; \number of items in array (size) int B, I, J, T; [B:= A; \B(I) accesses 32-bit pointers, not A(I) 8-bit bytes for J:= N-1 downto 0 do for I:= 0 to J-1 do if StrCmp(A(I,1), A(I+1,1)) > 0 then [T:= B(I); B(I):= B(I+1); B(I+1):= T]; \swap pointers ]; proc AddEntry(Letter, Greek); \Insert entry into associative array char Letter, Greek; [Dict(Entries,0):= Letter; StrCopy(Greek, @Dict(Entries,1)); Entries:= Entries+1; \(limit checks ignored for simplicity) ]; int I; [Entries:= 0; AddEntry(^A, "alpha"); \add items in arbitrary order AddEntry(^D, "delta"); AddEntry(^B, "beta"); AddEntry(^C, "gamma"); BSort(Dict, Entries); \sort entries by Greek name for I:= 0 to Entries-1 do \show sorted entries [ChOut(0, Dict(I,0)); ChOut(0, ^ ); Text(0, @Dict(I,1)); CrLf(0)]; ]