A CLU készítői elkezdtek kiépíteni egy szabvány típuskönyvtárat, de
végül is nem tették bele a nyelv specifikációjába, hanem a következő fejlesztésük,
az Argus nyelv fejlesztésénél használták fel. Tekintettel arra,
hogy ez egy módszertani nyelvnek készült, eredetileg nem is terveztek ilyesmit.
Három művelet szolgál a "default" eszközökhöz kapcsolt streamek létrehozására:
stream$primary_input = proc () returns ( stream ) stream$primary_output = proc () returns ( stream ) stream$error_output = proc () returns ( stream )
open = proc ( fn : file_name, mode : string ) returns ( stream )
A write és append esetben új file jön létre, ha még nem volt fn nevű file. A read móddal megnyitott file csak olvasható, míg a write és az append móddal megnyitott file csak írható. A read és a write esetén a stream automatikusan a file elejére pozícionál, míg az append esetén a file végére. A stream megnyitási módját lekérdezhetjük a
stream$can_read = proc ( s : stream ) returns ( bool ) stream$can_write = proc ( s : stream ) returns ( bool )
A streamek alaphasználata karakterenként történik. Csak olvasható file-okra a
stream$getc = proc ( s : stream ) returns ( char )
stream$peekc = proc ( s : stream ) returns ( char )
stream$putc = proc ( s : stream, c : char)
Egy file-hoz rendelt stream esetén a
stream$close = proc ( s : stream )
Az alábbi példaprogram a stream kezelést mutatja be:
% t-t a sor közepére helyezi
center = proc ( s : stream, t : string )
cnt : int := ( 80 - string$size( t ) ) / 2
stream$putspace( s, cnt )
stream$putl( s, t ) % végére tesz egy end-of-line karaktert
end center
% beolvas egy egészt az s-ről
get_int = proc ( s : stream ) returns ( int )
w : string := ""
% beolvas egy számot
while ~stream$empty( s ) do
% megnéz egy karaktert anélkül, hogy kiolvasná
c : char := stream$peekc( s )
% kilép a ciklusból, ha már vége a számnak
if c < '0' cor c '9' then
break
end %if
% a karaktert sztringgé kell konvertálni
w := w || string$c2s( c )
% kiolvassa a karaktert, ezzel törli
stream$getc( s )
end %while
if w = "" then
return ( 0 )
end %if
return ( int$parse( w ) ) % w-t egésszé alakítja
end get_int