'CORAL' PCW benchmark 'COMMENT' PCW December 1980 pp59-61 ; 'INCLUDE' "SYS$LIBRARY:CORLIBINC" 'INCLUDE' "SYS$LIBRARY:CORMTHINC" 'COMMON' ( 'INTEGER''PROCEDURE' LIB$INIT_TIMER('LOCATION''LONG') ; 'INTEGER''PROCEDURE' LIB$STAT_TIMER('LOCATION''LONG','LOCATION''LONG','LOCATION''LONG'); 'LABEL' PCW ); 'ENTER' PCW; 'SEGMENT' PCW 'BEGIN' 'INTEGER' J,K,L; 'LONG' TIME,LTIME,HTIMER; 'LONG' TWO:=2; 'FLOATING' X,Y; 'DOUBLE' DX,DY; 'INTEGER''ARRAY' MATRIX[0:10]; 'PROCEDURE' NONE5; 'BEGIN' J:=1 'END'; 'PROCEDURE' NONE4; 'BEGIN' NONE5 'END'; 'PROCEDURE' NONE3; 'BEGIN' NONE4 'END'; 'PROCEDURE' NONE2; 'BEGIN' NONE3 'END'; 'PROCEDURE' NONE1; 'BEGIN' NONE2 'END'; 'PROCEDURE' VALUE5('VALUE''INTEGER' I); 'BEGIN' I:=1 'END'; 'PROCEDURE' VALUE4('VALUE''INTEGER' I); 'BEGIN' VALUE5(I) 'END'; 'PROCEDURE' VALUE3('VALUE''INTEGER' I); 'BEGIN' VALUE4(I) 'END'; 'PROCEDURE' VALUE2('VALUE''INTEGER' I); 'BEGIN' VALUE3(I) 'END'; 'PROCEDURE' VALUE1('VALUE''INTEGER' I); 'BEGIN' VALUE2(I) 'END'; 'PROCEDURE' REFER5('LOCATION''INTEGER' I); 'BEGIN' I:=1 'END'; 'PROCEDURE' REFER4('LOCATION''INTEGER' I); 'BEGIN' REFER5(I) 'END'; 'PROCEDURE' REFER3('LOCATION''INTEGER' I); 'BEGIN' REFER4(I) 'END'; 'PROCEDURE' REFER2('LOCATION''INTEGER' I); 'BEGIN' REFER3(I) 'END'; 'PROCEDURE' REFER1('LOCATION''INTEGER' I); 'BEGIN' REFER2(I) 'END'; DEFLUN(1,"TT:"); CREATE2(1,"SL"); LIB$INIT_TIMER(HTIMER); LIB$STAT_TIMER(TWO,LTIME,HTIMER); 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO'; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Magnifier "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'FOR' J:=1 'STEP' 1 'UNTIL' 10 'DO'; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"FOR loop "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'FOR' J:=1,J+1 'WHILE' J<10 'DO' J:=J+1; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"WHILE loop "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'BEGIN' J:=1; LOOP: J:=J+1; 'IF' J<10 'THEN' 'GOTO' LOOP; 'END'; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"GOTO loop "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'FOR' J:=1 'STEP' 1 'UNTIL' 10 'DO' L:=0; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Literal assign "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'FOR' J:=1 'STEP' 1 'UNTIL' 10 'DO' L:=J; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Memory access "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' X:=K/2*3+4-5; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Real arithmetic "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); WRITETEXT(1,"(SP) "); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' DX:=K/2*3+4-5; LIB$STAT_TIMER(TWO,TIME,HTIMER); FWRITE(1,(TIME-LTIME)/100,"F10.2"); WRITETEXT(1,"(DP) "); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' X:=K/K*K+K-K; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Real algebra "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); WRITETEXT(1,"(SP) "); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' DX:=K/K*K+K-K; LIB$STAT_TIMER(TWO,TIME,HTIMER); FWRITE(1,(TIME-LTIME)/100,"F10.2"); WRITETEXT(1,"(DP)"); NEWLINE(1,1); LTIME:=TIME; MATRIX[0]:=1; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'FOR' J:=1 'STEP' 1 'UNTIL' 10 'DO' MATRIX[J]:=MATRIX[J-1]; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Vector "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'FOR' J:=1 'STEP' 1 'UNTIL' 10 'DO' 'IF' J<6 'THEN' L:=1 'ELSE' L:=0; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Equal IF "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'FOR' J:=1 'STEP' 1 'UNTIL' 10 'DO' 'IF' J<2 'THEN' L:=1 'ELSE' L:=0; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Unequal IF "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; J:=0; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' NONE1; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"No parameters "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; J:=0; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' VALUE1(J); LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Value "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; J:=0; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' REFER1(J); LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Reference "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); NEWLINE(1,1); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'BEGIN' X:=EXP(K/1000); Y:=SIN(K); 'END'; LIB$STAT_TIMER(TWO,TIME,HTIMER); WRITETEXT(1,"Maths "); FWRITE(1,(TIME-LTIME)/100,"F10.2"); WRITETEXT(1,"(SP) "); LTIME:=TIME; 'FOR' K:=1 'STEP' 1 'UNTIL' 10000 'DO' 'BEGIN' DX:=DEXP(K/1000); DY:=DSIN(K); 'END'; LIB$STAT_TIMER(TWO,TIME,HTIMER); FWRITE(1,(TIME-LTIME)/100,"F10.2"); WRITETEXT(1,"(DP)"); NEWLINE(1,1); WRITETEXT(1,"End of PCW benchmark"); NEWLINE(1,1); 'END' 'FINISH'