-- example using library routines directly and indirectly #USE "isul" #USE "convul" PROTOCOL SP IS INT: PROC callcul (CHAN OF SP from.isv, to.isv, []INT space) VAL []BYTE message IS "Mixed Case Message 1": [40]BYTE copy.message: INT i, l: --{{{ writes PROC writes (VAL[]BYTE str) SEQ i = 0 FOR SIZE str to.isv ! INT str[i] : --}}} SEQ writes ("A little program made from 3 parts*c*n") i := 0 [copy.message FROM 0 FOR SIZE message] := message IF is.lower (message[i]) to.upper.case (copy.message) TRUE to.lower.case (copy.message) l := SIZE message IF is.in.range (message[l-1], '0', '9') SKIP TRUE [copy.message FROM 2 FOR l] := message writes (message) to.isv ! INT'*c' to.isv ! INT'*n' writes ([copy.message FOR SIZE message]) STOP writes ([copy.message FOR SIZE message]) :