COMMENT CLASS SIMSET IS SIMULA'S STANDARD LINKED LIST DATA TYPE CLASS HEAD IS THE LIST ITSELF CLASS LINK IS THE ELEMENT OF A LIST PROCEDURE IS THE TERM USED FOR FUNCTIONS IN SIMULA TEXT IS THE TERM USED FOR STRINGS IN SIMULA ; SIMSET BEGIN LINK CLASS ITEM(TXT); TEXT TXT;; COMMENT CREATING THE LIST AS A WHOLE WITH THE SEPARATOR ". " GIVEN AS AN ARGUMENT; REF(HEAD) PROCEDURE MAKELIST(SEPARATOR); TEXT SEPARATOR; BEGIN COMMENT VARIABLE TO KEEP TRACK OF THE ITEM NUMBER ; INTEGER COUNTER; COMMENT THIS IS THE NESTED FUNCTION ; REF(ITEM) PROCEDURE MAKEITEM(TXT); TEXT TXT; BEGIN TEXT NUM; TEXT ITEMTEXT; COMMENT CONVERT NUMBER TO STRING ; NUM :- BLANKS(5); NUM.PUTINT(COUNTER); COMMENT ACCESS SEPARATOR AND MODIFY COUNTER; COUNTER := COUNTER + 1; ITEMTEXT :- NUM & SEPARATOR & TXT; MAKEITEM :- NEW ITEM(ITEMTEXT); END MAKEITEM; REF(HEAD) HD; HD :- NEW HEAD; COUNTER := 1; MAKEITEM("FIRST").INTO(HD); MAKEITEM("SECOND").INTO(HD); MAKEITEM("THIRD").INTO(HD); MAKELIST :- HD; END MAKELIST; REF(HEAD) LIST; REF(ITEM) IT; LIST :- MAKELIST(". "); COMMENT NAVIGATE THROUGH THE LIST ; IT :- LIST.FIRST; WHILE IT =/= NONE DO BEGIN OUTTEXT(IT.TXT); OUTIMAGE; IT :- IT.SUC; END; END.