0010/* PSORTIN 0020/* Sorted Inserting in an array 0030/* Klaus-Peter Plog 0040/* 0050DEFINE DATA LOCAL 00601 #ARRAY-COUNT(I2) INIT <0> 00701 #ARRAY(A5/100) 0080/* 00901 #INPUT(A5) 0100/* 01101 #I(P3) 01201 #J(P3) 01301 #K(P3) 01401 #L(P3) 01501 #M(P3) 0160END-DEFINE 0170EJECT 0180REPEAT 0190 INPUT NO ERASE #INPUT (AD=T) 0200 IF #INPUT = 'END' 0210 ESCAPE BOTTOM 0220 END-IF 0230 PERFORM MIX-IN 0240 SET CONTROL 'N' 0250 EJECT 0260 WRITE // 0270 FOR #I = 1 TO #ARRAY-COUNT 0280 WRITE #I #ARRAY(#I) 0290 END-FOR 0300END-REPEAT 0310/* 0320DEFINE SUBROUTINE MIX-IN /*=========================================== 0330DECIDE FOR FIRST CONDITION 0340 WHEN #ARRAY-COUNT = 0 0350 ASSIGN #ARRAY-COUNT = 1 0360 ASSIGN #ARRAY(1) = #INPUT 0370 WHEN #INPUT >= #ARRAY(#ARRAY-COUNT) 0380 COMPUTE #ARRAY-COUNT = #ARRAY-COUNT + 1 0390 ASSIGN #ARRAY(#ARRAY-COUNT) = #INPUT 0400 WHEN #INPUT <= #ARRAY(1) 0410 COMPUTE #ARRAY-COUNT = #ARRAY-COUNT + 1 0420 ASSIGN #J = 1 0430 PERFORM INSERT-ELEMENT 0440 ASSIGN #ARRAY(1) = #INPUT 0450 WHEN NONE 0460 COMPUTE #K = #ARRAY-COUNT - 1 0470 FOR #I = 1 TO #K 0480 IF #INPUT >= #ARRAY(#I) AND #INPUT <= #ARRAY(#I+1) 0490 COMPUTE #ARRAY-COUNT = #ARRAY-COUNT + 1 0500 COMPUTE #J = #I + 1 0510 PERFORM INSERT-ELEMENT 0520 ASSIGN #ARRAY(#J) = #INPUT 0530 ESCAPE BOTTOM 0540 END-IF 0550 END-FOR 0560END-DECIDE 0570END-SUBROUTINE /*===================================================== 0580/* 0590DEFINE SUBROUTINE INSERT-ELEMENT /*=================================== 0600COMPUTE #M = #J + 1 0610FOR #L = #ARRAY-COUNT TO #M STEP -1 0620 ASSIGN #ARRAY(#L) = #ARRAY(#L - 1) 0630END-FOR 0640END-SUBROUTINE /*===================================================== 0650/* 0660END