Eberhard Sturm The New PL/I
IT
From Enterprise Architecture to IT Governance by Klaus D. Niemann
Understanding MP3 by Martin Ruckert
Process Modeling with ARIS by Heinrich Seidlmeier
Microsoft Dynamics NAV by Paul M. Diffenderfer and Samir El-Assal
www.viewegteubner.de
Eberhard Sturm
The New PL/I ... for PC, Workstation and Mainframe With 80 illustrations
Bibliographic information published by the Deutsche Nationalbibliothek The Deutsche Nationalbibliothek lists this publication in the Deutsche Nationalbibliografie; detailed bibliographic data are available in the Internet at http://dnb.d-nb.de.
This book is the expanded and improved 7th edition of the German book "Das neue PL/I" (© Vieweg+Teubner l GWV Fachverlage GmbH, Wiesbaden 2008) now offered to the English speaking audience by the original author.
1st Edition 2009 All rights reserved © Vieweg +Teubner | GWV Fachverlage GmbH, Wiesbaden 2009 Editorial Office: Sybille Thelen | Walburga Himmel Vieweg+Teubner is part of the specialist publishing group Springer Science+Business Media. www.viewegteubner.de No part of this publication may be reproduced, stored in a retrieval system or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the copyright holder. Registered and/or industrial names, trade names, trade descriptions etc. cited in this publication are part of the law for trade-mark protection and may not be used free in any form or by any means even if this is not specifically marked. Cover design: KünkelLopka Medienentwicklung, Heidelberg Printing company: Krips b.v., Meppel Printed on acid-free paper Printed in the Netherlands ISBN 978-3-8348-0726-7
Preface ! "# # #$%&' ()* + ",# () " .
" "" / 01 # 0 2 3." , #" - # "01 , - 24$151$,# " . 6# " - " , . # 7, " " "# 01 #0 01 #2 .", # # 7, ##) " . $#0 )"# )" 01 .)" 01 #2 #
) )" ,. ,# ##,#
#
,# 01 #7, "" .
# #," /0 1,8,3. # - ,# #
# ", " ,. ) ,# , )"#01 ) "" , ,. 9 , ,# )" " # ",
,", # , #"" #," " ,# ,
01 #." ", # , ", , /
#3#" /#3.
,# ) , . ' , " ,# " 4 # #
- .
01
# .' :"# 5" 04# 05
; < 1#:, # : ,# " "# 4 "#< # ,""
4 " ,. $,)"#, #"#= , # <
. ,
# ,"
# '" ). $) #0$:4" #) " & :4%% *" ,# ,#=
> $,, !??@
4..
Contents ! "
!#$ % ! % ! !&" ' ( $ ) ! * ( $ + ! ,& ! % - $ ! ) " % . &/ 0 . !1 23 A 2"
" " + ,
!4 , * !4 , !3 53 !! %# !, % 6 7 !, % !7
18 !) ! '
$ !
! 3 " 7$ ! !1( #( ! & ) ! ! ,4 ! !
55
,4 ! ! !" #5 ,! ! & ,% ! &
$ " / " ,% ! ! ,A ! 3 ,+ ! , 3&$ % ! ,1 %! ! , 9
" / " %! ! , !0 %) ! , - %. ! %9 %+ ! % " " 12:1;
3* %+ ! % !0
" 3#<
&= ) ! % ( ;&31& )! ! % ,7 "
$/" ;7=B;>
1&;8B;> ), ! % %0 " ). ! % )1( 82; )A
! % .0 1;3* 7 )+ ! )& )+ ! ) $ 7<#$ .4 ! ) !# 75&$ ., ! ) ! 7 ( .% ! ) ! !7 ( $ .. ! ) ! 7 ( .A ! ) &
A ! ) 9' A ! ) !75& A! ! ) 7<# &31
A! ! ) ,7<# :9
A ! ) %:( A, ! ) ) A) ! ) ,? ( 82; $ A) ! ) %8"/ " + ! ) )3 ' $ +! ! .9 $ +, ! . & $ +, ! . !1 " / "$ +) ! . 5 2318
+. ! A&$ 44 ! A #731&&1 44 ! A !1 " 4 ! A 1 #731;282; 4, ! + 4% ! +
4% ! + !& "181 4) ! + ; 4A : /
1
$ 2 :*3$ / !9 ;58#2;$ / ! / $ / !1 % ! & % ! !5 (" A ! B3 > &259&8
1&8 + ! , ( ! ! %& 9 !! ! )8 6' ' !% ! ./ &8C&* !+ ! A& 786;&1
# % '
A &
A !& ;
,, 8 ,. ,;
%,
< , # %+ , 853;5#$ %+ , 5 " &58&
7; %+ , !& " / ) , & $ 3&8&$ ), , !:&1#$ )% , ! 8
)% , ! !2
)+ , ! $ ., , &;&$ .A , * $ .+ , !8 $ A , ,# " A% , , 7 &3#$ A% , , !3" A. % 2 + % + % * D + % !&
$ +! % 0 /
+ % !
+) % ! +. % ! !5 853182 +A % ! 3$ ;*53&B> !44 % ! ,& 1&9 !4 % ! , D B > 1#1 !4, % ! , ! D B> ;;#1 !4) % ! , D B
' > C1#1 !4. % 1 $
!4+ % # 58& !4+ % !2 7;
70; !! % 5 1;' ! ) 1 E !. ) &' !. ) & $( !. ) !* D !!4 ) !# $ !! ) ! 0- 2353$ !!! ) ! !3"
!! ) ! &E !!, ) ! ,5" 12: !!, ) !!) ) 7 ( /$ !!. ) !9 $ D !!+ ) , !, ) , & $ !, ) , !& !A ) , 1( " !,
< . " !,% . "( !,% . 8($ $ $ !,% . !& !,) . !,+ . ,1 & !% . %7
/ !%, . !9 0 8 !%% . ! *;&8$ !%) . ! !
0#8&;$ !%) . 2 ;<<8 !%A . ; ;<< !%+ . !1 ;<< $ !)4 . ,2D ? !)! . , 2
$( ? !) . , !0 ? ? !)) . %8*
<9 !)+ . % 8 8* !)+ . % !0 / <9 !., &
'&F1 !A &
':F:( $ !A% & !A% &(
!A% :( !A% 8
(
!A) # !A) 7 ( EB > !A. 7 ( !AA 5 !AA !AA 9 !A+ 9 !A+ 5 (
!+4 (
!+4 $ !+ 1 !+ 1 (
!+! 1$ !+ !+, !+,
' !+.
@
/
3 ,",#
# # # "# "# # . # 01 , =, #
#' "7, ).. #" " # ',,# , ,," "
.$)" # " " ,# ", &"*" , # . #=
0 " "" # .
0 " ," # , ## " ,, #A
. , # ,", ##, .
" " -"# ,",# "& =, * +#01 .
01 # # .5,
## ' . 2 + ," " #,
, #," .## " ", # ,# ," # G $ " "##)"" # 7, .5 # "
. # , 01
"# # #. #"" , # - ""
.4" )# ,", ," "" # "# .
01 , "
. " )" ," # " , "
.
, # , "
01 . -"# "
" " , 01 .
, "
,& "
* 7, -& "
*A"
## " , .
!
#,"
, ,
# "## ,", )01 # ;" . ! $ ," # , , , " )# %1" #. $ ,# = ,# # # , ,G # H, " #
#
. "" " ,# # #"# " 01 , . $#",
" " ,", ,", ,01 #"# '.01 # # " " " # # "
, , ). 01 ##+#
##.@ ( , ## # " " . "01
" ## #, ##
, " 01 # I.?01 $% !# 4 01 + B 6& *." " 01 ,"" # ", = , # " . " # , = # . , # "@JII ""# #," " " #.
, #.01 , ,#, $8, -"#" , ,#, , " , . &1" #"# .*" , " ## ## " ,&" "#,*.
@
I@I?&@J6J*K " $"8 ##01 <0,
, &$8 %B.6L-@J@6*.
B
1. Elementary PL/I " "
" " 01 ##,
, # ' "" .5 ##"" "# # .$ ," )# "
. "7, # # " ,"" #,,#
.$,# " " , ".
1.1 The programming environment "0 # "
# , # # ) # . # , # , , #
" .
1.1.1 Highest instance – the operating system 8 "" , ,, = "# #", #" ,.4 , "A
-"#", # .$""", #. ,
4 " , "" , )", # # "", # #
" ".( , , #, #"
. " ,, -"# . " #, , " " ,#"# "" ," .
! # $%# + &# + (8%* # ,., , " " # A #, " ," # A " , ##
. ## ,# " -"## . , , ## " , "# # "
.$ # ' , , # .5 "# , -
".
1.1.2 How are things – program and compiler $01 - " " "
4 # # "" ", #"" ,# )
= !"#$%& %' %% ( )*+( (
I # ' # ,###" "=I G" ,# '" ,! ,# #. " ,,# #
@.401
L
,, , & * " ,# # , #G # # "
" . , " # , " ,,# # .01 " "
# # ## #., )", " H, ,, , . 5 " ,
-"# "01 , # " #, " , !#6!", A , , ' , # " ' & " # # " , &, ), !??
" ,*. !" , # # , ,# "" ' %, & # # ,), . # " = , ,"# %' - - # - .@ ' " " ""
.$ ,
, " #
,# # &
"
"" #* # " , @6#L. ,# H" ,# "", ,# ## , " @???? . " ,# 01 01 , " # #,# ," ,# #" ) ,", . 7,",", # ",
# #" , .5 , " " & ,M @? * ,, " # , " #. , , # #
# ," ,N" " ,,# # 01 ,, , " " 01 "" #" ,# ,# #.
, -,=
, " , , , " ,' " ,", " ,A# , -### ,# , , )
## , "- "" . # - ," $% ( , ,# " " # #"- ," + , ,# ;1. # ",
#, "
, " # #H . 0 , " " #,' , " ,01 # # " " A' ", " 'N 8 " #"" # .) #",)", .C , ,# ' 7, . , , #/, 3," !
4)"+ "@? ,"#"# .
@.@
M
H"# , , # #,"#" #
.,# ' , # " ,#=/ ,3
": .$#, , , ,#". 4" " , , #,"
# , ,#." ,# " , # # K ," " , ,
" " , #,"" " ,. , " , G 5, , , # " " ,.' , ,, "#"
#," ,# " "", GC ,# "# ," = " , " , G
1.2 Data attributes 5 ) # ,# " ,# " " , .
1.2.1 In central place – main storage " " ," " = @. "
!. # B. #" . " , ,# 0 "# #. "
" )" ,## # " " .## , # "# :$&# ""
..""
*##" )", #" # , , "# , . ) ,"" # " . " ,# # =# " , "", # "# .5, "" " , / #3
,"," )""
# .$" # #. # " .# ##
# " , ", A A# " , """, . ",
", # ".$# " "
#"." , )", ," , "" " , ," " "# ," ,#
"" ,. )# " . # )
# " ,"# " #," # ) "# 7, +,""
#
@.401
I
,#. , ,"
" K )", " # , # ,
A # '# . ## " """ " " =01 "" " "#, . , " " " ## , #" .
1.2.2 A whole thing – fixed-point numbers $ , , 01 # # # " # "# , .# " , ## " #. " "7,#, , " , #= , )"," , . , " ,
, @6#L ,. , , , = , #"# # #" # ". )# ", " ,#.5 " #" = & "' # % . " )#01 " # '".& "' #% "# " )#+"" . " ,#, )", " "' " , G,) 01 # ,#### .1,
)= - . /01 %' %% ( ' &",2 "'",2 % ",( &34 ' ( % 3& & &( "'3& & 5( &2% 2 "'( -(
# %' # =
," "01 ",##%' # B# "#, "# . " " , . ' &.'*
#, & "'#% ," ,",.",", " , # , )#, # K , "
, , ,# " , , , B
# %% & * , " "#,)", ,# . " ,# # "#, .
@.!2,
6
, #, ! )&, " *. "# ", , , " & ' *.5 ,",# " )667666. ' " , " # , #" .# " , " "01 .," # " ,"
,, ," ,. # ," # # ' " " ### " " ## , # = '&",( ' "'",( '% ",(
)# &# *#
" "" " # = -"#
.
"
, . 7, L " -"#)
.)
#" " # & )* *.5 , 7, " ,##
# . 838*(
&"# ' "",)!*O " #@A7, , 7, . ," .,
, 7,"= @. &
#,B !. % ," , ,,4# # B. "'
#,& & I. " , ,# , " , " ## , . ", , #
& #" * ". , # , . # '# +"," , "
# .' )" =# ' %' # . #"# # " "#, 7, "
%' . ' # " )"," ,G" # " "#"
"A #%' G 8 , " = L
" 3, #0 " 01 .
@.401
@
!"# $%& $ # ," . 01 "
@?? "" .9 ,", , # """ PQR#S . "", ,& ,## , " *. 9 , ,# ##,# " ," #
.4) # = 0 9 /7 7! % /:& ;&
, A ,<,, N9 ,# # , 01 " & */ 3 ,< " = %' <=>;?<2<@ABC<(
, 7," " #.&# /"4 +3 H " , G* 0 )" T "
- , "#" ,@&, " , !#6!*G " , , "# . $ ) 01 ## ," # & ) * # # .", # . # '
"" ," ##, # , ,.$" 01 , # ,# " ,# ' .## ,#
## # , ", , # ", # ,# " #.M <# ' ,, " . '
, , + " # . & " # )" ## < , , " .*$# # ," )# D # ,, " ," % G$ ", # # " "
,#, ,# . 2 ' / 3 ,
. , # ,
# #, , G E . " , ,
" G # " , ," " # ,
= )# #" " #G
# " , , , = 7, "", ,#K ##G + , " =
M
" ;5:4$C
# ### ,G
@.!2,
J
" # $$ #%# $ & ## , ,#""= & )," * ,#", , ,#, . , #)!N A " "# , " , ",=9 , " &
" , . ## *# "#) , & * , ,# ," # &*" # . # , &, " * , ,.2 #" ", . #"
, . , # ",
" !.I.B.
1.2.3 Going to pieces – floating-point numbers ' # , " # "", , , , ",,*. " , ,"# ,
##"" " . # )= 4 /$FEG %' %% ( ' "'"%( '#"%: 4+H6I( 'J "%( '% "%( J 3574)9I K ( % 3+I4I # J "'3+I # J -( J 2% 2 "'(
4(
4(
) ,="%."% #" . , # =
#) .
7," # ) #" " . " #".ISB6@? IB6@ @? + . ," ,# I.B6@B. ", # "% " # I 4" ,# # " "", & ," # '*. ,)I "@?? 7, @ ,"
#" . " ## # ,
.$ "%, ,"" ,# " ,.
I
0 )"5::$8 "# , #" # , 01 . # ""# " ,)"# , .
@?
@.401
"%#,
)I#"# K # ## " !.I.!.) , "#H, # "" , ,"#" " , "#, " #""*. ) ) 6J U6M )"= )-4)II*)H
# H46)5I )6
- ," #, . 0 #()" , , -"#444 A" .( )#"#
, )H+6 49
# 4+I-9-*49
C ," ) . " )# ," # ,, "%.8 " , " # G ,# "= ' $ $ & ! $ # & $ , " # ) . "%- #. "
" , 01 , ," ..) /" 3 / "", 3#/ "", 3 .C
) "
# # . ,# 7," "
,", .5 ,"# ,
) = -* -
4
-
, -* -
4
-(
, -M@?. , I4I*# J
4
-
," .
#", ) "", . &
# ", G* , #"01 . , , #" " ##& " , #* ). #: #"
"
@.!2,
@@
" . ), 7,
G , " , # : . , , )B )
, G8 ," " # = '( )! * + ,!- . ! B
* @M 6 M L /0 1 , 0 1 2& )!!0! ! 0 + ! %& !!
( )&%
1.2.4 A language of character – character strings $ # ," # 01 " .
, '', ) = + .% ' % .LEJE.GJ %' %% ( '$'( ' 'D%'+( $3
' , # '' # "# 01 ." # ,
= ,
@!
@.401
# "# "",7,.)
#'# "" =, "" "" # .6 , "" 01 " #, ' . " 01 = # #,
, A"" , ,.
##
, , ,##"" # "
," , #. )L#"# $ # " ""# D% ,"" ." # ' , , #
""" .
' " = ",##
.
#, # """ ). , " #
'" =' " , # ,
= N
"", "" ., " # ,& # ,*
K )
" = F
#. =NF
NGN $""
# D%. <FGGF< # ,.$ ,# , ")
) * + ' )
" "",
, " # ) . )" ,G , = *+$## $ $
#
#, - %. )L D% )"## ##.,
, # ' #"" "# )", # # # ,""
. "" ,", 01 ## ,:! &&#:*. # )= H ,%' &!&
.LEJEJ %' %% ( '#%%' :
$ 0 " =" 01 , " . H # 01 G$ -"#, " # " # #- - ,
01 G
@.!2,
@B
# , , "
.# , )#"" "
"" )## .5 #" , " # " " , ,.J' " )@??"" ", "" "
# .& ,
" )# , ", % :! &.* 1' " ."
,, # #
L"" D%H ####
D%+ D%H A #)
#A "" )#", "
###
." ", , ### ," #
= J'" #
,, . """
,
,# #" # ," #) &/ ,"#3*# " # ,""01 , ",
""," ," , & " B.B.B*. 8 ," = -3 ! 4 ) !!!
(" 5! + + + , 4, """ ,,
" 6.!.
1.2.5 It doesn't get any smaller – bits ## "" 01 -"" , #.C " "7,# @ " " 01 .5 )= 5 .% % G %' %% ( '0",( '07T 7Q( '077&7 7Q( '077 7 7Q( 'Q",( 03+( Q3H( 077&7 7Q30UQ( 07T 7Q303Q( '03Q 077 7 7Q30VQ( 077&7 7Q207T 7Q2077 7 7Q( 5(
@L
@.401
07&7 7Q07T 7Q#077 7Q" , A 01 " =
' " #& * ," -+ #- .9 ,"
, - ) )
,
. , " <<)
,#
)I ,
)
0UQ03Q#0VQ.)
0UQ , "#)# , ,
" ,
J,
" . , ," " , #
, )
# '"." Q ", 0 ) 07T 7Q ,
V3
7,
3 7,
U U3 7,
W3 7,
WV
&7, VW* WU &7, XW*
( /& ## -"#" "" " &* , -"# "& * # , # . 8 " <<
/)", 3&/- 3*=0WQ <<0 , Q, K , ,&" / 3*
)= EUM.W31XV3/
9 ,", # " " .)
H, ," )#)
" . 8 ," = @ J
" '?'#'@'" #5::$8 1<$1" .:(4.#.5$14. 0 " 14$8" :(4#5$14#; ,# .
01 , A","" , ",.
@.!2,
@M
6) 0 !!" 0 !!7& 7&&+ !! ! % # # #"" #" , " %# % ," " )Y : #Z8 = %'%<MY< %<WZ<(
"# '
= ," #,/ 3# 7, ", ## "= %' K
1.2.6 Everything with everything – operators " )",# &, *= & * ) * W * MM VWVV33W3U3UWU X MW
& * ( 0& # "", )
,# .< # ", #)
. $",,") E 4 +UIMD%MM<0<V3<<X077&7 7Q
A +#A = E 4 +UIMD%MM<0<V3<<X077&7 7Q
" "/#3" )- - #/ 3 , . " )
# ," , &E ,"*"" #, ')
. # "",##" A ,#
#, " #K ## , "
" , , ,# # . , " " ##" #" #, )", )" # + "",#. " "" ## =
@I
@.401
', # "### , . "# """" " #,7, 7, ,#" "" ." 7, 7," " )" # " 7," . <E< , / 3 <'.01 )
#=<E<V<< , ,<<.9 ,,
, , "" " " ,, #." , ), -"#42"" 0 #()" , ##+#$"" @?. 42"" &
*,= %1 1 1$ " ,"A " " A,$ , ,# # ,= %11 1 $ """ "#. X , ," K 01 , # EVV.
)
= EVXV.
, ,#+ << '" ", #I"%" #<< " . ""
##= <S<&# ,"# G* <<& ##,
#" # * "" " "#, . "",, #, .
A " , A01 # "" #
" ."
" ## , ". "
#
, # )
#." ", "% , " # . ,## #" ", .9 ,"
' ", "% " ,.5 )<S-4+S<" " # ,<% &S)+)< G$
#= " # ?. ), " 01 ,#, " " G ""# "" ) # & " *. ,# )
<I<UI WI*<<
N@@ " !.IG @? 42 4)## ##2"" #$ $"## # ". @@ , @IG
@.!2,
@6
8 ,")" = 89 0 &+ ! !!0 1 2
1.3 Loops 1' """ " ,.5 "", " "", , )",#=:#" , & ## *"", " # # ". #
" ,", ", . , " "
..
)", 7," #.5 ,
01
, ,,,=%
. "" "7,# .
1.3.1 Ask first – the WHILE loop $
" $@/" #3= ) % % %"% EDL$%% %' %% ( ' ",( 'O ",( 3I( O 3( %O V3II( 3 *O ( O 3O *( (
% ## " # .< " " # ",## %# H, %' # .$ " # " .@! " # ", ,# ,
"# #." )
=$ <<
"
#
"# .9 , ,#"=01 ", )
# , ,.
%<<(
,#",#A -"##
G @! , ,# '## " 01 0 "
+# 7, G$ 482 7, .
@@
@.401
0 #
#)
/H"3
. , " ,)G O " #" , @#. , O ,#,.9 , " ##
.. , " = ," "# ," "NG A @ , " ,
#? , #
# , 8, @. # ,"" "# )- - " .1'
, O
#,@??
." @?? , <<", O V3II ,..
)",#, @?? ### .$# O " # @?@)
,
" # % $ % % . ,#, # V # V3 , ,# ,#, , JJ. W3 ,#H, . , /" #3# , <,
## =$ -
"
. "# # " ,O5#" ##, @ @??.( , ## ," , " , =@UJJ , @??!UJ@ ". LJUM@, LJ @??. ##
M?#@??# ,.
1.3.2 Shoot first – the UNTIL loop ,
,01 ,
.
# & *" # )#
"# . , ," #" )6= 9 % % %"% EPOG$%% %' %% ( ' ",( 'O ",( 3I( O 3( % O UII( 3 *O ( O 3O *( (
@.B1
@J
, " " # # , . )",
)
,. ,
/""3 .)
#" #
. $) ,#" , @ #### @?? .8, ,@?@
. 5 , ,#, # # # %
.
# " , ",# .9 ," ,## #, " #
@B# " #" #,
" , .:#
" #=/ ) N " , G$#" ) N3 ' $ 2 .
1.3.3 Upward and downward – the counting loop 1' #)6##, @ @??
.
"
, O ,
7, ,# " & " ,
*. )" %
## " "#
" " ,
= 6 % % "%% E'% &%% %' %% ( ' ",( 'O ",( 3I( %O 3%II( 3 *O ( (
9 , " , ,#& , " , *= %O 3II%! ( 3 *O ( (
01 %
##)" )6 = @. ,
#&O 3 O 3II "* !. ##, )"##&%II* &%* @B 9 ,"" + " "" ,84 482 # #2
.
@.401
!? B. "
)",#
L.
"# #"#&! * "# M. " , !. $" 7," # = 3 $
# 4 # . C , "" +#")J# /! 3. , 7,," " @?@# " ?
G $ /H"3
.# %
" #
, "= "" "" "
# . $ ,# # ," # " 1F ., ,# =" , /01 ## "#, )
K ,# ".. ,
. ,# ")" ,,
)
" .
1.4 Input and output , ,) " @.!"" ,# ", # #, " , "# " "".9 ,"# " , G
1.4.1 There is something to get – the GET statement 1'
)= I F \G2#PG %' %% ( 'E",( '",( < - 2<( &E2(
$ , & )",#" ,",# #
.(# " # "
"" , ' ,,.# '01 " , , . ",, )"#, , "%, "'" <-4+<01 " , ",#
$#.
@.L,# ,,
!@
#& ,"
. # ' , , , " = "" # ## , #
# & 7,". ,
,, , )# , E## #
"#" # . ", " ,, , "
. " !.@ " "7,#")"
#"
"A ,, " . , , ,# ) # )" )"#.8 , #" , G "
)%%%. ,# "
,
&/84:84:::3*# ", %%%" " # , .& , # : , , ) L!K 01
G* 8 " #= :9 +0 )! 0) ! )! 0. )! ) ! 1 0 ) !)! !)! &# !!+ )! % ;< 8 ) )! % ! !% & #,
. # / 3# , "= %%\G %' %% ( 'O ",( % O U3III( <#2 III]<( &O ( ( O 2N <! III]N( (
# "" .
" # )##"& .,@??? #
# A#
,/ ",3
.8 # " #,"#=, ,# # # ,#)"# ##/ 3 ) # , # . 01
&/84:8 4:::3* ,# ,. )" ,"+,# ,,
"" =
@.401
!!
=( !! & ! !!! %&%
1.4.2 Nothing there any more – the ON statement #, # " +, # , , . ,#
,, , ," 01 ,, ", # ,##) .01 " /" # 3 # #,# "& "H, # # & ) ## * " ,# #
,).01 ,"" " # " # % .)", % ," ," " , , # , # "", . % "83(
) " O
# ,@.5 ,# #" ,# @L % ," " =5 #% # #" #" )" " # # " #01 " , " , %' ' .5 # " # ". ) ,", " 01 = - %% &DL$ %' %% ( '7% &7"( ' ",( 'O ",( 7% &7"3<<( % "7% &7"3
5 ,
. " , , , ", . " #, # , " ,# ' , N ## " " # , "" #
,, A #" ""# # @L 0 " ,# " , " ,# 0 "01 .
@.L,# ,,
!B
. # ' , "" K # " # ". " "#A ,# ,
7,". ) 7% &7" "" +' # "# .5 ,
<<,
# .' # "#
# , % G*.01 %
" , "
" )",# % @M .9 , ,#+ " # 8 ", )",# #, "
& A ,
7,"G 8)" +%
, #.
#
)",# )
<<. 7, , #
#",.&:" #
)",# "# " # )## .* & =
# # ."," "#
& . "
" # , = 3 *O (
,H, # ### " # ,
# . # ,""
, ,,
?
.5 # ,, " ,#,. ) ," " ,# " , ,# , . ,, ,
"
# #) ,. ,# # , &
" # , = %% &7( '%', &O ( 3 *O ( (
,#" "N A
,
##= , )",#." , O # , # " , . , ,
,# G "
! # #
& @! " " " ,# , . , # " ###? ", ,,. 8 " #= @M ) """ ;.
@.401
!L
>< ! 0! & 1 ! &%. ! &
1.5 Distinction of cases ,"" " , " # ", .,
)" " ,#" # .5 # " ,"" 01 ="#'.
1.5.1 Either, or – the IF statement 5 )" #"" = "EVI E3 E(
"E # , .< # )",## )
#" ,..7, <<. &
$% , ", " , " " . , )",# " ,", #= "E3I
<ET %R%<( <E %T %R%<(
, )",# A)
A
@I.C ) " = "EVI %( E3 E( <E &:<( ( <ET %R%%%:<(
, ", 7," % % ,." " ,# % .. " "# " K " " "", #= @I $ 0 " = 414 " "01 " "
#.
@.M2 " "
!M
" -)
, Y
,Z ( 5& (! / ,3##, , . # % ,
' ,& " @.M.!* & " & " B.@.@*. 7," , # " , . , ," . # = ) , , ,# # , # " "#= ," ## "
"" "# ."# ,+
,", " , = " - & )# " " " = 4 F %'!/ %' %% ( '0'-I:( 'Q'-I:( <#2 -% %%]<( &02Q( "0VQ
02<'!"%<2Q( "0UQ
Q2<'!"%<20( <%T <( 4(
, 7,# " ,# ' ,# " .9 ,, ", " .5
, ." " . ,# #
# #=
@.401
!I "EU
".U1
/39( ( /3)(
$## ' ) = (
( 8& ! "# ,"=# , .5 " ,, ", ," " #
" " , ", .& ," # '
"", ,# '# " , G* $ , ,##" ## " + ." "EUIM 22I7III3G < <% &]<(
# :)
",# . , = # # 6! 7& " :)
# ,# << & ", )",#*#$82)
# ,#
)",#*. 8 " #= < ! !!! ) !!
) %? 0 !! !! !
%
1.5.2 For each individual case – the SELECT group )@B" ##.C " " " " #
# # ,#,. 5 ,
' 01 A )" #" ," ' ,. % , 7," '## . #' ,
##
A ##A % & %*. " ,#
% #".""' ,"# "# )
,"=
@.M2 " "
!6
')
( )
( )
( )
( % ( (
/)
3 )
#01 ,","% ' #, " .&" , # # "" "7,# .*$01 #A ,"" , )%' '. , )", , ",#%# & & # *." , , ' , " " # ,"#", # ## # , . 8 ," ' ,.)
' ,## " # )
7,". " 7, ,#
, # )",#.$)", " , #' ,. " , ",A' %" A # G$ & ,* "" )",## G@6 ,# ' # " " ,#"' , , &(* & # ",
#" *. 9 ," % " " "",. ,# #
01 # #
# . , ,# "#, %" &(* ,#
"# " # " # ,# #", #. " , % , .&C , , 4,
$M@JJI , " " ,
# )", G* ) ' ," 7,# .<# , # #7, . + 1 T !$.G %' %% ( '.% 2/%%2JI2J2J-",( '/%%7:( $% & I3+( %% 3H( -3-(
@6 $ = , #" C , )" ,
," #:4$O .
@.401
!@ 1 T !
%%<2/%%2<<2.% 2<%% ]<( "/%%UI
' .9 ,"" ,01 =
'E2(
" ," , = 'E2(
9 , ,# ,, #G
," " " #" " , , 7," #, ., 7,
# '" , " ," #," # .
# " ,, "# , " ,#' " #, . , # 'E2(
" " E# #,. 9 # , ," . , ### # # 7, " # ,, . ,# .5 , ,#, # " " # " . ,"### # " A #/# 3 A , # ##,01 .
@.M2 " "
!J
" )@L .,# "
" , "
, . ' ,# , ,
# , "
") .
.0", /%%7: , # ,# # . , ,# # ,
" " . ,#), "# ,, . , , ,# =
% , $
# %.
) ,"" " " " ##= H J'%& % %"''$.G %' %% ( ''( < .LEJ'% 2]<( &( '( <E<2<<2<<2
, ,")
" . 0 ' ," ,#" G # #
" ' ,= ," )
'.9 ," ,", # " ' <<
,#. )" "#
"# # , " ) = 5 %% %"%
$.G %' %% ( '0",( 'Q",( < - 2]<( &02Q( '( 0VQ 02< <2Q( 0UQ Q2< <20( % <%%"T R<( ( 5(
9 ," 7, " , ,# , " " ""."
B?
@.401
. , "#" )@B , " . ," , "" " #" " , #. 5 " %" " , ' # ". ,+# ' ,= ' Y()
)Z( ()
Y2 )
2Z )
, Y%YZ
,Z (
( 9& *'! 9 , ,#,# ## &* )
" # #. , ,# # , . #%#' , # & " & " B.@.@*. C" )" "= , +
B@
!.4)# "
2. Extending the basics " # " . #," " ,01 H, ##"" ## #," , =5 ,# " , , ##,# "" #
7,, . " " "# .
2.1 Input and output of a character stream $ " "# "01 , # & #
#. " ",
= &E22.( E22.(
# ,# ,, "# -#"#. ,
# # ,# " , # 01 . # , &# " ,# " # K"" # # " # ,. 01 ## &# .# " ., " " ,# ,, ##,"" ." ", , #,", ',.2, #," " " " " + "01 " ,, )#,
.
2.1.1 Not to count with – the FILE attribute 8) ,# #," #". , &E22.(
& #*01 ,# " &"! E22.(
"
,# .4)" # E22.(
01
, "! E22.(
9 ," # # &. # " "" # #.! ##,! ## ,,.# , # ",) ## , ".
- " "
# &.." ," #, &*.
B!
!.4)# "
! #! " #"# " , # ", ' , " #. $", " #" = '! 2! "'% (
# '% #&
# *." ## , " " #,"#" # ., H, #, ". , ,01 , # ," "#H, . ' " , ,##
#
# ,#"# . 5, , ,",# # ., # &K# " "# #.& & K # ,.* , )@? ," & I
I
# # ," # )", G01 ) #.5 #"" # # , @?.K#" H, ), KE( K4(
, E # ) # H, # # ,. , K 4 G & # & # # " , " K.K# , #" ,",. " ,", # , # ,,. C K# ," " # . # " , # #& " , # & ##. K # # , ,. 5 ," , #,"#. $ ,= % 4
$ $#& & "
., & ",* , # " . , " #
01
, , # # ,"#.& ", ," G*
!.@,# ,, ""
BB
$)", ,# ,", " " ! # ! "
# # , . # # # , .8
" #"" " ## " "" # ". , ,, "" " , ,# ,, ". K&# , ".0 # '
" , # ,. , ,," ## 9 9< @@
, 7, "G
2.1.2 Self-determination – EDIT-directed input/output ,,# ,# ##
" . # #,"#=, # # . ," , (
" # & #K" "#., /, / " # )
. / 3 " & "*, #" . $ " "" #" . ## # , #.( " ,"
" ..# ," ,= <4 2+'% < 42'% +2(
", " # ,.- #" ,, """ . " , " ,, , # "" " , .01 "
" ,",# # # . #" , & "* # #" , . #'% ",
"#" ,"" # "" . " " ,##, "
"
. E22 -I2 I(
, E @?, !?. *+ ! : $ && # ! &); , " # ,# , # ,., , # "# " @@ 9 9< ,++ # ) "
# / 9 , 9 ,<3.& ,, )"
# ".* @J $ = " 5 . "
#, , # .01 G
BL
!.4)# "
" " = , "
# .
"
.C " ,= page
line()
&" # "
7, @*
skip()
H, )
column()
" ,&" # "
) 1*
x()
" ,
( <& " # # ,""""
," # ,# .&$ , .* ,"# # & = &D%2D%-5(
<# "" & # *. , "" , ##
,, "" #,"#.5 ,, '', , 01
, "" & :! & ",* # ,= a Y(##)Z
( =& 3! , , "#. ,# '# 01
, & ,
,* , / # 3.5,, ,)"= "" "" ,, ,"# .' #,
#" ,.: ) , ,# ,4 , " #/4 2+'% 3. ," 7, " ,# =
'" , N$
" , "" , =8 G$ # ,
# ". #, &
7, "" . 5 "" " , ., #
, ," ) , - , . , ##
) ", ''.
)I(
!.@,# ,, ""
BM
, " ,6 "" & " !.I.M*.$"" # 01 ", , ,#<SSS)<.C ", "" @? ,, ,#<SSS)SSSSSS<. ," # , 01 , . ) ## ,# # "#& *= ) # &'\G#PG1G %' %% ( '.'( ' 7%"7"( '#%% ",( 7%"7"3
) # " & , "M*.;, " =&# ", #"" , , ,# ,, # ". ,# # ,, #.9 , #
, # # # "" "". ,, #"""" # .$ ),, , &##" *. " , & ,, ". " # " " ". )@6 " "& *#"& * &# , &! *% .8
" &@ ".* ,## #"
# ,# # . " ,, #"% "" " " .,01
, ! , . $ ", , ,. # ,=$" ,I?# ' #, . $ K " ).4
& #, , , # #
BI
!.4)# " & 8 *(
## # -#"##-#"#" =",
, ,,"" ##K ," #.9 , ,#
,#" ," #)
# K'% # ' ,NG01 ), ## +# "" "" ,#)" ,
. "" )@6 , ,# # #01 # = # ! $ #% .
2.1.3 A language in itself – data formats " " ,## - . " , , #, ,"
. - ,# ,, .$
'' #" ., , = # "# # , , +
# "
# . ,, " # "" <<
" !.6. ) - = Y(##)Z
( ;& ! " #'- ,# " .," ",) K ,# ,, " ), ." # # ,# ",
"# " !.I.I. #"- "- .&- # ) .!?* ,# ,, - , &) *# )#- , . ) ", = 9 F & " "% %' %% ( '"%( '/",( <#2 - <( &2/"I2I2I24( "% ! H "%/I 2/+2H2"52-( 9( !? 5 5 ) =01 H, ",4 , ", & #* 7,"
) .( 4- ," ,, , " .
!.@,# ,, ""
B6
) # # "% # ",#- #"- .,# ' ,, "- " )",#"% .2" ) , = "- ) ##,### # ?
*. I24 ,# @?,, K# "
#"
,# "#B# # , &
) "#*. ,# ' , " , "" & ,#' * , ,#"
," I2I. "#& , #@@* " #, 4- ,. , "- . ,,, # ,#, = HIIII*IIII # / IIIIK "
," , H, "##.#
,, # -H, #&" ", ,, *A" # . 9 , " , = $! , 6 0&0&07$#
. # #" &.." # *" , # , ,##"" #" , ,<,
#", , M,#. #" ,"#, )= 'E"%2",( E3 IH( 3( E2+2H252"-2I2(
<-
,"= e (##, " # Y,# Z)
( )>& ! , #,01
, , # @ , " # . # 7, + #" ,
, 7, + . "# +2H25 ,, IH, HIIIII III ,#
,."- ## = f (## Y, " # Y, "" ZZ)
( ))& (! , "" #" ,"#" #& *, #. ,,, #
B@
!.4)# "
"" # " # "" ." "# ," ) " "" .<
,) "-2I2, , , @?. " & " # "" ?*#" ,. "" "", # ," , " . # = <<2E22.212< < 2+"I2I2(
9 ," " . ,, " # "" . 9 ," , # # " = <<2E222^2.28212$2< < 2+K2-252"92I2(
' " # #,#
#.9 , , ,## ,, ,
01 # . ," # ," . 0 ,
= ' 5555 -'& 0 ! 0 ''6': '-': !) !& - A B+ ! !0 C !!+: ) !!& $ - &. *.", # # - , # = &O 2J "42(
,#)" , ,&#
O *#
# J .$ ""
" , = l
( )/& *! - " :- " # , = v
( )0& ?! ", #
# ", # ,"# ",
)& ,## "" . , "" # .9 ,#)# " !.M.L" # " ,#' .
!.@,# ,, ""
BJ
5
# # ## ",#"%" "
" )" #.01 - . , /",3 , ,.C
- " # " ' "" " !.M.I#!.I.L. ) "" 6 0- = )<666<(
$
0. # " """
."" 6 "" , #+
, "# ,"II). 5 ,- """" , )# # "" " "#" #
.# '% :% " #"# ,# " & " B.B*.$ ,"= p' '
( )5& ! # "" "7,# # " = "% . 9 ,#"% " # "% = 5 " ="% " ( ( )8& (@A3' " ,# ," " N9 ,"
) "% = dcl F format variable; E_format: format (e(12,6)); F = E_format;
9 ,# ,, , , : '% " "" ".( # =" # "% N9 ," " " # "#- &. *= "% '%2"I2-2-I2"4( get edit (Price, Number) (r(Input));
", #, " , # & =, ,,
& , "# # #
&#*. "%
A ' A""# -)",
### " . )
" " "#, ," "", "%
,&"" "7,#)"*=
L?
!.4)# "
& ,*
( )9& A! - " "# .$ )" ,# " !.L.@. "#
, "# " = +@ & 401 & * & * #"#
.,01 ## ,# & & * & & *# .5 ##
" # # ,",) . C" , )" # )
. 5 # "" "" "#,.01 #"
# .## ## "" " ), "# # #, , .
2.2 The general loop " @.B#""7,# 2-
. ", #01 2 .## ,"# 7,
#
,, #
, " "7,#.
2.2.1 Endlessly – LOOP and accessories : , #,
" %
.. " . " ,
)@! " = 6 1F %%$E %' %% ( ' " ( ' 2O ",( % "! ( 3I( %%%( K<#2 <( &O ( " "! :( *3O ( ( ( 6(
!.!
L@
) = # %% # " "" <<.C) " # " # %-
, ##..: # .$ )%
#. #= -" #" # "#. ##,-," "" .
, ' .,-," 01 .." .," ", <<#,,#
"# "##
. , ,-," ", # # ,# " /#3K % " #, . )", " , # &# "7, #. *3. "
= 3 *O (
," #/"
3 -"#" ,#
" " " = 'MM3D%(
" = '3 'MMD%(
# ,# ", ,
.!@ $ # ,%%=9 , ,#" # , ,# #
" . "/ :
G3 ,# "# , G $ , ,# # ,
" &.. "
% #: *= #
&' # & " ) : " #,"# , # ,", , # # #
.5 ,
-"#" , % # " =
!@ 5 )"# =## ) "
,# ," " )," " "", #).
L!
!.4)# " $%% %%%( "EU %( E3( :$%%( ( $%%(
C , ," "# %- , , "" = B #
!$ & 1 # -" .2 , ,"B.B.8 )" ,# #= :Y1" Z(
( )<& *3? 6'A3' 7 $ # = Y1" Z(
( )=& C 5 " "
"% -" - . " # : . ,"###
")", " ,)
. " , # %%
.
" ))", " , ),. ) :. , " %%
= 6. ) ) ! ( +0 0 + # #D ! ) 00 !!&
2.2.2 The whole truth – DO generally # ,", , ) % , ,. ,
,
=
!.!
LB
@= %( != %Y)
ZY )
Z( B= %" 3 "" Y2 "" Z( L= %%%( ( );& @ " ## = )
Y%)
ZY!)
Z Y-)
ZY -)
Z
)
)
Y-)
ZY -)
Z
)
% )
Y-)
ZY -)
Z
)
Y)
Z Y-)
ZY -)
Z ( />& @ C " ,#
#N7," , " . @ , .! + #
, . # # # ' " , . ""7,#L , " . B " "#.# " )"# " % # !. "" # % % ! #! "# # #" ", " .)
,#
#
# " A) )
.9 ,
,# = ' $$
6 # $# 7$# # # & " # )
,# ##.& " , ," ,", # ,)"# , #" K, ,-
" ,# ) "#," .*
LL
!.4)# "
8 ) . " , ,#, = %83(
" "# % , 83 )",# "G9 , " ,#H, " %.& % ,# ##G* , #" #% ## %! ! #. #% @. "
)",# " !. " , , # # ,. 4) #% )# " .C# = %838 - 83I-+(
%
8 ,# , !",#@?!L.$) ," " )= %83I! -% I0W3I QV(
$# , = %83I! -% I0W3I QV2 I!-%I0W3I QV2 $%!- O2 Q D7F7 %7 %7(
5 , ""
# 8.$ " #,
" # ". "" "
#
.
"" #" " "A %! % #
"" #= %$3<E<2<<2<<2
)",# " ,""
# &'' *$. ) " ," , #. " ) = *#
& 5 ) , %/3%!IIIIIII(
C ,""# #
,."
# " ,## " "
I# IIIIII @# .## , "", ," .."" ) # "%,.
%/3!/W3-(
!.!
LM
#
., # I666666.
%/3!%-(
,#", ,# ' 7,, )"#!. 8 ,01 " " # ",
#)
" ,# - & '# ",
#.
" % ! "" ," # ,", " , & " *.
,01 " %-
7, ,
), "# ,.C ,# # # ,
## " ,
, , "
,#" % . #" %
7,# ,-## #. # , ,
" ,"" ," " , % , ." # , + , # , # ,, " .
2.3 Arrays 9 , " ",,
," . ) , #@???, # , #.( ,", , ,#7,# , = @. @??? !. @???& # B. @??? . " # #,",, -"# .01 , # ,# .
2.3.1 A thousand or one variable – working with arrays 1'
)= -I III :%! %' %% ( 'E % III"%( '8",( J & %83%III( &E8( (
LI
!.4)# " # &% %83III%! ( E8( ( -I(
' "# " , # E.# ,"# .&9 ," ## , #".*$##, ##
# -"# , " .E ,) EIII .!!8,
, E8 E 4 01 "", " . , #" "# 7," . 01 , ,# ##) #" ," & ,-," "*
. , , ,"" " ", =9 , " "# 01 , ," " # . 4)LL# . 4)!? , # )"##,
.
, @???, # &#
G*.9 , , ),"#" ,. , " , = , ,#
, EHIII " ,)N ,
" ##G & * "
," " .01 " , ##
,# ###,#
# #, " . " " #, "#"# .9 ,
" 7, "# # " "",.9 , ,# ))" , "" ,# , . 01
#" , " # ' && " B.B.B*. 01 ,"# " )
# , . , )
, " .
) ,# = 'E O"%( % &, &O(
" $ "# #.C ,, 01 "
" ," )& " B.@.@*.
!! # = , #)?.01 ,"
G
!.B$
L6
,, % "" #"# <4 0( . "
)!?= &E8%83%III( E8%83III%! (
#& 2 "" 7,
)!?.
NG$ & "", #,= &E(
01
, ,#) "" # .& ## ," ,""
A@A, # " ,"
. ,)" # , ,#H,
, #. $, ,, % "" " "",# & . , ,#% "" ""
. # " , #
% .$ &,* % #.9 ," )= 2-24%3%I4"-2K(
,, @!#B @? " # , # " , ",. C ,# ) , , & # . , , ) 8, , - #, , "- ," ,#" ,"= E%3%82 E%38*%III 8-2H2III 8"I2I(
C ," " , ,= E%3%8-2H E%38*%III"I2I(
" " ) & " " ###. & 7, # & ," # "& #.$% "" #%
G ")#" = $ & $ .
#" , H, @ ), , , , -!@L6L@BIL@ # U!@L6L@BIL6. /"3, " !.I.9 ,"#" = '# K 7: -III-IIH",(
L@
!.4)# "
$", ) " ## K 7:-II- ,
, " #!??!. ,"" , , ,# "", !??! # . 8 " #= 89 +) 5555E -'E ! -? '% : 0 & 0+0 0 + 0
2.3.2 In convoy – array operations , # ," " ,#) " .01 ")# ,.$
, ", # , .( #" 'E 5",( ' 5",(
)#= &E2( E*( E3E*( 3*( E3EE(
$# , ,.. , ,
" # ".4)"
, E# E. # 7, E3E*( E-3E-*-( E43E4*4( E+3E+*+( EH3EH*H( E53E5*5(
4## # "&..##,*
.
## ," --= " "# #)# " , ##". # " "" , , # ,
,= E3EE( E-3E-E( E43E4E( E+3E+E( EH3EHE( E53E5E(
,# #,"#" E @ , , "G9 , ,#" ,
!.B$
LJ
# " ,, #,"# ,01 ,,. 2
, , "#"" , "#"" #, #
" ," .C " " = *+ .
2.3.3 Not only for mathematicians – several dimensions " =/' , ,# N3 " .,, ,# # ) "
" , ," .5 ) -"#)," A- " & " , #," 7,# # 01 *= 22-242+2H -2-2--24-2+-2H 4242-42442+42H E2E2-E24.2.2-.24.2+.2H E-2E-2-E-24.-2.-2-.-24.-2+.-2H
( /)& - , '% - E! %' %% ( 'E -24"%( ' 42H"%( '. -2H"%( '",( '8",( ' ( <# -,4 4,H ,%!%< &E2( %3%-( %83%H( .283 E2 28( ( (
" "#G5 #" .# ," , #" -# ).&$ -# "# " .*9 ," -# , "# #" , ..!@ )," # ," . ,
M?
!.4)# "
E )E-2 !# @ " ,. , , #) " #" ,#). , -# & , ,# . , ) , " . , ")," =5 " E#"" ,
, " ,#) ",# # ,#. ,
# " # ." #)#) 7, E# " ,#)" , 7, ..!@ H, " E# " , ., " E#" ,# E )" " , .&8 -" " # " " ),"
.* , , . " ," %
#.4" )", ,
")", "
. " ," " , # ,G
" " 01 .
# .28= , #," - E#8- " , . $ ' ,
= ,-," . ," " ,#, ," ,
, .$ , ," & * )
E2 28
, " , "01
, " ., E2 -# )," - K)" 28 8-" ,.&," ,- "#"
" .*$ ",7, 01 7, " #," 7, , " # , ," . , ,#,,#)# #
01 " # #" , . ,"
7, , # , , # -# . ( @M # #. 5 # + ,-," . % # % & ,## ,#* # " ## " , 7,.5 -#
" #, , @# #K -# , , "# ## " , .9 , ,# ,
, " = %3% E2%% E2( %83% 2-%% 2-( .283 E2 28( ( (
," , # =
!.B$
M@
;< , 1 + 1 0 ! 0 0 ! 1 1!! A, B+ 1! 0!
2.3.4 The last run fastest – the INITIAL attribute "#" #,# ",# # , , " .C ,# ,, 7," 7," .
7," " -# #01 -H #..
, ", .!B)!@. , #= .2.2-.24.2+.2H.-2.-2-
#" ' 42-2-"%(
, " #
= 2222-2-22-2--22
7," -"# ,""
"# ## , ,#" = '% &7 <<(
," #" : ,# #. , " "#+ . ,
, @ @? 7," , , & #" * # & # * = 'E I", 2-242+2H252)29262I(
,
,M ," " " & , *= 'E I", IH(
9 , ,# ,# + 7," 7," = ' -2-24", -222-2-2-(
, " , .. -224 ,@G $ ,"
, +.C , " +, ,#. , ", H, " ,.$
#" , " " ,# .+ ""# ", " ""
"" " " #" .9 , " !B # 5::$8 #" ,.
M!
!.4)# "
<E.E.< -<E.<. , # '. I'-I: I<<(
+ . "" "" @? . , # "
"# " # "" " = 'E I'-I: I<<( ' I'-I: I<<( +# "" # ,
""" , ..= '0I I
,&* = ' )9"% I2 I(
$ + )
",.C, + "
"" ,
)
" ," "& ,-," *= '8", )*+(
401 " /#)
3 #. # " =)
",#" )
# . % , ,# #", , "" # ,", # # # ",
#,) " .
2.4 Structures " A # #" A
.01 ," " # #,# ##"" #. "# ,", !L.
2.4.1 Mind the hierarchy – working with structures )" "7,# ," ,", " " # ## "" # "." ,#, 7,#" , , ,# "", # " , ,# ## # . 2#, , " # )", # "01 " # = ! # =
! 3'_ "
$%+ (8%=
,%117QO3 "
!L 0 " "#" # . 01 ,",
1 ".
!.L,",
MB
+ &*=
%'"! "
+ &;1*=
QO111O3O#PG/$21#3LJ
C )= -- # & :%'"% % ' %' %% ( 'F ' 2 -#'77'",'52-2 -E''-I2 -O ",( ' :%' '2 -O ",2 -E''-I2 -#'77'",'52-2 -#'",'92-( 'G%",'92- I( "% '%2"I2-2-I2"4( &F ( % "! ( % "! ( :%'3F2! ( #'3 :%'#'77' :%'O ( :%''%H2"42,H2-I2 ,H2"I2-2,H2"I2-( G%*3#'( &F ( ( K< <2G% '%H422'%H42"I2-( --(
1'
#" . ,", F# :%'" ''#", . # ' &. '* #
.$ ,",#" , #"" "= ""," , ."" , @. ## " , #, ", " ##" ,." # ,", #, .9 ," ,## " ,# " , " #= 'F2 -#'77'",'52-2 -E'2 4/ '-I:2 4#% ''-I:2 -O ",(
$ , $" #, , ,- ,", "" " .< "# "01 # ,",.$ # ,", "# . , " , , ,# # ,"" , .
ML
!.4)# "
, ##
##,
=4
## " ,. ) O )!!= ) F# :%'., ,, 7,"
,. # ) "" " " # ,,7,
"#. ," ,#, FO :%'O . $# ## ,, ",'52-#",' ", ,,#.#92-. , # ," , , #, ! ," . $8 ## " # "
, 01 , ", ! 4., ,, .,
" , # " . C , # !& * #'
& '* , " , #",. , ,#"#
" #, " , #"# #" . ",'52-, =I# !# #" .
$ , # , " # , , , # A" . ## ", ", ' H2I $8 ##.5 ,) " !.I. )", , & . ,", , ",
#.$
,", ,
. # ,",
= @. ,",
#" ,", !. . " #" ,",# '"
#" "
#"#, G, ,# " #" #) ""
# A
" .$" )
'#",#, '#"#. ""#.." , , #= 'E2 -' <)<2 -.", )( '02 4Q",2 4"%( 03E(
#
, ,", " , , " , #"# , ""
# A " . # ! ",
#" . 8 " ,)G
!.L,",
MM
:%'3F2! (
, :%'O 3FO ( :%'E'3FE'( :%'#'77'3F#'77'(
,",
, "#
G$# # ,# ' #
#. " %! " "#," !-
. 8 ,#,# #=# # # , " , " .$# , # ,./0# ,3 # =$", ,# ,, ,# "
".$ )"
# # ". 9 ,, " ," ," , .,", # @?" , ")!?#, ## B" , G,"" ,# ) , " ,# ,# "7, ,",# . 0 , # # &#% = ,## , ,
# .01
,
" # . $## '% = " #'%- "", H, ) " " " ," "# .. ", G ," ,= +D+6IHI65-II %%4+56II4+56II .&-IIIII-IIIII .9)III9)III ++-+II
( //& //
,"
" ,",. ,##= '2 -0", 42 -Q"%2 -'II:(
," )
,?= 3I(
? " # ", ' ", 4 "% # ' #
# ,",.
MI
!.4)# "
2.4.2 Why not – array of structures $ # ,",
,", .1' ,+ "# = 'D -2 -G 2 4 ",2 4,",2 4E:&",2 -D KG -J "2 4G%2E:&",(
@! ,", " . #"= '^ !",: ( '/ !",: -( ''",: 4( 'E",: +( '!",: H( '^ ",: 5( '^ !",: )( 'E & ",: 9( ' ",: 6( 'F'%",: I( 'O%: ",: ( '1' ",: -(
" DE & #" # $,, . ,D#" ,, ",K& # , ,",*. D ,",#" G D D , D E:& #"# , #" G " ".$# D#" # # ," " ,, = , , G$#" "
#"# . @ %
$ &
5 ) '^ !KD(
# , G % , # " . ,# ,", , = 'E2 -0", )2 -Q'-I: <E.<(
," ,", ,, =
!.L,",
M6
'KE % (
$ " ) '
= 'Y,Z8Y,Z...Y2...Z(
( /0& *3A
2.4.3 That's the limit – multiple declarations 5" # , ,", ,#, # " ".& " M.!" "7,# " .. -"#" #,# ,,*. # ,"#,"
, K K #, ,", " #," "#, )# ,", ##"# " . #" ## 01 = 'D%'4I:( ' '2 -D%'-I:2 -J'II:(
'D%#D%" # . 4 ,# " " , " "," )" ,#"& "
* , #," - , = ' # $ :
$
. 0 , ,",# # ,7," .9 ,"" ," " , " , .!M# , "", ,#. " ,#", " ,",
= ' '7"%2 -D%'4I:( ' '7"2 -D%'-I:2 -J'II:(
" " , 7, ,, '7"% D% '7"D%. $ " , & )7,* K " , 7, ,", . ," ,=$ ,7," ,",. $ -
# ,",
#
,",= !M " ) ," .
M@
!.4)# " 'E2 -E2 4E"%(
"
, " 7,#, E ,",EE) ,",#EEE"%-. # , # ',G @=
"Y2"Z...3 ")
( != Y2Z...3 ")
[)
( B= ,",Y2,",Z...3 ")
[ ,",)
Y2! Z( L= ,", Y2 ,", Z...3)
,", Y2!
Z [ ,",)
Y2! Z[)
[ ")
( ( /5& 5,!L #
."
,#
7," .' " , .$ " "", 7,
. , , " & "# * ,", ,", . )
#"
" ) "" " #
, .9 ,
,"
#,"#
#
,", ,",
"., ,##, " .9 , , ,# #01 ,", . # " "
#
. " #= " 7, 7,), " # . !- ", )
" ,", ,", . "
# "", # #
. # ,
)
#,# ". ,# , " #"" # # " 7,
"
. , " ,#
"" #
..!M # #.9 ," )
= E 3*.( , 7, E3E *.(
!.M, "" *3
,)
###
3
,)
,"#
3
,)
,#
3
,)
###
M3
,)
/ 3#
X3
,)
/#3#
MM3
,)
" "#
3 W3
MJ
,)
) #
,)
/ )", /#
( /8&
2.5 Manipulation of character strings # ",
#, #" "7,#
)01 .$ " , ''#'' :! & .## " " MM ,-," " , ,
7, , . #,",-," "" ).5 ,
" , " , #,", ' , A A .$ " @ .$"" " ##@ " , " "" ##.8
" , #"" .!I
2.5.1 Two would do – SUBSTR and LENGTH ( ", , # ,""# # " )<J\E$< <$E\J<.5 ,
#
" , )"##,"" , "" . ,-," )" . , = ""
, # , = <E.1/\L^8$OF#`JGPD0Q<282(
,# ,8- & ""
@* <J\E$<2424(
, <\E$<. " " ,# ,#,= <J\E$<24 , , # "" . # )
# , " , . "# " " ,<J\E$<.$ , , ,-," .
!I $ - = "" , ## " G "
[email protected] ,",
01 .
I?
!.4)# "
##
##,"" ""
7,
." ''H <J\E$<( 223<$<(
,# - . <$<
# @ "" "" ,#. $, , , "" " :! & ,= ,# ' "" ", " G5 ,
A A ,-," & . C"" ,& : *, ",A "" )#H, #"#& "#*.8 # ) = -4 J: &%PGJ2$O\GL %' %% ( '",( ' &2 ( '1%'-I:( 'D%'-I:( < .LEJ'% 2<( &D%( 1%3D%( ! &%"1% %3% &D%( 1%223 D%2 &D% *2( ( D%21%( -4(
$ ## ,-," #" &# . , #" 01 " ##," , "" " ,-," ," ,-," &
,, * , "" ,#", .1% "
# "1% , D%.
1%3D% ,"
", = D # !
$# # $ &3 !
$ & #
# 1% , " " ".# ' " "" ,"
. "D% " "A # H, # A
#
1%. ", 7, " " "" , .9 , ,# " ,# " ")
!.M, ""
I@
, * . &," %
", "" " #D%"" # ",. , ##' , ,-," : = :<J\E$< , <$E\J< # H, " , " , . ,-," " & # ' "" . " # ,="28 22 8" &28 2 & 8*. ' 2 8 8##"" . , " , "" #8 ##& *, ' " ' & # ' .&' ' "G*#" ##"& #' # , 8 "" . , " & # ' # #. # #' " !.I.@.9 ," = =* ) ) + + ) ! ) ! !!) 5 !!9 +0 ) 5 # 1 ! :K !% :K 22K :K !% :K !:K
2.5.2 Where and how many times – INDEX and TALLY $,,-," "" "
," ,#", # & .
, "" ," , ," ) = -+ # &%'% &< %<O10 %' %% ( ' , ( 'D%'9I:( % "! ( &D%( %W "! ( " ,D%2< %<W3I D%( &D%( ( -+(
,) # # & )*# ,
"" "" < %<."< %< -
I!
!.4)# "
. , # & " , ## # ,.,-," ,,
,"A A " #, ,# .# "", , ?. , "
,"#" #,. 9 ," "" "", , . ,-," ! , = 3
,# ,,,I.9 ,, ", " " #" !<,,,<2<,,<(
,# ,,!.,
" ,""
""
" A H, # ,#G , -# , = >9 +0 , !! 1 ! +0 !!0 . ! ! !!! +0 4 R
2.5.3 Hocus-pocus – TRANSLATE , # ) "
,# ," " )!L
;<(
< , , ,"" """ "", #, " " #,
. ,) "#0",
@I " ###, .",
\0] ," K ","\]
.9 ,
,# + , "#,#""" " # &' #
*.$"" #
"",#,,"#. , =
!.M, ""
IB
3 # # $ . ##" " ," &" * & *. #," # E.7' # E.7 # , " , . " "
,, "" , )", #" ," &*", . " " #" #"
"
," . " ## " , , #" #,"# , "= 'E7'' : <E.1/\L^8$OF#`JGPD0Q@AB<(
# # ," ", # " # )!M .
# , " #" " #<FEG<= -H F %"%%""% : & " "%'% % '% :% GJEO$EG %' %% (
'D%'9I:( % "! ( < .LEJ'% 2<( &D%( %W "! ( " &D%3+
" D%2< MMM MMM MMMMM MMMMM MMMMM<2 <E.1/\L^8$OF#`JGPD0Q< 3<M M<
D%MM<%%KKFEG]<( < %.LEJ'% 2<( &D%( ( -H(
, , #" " . & " # " ,# )# ""
"" #G* ## " , # ,
#.$# " " #" .," #, " <M M< G ,# = ' 1 ! 0 ! ! F !! =
IL
!.4)# "
'9 0 ) 0) '! ! 1 ! 7'-&3 !" % 2 # , #, G 9 ," ,# , # . , #"# " )", , " )" 7, ) ,## , # " " # #= 'G'-H5( G3'%( G2 K<<*23<[<( 3 2G(
!MI"" &
*##,
01
, " #, " =4""" "#"""
" " # " # "" "#. # ,-," '%# K .'%, "" "
" # "# # K" # "".9 ," , '% ,##@
. , #"# )" ""
G # ,## "" , #= " " $#42G
K ': . , 7, #= K':-HH3-HH.':, ', , " # ,. ",, , #,""" # "#,.
2.5.4 Forward and backwards – VERIFY(R) and SEARCH(R) 5 # :"!," . "" , . :"!<P#J.E$/JE\$G.<2 <E.1/\L^$8OF#`JGPD0Q<(
," ," , "" " "", " #,. " ,? ,. :"! " , ="" # "", " # ,
""& *. :"!
,# ,,L " # "", " #,. " , =:"! " ""# "", ,
"" . ,-," ,? # .
!.M, ""
IM
5 ,)) ,# ,
,# ,," )"" ,# # #, .. !
.$", # #" ." 0 , , " # # # . + , ,#, ! , ", #, " !% A" 0 . , " ! # % , #. , , #
= !
' &< MM<%& %]<(
# , & * ""# )## = !N1%!% :[! %% <K %N!G,(
! ! ,, "" # ! # , ,# . ' #!" , .&" ,.* 8 ) ,"#. )!I "" , #&" E ' *"
#"# # ,,= -5 ''KJ/Q2EJ.L %' %% ( 'E ')-:( ' K%",( 'J:7%",( '')-:( ' ",( 'O %",( !< 2]<!E ( 3I( K%3( %%%( O %3:"!E 2<<2 K%( "O %3I :( K%3'E 2<<2O %( " K%3I % K%3 &E *( 3 E %2O %2 K% O %( J:7%3:"!2<-4+H5)96I<( "J:7%3I *3( !< :''N< MM E 2O %*J:7% 2 MM
II
!.4)# "
5 , #,
# ," :"!. "
," .8) ," ' K
:"!#
, "" " "", " #,.#, # :"!. ,"" E ! :"!#'. :"! ## ,#
"" " , . " ,
.$" ", ,#,# ,.
7, ) "
,
# "" * G ) , ,# 7, ,. $ # # " ,#, 01 # " "#
. " ) " , #. ' ### ", #""" " "#", ,,.C "", )# ", . , , . $ " = 3 $# $ $ ! & " :"!," = ''< 1 ) ! ! ! 00 1 0 ) 0 !0 " ),,-," #. # ## :"!#'" " "" = :"! # ' . #," . , ",
"" # ,"= L3:"!$% &2<<( G3:"!$% &2<<( %3 $% &2L2G L*(
& " #" / 3*.," ,#= %3 $% &2<<2<<(
, # , 01
, "" # , , "" " # # #. ,# ' # ,, #"
""" . C #) :- =
!.M, ""
I6
'$ 2. &'III:( &$ :( ""$ 23N
,
""
## " , & , & . ," ,
" &"
*
,
. " ,##", " ,:- .
2.5.5 What you will – more functions ,-," # "
# ",
# . ,-," %#&
"" "" # " 7,"., % " # """ + &I " @.& A""" " ##@ .*% #
& <6< ,, $ 42. $ #," "" " "
#
" , '%!," = ''I: <E.<( '%!2-(
,"" <E.E.<.!6 & ,# -)" ,-," ." "" , MM& , U*.) 'EH'( E3<0<( &E(
,# ," " , <00000< "
" E ,<0<.
,", & ,# # , "" " ,",= '2 -0'-2 -Q'( &3<E.<(
" 0 ,# ,<E<#Q,<.<. !6 ," , # ,
, " # , # "," @ , '%!.
I@
!.4)# "
0", , ,# " #<
," '! = Name1_ = replaceby2(translate(Name1, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ', 'abcdefghijklmnopqrstuvwxyzäöü') <EFP<2<@AB?< Name2_ = replaceby2(translate(Name2, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ', 'abcdefghijklmnopqrstuvwxyzäöü'); <EFP<2<@AB?<(
"O 7UO -7
# " " ., ,<,, # # ^
.9 ," . " #, '!-, " # .$ )@6& "#*" ,# #, ,-," . " ",# ,-," ' , #. " "", ""- .$
" #, "
.
2.5.6 Self-made – PICTURE character strings 01 ,
#"" )#=, ' ,. E#. ' #", = 'E'-I( '' <00000000000000000000<( '.'<-I0<(
# ,"., ,# # ,# " .## 0"" E#6 # #' .9 ," ,", "" # "" # "" #"
.0 =""E ="""&", " """ ,, * #"" RQ#P# 6 =, .5 ","" ""," 0 E ",".$' "" "" " # # # "' "" ,' ," " "7,#, " !.I.L. )01 , ##"" # # ,",.. , & "*""# , & "*= '.'<66066<( &.H(
, "# " @6=MB.""
# ' 01 ) " ", ' ,. '% :%
" #
!.M, ""
IJ
#. ,# ' # ""," )" " # &
" BB* #. # ' , ' "" . # ,1 01 K# )!M)
"" "# " ," , # "
G
2.5.7 Without detour – STRING instead of FILE ,# ,, ,#)" # ) "
)" ## """" # ,, # # "
,.$
#
,"" # # , "" , # 01 #".2" , # ,,"" . # # " , " # &. 5 )'" , )", ! !.9 ," #
", = !< % 2]<!E ( & &E O 2O -(
," , "" "# , , != &E O 2O -"4( !E (
E :! &"" .$)", &
",I "#, "4, O #O - # E .9 ,H, , # "42"4 -"4 -S"4,"4 " ,
" # " "
#. $
,# ,, , & #)" #" " , .5 ) '% ##,,- #.9 ,",# # ,+ "" #'% "
",
& ) "", *,#, .,- # & K'% ,#7, ", . # ## '% H, # &. ,- ,"" " ) ,.9 ," )" / 3 ," " # "" G$#&# & / 3A ,# ,.
2.6 Arithmetic $ , " 01 " ,#.."",, ,#
, " 01 # , "#" "# .# ## "
6?
!.4)# "
# $ " " ##" ," # " , # ##" ,
" . # ) " #=""% #. " . #" , #. ### #
6&&7& # ##)") " .1' , , .
2.6.1 Having a different base – the FIXED attribute # ",
,", ##"##"#, 01 )
#, ' # !.0 # ##" , "", -"#, . 7," ". , " ",' 01 " ,", "", #", &"##" ##*. " " #""", ," "
# ?#@"#" ,# /", 3#/", 3 #"# ", , " " . ,# , ," " ,# =
# @ " # !L@@I".= #"
@
!
B
L
M
I
6
@
J
@?
@
@?
@@
@??
@?@
@@?
@@@
@???
@??@
@?@?
( /9& " #", # #"# ," .0 # #""",
,#."" " # " , # #"# " #
# " .$,, ", ' +#,L6@! " ##.. = ?
L
6
@
!
U
( /<& 4"# K ,, #B L#"# # .9 ," # , #, .## #, # , " ,# '
!.I$"
6@
"R)& " B.B.!*.# # . !I " , ., " #<II< #, " #<I<. ,#"",, #", N A " #", # #" ." # # # "# 01
, #" "" # #" . ,, )@.!@.! , ,# ",@.LL, #", ' 42-. , - , ,# " =@.! ,# # #" , -IIIIII+)594)H9-I4-H
# , 7, ,# ++IIIIIH)--I+H969+4)H
9 ," #"#=# , ## )""",# #" # , ## " , N" ,# ", ", ' , ## "#, & * , &*. , ", !## "" , # " " )G N01 " , # & :! & *" #" . ", G,@ ", " ,@B I. 8 , ", , #
," IIII .$ #, A ", " ,A ", ,
, #"" G9 ,, + 7, " "01 " , " , . 5 ,# " , # #
, ### ##. $8 ## ", ' ", ' I2I#", ", 4, @?#" # ," # B@# . ## ", 'H2I#", H , " ,. H, @M B@# N , ",#
", H , #@I " # ! .& #' " , #" A #A@ .
# )# @?!L@O A 7," "A # # @ .* , "",, ," # L ,, #"=", 4", @ , B!, B@# . ", H, ,, " B!6I@ UB!6I6K", 4)# , , ! &)" !@L6L@BIL@ U!@L6L@BIL6.. !B@ !B@ @*.5 , ," , ", )= , @!@ U@!6.# , " ## , # ". ## ," "", , #@ , ", &IB*. " ,, )" "
6!
!.4)# "
,"" " ", 54. " # "# " !.I.B.L. 9 , " " , ..", 4 ", -I ," , ", )", H", 4 ", 54", #" "", + .01 , " " #' " , # ." ,
,##' " /"3, K , # . $ ,# , & *=
#
@
@M
#
@
B@
#
@
IB
( /=& # , ,# " " ### ! , = & . " ,.8 " # . ", @ " , @IB!#IL, )", 5 & .," , ,"
.9 ," " , ,, & , " , . #% 3C # $ # & # . 5 & ,
% " ##= 'P", 4- & ( %P3I% I( (
,#"
% I ! , R ,#" " , ,
=P ,##" # ? , @ ,##
," =
,K , ,#?
,#" ,GR" # # #"# ,. % ,H, #. # ," ", -I2HA ", '52-A, #" !?# M .
, , G"* ,!.M" " @?.@G =8
!.I$"
6B
# , " " 01 . A " ##" G, N , #= " $ # # ! &" 6 7 E ." $ # ! . $) # " , ", ' , .$ , # #&", J# * #. ", , # &"" ,* #, ,# #. -) / %"&", %' %% ( '$7&", )2 '/ 7 2O ", 4( % "! ( < <( &O ( %W "! ( KO ( / 7 3O ( "% !% & %O U6( / 7 3I( %O UI( $7&3 %O 2I( / 7 *3$7&( O 3I( ( O 3/ 7 ( ( <" ''K <2/ 7 ( < % 2<( &O ( -)(
5 ) "" , 6J@7, "" ,6UJU@W@6K
,@U6# "" , @. #
# " , "" , # ##
" , ,# ,. # )"# ,.$ ",- ," #, ," ., # ,## , " #., %O 2I
#. ,## ,@? ," % )A
A#.C # " ,#
= # ### "" ,#, ###@?.
6L
!.4)# "
," "",# #= .#" % ,
#& ?* , , ### . , ,", 4, # ," , , .)@M# ", ' , A ) , " ,& , ,# "" , , # N*!@ , " ",'4 # ,", B@#"# . 9 ,, " " .
""" #,"## "
", O # # "" #, # , # .9 , ,# , " ,# , , ,". C ,
# N01 # "
# , " " &) " *."
# , ,#)" ## " % '% . , = '-.0 ) ->8; >- 6; &. ! + ! & ! G G !! '6 0 0 5 , ,# ,-," ' # "%% . "%% , , 7, ,K '&. "*, , 7, ,.8 = '6@ ! !" '8&
! 1 ,, #", =" ' ", , # # " "#. , , ,-," : ., << , ##
2.6.2 Disappearingly small – the FLOAT attribute " ,+ =01 "%, "% ! # "% ' .$# "## " ,#. " "% - " "%'5. , " ""
, #
# 7," # .
""!@ " )" #" , , # =/ 7 3 %O 26*K
!.I$"
6M
# "%."%'5
I#"# "% - !@# . "%" " ..I4+H6. " ," " , "% !" =IIH ,#..@?!M.# ,
" # ) #"," ,#
# ) !.## , ", " "" #=4 , #" "% " )"
## & ,#*. # #" - ,= ,# ' )
&*, # , # # , , & *01 # & ! * T& ,! *.I "", L I "", @ #TI "
@I . # - , # "# ", # """ .$# ",#### ,# .
2.6.2.1 Floating-point since time immemorial , , "% "%'N )" = , ,# "%#, #"" . N( "% ' "% !, "#/)#" 3 )#"#
# .C)#"!J @I. ,", , ## # ? ,J/# 3$24#5 , ., ,!J @2. , , " ".9 ,
L-,@-,#@I-,. ," 6 ) @I " ,
#, " #" ## .5, ,@I-,@ #. 4) @
6
4) @
6
4) @
6
!L
MI
(, #
,
MI
@
MI
( /;&F ! !J # ' < 1), )#"#" #"& *.
6I
!.4)# "
"% ' #"% !) # ", # ,01 " ",#"% , ! # ' . # ##
,, , # ' " 7, # , & #"*= D $ 6 79 $ $ & #0 )@@# $%" , )B!# BB.$# + , "
+ L@#@I ".")
, 01 " )", # . , + ) = "*= 6J U6M. ) , "%, -"# " . , " @ @@ !@ B". # /" 3..# '" ,= -9 L % '/$FEG %' %% ( 'F7 "% I( '"%( 'O7 "%( %3!( O7 3F7 *( "O7 3F7 :( F7 3O7 ( (
, "#,"# ",)",#. ## " , N ) 7, = "% ,
#, )# ," " ""### .$ " " # " , ## .. ,#", " #.9 ,"# ,#" , " "% ' 5 # "%. ", ,",,
@I#"# .# # # " %
"%" & " !.!.!*. 9 ," #H, "7,# # =
!.I$"
66
'8( ) !
@ @ @
@
! B L
@ ! @
. 0 ! + !! 0!! !
2.6.2.2 Floating-point binary " 0 # 444 # ." #01 ," , .$# N" , , # "% !G4 , " ## , , " " .#,, ,' # " ,' #,# # " " . ( ,& *" " , # .B?9 ," ", #, ", ", #444 , ,
"#" , " # ,' "", # , )#"" ," # ,"
" #" 444 . ( ! $ # ,! & # )= ' " 7 "%,'( 'J7%"77%7 "%( "\ % " 7 ( J7%"77%7 3 " 7 *( "J"% J7%"77%7 (
0 " 7 " # 444 # ## " , #, ) 444 ," . ,"#"#=" ,' ## )",#, )#" ," , " # 444K " " 7 " # 444## #, 444 ," ., # #"#. " ## " " 01 ;& " 6.L*. C - , & , "*=
B? #, " #"##" ," , #.
6@
!.4)# "
4)
@
@
4)
@
@@
M!
!B
4)
@
@M
@@!
( 0>& ! 67 L@#@I . "" )#", , ) . " #/"3, #" "% !!@& L * #MB& @ *. #0 )@@# $%" , )B!# BB.$# + , "
+ L@#@I . , ""
&* , # !L#
L-, . , ,""" #!L#
!BA7, = , ,7, ? - #,
,#. 8 + )
= ," ",) #" ,# # L-, _B@ @, _B?@# @I-, _LJB!. C ," )#", 444, "", ."" # ##-5 ) . ,## ,. ,#") JJ ,, "" " # ) , ,# . " ,' " )
R " # #.0 #$% #, " 444 - .
2.6.2.3 Floating-point decimal 01 !??6 ,# ,# #," #- , ##" - "G" ," , "" # #" - &250* ##444 ## #A# " ##
#, "% ' ## ) 01 #"# . # ",# #" - , N #," #")#- , #"" .., " # " )")
# .$## #")#- , N9 , ," "", " .,' ) # ." )?.?@6@` &7, )I.L`*. "",B?
!.I$"
6J
# ## #" .," )" "" ,. - , ,# , 7, . , " # ,", L-,@-,#@I-,= #
@
M
#
@
M
#
@
M
.4)
,
I
!?
.4)
,
@
M?
.4)
,
@!
@@?
( 0)& ! 67 1' .#
" , #"# & , *., #- ", ' ," , #" # " # , &/# " ##"3*# .,"#"# "##".1,
L- = !? )#" ., # ,a" ,
a=$ # ##" # ,
. "% ' )# , # - .$ )," BL BB. ) # " , ) . 9 , " ,
# ) ##" #G) ## @?, ,.$ 444
) &" )#"*. " "#" # ) " , #
, @?. ) L-, -JL UJ6@-, -B@! UB@M#@I-, -I@L! UI@LM. " ," - , ") @? " ##. 1, , " #&,"#" #*.(# # ","# ##.C H, ,"=" # #"# " ### ) , / ", 3, #, #88&. 8 8,*. , " # , ,= '/"%' <)IIIIII<,( OO /*3(
@?
!.4)# "
,# " /@ #" # :% ,# #&/# 3 " B.B.!*. +" , ) , #
, " . ,#'H, " )#" #" - " , . 5 - , "%""", = #"#"%' # " ##
#"# " ,' " , ##
)#"#. #, " %" = #"# ", ' # - , &)" , ," - * #)#" - , ,' &)" , , " - * "" " ## , #. 5 ,, " # = $ ! E ! # & 9 ,""" - # ", ,-," , ," # :% #= "
,N
"
,N
#,N
%
,N&, # ,
##+
K , ," .*
R%
,, , + N
<< ,# 7,
5
" #)"#" # 7,#, ," # ",
" ,#
," & #)*. 9 , ,# .$
,- "," 250- . ) ."" )#", #
#" ""," ,#.
!.I$"
@@
2.6.3 Arithmetic means – rules and pitfalls 01 " "#"" # ",, . 9 ,"
, , 01 , ) . " , ## " .5 # ,# , " 7, . # ,= # # % $ - $ 6 7.
2.6.3.1 Mixed operations 0 " ," , #, = ",& )# * # ## ", # "%", ,
# ,#. ## "", )# , # # ! ", " ,"# ' . " $8 ## ,, #= , # !/, 3 ' . " # "", # ' "$8 ### ' " # . /
3, " # .C , , B.B! ,. " " ,, # 7, , #"# # = : 6G0&0/7 $ : 6+0&0/7 & C " #" ##.." ?.@ , @ @I, @ @?., , 7, #"," G , @ ### , # . # ,#
) B@= #"" &7* ,,7, " &
, 7*= &@U"&TB.B!*"&7TB.B!** $ #" ) , "",#., " ",###" " ## , # " , .$)= #"&!@*b[email protected]B.B!*b&@U6L*b&@L*
B@ ) : 01 !M;,!??6.
@!
!.4)# "
#,J.M= ",# L# "#"J @??@. ," # @ , ,# #JM 6" ., , ,## ,.
2.6.3.2 FLOAT operations "%## ," ## ,
,
. ) ""%) .$ 0 Q0
+ &", "", , *.< " #
,# , = %
# *+ . " #," #" - #&250*." , # , )"#" ", ", ## "#, 01 , . )= '8", ( 'E"%'( E38*E(
8 )# "% / 3 ", # ! ' . - , # #
. ## " = # " # , )",#"% ! #" #" "% ' .C "# N " = '8", ( 'E"%'( E3' 8*E(
8 " # ",' ,# "%' , ## "# ,# #" .
," "%' "# " A #250 ," "",.
2.6.3.3 FIXED operations in the ANSI standard $8 ## , ", !, A , ## A ## # , ", ' #", !, . "" #N( , ,#" "# , " "
, . ")
, $8 ## )",# . , ", $8 ##"# "# . ## ," ," ## '
!= ," , "#" , A )" ,", ' # G # # ", ' " # ##&
!.I$"
@B
*. # " # "", # #", " # ##. , # )" # ", ' , =
, #" , # #, # , @& *
, # #," , , # # , @& *
7, &", !G* , # , # ###& ,*.
$8 ##", !# #. " # , . # , " ,# . , ", ' , " # $8
## ###",
#, " .
2.6.3.4 FIXED operations in the IBM standard #### # ," ",, ## ," , # #
# ., # @ # " # . ", " "=J6UB @?? . ",," 01
#
=, # 7, , , # # . , , , # # , @. /, @3 ,++=JTJ @@#" # G 01 ,)"#. " ), ,G& ,,JUJJ-J@I!" ,G* , , 01 ,, ) , " .C ," #, /, @3, , )", .5 , , " #"" ,G $ # ",, 01 #
.# , " , "
,= , # " ," #
# "" # # G),
,#, , " @M#"#B@# & B@# IB*. 5 )@ ! 01 ?.M?????????????", " # #" " "",.),, # @M @L# #" . ' $ .
@L
!.4)# "
C = ,## " ", 54"", # , @ )#- , , " , # , " # . " ## " #, %% = , " ", 4254" # , L ,
, #"# ", 54 #. , , - ", ", ' H# ##" ", " , # " #", ' H .C ##@? " ," A -*I(
# ' , ,@?.M????????????? ,#)""" # , . N A" " # ### ," G , ,#@6# "" # 01 ,,@I# ",, ## @M#G, /# 3 ",%:"% "#01 ", ## 7, ? ", .8 . #," ,, # @?' ",,. ,# "" , .,
" # ", , .
# ,#, ,,
# " #01 " #,, "")" " # , # ,-," .
2.6.3.5 Built-in functions ## % ," # # ),"
' ", # "% "" , ,# # , .5 ))
III242I ", 42I,,@???",, ,III. , " " ,-," '%
" ## #'#" . 9 ,"#" " , ,-," '
! # : ., : E2 2 H2 I ## ,E, ," , " H2I. # " 2TN #" ", # 7, #"# #", " ##, # " " , .( , ,
" ."" '! # = @. # #" " , "##" # #", ,#. !. # ## , " # "# ? = * " # #, ,#
# #, ,#.
!.I$"
@M
* " # " , ,#
# ," " # #"# '44- # 'T44- # #" ," ,# ,#.
" '! . #"
'! ", ,# ') .C "= #
#&' )&
! $ /& $ $ 0& %# *+ & $ ,
" ,# , "" G ## ,-," # #, ," #).# " " )"&.. %*"&.. T '% *#," " , &.. :*. ", , ",-," "% " # "%," ,,# "%.$ ", "" . " #" ," , " #, ,. T-(
,,*IIIIG, ""# ""= ' ! $
6 7 !
&6 # $ 9 &7
" #01 " "" =01 , , "" .5 "" " +# " #. ) , )## ,K " ,01 "
# , G," ,# ",, # ##" NB!5
,# ", # , ## ," ," = $ ! # 6 " 7$ !. B! $ 1 " , " , "# 01 .
@I
!.4)# "
, "# ", 54 IB # B@ .
2.6.3.6 The default concept # " "# 01 #" ." "," ##= ;O1 8 " ## ", H "% 5.BB , ## $8, , ,# " " = " . ", " 4 #",' " IK ,
"
, ", !, 4.
, ,"/#,3, " #"
. # " ,' # # , , ,# ## .$ )H, #01 ##
, " = " &EL2F"%'52 &O", H(
# ' , "" #" #"". ,## "" %,'" /" 3 ,## #".
2.6.4 Janus-faced – PICTURE numbers 01 ' "" ," , /", ,
3 , .
#" , " "" 0 E . ' , ,",# '' ,. 2#, , " = "## ,"" " ""," ," ." "", #.9 , ,#" ,#= " .
1' , # . ' , , "" ' "" .,",, , , # ,
' ,"
.
#
###"" H, # # #",. " ,," )#, # = 'E' <666666<( E3)( E( !IIII)
, E ,) I# . ","" ""6 # " ., -#"# BB , "01 " #" " ,5 . .
!.I$"
@6
,, "" IIII) ,. # - -#"# ,,. , ,
#+
"" & +
,
* )"#" = ''<666< )( ( !SSSI)
5 ," ' ' " # , ,# ,, ' , -#"# ,,, -
."' , '' , , .&" , , , "- ,##" ,
,,#, ",", ' , #" # "" "" # "- # # ,, "" .*""
" ,
,
#+
., ,, SSSI)", +
,
#. , ,#
,@??? SSIII ,# ,, "#@ ,
# " , . "" + ,
= '.'< 6<( .3)( .( !
)
,", """ ## ##"# & *. ,) , ,# )
"" .$ +
"# " , . , "+ " ## " + ,, ""Q. " ,
,",, .& ,# "=9 c.* ,
) , "" ,= '1'<66< ( 1(
,, ,# I. " )"" U#b # " , , " ,
= ''< 6< ( (
",@
,, ##@.&, ,# ,?# '.*"" * ", ,, *+ . "" , , ,.$
"" *# = '/'<6< 9I( /'%)-2( !SSSS9I*
@@
!.4)# "
# ," # ,.$ "", ##"" , . , # ' " " ' , , '<6<# , , ," #.$ "" " , # -"#/#3 "" " ""# #"" .)"" # #.#" '\'<******6<(
, ,##, " # # " #" ,./# 3 ,# "#.#" "" # #"" "
, ## ""#"
# . ,", ' , ,.9 ," , " # "# "# ' , " , .5 "" ,
.## ' , # ### " # = 'L'<6666< I( L(
,", G # ', " #" . ,,, @??? ,#. " # , #
. ,)@?,
# # " # " # ., ' , " ,# , , #" G " ," " , ,#01 " , ,# #" #"" & "4, " , *. # # 01 -"# "" #" # = '8'<2666< 83)H(
,8, ,#
, ,4 - " , = , , # #" , .4
.6M, 8 ,#
SSSSSSI)H. "" #" # "# #"" ," ) =8 ,"," "# . 9 , ,# , ,, #" " ) . #" ,#.<66< #.<66< )= '^'<66< ( '^-'<66< ( ^2^-(
!.I$"
@J
5 ^ , ,# ,, I ^- I " #"
) "#. "" #" = "" # = '8'<
<(
@??? 88 ,#, III. ", ) , , # , . , ,#
,@? 8 ,# ,, I.# " "# # " . (# " # ,"# ,", ' ,
"".
01
, H, ) #"".## ," " "" "#" #" ,." "
#
"" "" = '$'<66/-<(
,", # #'',, " # .,", , ,,@? ! # # # .$, / ,# #" . "" # ")#- , , ' ""
" , , .$ , , "#"" ) #= 'O'<66666<( O3-IH4( O(
"" <-IHI*+< ,# ,. ," ,# #
" ) #. , , #"". "" ""8= ''<66686<(
" " #O % % . " " 8 "" ) #,"#.
,@6 ,#", '',
" , . ," ), # "" #"")" .$ "" V#U", #= '#''
, #' "", <SSPJI2+H<. , , 4, - ," ,## . ,#" # ""4, """ = %'' '!
J?
!.4)# "
## ,#' , .- , " , "" "# ' ,. ,#, , , , ,# # # ,,. #", ,, " #= ,", ## , , # "", N ", "# " ##, # ", ! " ", ' .9 ,,
, " # #", # ""
,"" ., #.9 ,"' , "# ' ' "## ,", . , "", , " #A # A ",' . , , "",", " 7, #,# ,, ," , " , ,#" ' , .C ,
@. , ,# +# !.
#, , . , " # , ' , ,# ' - , , .5 )" " " ,# ' "" ." ' , '', ," ,H" , 7,. ) , ### , " # " = 'O'<666666<( O3-4+H5( O2<<2<<(
9 , ,#, " <-4+H5< ,,.9 ," ,#" ,",, " #",. 5 -#"# ,,' ,
#," " -#
. ' # ,, "" # ' "" . 9 ," ,
' ,- ," = ''-I:( 3)2<666<(
, "" " ,## ,#
# " #,." , " #,)
.,
"" , .
!.I$"
J@
2.6.5 Character weakness – calculating with character strings ## ", , "% , 7, ) " K !#' , . ' , ' , ' ,, " # ' .","" ", # . # " 01 = '2G'-I:( 3<-4H<( G3<-4-<( G(
$ ," ," " . " #" #,", " ,# . , " " " = # $ & , ,""
' , ,"#" #, ,-," . ," " ,"" #" "" ,-," '' .BL," " '8'4 <-4<( '",'H( 3''82<666<(
"
, 8 -#, #., '' "# " O , # # #"#A "" 7, #""# ' . , ,#
#8#" " ,##" "#, 01 ,&/ # ".3*. , '' " ," #
#". ## ,, % :! &"" " " # " # ' .4)" "#''. "" " # ",
, ""
, ,= ''-I:( '8",'H2 H( 38(
5 # ## #, , # #"# . , = ( $# " & BL ,-," (804" # " !.6.
J!
!.4)# "
01 # " + ##" . ,
", , "" , " # ",' " , & ",B.B! G*.9 ," ,
7," = ", H U",'5 U'6 ", 4 U",' U'+
C ,# ,)## ## ," /3 ,. , ##" , #),.
2.6.6 Nothing real – complex numbers ,# ' " ), , ,# " . # " , ,#
,# ) ,. 01 " " , = # '% , ., ## ,#
".$, """7,# BM, . $ , " ## , '% , , , " , = '0"%'% ,( 'KQ", '% ,(
0 "% , Q ", , . " )" 01 " .
" #& =*.$+ ,#
) ,"= '"%'% , 4*+( '-"%'% , 4I*+I(
", "%" , ## 'K01 " "" # " , . ))
,#"" #" , " . " )
) ," " H," ) ", , " ##,"" ,.01 " ,#, 6*6 6 6(
# ,, ,#5-*I. $ , # ,-," . ) ##
# & # & ,# -* " )
" ),& '% , *= 'E"% I( 'EE2"%'% ,( ''% ,2 &2 ( BM , # , , ,# " , =4 #/3# ' " G01 " "& *K5 # 0 "'G
!.I$"
JB
EE3'% ,E2)( 3E( &3)I( EE2 &EE2(
, IIIII*III # )IIII*III " ))
IIIII*III*)IIII*III ,.
# ' " H, " '% a&," = '% a&I*I(
,#I I. ,# , , #",-," " "#" ), . " "##)## ##. " ##= , , ,-," T" &, "
,)* # , #"
" ), .9 , ,# " #, . ##
# " G '- # . , , # " ),# , ,,-," # &= ''% ,", I*I( 2<<'<66<2( *I*I
$ , , " , ,, , 01 , .1 , ,# ,K '% :%
,# ,.&2, -#"#, " ))
"# .* , ) = '
( 0/& ! 5 ) " ), A" ,
""= -6 .'% .F#$0 %' %% ( 'E"%( '#% "%'% , 4*+( %E3I%4H6( K#% '% ,'%E2 E( ( -6(
0 BI? ""#, M& , 0 G*. # ," &BUL*& dU"
d*d , ? BMJ# .& '% # )" # ,# .*$ , " %
, "%.
JL
!.4)# "
,# , ", #" "%"" , 7, N&$ # " !.!.! #", " , "%" .*
2.7 Manipulation of bit strings " !.I# # " , #01 = #
& C # )"##. # & $# "01 +#
, '# , )#& % :! &*# &:! &*.9 ,#,:! &R "" " [email protected]. # ",
&' 2"" #' ," #"" , " 6.! " ', # 7, #.
2.7.1 A sister of character – bit operations ' #""7,#,: = 'I: <<( 3MM
" << , , .# ,"H )" ,"# ""
" " MM.## -
" . 3EUIMMW(
" "
" "
#. " :(4#5$14 , ,=
!.6,
JM
' &-
"," )# @ ," 7, << )",#." & 7, '?' " # )",#. #,' , "" = +## . 7, << ," " = '2G-I( '( <E% %"<( G <E% %"G<( % < G: %% <( (
#," ' ,# " , +#
"" " ,#
,'<<K " "
@.( "#' ,# " ,
, "# ," ) % ' . ""# ,-," ' " , # . ,"" ,
, K , ,"
, # :"! # ' ," " +
," # &*
<<
, ", A# ,, "" . ,-," ## ,= "" "" . ,-," ' " " , & # # ," *. 4 ,-," %% .
" ,"# " ) -"#/)", 3& " W , *= 'E+
# " #," #"" # " ## #,. ,& #* "
##
##
##
<<
##
<<
( 00& H H
JI
!.4)# "
" "# .9 , # ," ,
" , " , ,# # #" ,., ,
2.7.2 Set theory – working with bit strings ", , "" .BI 9 ," ) & ## ,# )
G*= 4I %!G %' %% ( '/!455 H-
## , =), " # .4"
" #
K " # <<
"" # ., " " ")"" <<
" <<=, "/#3 "#)
#01 =/!XG .
5#@B# '" ' # ,", 01 , = &..," ,?*
" 7, <<.5
#= 5#@B!???
, ," . " #= BI , ," 0 " #,-! "# # . # ,$# # # # " # ,
.
!.6,
J6
' #
. "" """ ," , '," "01 G " " , " # "" " , " " 7, . 9 , " ,# # # " " "#. "," ##' ' # "", . " """ " # . ! #" " "" #. " " # ""," ","
" , = '8", I( 8MM
,<SSSSSSII<&8 " # ' * " #
2.7.3 Orienting the machine – UNSPEC and others ",-," 01 "",# '" "" . , )# ," ,= ' ," , "#01 . ' " #/, "#3# / ,,3
""#" .4)" ,-," '' # # " # "# " ## . $ #" ## #=, '," $8 ##," , K ## ,#. , , $8, ' , ,# , " " "" $8 , PE\PO#.EO. ##01 " "% ,
.1 = , ' ' : , !-) ","" "", # ", H,. '," ,
, ""# / - 3= 3 $# $# ! . 8
", ," "H, " ##"" " .## ' " , # ,# -. -
J@
!.4)# "
, -"#42" # ,)" "" " # = '.' <E<( '.3 '.X
# 7, ,-," '."""" @ ,")", "/#3" . ,/#3<<, "/#3 " ,"#. ,/#3
#" 42" #G , # ,# - " , ,### ", ,# ##= '.223
2:"!2<<23<0<(
" ,# #", " + ,- ," ,# - ., ,, = '9( '.' <E<( 3 '.( 223
, ,# " ## " #
, ) "" # )"." " + " , A # # ,# ,", A ,", X#M # <<
<II< , " "# <<. " #" ,#
# ," , #
" , .," " #
" , ,"# " " , ,
,# # ",#. # ," " " " # " ##) " . # ' # , ,-," ' #%'. " # "- # ," 01 , ,## .0"
# . , " , , ," " , ,
,## , ## "# .
!.6,
JJ
5 ,
"- # ""# . , # )#", . , @I L #. ))#", ? @M, ? J #$24#5 ".9 ," <II7III< <.<,,#" %#"
)#", "" = 'E'( E3<+1<,( E(
)$" # ,. ,- , " ,- ," "" "
, , #. ," ," # "" #. ," ,# )
##
" # L. B6 # ," ,", ," "
. ) ,", E## )" = 'E2 -"%2 -0'2 -/"%( '2 -"%2 -0'2 -/"% & (
,", E ,, # B 0 & -"# ##* "01
, , "", "%, A " & . 4- - #@I- - , ##
# @ " #" )#". ###@I- ,#. ,, # ,",. $ !--L--#@-, ", ! , ,#"" # .":! & !- ) !- , .5 " # & !"% ".* , L- ,#. C " "01 # , ," #" =
B6 #, # ""
"
=5 & "
,# ""
# ".
@??
!.4)# "
'E I2 -0"%2 -Q'(
E ,, # # # , "%A #., E# ' "", @? , 66G $ ##
, "#.5 )"" )# ). :! & !- ,# # , # ,# .9 , "" "& ,.(# " # , ,#' , # = " , #""
" . 5 "
,# " # ! , . ,#
# , ,
." " & " "" *, # , ,#
# )," , , ," ## ", 4.
" )#- , " #
#" # ., , #"# # " ,# ,, ,&, , *= '/", H2 4H( /(
$"" @L ,=
2.8 Abstract data types # # ",
# " "# "" " #.01 ## ,"## " #"" #" " ," A -"# "# . " ," , )" 01 A " " # .
2.8.1 Types having aliases – DEFINES ALIAS # ## , , " . ,, # ) , , , # = " ", 4(
# ,", #= '0! (
!.@$ "#
@?@
C # ! " " # 01 ,, # ,. &01 ,##) # , ,# '# ,.*9 ,# ! " ,# ". # -"# " # #G 9 ,, )" # ".
# ", 4" ## "" # ) .B@ $ # " , ## # " ##
" " "7,#
.9 ,, " # , ,",.
2.8.2 Showing colors – enumerating types # #- # # , #"# # # - .5 #," # " = " % .%% 2% &2!%2& 2 2 &%2:%(
# " % , #" ##.
, ,#., " % &"." . 7, #" = ' "'7'%%!.%%(
" )
'%%
# "'7'%%." G % " " # # . " , ," %
.% , # " . ," " ,
" ,# "
A # "" :% , .," # , , # # # %#!. ## ,")"
, , , # # .
# ," , , % K)
= %.%%3 :%( ( %.%%3 &%% % &( (
) , # , ##.C " ,
,, " #, "" N A
,-," ,
" " #, B@ 5 , " = G
@?!
!.4)# "
"" = % .9 , # " ,#" G 8 # ,# #)= 4 %'%%FJ1OE$ %' %% ( " % J %7'%% 2% &2!%2& 2 2 &%2:% '.%%!J %7'%%( 'D%'):( 'D%777 %7'%%( J '%% < '%%2<( &D%( 1 " %'%% D%777 %7'%%3
D%777 %7'%%3<<( ( "% % "D%777 %7'%%
D%MM< %'%%]<( D%MM< % %'%%]<( 4(
#"" &#- G*#" "" . " .# ," ,#" " , " "# ., ,#= ," "# " . $# "#= @. 9 , "# ,A +#. !. # " "", , " "" . # # )#, "# . " , " , . ,) ,# #= #, "
"#" .C , ,-," . "" ,= % " % .,, " # J %7'%%N " ,-," 7,## # G4)" = # # ,- ," ,- ," , ,
!.@$ "#
@?B
## " , .,
"
," = %.%%3"J %7'%% J %7'%%( (
, "#,, )"#"
# ,."
" "7,# ,," . $## / 3,-," = % # % ''.% , #"
# % '' ,""
,. ,", "= %.%%3"J %7'%% % ''.%% .%%3J %7'%%( (
= , G , , ## "
, " ,", " % .
" % .% 7'% O%: -2D2: *2% '% )& (
, #= , , . : , "#01 ,? " #" " ,@. :
"##, # " "# #
, ###" " @. ,# ' "" && & * H,
,"#, "#" =@! L , . & " " % , ," , L .* , ,#
" # "
#" , ", ,-," !: &. : *., : O%* : % (
, ,## , # ,# "" # # . 5 , , " " # #,.. ," . ," "
' # ' " " # )=
@?L
!.4)# "
4- .% :% J#.2.EG %' %% ( " % % 2 7'% 21( ' !( ' -!( 'F ", 9 & ( 3'2F ( -3'2( % ( % -( 4-(
# ,'#' # % .," ' " #,,"# , ## , ,.$ " ''# ' " ,#, "# "
#, #. ," ' ## #, , ." " #,
,A"" # $8, ,.5 ' ,, ," " '" ,
)./ )3", ' " # #"" #" . ,, " 01 "# ,,",-," '.$ #
, ," 01 # ", "
. 250#&"% ' #*, , # ' A , .
2.8.3 Strong types – DEFINE STRUCTURE $
,# ,",. " "7,# )
" L.L.$
,", . , " )= " ' J% 2 -O %", 42 -1 % %", 4(
9 ,## "# . )"# " #" % = 'O !J% (
" , # O N = #
,# ,",GC ##K ,", ," # ## .5 )##, '
" ,", , . )" ,# ,,G$ #
,
,", # ,
,", = O 3I( "% O ( "%
!.@$ "#
@?M
,#
", '" J% " J% "" .0# " , = O O %2O 1 % %3I O O %2O 1 % %(
5,", , #," . ,", , # ,, ,- ,", ""= " ' #!7'K2 -O '-I:2 -1!7& )",'H2-( ' :%!#!7'K(
9 ,, , , ,",# , ,# :%1!7&3I(
) ?.1!7& " #!7'K # #.
,", ")##= )
" L.L. 8 ""7,# # " = @=" 8, ( !=" % 8, ( B=" ' 8Y % Z2-8, 2...( ( 05&(C! 6DC@C 9&/&)7
2.9 Time calculations ##01 "# ##, ,- ," " ,""", " 0 < .C ## ,"" .
2.9.1 The fright of the turn of the millenium – date and time !?", # #, " ,#
#L# .# !# ##G, ,-," " 01 # #@JII=, !# . # ,# # ," " ## #.$""
@?I
!.4)# "
'17 ') ( <1 <2 17 22+2< <2 17 2H2-2< <2 17 2)2+2<<2 17 262-2<<2 17 22-2<<2 17 242-( -III I 4)+446
,## , ,#, # # . # " A " #"
" , . 8
#. ,"
## , G #=
- #
111 -##,, #. , "" 4 .
#
"",&)"
# * )11QQQQ- 4 . "
" # )<-4-II)<" <
11QQQQ<. '
, # "# ' ,. , 7,&
* , , ,-," " ,,
, , ,"" #
""," " , " ,/ 3. #, # #A,
# " " .
2.9.2 A language with SECS – the Lilian format 01 " ,7,##, "", .## #, ,-," 7,#. -"#1 A # #1,1 < "#&"" # "@J?? '#!???
G*.," ,
!.J"",
@?6
@M " @M@!BJ. # #,@ "", 01 .,-," ! , #' , " #,-," ' , , " # "
# " . C)" "" = ," =# "" #.5 ) !<-IIII6--<2
,, # # " # #,!!#!??? " #," < "#. , " #,01
, ##
, #,, . , # , = !" 2+MM<--+<2
" , # )" .&, , / 3 G* !, ", 4,#'"% ! H4,
#" #. $ ," ! # ' ) = !% # '% " ," " " #," ,"# .5 #," # # " # ,-," !%' # '%! . , "",, # , , ,# ## " # I? ,# !LK "," ,# ,, , ., ,# ,# , ,# #N # ,-," K!.9 ,# ,# 01 ##,# ,6. L? $ , K! , # ,#!. K!!<-IIIII<(
,@ ;,!??? ,#. ,"!#' ,"",-," :
, . , << , ### "" # " #,
, " B.B*. , ,# " @J?? " ,= ":<6III--6< <6II!]<( <6II %!]<( BJ 0 < ## # #"L " @M@!. L? # , , " ##@I?@"7, #,@# ,#,6.
@?@
!.4)# "
), ,!??? 01 =# # ,,#",#B@ 2"JJJJ. C , = ';< 0 0 +0 %
2.9.3 Revenge of the inherited – conversion of years C " " ##
!@ ,. # " ## ,# # ,-," # . !+ )# #
", .,-,"
. <66II-<2
# "" #"'QQ11<# " # #"" #"'QQQQ111<. ,,, 666II-. ' M? ,, " %. % 69I ,"" )J? # @JJ?#6? !?6?@? @J@?.$ , #= !? )",# !? ",.9 ," " , ,-," # ,,.$
,
" # " / #3# . # " " /#3 ,,01 . ," , ' 5 ,"/"3 " "# ! ," ##, #
" # . , # )" = " # ,# #,"#" #
",# #, # " . # " #" " #" ,,
. # " ## '# "". " " " ) " ##
.$"" ##" "" " #= '!'5( "!U3<< % '% & %'% < "!U<+)I6I-< '% & %'%
, ,# # #
"
# # ,# )## , . ,###
!.J"",
@?J
01 " # # " " # ",# = '17%'5( '!
, #,"### , =
' % :! &
' <6<
", '2I
7, #. , " ", , ,# " " 'K % ,G
B. " # ,",
@@@
3. Block and program structure '#
,", . ,", ,#
" , # # ,###", )" , .8 ,## " "", , , # ,""
. ", N A, " " )"" ,",. #,. " ##
,- ,-
,- ". ,
," ,- 01 # ,- "# "#, .
3.1 Scope and lifetime of variables $ , " , 7," 'O", ( &O( 'EO"%( % <%K
# $.9 ," #
," ,#= " # , N01 , " "", )"
" " , ## ##.," " "# " K& " #%' " .
3.1.1 Useful overhead – the BEGIN block 9 ," & " = 'O", ( &O( & ( 'EO"%( (
5 ,#, O# ,& " " ""+# & # . "
# E." ," ## #", .
' 7, ., , # & "
,#
,#G, ,
& " #" " " .(# " #
# " #. ) E " ""
# ., E " " . #O#"# , # " """
# # " ." " " # " " #"#",#, " # " ., # , .
@@!
B. " # ,",
C, )
# , ," ."7, ,# # #7," "",# " #"##" . " , #" )" , # " . #," # " , = %$ $ 6! 7
& # & " = @. " # "# ,
" "
!. " "## B. " " ##" " ,#"
. " # # = @. $"/ #3L@ -"# , " # , !. , #"
", #" " . ,
# & -"# "* # ,
# 7, #. , #.
3.1.2 More than once – the PROCEDURE block -"# %' "
# " & " . # %' " G "
# . ,, %' " , ,# & " .5 ) 7," 'O", ( ' "% I( &O( & ( '", ( 'E O"%( &E( %3%O( *3E( ( (
L@ " #, - #," "
.
B.@" #
@@B
&O( & ( '", ( 'E O"%( &E( %3%O( *3E( ( ( (
" # ", %' " = 'O", ( ' "% I( &O( 'J7 7 7 ( &O( 'J7 7 7 ( ( J7 7 7 %' ( '", ( 'E O"%( &E( %3%O( *3E( ( (
9 , # "#,# ,""" ' .8 7, "
,# '
. "#," "#)",#.$# )", " , '. , 7,"% ' %' " )",#,)", " ,
"# .
3.1.3 Taking care – nesting of blocks " "#, " # # " .1'
)= 44 %'K ' %' %% ( ''II:( 3<E<(
@@L
B. " # ,",
& ( ''II: <<( 3MM<<( '.( (
.%' ( 3MM<.<( .(
( 44(
7, = , =<E< <E.
# " ## "# "# ,
#& *." , ""<< " "# ".8 . "# #.<.< " "# , "N A 01 " " "## " 7,"= . <E.< ,. " "+# " .$##" ,# " "#A " # , .9 ,# ' # # " # " #., = '
% & $& " ")" %' " .5 " ," . # % # % # ) #" " #
+ . % " " & " " #"# ," #." #, % . & Y%[%Z%% Y [ % ZK
( 08& IC! # % + . # ",
%% ,# %' & . " B.!.6*. & " %% # =
@. " # & " "# ##& ! *. !. ,&.. ", * ##
, ,# " & " # '",, , - #," #. , #" , %
#
& " #. ,# ,# , ,#)",#"
A # " ### , + . %% " ,# H" + "=
B.@" #
@@M
' II", 4( $%% %3%II( %'K & %% ( '0 H", 4( &0( 3 ,020-20420+20H( %'K( $%%(
, ," " , "#, # & " #, 01 " " #" %&.
3.2 Structure of a PL/I program $ ## "" ," ,#& # * ,- " ," . 01 "#, " , ," " , . " ,"
" ' .
3.2.1 A matter of order – parameters $
" , "#, " #
, " ## ..
. ) ,- " "" # +. , , #.. " , # "#,. " ,#
, . , "#
. ' , " , # ,- A , " "# )= ' E22.(
,# " , %'
,- = %' 02Q2(
"" E#.""
,- 0Q# ". E#."#, K 0Q#"# . 7," "# " ## # "" ," " - ,#. = ' $-
.
@@I
B. " # ,",
",,
# ,- & " #*, -"###
".. ##
" , ,.C
, ,#" . ), # # ,- # , = 4+ % &%" ,III #EJEGJ %' %% ( '.% ", ( '", ( 'O III"%( J & % "! ( <#2 %III <( %3%III "! ( &O ( ( .% 3 ( %III O1"$ % &! '%.% 2O ( F %"%! O %3%.% ( % %' .% 2( '.% ", ( ' "%( '", ( 'E ,"%( '", ( ' 7%", ( %3%.% ( 7%3( %3*%.% ( "V 7#% 7%3( ( ,' &%" %" " 7#%W3 %( E ,3( 3 7%( 7%3E ,( ( ( %( 4+(
B.!,", 01
@@6
5 # ,#.
@ @???, #
G " ," %
" , "
. 8
G " , , K " # ,. # )@???,
,- # +."#"# " # # , "" ,- % + ,. ,) #" III, , O # " ##".9 ,""
,- @? !??? G9 ," # &. * #
"#, . "#, )#. -"# "
.9 ," , 7,"#
, " ,. , , )" , A , " "". , "#, ##" " #
," """. 3 +## 7%35= #)=
@
!
B
L
M
I
6
@
J
= @? !? B? M? 6? L? @? I? J? ( 09&
, "#, # . "#, # #- # ", " # # .
"#, #,"#.
, ," .9 ,
# ," "#, . ,# , # # = $ . 9 ,"
,- , "#,.$# " )" ' := EO %' # %% ( '# ' : % & (
C, #
@??"" . ## ," ",.
" " # . $
#", = #
H" # # ,, /### 3. #" = ," " 01 , .. # " 7, . ""
# . , # = & &# 02Q(
@@@
B. " # ,",
,%' = %'%% %,'%(
, " "## ,# ". 9 ,# # ", ),, ,, " " & " MM*." """ ,##,
% & &. % & *. 9 ,"##, % & ,",H, ,"## ,& &.& *= 'E 2 -"% % & 2 -.", 4& (
5 ,) )" ""#
.9 ," "& # % & "' .
3.2.2 One-way street – dummy arguments ,, ", , # )BL ,- " ",, # ,#.$" A , ) A, ", " O . ,. *+$ $# ! $ 4 & 01 , ,
, " )
", , . " " , #" " ,- . , " ,
" , "..' "#
., " ,- " "
# " & ,*# #,,
#. # " ," , " ," . , )
", " . , )
, " ,##
# " .
"" ,- " #, ,. , ", " ".5 )", ,#" # "%.#, , ,#" ", # ,#
# ,- . $ "" )# , " ## " " :! &,#" A#,, ,# #G
B.!,", 01
@@J
( - % # ! # 6 # 7& 3 # % $ ! $ % & , ," ,- ", ,- ,# ,, #, , , , ,#,"#. ,- # , , ,# . ,")
# 01 #," #, ,. 8 , ,# = '=9 ) 0 ! " ) ! ! ) ! " ! H &. " 0 "
"" #, , # + # ",#. , " ''K'% "% '" ## ," "" ." L.!.B ''K . $ " %, %
. "
, , ," # #"# & .
3.2.3 (Not) lasting long – AUTOMATIC and STATIC " "#, #, " "# "" %# # "#, " .$"" # , # , % 'K #" ,
" . ! .. #,.,
, % ' # )" "#,. # ,",
#
, = # " "# ,- G $ % ' , ' ., '", ' I(
#" ,- " ,"#".+ " % ' " ,- #, # # .2, , # ,K," #, )", ,"" A## #" " ,",. '
& ) # BM"# # # ,- # "" " # # , " .
@!?
B. " # ,",
4H &"% GEG. %' %% ( 'D%'HI:( % "! ( &D%( %W "! ( '# D%( &D%( ( '# <<( # %' D(
'D' : % & ( '$ '9I: <<'( '( &D3I%( K$ ( ( ( &$ 3I$ 3D( &$ * &DV , &$ $ MM3<<MMD( %%( K$ ( $ 3D( ( ( # ( 4H(
, # ' " ,,," ,- # ,
. ,,' ,# , " $ ,# "# "#+# , . ' ,"" # $ " ,# , " # . " ,- ,#".8 " " " ,#
G ,# =# )", . # ,- 0 , , # " "# ", .), "
" 0 # #" ,- ,#
,, # " "# . . " "#, " .., '
" " .C # , ,"
,
.$ ,- " ).."
"G 9 , , # ""
"# A)" # . &,"
B.!,", 01
@!@
" # "" . ,# ), "" ,", ,-,"
, & .
3.2.4 Home-made – functions # ,-," . ,# " ,#," , .%' " ", , , # ," . "#, # "#' "# , ,." ," "#,
" ,-," .. #, .C ""
,," , " "
.5 H, #
,= Yreturn valueZK
( 0<& A'DAC ,, # , "#," "#,#
, ,#. ) @?? # # ".$ ," "#,#. ,# " #= 45 ' &&%" '% %' %' %% ( '1'% ! II'HI:( &1'% !( "!"% " . ,1'% !( . , '!% %' 0 'HI:(
'0 ' : % & ( '", 4( ',", 4( ,3% 0( %3% 0*%% 0( "0U0,
,3( ( 0,( . ,( 45(
" . , ,# )
"..
# .,1'% ! #0
,- # #"# ' , + "" . ,-," % # % ##G
@!!
B. " # ,",
%' . , # ", ,," , .C" , "# " ," ", ," ,. , %' " " G # , " # )BI= "" ,# ' # +"/ 3 , #)
#&#, L ## M?*G '>I0 0 +0 )! !! !
. ! ) !" ,"# ," # , , " # = 3 # $ &D # & ," ," #,"# G C # ,", ,#.$ ,",,#.4.. /%' 0 !J% (
$" ," # ,",= /0O %34(
3.2.5 As in the Munchausen story – recursive procedures 5 " ", # ," - ) " = "I3 I]3 " 3" ]3 ]
5 -" )=LG& =L" * , @!BL.9 ," # ,"," 01 " ," = /' J' :" % %""'% %' 8 ", 4' :( '8", % & ( "83I
( /'8 8( /'(
%' ' : , "# " ""/'/' " .$ ,"/ #3 , ,"+ " ," ="" ,# ,, )",#. "" #"
B.!,", 01
@!B
# ,
K )", ,# ,
"= /' :" % %""'% %' 8 ", 4( '8", % & ( '", ( '/", 4( /3( %3-%8( /3/ ( ( /( /'(
" " , " , )" , ,#", ", .#" @! # , ". @!G &@!BLMI6@J@?@@@! W L6J??@I??* ',", 4G $", # " " # . , ", " ," ) . # C , # . #IL## "#"" # + # .
)" .$,) , ##,# # . "" !# "# "= , # # ,) # ,) . # , ,#
, ,) # # # =
origin pile
,)
( 0=&'#F
# "# # # " .
## "" # < # G,)", # , # !IL @ . $
, # " # )@?@! 7,#, ##G " , , # C ,# ,
@?# " , # . ,# , ,@, " - # IL# ,#, ,B? &@??? ,*.
@!L
B. " # ,",
"#, , . , = ,# ,# )" # # #,# .9 , # ", "#&.., ,)*, ,##,# . # ,# ,", ' ", ,",," )B6 = 4) G%%"L %J.PJ %' %% ( " % #F& 72E ,!72G&7( 'L %42 F& 72 E ,!72 G&7( L % J'K ! %"K %' O 2F& 2E ,2G&' :(
'O ", % & ( 'F& 2E ,2G& !# % & ( "O U :! & %% % ,! 'L %O 2F& 2G&2E ,( K%&' K<"% <MM% F& MM <%<MM% G&( "O U ,!%& 'L %O 2E ,2F& 2G&( L %( 4)(
$#) # N " .,# ' = G9 , ,,= "% FJ\O7#$%GEJ\G7#$ "% FJ\O7#$%EP0$EJQ7#$ "% GEJ\G7#$%EP0$EJQ7#$ "% FJ\O7#$%GEJ\G7#$ "% EP0$EJQ7#$%FJ\OE$7#$ "% EP0$EJQ7#$%GEJ\G7#$ "% FJ\O7#$%GEJ\G7#$
9 , , # , ,)# # , . ,
"", # , #"#& "" ##*.
,# " , " , ,#+"" "#,
B.!,", 01
@!M
### , . /3& " * # "
.$ "#, )# ,." , " ##" . 5 , . # % ' "# "" ,- , ,*. # #, ##
# . ,#,"
) "," " "#" "#,."""
# "" ##
##
# , , . , ", "#, .", #
# ,"# #" , ", 7,## " . # # !# $ !
$#
# & 9 ,", ," #" ,A # # A = -< ) + ) %
3.2.6 Compile separately, execute united – external procedures , ,- " # "#, "#,.$# 01
,#, " " " .
"#, " # # ) "#, " # , ." " 01 "# ' . )", "#, , " , H # .5 #, # / 3 / # 3. ) , " #.5 " = 49 .% &:%, %' %' %% ( ''% !' : ", ( '%
,- =
@!I
B. " # ,",
'% %":% %' ", ( '' : % & ( '.% ", ( '", ( .% 3I( %3% &( ":"! 222<EFP% <3I .% *3( ( .% ( '% (
" ,# #. 9 , " '% #"# !. , !#" " ,# / 3
,- '% )" " ,' :! &# ,# / 3,", ,. , !#" & ,#/"
3
*" ,#
,""
)# )"#&'" :! &G*# ,#, ", 4,$8 ###"%, ## & , #8G*. "
) " ' , #,," ," " ) "#,.$ # !, "## # , ," , "#. , "# !# %'N ", " "#, %' ! , G&9 ,"# ) " .* C # , = ,, / 3 = K,49%a'% %aFPG49,
9 ," ,"" # #) ,-
#" , T%' .
" ## " . # , ##" '% "#, '% . $ '% " , # , ," , K , A "" #
G, , ,# , !#" " ". !#' # ,
:! &# :! &. ,K ," ," "#, # , , "#, #=
B.!,", 01
@!6
"=
nameargument list
'nameargument list(
,=
value(
( (
#" )=
'name !attribute list attributes(
'name !attribute list(
%' -
%' parameter list attributes(
O %' parameter list(
=
( 0;&@ #D $ , ,01 " " #" ! ,.8 ,- " ## ! " .9 , ", '% , ". ,
,"" , "#,, , "
! G $ ! " = ! ! " ,",#" . #" ,# = ' I !:(
, #: # " " # " # , ,# " .$ "
,#
,", "" " " .$ " '% .
,# " " " : '% " . '% ,# )#-, % & . 9 ," , .. " ,"#. ' """ "= '4+(
# ," # " "#,L." , !"
# ! #. ,# ," , !,= 'J !",'% ! ( 'J4+(
, ' "#,. "#, , ,#.5 ,# "#,J=
@!@
B. " # ,",
J OGJQ %' / ! ( '/", % & ( '# 7T 2# 7' ' ! ( "/UI # 7T ( # 7' '( J(
$# " , , , # 7T ## 7' '= %'( # 7T %' 0( '0", % & ( 0
-(
# 7T ( %'( # 7' '%' 0( '0", % & ( 0
4(
# 7' '(
' ,# ,,,@I. $ " )= ! !, , # ," "##," ,
#N A , = @. & *," "#. !. !,
#. $ " %
" ! " ,""
! " !
#= '/ '% !:( %/ '% 3 2'% ( '17' :I2- #2/ '% ( (
, ,
-," #.% "# ," ,-," K, , , 17' : ,#" # # ", #. # ,# # " ) "#, ,# " ). ,.., , , ,", '%7'% , 2 -O ", 4 I2 -&'II: <<(
B.!,", 01
@!J
,", " ##) , " # .4" "" ,"#" ""
.$
# ,
.$ " # , ", " "# A "#,G
3.2.7 Packed procedures – PACKAGE # , )BM##" , , , # , ,# ," "# .1' # .$ "#, 7,#= , , "#, " " # ," "#,", ", "#,", " # " . " ,-
. " #,
# # , ""
"" # # "#, . ,# " , ". ,# , , ,# ## + .$ ,.. " . 01
" "#, ## H". 5 "#,= 46 Fa'#E.8E\ %' %% ( '.%' !' :( '$ & ! ", ( '.% ! '4-:( '1 !( '.%'<E<( \K% '.%'<"%<( $ &( K.% ( '1( 46(
8 , H"= Fa' %, 46 'K&,% ( '$ '4-:' <<( .%' %' D( 'D' : % & ( $ 3$ MMD( .%'(
.%'%
@B?
B. " # ,",
$ & ' &%" %' ", ( &$ ( $ &( .% ' '% %" %' '4-:( $ ( .% ( 1 %' ( $ 3<<( 1(
1
Fa'(
, " " # !#" & * ," ,#" " , " # ."" " H" H"- # .." # "#, & "
#" , ,# # *. )" 'K&
# ='K&# #" 1 "#, """
1. # ) "##" " ..
# ## " ".
= ' E - 4 # 6 7 . 9 , " ..# "" "" ,## # , #. 8 " )# " = name='K&Y,%list of namesZ Y: Z Y%% ZK ( 5>& 3J3I! ,%
"#, " ) "#.$ & )* ,% ", = "#, . : " " , # " .2 " ) " .
%' & ,
" *. , "#, & , #*T%'
& ,,#*"
, " "#, " ", ,% #" .
B.!,", 01
@B@
! , # ,
" "
.# " "#,"" 7, #"" "# ' ." /"3 #)= "" " # " ,"# /" 3 ,& "
, *. E%' 8( '82$", % & ( 8( ( !$( $*8( E(
, 8 /##3 ,# "#,", "
#" , # " , .9 , "#
," ,, 'K&G < !
= = !YparametersZY attributesZK ( 5)& C'A" "= ! # # " ,",. $,#
#
" "#, , 'K&
, ,# "#, ""
# . ##" #" " , 01 ,, # , "#", & "", " " #,, *. , # & ',. , &" , * ,- ". # 01 " " " " "#, "#. $ )
" "" ," ## :! &, .5 = +I .R &\OJ. %' %% ( d ' '( 'O'4 % : < % <( ''II: < % !<(
@B!
B. " # ,",
'.R( ( '.RO( O( +I(
9 , "` ' . # ",
#" # " I.M.5 , # # " . ` ' ", # ".2#, " # ) ' ' ' '!
# # " #
.1,
, = '.R& '.7 :! &2 .7O % :! &( '.7 !' :( '.7O !' (
",## ," ,#",#` ' " = d % ( d ' ( d (
", # " . .R "#,L?K .7O#.7 )&", " # "#,*. & ' , , #01 " !" ! ." " , "", " * # .9 , ,# "," # # " , " "
G< ) = & 'entryname descriptors [2entryname descriptors] [2entryname%]
( 5/& ICA 2 " # , ," " "" # ," " # .$) # '#= '0& 'E 2 '2 . (
E ,# "#, " 0 ' ,& :! & G*# . )" ,& , "" *. # " ,## .
B.!,", 01
@BB
" # ! # 6# 7.
# %. ' )L?01 , " .7 ", :! &,## .7O", O "" )# & % :! &*. 9 , ,## , #" & '# != @ $ $ . " .R H"" .7O#
.7 " =
.R & %, +I 'K&,%.7O2.7( d ' '( .7O
%' O( 'O' & % :! &( '", ( '#:% 7''( #:% 7'3<<( %3% &O( "#:% 7'3<<
O223. O22( #:% 7'3 O22( ( .7O( .7 %' ( '' & :! &( '", ( '#:% 7''( #:% 7'3<<( %3% &( "#:% 7'3<<
223. 22( #:% 7'3 22( ( .7(
@BL
B. " # ,",
. %' . '%% (
'.' % & ( .2<E.1/\L^8$OF#`JGPD0Q@AB<2 <'"&aK %T :,!R=>;<( .( .R &(
9 , ,# " ` ' , # , ). ,% "" ,#", ,"K
, " "#, " "#"#. )# , ,) "
,- .:A#,, - =#, ,"# ,- #" ., ,
:! &"" #
)# " #.$, , H" .R & # '# . #"& ', , " ". Did you notice the third procedure, Cap? First of all it is not specified in the ,% list and secondly it is declared having the option . Cap is only an auxiliary program, in order to not have to write twice the oblong call of . By specifying %% this doesn't require additional effort nevertheless (similarly as with the same option in the & statement): in reality the sub-program is not called, but the appropriate machine code is inserted by the compiler on the spot (“inline”). If you do not set emphasis on German umlauts, as in our example, then you also can use the built-in functions ' and %' .42 C ) %' = label=Ylabel=Z... %' [parameter list] [%% optionse [' :Z [%|%Z( ( 50& A@DA # % # % & .$ , " + . $ + " " %% '. ,"#" " , ,"# # ," , ,# ,- , # "# ".#,%% ' . $"" # ) ' = L! 4 ,# ", # -4 "" ## ",
. # # " , # .
B.!,", 01
@BM
'Y !-expression[& '-name[ -name ] [argument list](
( 55& 3**
3.2.8 A dynamic load – FETCH, RELEASE and DLLs + #' #
# , ,# # = "' # . , ,- ##. " " , # ,- . C "' # #, , ,) , .
7," "'P( 'P02Q( P(
,- P ##"' )",#' # # .," # , " / #3 , # #, , # / 3. : " " ", #) ,- ". + ' # #. ",=
"
"' )",G " , # # # "#, "" ." , " , #)" #, ## ## #"'.$ ,,,
G 4 ,# , "'# ," " / 3 "#,, # = 'P !"%2"%%% "'(
2, ' ,P ##&# " , )",#* #.
," "'#" -"# 211 " *. 0 ," # ## "#7, "
&#, /3 *.9 ," #,"211 01 ," # .9 , ,# 01 " , & "#, " * "" . 1' " " "#, #JF\ =
@BI
B. " # ,",
%' , "%"( #'K'K&,%#JF\( #JF\%'( N< #%&]N( #JF\( #'K(
## " "# , "%". #," " ## #,"245" ,"
#,"211.
! " " "##'K= K% !1$$#'K%a#'K"
# ,, #," #'K, #'K"# " = K& #'K" K% !1$$#'K%a#'K,
$
"#" # "#, = L%' %% ( '0 !'% ( "'0<!1$$#JF\<( '0( 0( L(
#0:< " "#, ,#. , " "#,
= "'#%& <!1$$d<(
9 ,"## "#, , K ,",
"#"' " &d*.
211 "" "#, , #. " ) :, #'K& " ," , ,211 .5 " #" : : = L%' %% ( 'J'I:( J( L(
, " " : 'K& = #'K'K&:J( 'J'I:
B.!,", 01
@B6
,", " :# , " ##.9 ,, " " ,
,)" ## ", # , .LB, : ,% "#, .$ ," " "#" #" , "#, . , " #'K " #211, )# :, = L%' %% ( 'J'I: %( J( L(
," # ," " J
211 " ##.9 , ,##J
# " 4%4K )", J/ #3G 9 ,"# " ,.. "' ., L"
, " #'K 211!1$$= L%' %% ( '#( ''I#( '0 !'% ( "'0<!1$$J<#( ( 0( L(
$ , ""
& "#,*" #211 , " !" "' # = "' !-constant [ odule name] [pointer](
( 58& ('F ) )##= !-constant | (
( 59& A*3
#, #" ##
" .
LB ,"""
..# " .
.
@B@
B. " # ,",
3.3 Exceptional conditions " )" " # ,# " ,",01 ") #.4" " & %' " "# " " ,".C # '## " " # " , #"" 7," " ",#
", " .
3.3.1 As a precaution – handling of conditions 5 " ,01
.$ &# "",* A )" " # . , )" " # " # .5 "'% % " # "" "",.5 , ) , #, # " # " " #.
"#" #A " A 6?. " "7,#, " # . 5 #
", " ) " # # # ",
% .4" " " " # #""# " " ""," "#" # % . ) = @= % condition[, condition]...Y Zsimple statement
!= % condition[, condition]...Y Z& -block
B= % condition[, condition]...Y Z! (
( 5<& @C , ,# ".. # ?# "","
",
',
,
,"=
% R%:2",%:"%
" " # )", ""," " # " &.. " ,# .."*& # #. "# % "
, ) .8 ,# # , % ,=" ""," " # " #G "# % ,. ", )" " & " #! 7,""= ,#" , & " ,, # ! " )" ," " , ] #," " # ."" "" # "
#, 01 ,.
B.B4)" " #
@BJ
9 ,"#% , " )",% " . ,' , " H, # , ! " ##. ""," " # &
*
,,# )", #."
" . ,"& ! * "," 7," " && # %' *. , " "#" # ,", " ,"," , , . #" "7,# "" #, " ."#
,,-," # "" # )= + J % G: O1/$" '% %' %% ( ', III"%( '", ( % "! ( &,%3% ,( ,%3% ( +(
#"G$ # , "" # # &01 -"#, " " *", & ## "#. $ , # ,, ## %, ., % ## "
. , ", &
" , "#
&! * " , & "*#",@???, #. , #,-," '% .## ," "##, , , # & . ,# # ",
= , ,# , ," % #% " "", ,# " , , # ,.& , #)" % #% .,
, # .* ," ,
".5 ) ," ,#, # "
""," @???#" # #.$ #," #" # .$
,, , ,
. ! #
&' % !& , # % & " &,* ,= , "" ," # # # ," " # . ,#
,
,# , ! & #,*.
@L?
B. " # ,",
01
.9 ,", " # #" , " &## ", " ] " # #*. :conditionK
( 5=& A?A' ,-" ," " ##.
" 7, ! ,#
,G9 , # " ". " ## , ! , " " , . " " , , " "" :" ) , " # ##% " , " . " , /"3% -,A.. ,
. & " # K
( 5;& IC3* " # "# #. )"" # " " #
.$ " #"" #
"# " # " # K -" # . " # "", -" # , " # 7, . " # " #6?" ,# #, & "! (
" # " #"7,# ,-," % '%# % ,, " " "#"#% ,. % '%, ?= '% '% ( % "! % '%( & "! ( % '%(
, 6? ,#?. #" % '% G # % '% ,#" ## ## "%&"" # " #
"
" , * ", # ' 8 ",", ,##, . $ ,# , % '%, = % '%(
, 01 ' # ' . #" !01 " ) ,-," . " " " , ,, ," " ,# , ,-," % '% .
B.B4)" " #
@L@
# ,# # ",
" , " / , 3 "= & (
( 8>& AIC3* 9 ," % , , ,# " " " # .5, "
"", ," ", % ,# ## & )",#. " # " ,# .9 ," " " "
"" # " ## .5 ,
-"#" # )" = %",%:"% O 3O O (
)" , #," , " ")# .& , #.." , # , .*" # ) & %' " ."7,, %", %:"% "#,, #" + ," )",%:"% ##, . 01 , /#3#/# #3, #. ""," " # ) % " # # # " " "##" # ) , %" # #. "" ##01 "" # # # "# #. "" # . " # , "" #" ,& % '% # "*# "# & *
. " # #,# #" # ) %= L= J= @?= @B= !B=
'% :%
",%:"% :% %:"% R%:
('% :) ("%") (%:) (R:)
( 8)& 6 , 7 " # ,#= @M= @6= @@= @J= !!=
R & &
&R ' & "%
(&) (R) ( &) ( ")
( 8/& 6 , 7
@L!
B. " # ,",
" # #"# #" # ) %= @= != B= M= I= 6= @= @@= @!= @L= !?= @I= !@=
!'% %
( !'% ) %
( ) '% %
('% ) " & % " K!
'% %& " " "
( 80&6 # , 7
" " # " # )= %%"2 % " EO "% & % %:"% "% %%'% %' %% (
% , ,, #"# " % ,.
= ,& " .." #
,, &%% # & " #" , ,"H, &%%= &%%label(
&%%label(
( 85& I@'@ 5 =##, " # 01 # "" "" # #. " ,#" " # A )",#)", " ,
)", -"# %" # . , % % , .. ,&%%
## #. %" # " # = @. ""," " ## !. , % , " , B. )", & .
B.B4)" " #
@LB
,# , = "$
%
,# # & 8 % ,= " , &%%
,. " 01 ,"" . "
" .., " " # # ) # , # ) " " & " , *.9 ,"" ", = @. " , ..=
!. % ,&%% "# ,"# = % '% :% & ( '.% ", ' I( .% *3( ".% 3I &%%( (
," &%% -= " H, """# " "% # ,. # #. &%% ,H" " = ) ,, H, % , "" # " G ( , #01 , &%% , #% , .
" -"#
", , - , ," $ 5 . 9 ,"" =
#, %
,, &%% #H, G,",# , 7, . " H, " &%%H, "H, #
. ," "
#,"" , # ' ," ." # , = ,# ' ", G !&" .
&%% " ," % , )" . # ' #,
"# # ,", # ,", # ," H,, # "#,#" )" "#, "
# " & H, JJ ", 66 # "#,*G " %&%% ,"#"01 " " &%% , #% ,.
@LL
B. " # ,",
3.3.2 Also Roman numerals – computational conditions
" # ,# ",
#.4 ,#
, ##+ R%: #.$ "
%R%: ))"# ," " " ,", ##+ . %%:"%# %",%:"% , ,##. %:"% , ) " ##. ",%:"% # , )# ##.( ,
" , ")# #. ",%:"% ' . " , 5 #" "% =) -
, , "
+ ## ,
+ " # # # #. "% "", - 444,
,
" # # % , ##. ' "% , " , " ##
# " " "%". " # :% # , " , # "% " ," /,3/3##444 , /,388&/8 8,3*. '
"%, #&250*. R" # "# #. # # "" , " ,# ,## # "###, #"# + "
# ,. " ", R).#" ",%:"% " , "
R "#
" ,,."
" "
,#"
01 R " "##." # )#,H, , R, )"#.9 , ,# , R
,'" # = '8", H 4-)5)( R838*(
," # )R , ,#' # " ,
, ,##" .$ # ' G& B!6I@
", H, B!6I@ ,.* " , ," " "",.," 7, #," "" , ..#," " , "." # # "# '% :%
. ""
# ' , " # . 7," 'P", ( P3<0<(
B.B4)" " #
@LM
""0 ,"P " .'% :% " ##, "
& "" ,
&.. , )"#*. " ) ,
01 , # " ,"# . " , ",
#: , A#7,)#$ G +- J & J% .FOJFO %' %% ( '% % ' ( 'J%
2H2I2HI2II2HII2III( ' )'' % &
<<2<<2<0<2<$<2<.<2<1<2<<( 2$ 3I( %3 &% % '%! :( :3<<( %83%) :( " % % '2238 %( "8U3$ %( *3D8( $ 38( ( 3D8( :3
@LI
B. " # ,",
" , ### = % & "#'% :% * ,
"# # , ## ,.
,
& :* , ,# : &J% *. '% :% " " : , " 01 ## ,& & O ,*. ,- ," % % ' " " &# , * ,# -G ,-," , "" " . "" , " ", ,. ,%.. #
,""# " , .&
" '% :% % ,# % % ' , ,<.0.<" # . " " +" ": , . , ..1&%1 ,#" "*
# LM "
, & *, "
" +# ,"#
" 7, ###. , " 1&LM*: # "
, . '% :% % , "," ,
, % % ' ,# -" #.01 " , ,K ,#
" #
G ,## , % % ' ,# -& ,# - % ' # * 01 % " # # " "" #. " , ,% , &%% . ," O "" +: ,.
""
,"#
% % ' L.:% % ' "" . ) ," " 7,
. , #
% % ' , 7,.$# ,# #"#N ,#" #. #D#. #"#' ,#+#"# % ,.$ , % & " ##. ,# ,-," % ' " , , % % ' " . % % '
#"# '% : % % ' ,")""""# ,#01 #, " . ,# - % ' , " " )" "" " .0 ,""
"" " ,"
#, ## , " # ." , , ,# , , ## ,"G , =
B.B4)" " #
@L6
-J1 # 1 ! 76' 0 <
!!! !!0 ! 0!) . , + + + ) + !
' . "!! 1! *+ K - G "!! +L ( 6 I ,! M& 8 @ ) ! !1! !) ! + 4 ! ! . ! ! < ! /0 ) 00 ! )! . 0 & L(M+LL *M7 0 "!! A B *JL8J& 4 %
3.3.3 Close encounters – program testing #, " # " ) ,"
, ",# .$ , , #," ," , "",.9 ,"# # "" , # ",
, " "
7," " # ,- . #
. , , ## " )" , " H". ## ",
", " . " , ,# "# &/ # 3*.. , # ", , # " , , + 01 , =
@ ( 88& %
".." # , & ", "%".* ,#. , "
,# .9 , ,# #"" ,#" # 01 "#,. ,# # ,
@L@
B. " # ,",
, 01 " , ,# " , ," ) . -) ,# #= @. $ # "
," " # . !. " " #" # " " . ,, " " " # " "
,# ,) # =# . "
,## , ,. , , ,# " " " " ,## )", . $ ! $
%. 9 , ,# " , " .9 ,# -A
A, , " #"" "
, .# , # " ##, " ,- . ," "#
, ,- ,)##," # " # #"# ", + " " #
# . : BF3' F@B.' BF3' 4*+ F@B & 01 -) ,"7," #" #,# # C$ " ",# C 01 " # C$. # ' # " , # / # 3 / -,3. , # , #/ 3" , )
, #"- . ,H"
" ) ," ##, ,- . 4 , #" "
##
7,"&/ -, 3* , ,- "" #
" #, &/ # 3*. )
,- "A" "# "#,A" , @ != , #H, ,
,- " , @#!. "
"
" . # #/ # 3#/ ,3 /3G9 ,
,- # . , # #"
" # , # , # # , "
" , # # #, )] .
# # /4)0 3" " ,#" +# / # 3 #. ##"
B.B4)" " #
@LJ
# )", " # # # " # # A # =
" # #," " , .
# , # ",
.
"" # " .
9 ,#"#)" ,""
&# # *.
" " ` . & ` * # " #", " = 03)( d&( F
" ,## A " ".&$7,#
" @" ,@ " "#" & -2)-2 .*8 , %
#,# ", # ,# . , ,# " ,
( 89&
@M?
B. " # ,",
" # " ##.( , # "###
# " . ! "##, # #,# + 2,
,#05 # ""
.5,MI ! &. #
" .9 ," / , 3 , , .$ )",#", ) . # ," , , , " , #.9 ," .. " " "= '(
## ,, &
#,. -#"# # # # , # ,, # -#"# # -#"# , ,
," ""
= '0 -4+H5)2Q 5H+4-"%( 02Q(
# # # % "" , "# # #. ,, #7, ",, ,## " .. = 03-4+H5*III)Q3 5H+4-*IIIH( -#"#, ,, " , , " .4
, , ,""# , & .
/$
3 ,#
# 7,"
- , 7, #" # " . )"
"## ,,K ," ,., "
# " # K # .9 ,#
, # . ,
", " #" #
# .$ # " ,,"#.
" ,#, #
&Q2E22.20( E#.,"#.
# #
, " " . (
, "", . #" # " # ,#. ,"=
B.B4)" " #
@M@
&(
$,"
# .C ", " "##
#.2#, " , " ,# " " , % ' '
. , #,, &.. & 0 0# ]) * " # #.% , " # , " , , #. " ,#, ,-," ,, & " )", ""#.9 , ,#+ ," #" #"
G #"" # ,"
. 5 "
)# " &# = &Y"&file expression*Z[Y &&character string*Z variable list[ variable listformat list[ variable list YKYexpressionZZ Y'%!file expressionZ(
( 8<& I' '%! ", # ,, ## . , & K#'%! #. )
= Y"&file expression*Z[Y &&character variable*Z data list[ data listformat list[ data list YKYexpressionZZ[Y&ZY expressionZ(
( 8=& D' , & & K#. # #&# # #"& . # # " # & & ' & &R # R #," . "" # " , " # ). #" , #,"## " # ","
" , )"
" ,.## " # # % , ,
" , .0 ,### ,#" # #. ," # ) " =
@M!
B. " # ,",
, , " ,
" , ,#, R).
, , " , &"" *
" , ,#, &R)&,
," ##*.
#,, & ,-," ,# -* ,# , # #"# , ,#, & &).
, " , # #"# ,# , ,#, ' &).
,# '
" # #, , ,# )R2R&2 & .&
.* " % ,
,,. ," # #" " , #"" # =
' & %" #
R , ,##& % #*
&R ", ," , ,
& & " "
,"
,# &..@
# U@
*. 4)" ' &)", " , ,#.5,#" "# , ## % ,# / 3.. ,&%%=
R &R # & & )", " , " " #
" , ,"##" # ,% ,
' & % " # " " " #
## . "" )##", , 01 " ""," )" " # K ," # )K ,% ,K% , ." # ", #"" #
, , . " ) ,-," "" , ,# = % %' # , #, "#," #
"" . , " , " ,",01 ""# ,,=
'K& , "
%' , "#,
% '" , #
B.B4)" " #
@MB
% ' ," ," "#&
"",#G*.
% %"" , ##
" ," "" #
"",#. , ,# , #
, " .
'K # ##
% '
# " "# + , @B.
, "# , "#,
.
, ,-
-"# , ," # ,"" # , ,# " &% " ", " ## ," "" #. ,
# " ," " , #= % ' # ' ."" " "
& "
#'% %
)"*#", "
, = I " ff ' # # ! . " " " # #. % ' #", #
" ," , " ,## #" . ##
" # . % ' "# " #'% % ## & ## " , "
*. ) = %&- " -,2--,2 " - " -,
"" " )#""" ,
"" OFO , ,
#. "" "
# " " . " # # ",#
#" .# "" " " .. , " .$) ,# 4%4 = G#OE0.#\3Q#JF\2#EJ3<GFJE\3//2OFO2//<
@ML
B. " # ,",
# .$ ,"
# # " B.!.@"" , "#,.1,4 ,- GFJE\ ,#, # ", " ,K01 " # ' ) ," #14,# " " +
#.
3.3.4 Red alert – remaining conditions " # ",
, " # . " ,#
# ., "L" # # %& )##"M, ,," # K!'% # " "# ",
#. " # %
" ," # + .9 ," " # " )", , % ." )# #,"#" # ,",
U U $8 . % % , ," ) 7,, # ). , % % , )", " , # , "",#. " # & " ""," " . "" ", ,. & #K# ,","
#.$ % , &" # " ,#, ,"
) ## ) . " # & # ## ,.8 #" , , # "", I? @ ). #, , 01 &% , "#. # , # , , -#N" , = % &! (
$, % , & , # # ",# # G , - ##7, " " 01 # ' ,,#. , ..IM " B!" , & # @!?* ," , ! % " " "7,#"M= % "! &R5H R4-(
,, , "# # #" ) ,"" & % , #=
B.B4)" " #
@MM
% &! & ( O *3( &< # $ & <2<#&<2O '%-I22'%-I22( K( (
" # &" "",# # # # # )#. , K ,#" ,#"#. & " # # K , .. , #" , & % , . #, ," ," % &! &(
"" ,-," % ", #", ", ,& #* = " %! 3HI & &! (
"" , ,## &% , A & G $
& A,
- " # .01 ," ," # " #
" # & = % '% % J& ( ( & '% % J(
C )" -##" # = +4 " " '% % .FO1GFO %' %% ( 'E! II", ( 'O#PG ! ", & 2", % & ( 'E\OGP1'% % ( 'Q#JOG "( 'OPJ", , ( % '% % E\OGP1 & ( < O %%&<2OPJ( OPJ36666( ( 'O#PGE!26666( E!( +4(
,-
=
@MI
B. " # ,",
O#PG %' E!2$ ( 'E! ", & ( '$ ", % & ( 'E\OGP1'% % ( '", ( 'OPJ", ,( %3% E!%% E!( &OPJ( "OPJU$ & '% % E\OGP1( E!3OPJ( ( (
),, . " , " = , -## " # E\OGP1 " )), , O#PG&"*# ", OPJ &)" "# )*., , H"" "# ""
"#, ", , # "#, . 9 ," " , , O#PG ,- ," Q#JOG ,- ," " # E\OGP1
# # ,"
, OPJ "#, " #"# , # ," "", ,. "
# ! 4 $ #$ # $
$
$ # ! .
,) , E!#$
#
, , ,, OPJA , , G5 , , ), , ,
, "" )" " # . ,- O#PG " #
##, " #, , -##" # . % , , " " , JJJJ. ,
, % , &
* " # , #) " # ,, . , -##" # # " " " ## ," ,. '% % ," ' #"# " , .9 ,, ,"
'% % " # , ,- K ,#
7,"" " # "
# .
B.B4)" " #
@M6
, % , # =% , !'% % .$" # "", " ) % , ## !'% % % ,.,-," % '% '% # % '% " , # #, = % " ! ( % !'% % & ( <!'% % <MM% '% '% 2 <.% % <MM% '% 2 <% <MM% '%( &%%/% 77&
&( ( % '% '% , "" " " # #. % '% , #" , ", ,& #
"# *. $# , A ,
" # " N # &",* ###&.. )", "#,* , %" # % % , . ",
#"# " % , " ,
&%% . , " " , " #K , )", ,
" # & / " , 3)", " , & . #
= !'% % /" # 3, ""-
" # " # ", ., , " ," ,## , "# #
G
L.2"
@MJ
4. Dynamic storage management ,01 # # "
##, #""
# . " "7,# "
%
'# ' . # = % ' ) " ""#"##' ) #,,
. " # " , # + = ' , "& "'*# % ' "" /3 " .5 ,# #" "
.' % '
# " "" ' % '.
4.1 The CONTROLLED attribute , % '# #" # ,# " ,", ." " "#.. += 'O", ( O3III( & ( 'E O"%( (
"
'% % " .&5 ,
# " # ,.*
4.1.1 Only when desired – ALLOCATE and FREE "
'% %" #,)", % ' #, # #,)", " . ,) = 'E "%'% %( 'O", ( O3III( %'E O( "E(
'E O"%'% %( 'O", ( O3III( %'E( "E(
%' )", " ' .. ", " "#"
",#+ .
@I?
L.2"
, , , '% % # % '. # " K # # )", " .$# , #
G 9 , ,# # " '% %. ## " ,", " " " ##., # " , , ) &%'*. " , " # ,", "
, '% %. "" "" # # ""# , " . ))= '", ( '^", ( '8", ( '$", ( '", ( ' '% %2 -G ' :2 -P :( &2^282$2( %' 2 -G ^'8 ^<<2 -P $ $
$ ) ," "& )
* # = ' '% %2 -G ^'8: ^<<2 -P $: $
%'
= %'(
9 , ,# , # = ",' %' , G "
#= + # " '
" %' . , # # , ,# "" %,'. , #%' # , , ' # "#. & ## " "7,# , ". # % '.*5 ) "G#P:! &"" #" ' ,%' '&# :! &* "#.9 ,", " + #, %'.$
, . # ,#,#
#.5 " = %'Y,ZY,ZY...ZK
( 8;&'3**@3' @C'A@**
L.@8:1142,
@I@
= "YZ...K
( 9>&'(A " '% % " ' % ' "
# #,)" " "#"# #.
4.1.2 A new construction – the stack ## '% %. # ",%' )",#,'% %" "# #
# N01 ,# 01 ,# ", . 8 A, " " " . #,"## # ##A "
," #
. , ,#, )", %' ..
# ##
#K ,". # "
,"""
" # ," ." , ,
, # , , # #.: "," " # , .. % '.9 ,,# # ,# 7,"= '8", '( %'8 ( %'8 -( %'8 4( 8( "8( 8( "8( 8( "8(
, B!#@ , ,""
.& '
'% %.* ,"# " ,, # ,%' .
= 'E '% %( %'E 4( %'E (
" " #%' "#"
+ ", & " B*. " "" " '% % ) # ) # , +.
,# , , , &"" * #, ," #
@I!
L.2"
)# + .$# , ""
# "
, . 1,
= ++ E ! %": .FOGJF$$1 %' %% ( ' !", 'III:( 'J'%'III:( '.%' !'III:( J & : % "! ( %%%( &J'%( " "! :( '.%'J'%( ( # &:: 42 2 HII( ++(
, .%' " , # , , , #, " # "#,& ! #" *. 8 " , ," # " , .%' " "#N
,#, , # ",
# " B.!.I"# " ",'% %.5 ) , .%' " " # , '% % " ,# ,- . A ## ",
#A " ". 1, "
" "#, " . ,# " )LL ." "# E & , * "#, .%'# . E E! % &.FOGJF$$1%++ 'K&,%.%'2 ( ' ' :'% %( ', ", ' I( 'J'%' '% %( .%' %' ( '' : % & ( % %&& (
L.@8:1142, %' 8 'III:(
@IB
'8", % & ( '/7'' <<( '", ( "/7' %( % %&& (
.%' " " "# " .9 ,# ," " 7,# " # . " " ,#/#3 " .& , )# +.* ,)% , " # %& ,#)",# "" A ,# " , .
&%% J # "
" ", % , " ,## .
" " )",# " & ' *. C "# " ##
# " .,-," %'%
""., , "#) . , " " # #7,# %' .:" "", # " , .7, # ,# 7, ## ) , . $ # ##, #," " !.B.@ ," " # , " + .7," ,# . 5
#" , '% % # =
@IL
L.2"
# ## # ## ,"," #, ," ## " " #. 5 # , " ## ) .$ %'
# ## " . 7, "", ,, .
= , " ", ," 01 . -#" "
A " ,. $ #= -'9 00 1 ) 3 ) ! ) $%& #
"# = --9 !! 0 1 00 !. '+ (+ 0 !! !!0 + ! 3 0+ + K +0 1 ! ! + &0 ! )! J)! ! ! 0 &I ! ! 0 ! ) &< + + !! )
4.1.3 As general as could be – the INITIAL CALL attribute $# " ,# , # " ), '% % .5 , "
"" # )# #= '.5 ) " # )= +H OGE$.E$$ %' %% ( '0 -I", 'O 0( 'Q ", ' 'O Q( %'Q I( 02Q( O %' E( 'E ", & ( '", (
L.@8:1142,
@IM
%3% E( E3( ( O ( +H(
$ "#, "# % '0# Q&)", %' *.# " ##, #, ',. " , ,#, ,&, ,-," *.< ,"
' "#,. , "# ,, + "#,G , , "#, "# )", ," # -,, # ',= 'O,'I 'E!7,' 7"(
4.2 The BASED attribute # % '#'% % #" "
= . # . # K",# ) , ""
., , " "7,# , =# % .
4.2.1 Change of address – dynamic storage interpretation #" '0"%#( '#% (
# "%0.# = # NG )
= +5 F:!%":E11J %' %% ( '"%( '#% ( '0"%#( #3( 03I( ( +5(
,-," = ., ##
, .##
, .C 01 ,# # , .9 ,
,# "",, "
@II
L.2"
"#.
, # " ., A=
' $% # % $& C # 0.
? 0 ",
? " A ,G " ,
," " "% ' "" #= '/"%( '.'+/(
,H, ", ," - " " #" ,# , " . " )#,.( #" & % * ' -III2 -G'-I:2 -P"%5( '#( ' -#K(
," ,""
, = #3( %3%-III( ( #3 -( (
# .
, , " # .$# # ##
-, ).$ " ,", "#)" , . #3(
" , , # # # ,##
)" #)& -*.,
+"
#," " # " G , " " , &, ,*
01
..= #3#*)(
0 , ,# ,-," ,"" A "= #3% #2)(
L.!$42,
@I6
" " ,# #, , " " A# GLL" , ," ' ,", #," "" " ," . , , , ,"" , , #
, ., " " "= ,,
"" , ,
, " . " 7," , # ,","
# # ,,
= '2 -/", 42 -.'I:2 -#% ( 3<<(
, ?"" ", , ,! . ,-," ", #" ," . ( , , ,"
'//IIIIII<, !
, ?.
/ "" ,3 ,", " "
# "
" # = '# <<( "#3<< <#% ]<( "%
,+ #. $ " ". " ##, 7,01 . 7,
' = '#% ( '0"%( 'E -"%(
5 "##
0, )" "#" , #. # , ,"# "= #3E( # U03I( E- U03(
9 , " , = ' !' % ( '#% ( '0"%( <E< U# U03I(
0 "#.## " ##," ", . LL 5 ,, = ," "" , 01 G
@I@
L.2"
.58 ## ,# # ,"" 01 , . )LI " , +
,# ,##
# .+ " -"#" "
.4"" ,H @-#" "# -"#; . C "# , H , L ," = +) / &% a% #FOGJ %' %% ( ^% ( ^% %' '9( ' .G7E : 52 .G7#.G7E2 .G.G7#2 -$7#2 G.7$$7#2 - 2 -. 7G.2 G.. 7G.2 - '-2 -GFG7#2 GFGGFG7#2 -^% '9( GFG^% ( ^% ( +)(
0 " /3 " ##K ' # , #.C ' " "#. " , ##
@I+ " ##
-"#& ," " *.,," : " , . ##
@I + " " ." " ##
)" " # ## " = ," " ##
" &* ##
" " ##
,,,&*#H # )", . ,#'7, ' "
," . " 01 = ,# "##" '
K " , #G
LM , ," 0 "# )# ".5 01 # " # ",
#. LI
) " , #C$:4" "@J@J .
L.!$42,
@IJ
, =/$# "## , N3 =# , ,, &"@ )#" ,* = '# : 5( #(
"" IIIIIII ,# ,.
4.2.2 Using paper and pencil – linear lists ( ""7,# "# . , %' .%'
, # '% % .
= '#( '0#( %'0(
%' " # " 0.
#0 ""
## ##
0
# #, ".& ,0 ,"
,01 " , @ . L6*, "", @ " , #. ,#"# ,
"# ,, , %' = '#( '0( %'0#(
G4 #"# ##
# . 8 # H"..., , ,"## " # # , , # H, " % '.8 " = '#( '%'K#2 -O,% 2 - "%(
# = , # " ,", ,"/" "3 ,"
,", ) ,",. , , # " ,", ,",. " # /#3.,"
"" ,",,-,"
. ,##"# ,# ## .L6 # # # .5 " ) &L*# ,@ . .
@6?
L.2"
,#" ## ", ,
,# "#"
," &5 . ,-5," *"# ' " # " , . ,",%'K#"# ,# )- & #
*= 'E '%( %'%'KE '%( %'%'KE '% U%'KO,( %'%'KE '% U%'KO, U%'KO,( E '% U%'KO, U%'KO, U%'KO='3 (
$
,#, %
= 'E '%( '#:% ( %'%'KE '%( #:% 3E '%( %3-%4( %'%'K( #:% UO,3#( #:% 3#( ( O,3 (
" ," , =
Anchor
Next
Next
Next
Value
Value
Value
( 9)&* 5 ,# # , ,#" ,# O, # U%'KO,. ", # %'K# , ,", 7," ,, . 9 ," ,"/ #3 K " .$# ,# " , ) .$# # , , /,"3 , ""
., ," K ,, " "" #.
,# # "& , ##,, #" #*.9 , ,# = ' & @ : & ##" , ) ,, 7, ,""" " "",,"# , . '% % 01 #
L.!$42,
@6@
) # "" A# + # " GC 01 ### .
# #"" # #" . #" ##= '#( 'E "%#( "% %'E III(
" ,# ," " "# E.$" ,#
G C ,""##".9 ,# , ,",# "#" ",,
. ,#
= '#( ' 7 &", ( ' ' #2 -E' 7 &", 2 -E 7 &"E' 7 &"%( 7 &3III( %' ' ( E3I( E2E(
$ , # , E" = # "
. %' 7, # " # , #01 , # .,
? E' 7 & )# "" K)" # ,, E#E. " , # , " , " , .9 , ",# # ) E' 7 & ,#
,. # " " " , ,
, , ,#""
"
# = ' #% #
$ % & $ , "
, +
. ) "" " ) # " ." ) # . "
, " # , #. 5 =
@6!
L.2"
+9 %' &E1 %' %% ( '17
$ # #
" ",# "#, = % % &% &%+9 'K&,% ( '%'KO2 -O,2 -E' 7 &", 2 -G,'07= &"E' 7 &( '. ( 'E '%' ( 'O( 'O% &7'% % ( ' ( '#:% ( '07 &", (
L.!$42, %7% %' 0(
@6B
'0' : % & ( %'%& % 07 &3 &0( %'%'K( G,30( " % % #:% 3 ( %. 3E '%. UO, . W3 ( "G,V3. UG, :( #:% 3. ( ( %'K"#:% U%'K "#:% 3 %( %'K'% "% O,3E '%( E '%3O( ( %( O,3#:% UO,( #:% UO,3O( ( %7%( \7% %' 0(
'0' : & ( %!& %" "E '%3 %( & '% % O% &7( ( ( %'K %& 03E '% UG,( O3E '%( E '%3O,( "%'K( \7%( %(
#" #" "" K
)" " ," ##
# 0. " &%' * , "
# " E' 7 &.
@6L
L.2"
2,)", %' O, ,,. ,##
"" " . # # " % "" , ." % #
, " . " " ) %'K &
. UO, . *.
# "# ,#. " ) # "/ 3) #
& 7,*.
" , " & #:% * " O, ,, "# ., "
# O,. 9 ,, # %'K # ## .##
" ,
# O, #"
" # &E '%* . $# % ! $# &" #: # # # # #& \7% )# " ### # " -##" # O% &7 #.
) 0 .= B ! $# ! %. ") " E '% # "#. ,)"%'K /# "##3 , K# # , " , .
4.2.3 Into botany – general lists "" "7,# -"# .4" )" , 7, A A .$ "#
, .," " ," # , , ""
"""." ,
,# ,",.9 , ) " " ##" # . # , # #"
#" , #" . 9 ,#7, ,,##,
" # " , =
@6M
L.!$42,
Value
Anchor
Left
Right
Value Left
Value
Right
Left
Value Left
Value
Right
Left
Value Left
Right
Right
Right
Value Left
Right
Value Left
Right
( 9/& ,"" / ,",3 "
" "# # " "### " .9 ,"# ")# ,", #" 01 = 'E '%( '%'K2 - "%52 -$"2 -J&(
2 "# -"# " "
.$ # " "# ", " " #& *# &$"#J&*. ) ,", ," # #
"" . , " # , , " , , ' 5 :# " , ,""# " #"" .9 ,, , " , " " # # #,"". 9 ," , ,, " # # # # # .9 , # " # ##,"" ,
# .,)"
@6I
L.2"
K ," )",# "# #A # # A,"" ,#.5 = +6 E1 %' %% ( '# ,7"% 7 %, !' 'II:( # ,7"% 7 %,< <( # ,7"% 7 %,< <( +6(
,")<E.<#,)", K"", #
, ,, ## , ,# . # ,7"% 7 % ,
"# "= # ,7"% 7 %, %+6 %' %R 'II:( '%7 '' % & ( '$"#2 -1%7 2 -17 2 -.'' <[<( '28", ( '# ,7 -5'+: < <2< <2< <2< <2<<2< <2 < <2<<2<<2< <2< <2< <2 < <2< <2< <2< <2< <2< <2 <<2< <2< <2< <2< <2< <2 < <2< <' % & ( '%7 -5' <E<2<<2<.<2<1<2<<2<2<\<2
%'$"1%7( #31%7( (
L.!$42,
@66
< <%( "173
%'$"17( #317( ( ( ( .'3# ,78( ( ( G%'% !! #3J%%( %3% &%7 '( ' %7 '22( << #31%7( < < #317( <<"#W3J%% %( 'MM3.'( #3J%%( ( % :'' & %( ( "#3 & %( %%% & "#W3J%% # !7''3.'( ( "#W3J%% 'MM3# !7''( '( # ,7"% 7 %,(
" # J%%#"# ' . " #" #" "#
. , "
# # A ##, # # A) , # #,"#.0 # "" ", .$ " $" " .' # ) . " # ) "# ,"
"" # # # ,#. ### .'" )""." ", #.# !7'' " # ). " ,## !7''. #,"#=/"#3.$ "# , " "" # ,
"#"
@.5 , = -69 " +0 1 M 0
! !! 1 ! M !
@6@
L.2"
5 ", "#, , # ,, "", ,#
". 9 ," ""# .5 ) , " "##
" # /#
# 3.$ , " 1
" , . C" "=''K%&. , " ," 7, , "# = "''K&O, #3O,( & %(
" #,
#, "
=#,%' #7, # , @ #@ . @ 7, # ## @ <""<, #. # # @I " " ## # ''K& , <<. 8 ," , = "''K& <E% %K]<( <E% % '% ]<(
9 = # )# ## ,
G $ " ),-," %' # %'R . % ' #
''K&
# "" ,# # .
"# ' ," .%'R, , # " ## @
. ,# "" ''K%&," ''K& %' # %'R &,,G*## ### ''K&, ,
? "## %' "#,<<. 5 " ", #," # , # , , " 01 , ," ," ."7,, # ,", .C "#, ", #01
## #. # # " ,# ' #,G ,# " "# ,, , " L.L.
4.3 The AREA attribute ## " " # ",#
# , #/, 3."
L.B$:4$,
@6J
# , # " "
" ",)",. " "# /3", ### " LO + -"# ./ 3 .4 # " /# ,3 ## .
##
#" ",# ,,
"", # "#" &/#3*.$# # # . "" ," #" ,##
" , ,# "
" " # , ##
. #' "
# " ,# )", . # # "" ,
= @. 9 ,# " "# . , " "# "" # # #" 7, "#,"## #, ## " .)#, , "" # # " ,"". !. $" ,"/",3,, .$ # /# 3. , ) , ## ,, /" 3 ###, # . ), ,, , " =C " " NG
4.3.1 Good neighbourhood – use of areas 5 L@01 = , " ""## ,
. 5, , # # . " , , "#" . # , N @. " # #
, . !.
, ,# ,, # #" .&$) ,)".*" " # " # , # #. $",
) =
L@ )"## ," , 7, G; # ,# " ) H" #
, " 01 .
@@?
L.2"
'EIII( '`%""E( '`( %'( 3I(
"" III @??? # " . ," , # ,# . 5 ,
# @I ## # ) @?@I ## . + ", !<. %' ", " E " # ` # ,#" # " E.1 , ` , " " ", " . C ," , # %"" #. " , , %' #
= 'E( '`%""( '( %' E`( % `2E U3I(
"" "## # " " . " "#, = ," " , ` U
" ,# "" &` #"# %"" ,*.,-," % &# *
" , , ## " 7,"
. ,-," = %"" #2E, # " # E.,-,"
" ## , #, . %' # )% ' '% % = %'YZ Y Z
Y...ZK ( 90& 3**@3' 3
& " , %"" , % . " ,""", H,
. ,-," %"" %"" ' %"" ""# %"": .
L.B$:4$,
@@@
4.3.2 Closing holes – garbage collection ) ,"" # #. ," " # .# " #." , "## .0 , ## ,# , K # ",
#,)". # " "##,)", %'
" # #. ," ) .$ % ,,#%' , "## ,)", ,""
,. < " " ,N"" "# " "#.C #" , ," #. ,""
, , # " , , " "# " " . *+ $ # !
%
$ # *+ %#& ) # ," "# " # " #. ## "#).$#,)
# ", ." , "#
G ) #### ' .' ,# ", 4"" ,
",
.) , # & "*. HI E!% &' %":EJE %' %% ( 'E7 ! !", 4 % & 2 ' : % & ( '17 ! !", 4 % & ( 'O ", 4( ''III:( E! , %" & & 'E7 !O 2( '17 !O ( HI(
, ,E7 !, " "" # =
@@!
L.2"
E7 ! R HI %' #7O
2#7G,( '#7 ", 4 % & ( '#7G,' : % & ( '. %""%'K\( '. -%""%'K-\( '%'K'% %2 -/7%""%""%'K\ 2 -.7 <<2 -\\>?( '%'K-'% %2 -/7%""%""%'K-\ 2 -.7 <<2 -E\>?( 'R", 4' III( 'O%""%'KE( 'J'%O2 -O,%""2 -O ", 42 -$ ", 2 -G,' G,"$ ( '#:% %""%'KE( "%'% %'K3I %'%'K( % & ( "%'K.7 ', 7( '.7 ( ( %'J'%( J'%O
3#7 ( J'%G,3#7G,( K & % % #:% 3 ( %. 3%'K/7%"" . UO,. W3 ( "#7 V3. UJ'%O :( #:% 3. ( ( '% "#:% 3 %( O,3%'K/7%""( %'K/7%""3O( ( %( O,3%& UO,( %& UO,3O( ( (
@@B
L.B$:4$, , 7 %' (, 7
*****
%'%'K-( %'K-3%'K( "%'K( R3R*III( %'%'K( %'K3%'K-( "%'K-( , 7( .7 %' (
%'%'K-( %'K-3%'K( %'KE3 !( #:% 3 ( %. -3%'K-/7%"" . - UO,. -W3 ( %'J'%( J'%O 3. - UJ'%O ( J'%G,3. - UJ'%G,( "#:% 3
%'K/7%""3O( #:% UO,3O( #:% 3O( ( "%'K-( %'K.7 3<<( .7 ( E7 !(
##, )## #",.5 )## ",, ,)#!., . %'KE#. - %'K-E.4" J'%" O, ",O $ #G, " "" #.E # /7%"" #" # .7 "#" " " ,# ,. ,", %'K #"# '% % "
)##.$ "# #. % ,", "# , ) . %' # # ," " % , )",## " #.$# A )L@ , AJ'% # " "".
@@L
L.2"
, ,, 7 ,# ,#
#= " ! "##
# " .$# %'K ### "# +.$ # #"
# %'K#%'K- #. < " " , , . &7 ," , " J'% # , ##, "#&
," ! *.,) %'K- " # / "3. 01 # # " .$ , ,"
, ##.9 ,, " , .7 , ,17 !
" ,, # " " " " ,.
, , = -8J1 1 ! ) )+0 ! ! !) !! ,-," R # ' R LJ # " ). , + .#" , # . ' R " # ", ) # R #"#). , ," " ," ,-," : . " "#, @ . N 'EII( '`%""E( ''II`( %'(
"" # @?? @?? .( , " # # "@?L ##", @?? # @ ,#. , , ,",," %'%
&.
%'*=
' ' '2 -7%"7 4", 4 %'P42 -P"%92 -P- -I')2 -P4 I2 40"%2 -Q"%(
, %' " ###)
K", , # "
'.0 # %'% , # " ,",?. ,-," %'%
, # " "#,?#6. LJ $ %&#' %&.
@@M
L.B$:4$,
5 " ", " , "" " 01 "
#, =
" #
, ) "N
" ""
N
#H, )N
$
#
$(
"
"
:4(:4
1
$11
5:44
$42
$11
&:4$24 # 1$4*
5:44
&:4$24 # 1$4*
& * :454:
( 95&*+ #%' "# "
# ",
# " M.B.@.5 " , "
' %
' '% % # "#&, " #*,) "
" ""
#)&# # + * #H, .
4.4 Dynamics with structure types 9 ," # # #,"# " ' " )" , '% %
## 01 . , # #" .
4.4.1 For a thorough grasp – the HANDLE attribute 0 " -, #01 ' .)", , " "#.C , ,# # # "=" # ." " " ,, . , " , ,#" #, # # #. , # , ,",#" ##=
@@I
L.2"
" % $T K2D2DK!( " ' .% 2 -L&"%2 -\% 7 "'"%2 -G%7 "'"%2 -.% !$T ( 'L .% (
( L #..% #$T . # .% = ' 'K!.% (
8 ", L # # ," = L 3 'K(
,-," , ,# 'K. " # N A.."""
'K, L
= L 3U.% .% 3K(
3U )" #&)
*# ,",. 9 ," ,", " "#. " #," # ,# = '!=( L 3 (
$# " ,", " ##. $ , )" , )NC = H .% % %"'% &LEO1$ %' %% ( " % $T K2D2DK!( " ' .% 2 -L&"%2 -7 "%2 -G%7 "%2 -.% !$T ( ' 'K2!.% ( <# % %" K'% <( & 'KL&2 'K7 2 'KG%7 ( 'K.% 3K( <# % %"K!'% <( &L&27 2G%7 ( .% 3DK!( J %"'% % % %7:% % 'K23U.% ( (
L.L2" ,", %7:% % %' 2- .% (
@@6
'2-!.% % & ( 'E2"%( E3L& 7 - *G%7 *7 G%7 ( 3-L& -J 7 - *-G%7 *-7 -G%7 ( "EU ( -( %7:% % ( H(
# # " # ," , , . , # " , ," B", "", , ,"#" "
" . # , ",# # ,", .
4.4.2 New – further type functions 8 "#" # # #" ,# ,", .,-,"
.
" ) ,"
. " #, ,# .$ " #".% #L # " = " % $T K2D2DK!( " ' .% 2 -L&"%2 -7 "%2 -G%7 "%2 -.% !$T ( 'L .% ( L 3 .% (
" "
", #, "# /3. , , ," #" "" ,#H,##. %' , .8 ," ## ,,- , ,= 'L (
) , ," #" =
@@@
L.2"
H- .% % %".% &GQ# %' %% ( " % $T K2D2DK!( " ' .% 2 -L&"%2 -7 "%2 -G%7 "%2 -.% !$T ( 'D2L&"%( 'DK!72D7!.% ( <# &%"<( &D2L&( D73O7'! D2L&2D( <# &%"K!<( &D2L&( DK!73O7'! D2L&2D(
'D"% % & ( 'L&"% % & ( '$T !$T % & ( 'L .% ( L 3 .% ( L 3UL&3L&( L 3U7 2L 3UG%7 3D-( L 3U.% 3$T ( !L ( O7'! ( %7:% % K , H (
H-(
"# ," " , ,",.5 , ,-," ! ", ,",
"# #. "#, O7'! , # " "#"" # .% # "" #. 5 # ," ## . , " # ," , #- ,-," : = #% 3: L (
L.L2" ,",
@@J
, , # , .,# ,#, # ,#," . "# # ,
,",# " # &)
*K ,,# #= .% 2#% 3U 'KL&(
,", ," , #., ,-," ! ,# -= 'D 7&27&!.% ( 'L .% ( L 3 7&( !L 3D 7&(
,
" D 7& " # " 7&.M? " ", ," "# = R G ,-," .," R , ," " " "", .= <E'% %'' <MM R.% MM <!%"%&<(
", ,"R 'K.
M? ' -
/TC#W S
301 .
@J@
M.(
5. Use of files # " #"
""7,#
,# ,,# ##,"" . # # "" ## " , #. "
# ",
#" #,# ,, " # ,# ,,01 .
5.1 PL/I files # #! . " "#
)#, ," " # . " # , ,# " "# # ".01 ) #" &# . ,# # " "" ",
# &.. " #* " #.$ , " # ",#
# ".
, #/# 3) # #/3 01 " .
5.1.1 Generalized – file values ##! #! -"#" "" #"#= '! 2! "(
9 , ##, '% " #,
, ", " "", 7, . " , #)
. # : "# ! # , " = '/:":( /:3! (
" , ,"
#" .9 ," #" " , " ,", . # ")
.
"" " # & 3#W3*, "#, ", ,= /%' 8 "( '8", % & ( '/: -": /2/-( '/2/-"'% ( /:8( /(
@J!
M.(
2#, , 8/ /- ,#.5 ) , , "#, = "/( / " ,)
K , ",, ," /.
5.1.2 Alternative and additive – file attributes 01 #" "7,#, .# ",
, # ,,7,###G9 ,# ## ##, .
, "# "" & = *. , " "
.$01 " , # # ., , '%
&# , .) " " '% . ," ,#" ", ,,," , #.
= % . #% # , ," #
#.5 ) ,#, ,. ," . "," , "# . 5 """
# 7, #". , T #'
T "&# " "
# . " "7,#') " . $ ,, "" # ""
# ",
. ," "" "
,
# # .#,
, , . " # , , . ## , -"###, .,
% , ,, " ##, ,,, # """ , #
M.@01
@JB
# "" .5, '" , ,##7, #7, # ,#. ## ## # & ,#", #", #*. , K!
)#) " . """
# . " ##,= :%
, """ " , # .C #
# , ,# # # .$ ## ' 01 ,,## " ", .& : , .*
5.1.3 Works also automatically – opening and closing $
,# ,, # ", "
. , " #,)", &" # # "" = % "! (
# = % "! % (
"# , ,,.<% = % ")
Y2")
Z(
( 98& @C # , % ", , ## ". $,
&)" , # *. %
,
",-" , # ' # " ". ## R)
&R)
)
.
@JL
M.(
#""7,# R #&R " B.B.L. . 01 # # . % "0
" " 01 " 0# Q. " " Q# # ! !# # .." #= !3'_ !
$% # ) " #= ,%117Q3 !
+
= + &*=
%'"! !
+ &;1*=
Q111O3Q1EGE21#3LJ
+ &(8%*=
,%117Q3 !
01 0 , " "# # !## &22-8*Q. # #" 01 ##
01 " ## " "# .$ , ,,# 22- "#"# " "" . " 0
"#% #
22-Q )", .'% " " #" ", # # = '%")
Y Z Y"&)
*Y ZZ...K
( 99& *@! 2#, :%
: %
:## " # , , ,# ",
. , " )
"
#. " " )
#" )= H4 .% ' % %""GG$ %' %% ( '/
M.@01
@JM
$%% %%%( &"/G,9I( " "/ %( '%"/( O *3( % " "// 3<<( % "/$<MMO ( "/ :$%%( ( KG,( ( H4(
,
, # & ## " #* # ,",##22- /$I/$I-".5 "
,# # " #,"#, @?"" .
#, ",-," . " " # #, / "
## #
," #@. # "
7,". % ", 22- ,#& " " #*/
.) " " "7,#,
=9 ," " , 01 ""# , = % "/< !<(
< #,)", % = @. , " &" T # ""* !. #""
.." #& ) " *.
#, #=
@JI
M.(
. :%
, . 22- &,%".* ". # # " ##,#, * B. " " ##,. , % % 01
, " " , ", ," , . )", '% = @. " " ##, !. &
" *# B. &
" *, " . 9 , #"
" )" G ,# ' # '%
"
## )", . "%
"" " , # $ ,- ," " )= , << #
5, ,- ," "
7, , :%
"" # #= " /2, , , " "" =KR "R!"RK! K!%''R!. "/2, @& <<*,
# " #, ?.<#, = K ' ' K! & K! &' K % ':! &#KI. # ",
. "%/2 , "" .
= '' & T '* '% & % *'"
%& R% &'% ' : : &% ,* &'" !&'% *#!"& *.
5.2 Input and output of records 01 ",# # # + =
%& R%
'% ' :
%& R%
:
%& R%
,
&%
9 ," %& R% .9 ," " , :%
, & ' % *. ," " : " # " .
M.!,# ,, " #
@J6
" " # .: ,#" " + # " . 0 !# # () " # , .
&+ * , + # " # . ,#'
01 " ## .
5.2.1 Variously – data sets # + " " # # =
- ""& -"#*#
,#"$A $ $. - "" # .$ , $""
#" ",# ,, " " #" +A , ## "" # . 5 " # # #) '% ' : + . #" ,# #" ", # ,. " " # . $ , ", , +#
7," "# #"
" + ,",. !# # ## "" "" =""
() $% + (8% ""=15#. , ," , " " "" G # ! , 01 . , " -## ," )"=! '" ! " . C !&'"* 15-"" . < " # . " # + ,"G$
# " # " # )# = ! & ", *. # , , )#" #
#,)", #" # " " #G
01
7," ,", " # = "" # !-)"#" ."" , #" !-, # ,"#")" , )= ! : ) , ! # !: , , $% + .9 ," " #
" .& , " [email protected]* # "#N =01 G ,# " , ,"/, 3 = % "/< !2< MM<!,2'RII2 <(
#" 22-,# " !.9 ,"#"" #&),* + " #.9 , ,# " 01 & *#,
, .## ,, =
@J@
! " # ## #
# "#.
M.(
5 ! ,# ' G9 , ,#
,## " ,. ,# ' ,#01 ,"# ," = % "/<E.<(
, ",# !# # = '3 !2!,2'RII2
,#$%#+ (8%= ,%117E.3N !2!,2'RII2 N
0 # #,#()& $%#+ (8% *=
,# " # " 22
"
7, , ,#,.
+ &% # . ! &",*### " # #"" , """
#"A , # , " #& -"# *. $# " "
# %& R% '% ' :%& R % , # %& R% :., # 01 " + $# #,"## N A + ,:# :
. '% ' : ,, " " -"#""
# ..& !# # *= '3'% '7 7"2 2'R49 01
, # "#.$ " ")
$.22#:44
"
. ,#
#= " ," #,# ,,, # , + '% ' : ,# ,,. & # ," ""
" ",# #$.
5.2.2 One after the other – CONSECUTIVE data sets ,#" #,# ,,# ,# ,," # &# # &# *, #. ) " #,# ,,# # =
M.!,# ,, " #
@JJ
H+ .%! &"J.FJ1 F %' %% ( 'F 2 "( 'J'%'III:( % " ( %%%( " %J'%( " " :( "F "% J'%( ( H+(
# % # "% -# ",. " " # ," )" ,." #, , '% T ""#F , '% % T "".## " :%
'% ' :" # +# ," " # . , ""
# T .""
#'
'% ' : " , " #"""
" # A '% ' : # A)"#" # . $ " ,# " # " #.01 ", :! &J'% " #H, #A !&,* ..!&:*. , ",), +, :! & "" ,, " :%
':! &. , # # ,"
" " # ,""
#, ,#
# " # " "# , . 4)" # #01 , T . 7,# " # #" # ,L6 @@ N "", # " # = # $
&
T " " # #. # .8 )= HH . & &"`POGE$P#1EG %' %% ( '1K ( ' ' 2 -G!", 2 - II"%(
!??
M.(
% "1K( %%%( "1K % ' ( " "1K :( "G!3+) %( G!3( "1K"% ' ( ( ( HH(
#" 1K A '% :%
&'% ' :*" A" % ., ,", %#"% .< " ,", ,", #.$" # #" , , )
#01
, '%
' . '%
' # ,", . ' )E # % ,#. = 'E -2 -"%2 -."%( # . #, # , E # " ..
," " "", ,-&"# 01 *
# ,- . ,- , , ,
##" '%
'. #,, ,#"#.$ " " , , ,
% '%
' ,"# . 9 ,"#", " ,H, #= -:9 +0 !! ! @!) ! 0* !
## " # " " ##" # '% # ,# #,"# " )= '% #" ## # %&..
*# "", &.. #,#*.
"#% , ,"# /,3 ,-," % " .
5.2.3 Numbered – REGIONAL (1) data sets $ # " +# &%
7," ""
" # #" , 7, #." # # "# .$" # 7, .""
# , " # ,# &H, G*? .$
= "J %K!)(
M.!,# ,, " #
!?@
$ K! , ", " #" , #.
"6" ##.$)
, '9 #' I K!.01 " , " ," ."
," , "", A ," , G 2"""
#
" " 7, , ""
, """, "" ," # . &% ," , "# # ." ," +
. $ "# ," " # " "
.5 ", , "
&% "
#" # 7,##"""
. " % . '% 01 -"##," # . ,/<, . ,"""
" " .9 ,"/"3 = "/"% K!8(
"/"% K!"% 8(
0 # K! ## ,, "K!"% " . ,, ,T % " , , #," # ,, " # "# 7,". " # #01 , " " ##," # .9 , "## " #,# ,, ,""
#
. , "
" ,## "T ' #" ,# #",= , " # ## "# 7,"T
'G " # ) , " ""
T # ' . #" '%, ". 7," ..= '/"'%K! :%
&% ( % "/'% < !"2'RII2''% III<( !
!'% '%"/( % "/' ( "/"% K!8(
''% 01 #," # . ,, ,# ." "# &+ ..0$4 ;1*. , K! , "# , #. $""
, T
'% ' :# .
!?!
M.(
" , ' =9 ,"##"" #
"K! .9 ,"/#3##," # = "/K!8(
2 &% # ="#," #. # ,, , /<,. " ## '/3. /3 "" ." " # # ,.2,# ",
, # # ,#
A , ,H, , . , ,, , , , # # )" " "#" # = H5 % !J\FOE$ %' %% ( ' ,'II:( '`%""E( 'J&% 2 -$7%""%""E 2 -E( 'J&% 7 %", ( 'E!"'%K! :&% (, '$ $7%""2 -#:% %""E2 -$ ", 2 -G,' & , "$ ,( " % % % & ( J&% 7 %*3( "E!"% J&% K!"% J&% 7 %( E3 !( `3 ( ( J & % & % "E!T % ( % "! ( %%%( & ,( " "! :( `3$7%""( %'$ ( #:% 3`( ( '%"E!(
M.!,# ,, " #
!?B
J: &'K &% % "E!' ( %%%( %$7%""W3 ( KG,( `3#:% ( "$ ( $7%""3`( ( J&% 7 % 3( "J&% 7 %VI :( "E! %J&% K!J&% 7 %( ( H5(
## # ,",$ " " " , #. ,",J&% " ## " " "# .0 #$7%"" "$ #G %' ,""
, ,G
"# % , )",#. : &% E ! # %' #. $ #'% E! )",## # % ' .: " " # ##" ,.4/ 3 # & * , , . ) ""
,+#. ," , #" # , '% ' :.$ &% # = : # ! $ 2 . # 01 # + " "" " # , ) ," "
" ,"# '% ' :!", &% = -;9 +0 ! 0##& 0 0!& 0 ! 0#
$%&& !! 0 ! ! + )! + . 1 ! ! # !! ! 0 %&
5.2.4 At discretion – VSAM data sets $# ," )" # # .##
" #. & *=
, !&""
7,"*A42& 7,"## *
&""
### #)*AO2& 7,"## *
!?L
M.(
!) &""
" #,*A::2&" ## *.
7,$#
,'% ' :
,&% A ")#,) #.$#
#)" "" # #" #" ")." $ " #01 $
. $# "### " = @. # " " ## !. ""
"" " 7, #"##, . + ## ,, , " $&$""
#" * " # .
5.2.4.1 organization (consecutive) – ESDS 1' $" # " ,"""
7,". , " # ,"#" "" # ##
& *. ##
"# 7, " #,&:* $###
&:$*$# " ). : ## ') , ,#J '+ #$."" ," ,# "",," ,
,# #, . + ,, "$# $= " ' OD % , '%III'RHIII
'R "#" # M?# )," #@?? ., -" # ", #." '% ' :# " #," # +# " . ### 7,$= H) D%K% E'% ' : %' %% ( '.% E"'%K! :%
%& R% '% ' :( ': III')( % ".% ET % < !"2 E2'RII<( '$%.% E2:( '%".% E( % ".% ET < !"2 E2'RII<( '# .% E2:24)( '%".% E( H)(
M.!,# ,, " #
!?M
# " ,,"
## # ,.8 ,- ." " " , !#"
,# #.5 , ,#" " . , , $% , ##
" # "
=
$% %, H) %' /2:( '/" % & ( ': ') & ( '", ( 'J'%'II:( %3%III( &J'%( "/"% J'%K!%:( ( $%(
/ +3 K!% . ' ) "#" ##
# , % .9 ,#+ ,"#$ -
# #
. ,- # ," # ",.$""
"", 7,,# $ H, ,"
#"
" # :& :$* " , = # %, H) %' /2:2O ( '/" % & ( ': ') % & ( 'O ", % & ( '", ( '8", ( 'J'%'II:( "/ %J'%K!:O ( KJ'%( %3O *%III( "/ %J'%( KJ'%( ( # (
# # # , " "," #, ,
:& :$* # #" ### 7, . ,, K!% ," +:& :$* " # #,#.
!?I
M.(
, "# ##$##
"" # , ,# . % ,"
# .
,, # ## , ,= " " # ## " ## & " ,*. , " K! K!"% K!% " , #H, . ,"" " ## &"#"
* AK!A "" :& :$* " , # . -=9 ++0 ! 1 ! 78; 0 ! !" &!!C ! + ! !! " 0 ) ! %
5.2.4.2 organization (relative) – RRDS $/3$# " " # ", ""
" &% " #, =$ &*" , :& :$* ,# " , # ,." &% $# " # ,@& ,G*.4)" &% )
K!,' 9 #' I . " , "," ### "", "
G + # " $& , 'R #"*= " ' JJOD '%III'RIIII
" " # ## # , T % ' % . % ",
" # ." &% " # # # ## "#, .## " ," " # , # , ' '% ..% = '/"'%K! :%& R% :( % "/< !"2'RII2''% IIII<(
"/"% J(
"/"% JK!%8( 8.LEJ]
, ,# " # "/"% JK!"% 8(
"" ..,8.
M.!,# ,, " #
!?6
" # &, # ##* ,"""
.8 , ,, #=
,K! K!%
K!"% " #
,K!
,K!.
, K! )" # # " ## " ##.# ", ", &% .9 ,, " ##," # ," + # -) " # "" # K! #.5 $# #) ," &% # ,@ # ? :%
%& R% :.
5.2.4.3 organization (indexed) – KSDS , # 7," ###
#" #, " #.01 #
.."" . # $ " # ## 7,". "# " )"" @ M "" # . + &$*
= " ' 8OD , '%III'R-I2II "'-I24IK!H2 ,'! 2
01 ,"= '/"'%K! :%& R% ,( % "/<< !"2< MM<'RII2K!%'2K! &H<(
1#
,"# # . ,
"" "
, " # " " #. C#" " # , #) = 'J'%#2 -#1'H2 -$ ", 2 -O '"$ (
,# " # #1..(:cB@# "#.$" # #"" # M"" .. #. " ",$ #" "" #
. $" " " # . #)#$ - " # #,"# " # G
!?@
M.(
#
#)." # #)" " " # .. 7," #,:& :$* "$ ", ,)"
# . 7," #" # , "#" #)" # A
" "#A # " # .9 , " 7," " # " # " 7,". ) ##)#$, K!T % #.$" # , # "#
7,".$# """
# ' T .K! ' % ,#
, ## " # ) $.9 , ,# " # #," ,", " ,
#" " "",= H9 $% & ,E" %' %% ( '#( 'J'%#2 -O 'H #12 -$ ", 2 -O ' & O "$ O ( ' ,E"'%K! :%& R% ,( ' 2 -O '9I:2 -#1'H( $% &E" % "! ( % " ,E% T ( %%%( & #12 O ( " "! :( %'J'%( " ,E"% J'%K!"% #1( "J'%( ( '%" ,E( H9(
$ ,# ,, =
,# ##.:# ,",
. ,# " )," #K#
" # " ,# &", "
*G," #
# "#) , " .
M.!,# ,, " #
!?J
$ ""
#)# $ , :%
& K! ."" K! " #"# ," " # " "#. :%
K "
# $ 7," # .
5.3 Special possibilities of input and output 5.3.1 Directly – LOCATE mode $# , , # A ,#
" ) - , ," #
#, ". &.." # * " "# " # " ,.1 & " ## ## / #3. 2#, , #= , ,, #. "# ),. ,
,
# #.# , , # ,# , # ##, #K, ,,#," G4)"+ ," " "R 'R '% ' : :%
,. '% + ILO#,# ?&=7, 'R*G , ," # "#, ##, # # , ,", " = " "F "(
, " # , # ., ) , '% = " ")
Y2")
Z(
( 9<& (*DF ," " "" "" #& #
" #,# ,,. ""01 ,, " ""
# ' .$# # ," , , "
.$# ,#
" # , #" # . 01
, ""#
# . # # ,," " , '% # ""= # # " #. " "7,# ## ##,
" . , , #",.
=
!@?
M.(
"/#(
# .01 ," # . ##
,#
. # ," " # " #"H, /#3. C , ) M@. ( , T "" # (:cLJ## " # = H6 P &E"O101 %' %% ( '#( 'J'%#2 -#1'H2 -$ ", 2 -O '"$ ( ' ,E"'%K! :%& R% ,( 'O7'%2 -#8'H
"" " J'% ,. # .2, #
, "," # .5 J'%O @ , # #
, "#, " "", . 9 , " , # #)# $ #
# T A G9 ,, " # " " # "# .01 " , #."
,, K , " #M!% , " # K! &/" ##) G3* . , ", # ,# " # G , ,,=9 , ###
, ,"
, , ##" 01 " # ## , ,# )##
,.5 , # ', ,%' = %'7:"/#(
M.B"
,# ,,
!@@
%', " ", ,,,.01 , ," ", " . #"# " + #" "",
". " ," ,
+AH, %' .5
, ,
, . " , " " ,) %' " ,'%G ""/##3 # ) " = 5I N/ N'%!%&
$F.EG % %' %% ( ' "'% "" ( 'F "'% ""% ( '#( '#'9I( % " ( %W " ( %'"F #( " %( ( 5I(
%' " ,,,. # #" . $
, ##" ,,,. # , ," # ,.2, ,, ,-," "
##.01 # " , "# ## "#.2,A )"" ##A '% " #
, G 3 -
&" %# # % # . # " )
G5
= @=
" % YK!)
[K!%Z(
!=
" YK!)
[K!%Z(
B=
"Y& %)
Z(
( 9=& A3
!@!
M.(
& % # #, " # . C = ""% YK!"% )
[K!%Z(
( 9;& BA' ,#" = "Y"% ZYK!)
Z(
( <>& ABA' # = "YK!)
Z(
( <)& *' H, ""7,#%' = %'" YZYK!"% )
Z(
( & *@3' $ 01 # # .
5.3.2 Unformatted – FILEREAD and FILEWRITE , #() !"# " , 7," "#
" 'R .5 , # , " #.( , # ". ,-," " # " , . % #'% #.C , #"# '%G% & 22 * ,, " , , , #, ,,= % "/< "% "2! <% (
" , # # " # ",, #" .0
# " "" "" ,= 5 .% &!%""GQ#P %' # %% %,'%( '# ' : % & ( '8", 4( '/" '%( ' ", 4 I( 'J'%'III( % "/<<MM# MM<2! <(
M.B"
,# ,,
!@B
% 8VIII( 83"/2J'%2III( *38( (
9 ,, ),# # ) ,#
H"## " ,-. # # H" # .
," " "#" " ," # " = # #@??? / " # " #,.,,#" ," ",#. ,# #, ,"## = ." $#! $ ! & #" #," ". # , ,H, ## ".? ,### ,""#G &
," # ? ,""
,G* 9 ," # 7,,
# " ," ".5 ) , 83"K/2-2 (
8 ? ,#&" , G*. # 5
# " #"".8)#"" #. @ " # , "
? " , ",
U@
" ,# # . , 7, , , ,#, " = 83"/(
C" , ? = ,. # ,# ,,," # ," # , 01 " .9 ,"# " I.L.M@
5.3.3 One after the other – PLISRTx $ " # ,# ,, ",- , , " # . C #," ".9 ,"" # " 0 <,# " , #. ,.. % %
01 = '<FJG/$132H2.L2E2I242.L21<2 <J.FJ1GQ#3/2$O\GL39I<2 -H57III2J '%(
M@ ,("
.
!@L
M.(
" , ,, # " # ) $%= 117FJGO3N %2!,2'9IN 117FJGFPG3N%2!,2'9IN
22- FJGO#FJGFPG)#. , # " # "" # " #= " # " ,@ M "" "# ##"" # " ,@? B# "#. " #, " " # )# ,# # , ,"
& " @?"" *.#, , "!MI??? , #
& # !*# ,, ", 4. , ," # ?
# @I . ,- , , ,# 01 ," , , # # 22- FJGFPG. , , ' # 22-FJGO#
# # 01 , , .C ," ,"" ",# ) ", ,- , " A ,# A # ," , #
# # , , , = 5- #$FJG% " %' %% ( ' 7" '% ! '9I( 'F 7 % !'9I( 'J'", 4( '<FJG/$132+2.L2E<2 <J.FJ1GQ#32$O\GL3-I<2 -H57III2 J'2 7" '% 2 F 7 % ( ''J'( 5-(
,- , , ' ," #"",, # ) " # . ," "#, . 8)#,," = 7" '% %, 5- %' '9I( 'J'%'9I( % "! & ( ''9( &%%J!( (
M.B"
,# ,,
!@M
&J'%( $ "% 2'% -4 ''-( J! J'%( 7" '% (
## ## #" # ." ,- , , ' ","=9 ,, " #@! , ," ##" #@ ." " #,# #. ,, , , = F 7 % %, 5- %' J'%( 'J'%'9I % & ( KJ'%( ''+( F 7% (
5 "# #" # "##"
, ," #L# "," #. , 7,," # ' ,"# ,-," : & =*." ,# =$ :4%% " + ;1 -"#, " #", # " ,, .
I."01 "7,
!@6
6. Special PL/I techniques " ""7, " ,# , ",# "
, #,-#" ",)", , .5 "
" ", .
6.1 Array expressions " !.B.!##
, ")
. # " , " )
"# " .
6.1.1 A straight guess – built-in array functions 4 / #3., # " ,
#. , #")G )#. 5 # " #. ,##" # # ".5 )" ,""
= # #,.9 ,, ,
," ). $ #",
" " # " "." "
,
" #. ,
= 54 E!,% %' %% %( " % .%% :2% 2J2F &2Q%2\ 2 'E ')-:( '.% +!.%%( ''K7", ( '\ +!.%%( 'D7", ( .%3J % 7'%%( !<#%'%%< MM<% 22% &2!%2& 2 <( %%%( !<\ [<!E ( "E 3<< ( 'G "% E 2\ ( " !\ 3 : !< :'%%]<( "\ 3.% :( 'J.%2\ 2'K72D7( !<'K< MM 'K7MM <2<MM<< MM D7( (
!@@
I."01 "7,
!<E&]# <!E ( ' %& J % 7'%%2G "% 2: 54(
" ## " . \ # .% #, ,
### "
, "# ".8 "
.%," " J % 7'%%.
# ,
" " ##" , ,# #"
#
.
, ,# )" ##,
.C" # ,. ,# #,-," !, , , " . #" "./,
#3
,,. \ L K)
\ 3 :" )
, ",
, "., ,-," ! " , . ! , << , 7, <<#,
;, !, ,<< <<," , ,<< <<., ! ":
# "$82. ,-," % " )
" " , " , #," & ## ",
#"" , " " MM&## ,", G*. "#, # , . " # "
)IB ,- = J % 7'%% %, 54 %' !.%%( 'O "% I'( '.%%7: IH!.%% % & ' 2J%2F &2\2\; 2 ( "O 3I O 3 % ( O 3 % ( .%%7: 'O 5( J % 7'%%(
), ,-," % # "%, ?#@ &?#@)",## *.,#I" "%, ? #I&?#I)",##*. # , , " .%%7: ,-," '" ", 4
I.@$)
!@J
", # #" .&01 ,# # , ' , .*, , "?#M , "",7, . 8)# , , # " # "" # \ . $ + \ /" 3 :
, " ,- ," :"! # '= G "% %, 54 %' E 2\ ( 'E ' : % & ( '\ +!.%% & ( ' K%", ( '.!.%%( '", ( '$%", ( '' &E :( \ 3 :( " &E 3I ( 3 E 2<E.1/\L^8$OF#`JGPD0Q<2 <'"&aK %T :,!R<( K%3( %3%+( $%3:"!2<<2 K%( "$%3I :( K%3'2<<2$%( " K%3I K%3 &*( %.3% ( " 2$%2 K% $% 3% . \ 3.( ( ( G "% (
"#,: A" ,- . ,# , , = : %, 54 %' .%2\ 2'K72D7( '.% +!.%% % & ( '\ +!.%% % & ( ''K7", & ( 'D7", & ( '.!.%% %( 'L7%", %( 'K73 \ 3.%(
!!?
I."01 "7,
L7%3I( %.3% ( L7%*3 \ 3.2 .%3.( ( D73L7% 'K7( : (
" ,, #=\ 3.% L .$ )"<< \ #.% 7,.,-," " ,, &<< " ,# @" *. , " # "" " ., " , # ,"" # .5 "
"
# "", " # # ,
." , ,"# ,-," . " # . , , = ->J1 1 ! 7:- 0 ! ! +
6.1.2 Generalized – array function values % !# &,-," "7, ,& & ,",*#, ",01 ," ",-," , )"%'% ' R R #
H, #K," ," ," ,G&)" # #= ', "$8 ##.* $8 ## , -,#," ,# ,# . " ," " , #
,",#, "#, , . " < "&"#+* 4 = 5+ !& %' %% ( ' &'II: <.EG.$FOLPOG1<( '1 ''II: <8EGOEP$FDO^E\GO<( 'R 4'-I:( ' ' 4'-I: <.<2
I.@$)
!!@
C " "" # " I < " " "#. ## #
01 . 8 ,# #
", G 1 ' # & "" " ",. '#R "" 4 "# < ".
"# )
R. 9 , 7, =$"" #
, ,.9 ," ," , "
" # # ' "" &A # , . " """ 2, ") # #
.$ ,-," , , " , ,#. , " < # . " , ", " ,# 6& #, * .,- ," & # " "# ,,. " ", " # ,-," ,)
= 6. ! C ) )! 0 - 0 1 ! + )! 6@!) ! 0 ! !" + !0 1 %
6.2 Definition of variables " L.!""7,#
# ##, " .C "% "
'#", 4 "# )= '/"%( '.'+/( '", 4/(
,)
" . , ," , " %,&. " ,#"## " A % '' . -"# % , ,". " ,"# ",
# ,# " , # # . ' 7, # , #" )
## .
!!!
I."01 "7,
6.2.1 We're in the cell – the UNION attribute $ " #" #H, #/ ## % ' ,.
,## % ., '
#", # # #
#", ' # #01 1,"" @JIJA #," .$# ) ,"= ' '2 -/"%2 -.'+2 -", 4(
,#" " " /.#
".. "", .0 , ,",G ,# #" , ,#, " # . ( ## ' ## ,
A01 ," " # . )" , ,",= 'J'%2 -'H2 - '2 4 +# '-I:2 + 'HI:2 4.% !7 'II:(
' # " # # .% !7 #"01 # '"" . " ,#
.% !7 # , # A#, ) ,# # G # ," # ,""# ,"," "=
" # ".C #
"
,"," " , ,. # ' " ," " "", "
). # "" " . 01 , " "#" ' # ,= "
' ##,"" % '+ )",# # ", 7,,, .9 ,, " , , " K =', " # ' ,&"
#*.
I.!2
!!B
6.2.2 New names – correnspondence definition / #3 " #"# 01 ,
"#", #
" "#. ) = 'O "%( '.% "%" O (
O #.% "", .$ # # "" , ," ,"O , " .% .' #
" " #"
# #" ). " . " #"# " " ,# ,", " . ,".. ,-) ) . , , # " &.. " * ," # 01 = ',741 424"%( ',7-1 -2-"%" ,741(
# ' ,# , , " = ,74124 " ,7-124./ #3 "", . + ##, + . , ""
# . # ) ,", = 'O 2 -# 'I <E'<2 - 'I <1;<( ' " O 2 -/'2 -'% '( /MM<<MM'% MM<<(
, # , , " ""
# " <E1<.$ )" # ", '. # " , " )
# ,"
= '0 I2I"%( ' "%" 02*^( 3( ^3-( 0243666( (
,, 01 "", , " # ^02*^ ", " &024*.' , ,#
, # )" .
!!L
I."01 "7,
6.2.3 A question of position – overlay definition " ,)" "" # ""
# # # " , , # ## # ' )"".. # ."" , ' = 'E'II( ' I2I'" E%% ( '0-I( 'Q -" 0%% (
$ ," E#" " '. E "" # "" . ,)H2H
E2+H2.0#Q "
#,"
. ## , %%
, " / #3= '. II'I( ' I'-" .( 'G I'-" .%% (
" #"# ..- 7, .-22- - ## .. G%% , "# G- 7, .242-", G#G-#"
,#-# 'G "" %% " #)
&.. "" ",*. " "" , " , " . ,- #01 ,
.9 , " " , "" ,".
6.2.4 Overwhelming – iSUB definition "# 01 # ## # # -"# # ./8 3 #
" ,"##,, ##", , ,### " , (##.
"
,," N ,
#,
01 G , " " , (# " ) , ,," G #
N " #"# # ## ,
, # .. -# . " #(# .
#
," ).. # ## = ', I2I"%( ' 7&% I"% " , 2 ( '7&% 6"% " , *2 (
I.!2
!!M
, " . # # 7&% 8 01 "" ,8*28.( ,, ,#"(-## ##
#.$
#) " ## ) = 5H , %% P 1/O1 %' %% ( ', I2I"%( ',7 % I2I"% " ,- 2 ( &,( ,7 %( 5H(
#) )" # , )
, " )"#""
( "" " =
" # , "&- * & *.
#@.I , @
= '0 '( ' +IIII2+IIII'" 0 (
C
# ,#" #G , ,#
" " ## "" 0 , ,- #,, ,# ##. ,# " ) "", " ##",
# @<.0 " # ,# ,". ") ,# " , " # ,(-## #,,
#. ) (# #
.9 ," ,# # # , E# = 55 P 1/O1 %' %% ( 'E +929I'( ' +92+I'" E 2- * % ' 52- I * '- I I( E3<<( 3< <( E'%29I( 55(
, ,", , # . E#' # ## ", , E , ,# " E.$ E"
E" ## . #
!!I
I."01 "7,
"" #" # G , , " @?"" "#I " ,"A"
#G "" # ,= 6! !!0 ! ! !) @ ! " 6& ( 'G% 9!( ', 626!G%( '%, 62424! " G% ' 4 -) * % 24 4 *- 6*4 (
0 )!! % % #
!!0 ! ! '#% I6!
6.3 Parallel processing 01 , " ," )", "#, ,""
,.2#, ," "#, ,-#. " , "
7,
"
."7,,G , "#,"# ,# ,, ,"" , ", # &..#, # , *"", # "#,. "#, #
#,)", ,#, ,""
G$,)", " , , )", "", ". "
- ,# "#, "
" . , " # "
# .. ,)", "
. # " , " #,"# . #" 448,# "
." " ,"# # #() "# # ## #. " , '% % " #" " ,# # .
I.B0 "
!!6
6.3.1 For re-entry – the task attribute , ,#=K. # ' "
,H, #.$ ' # ' " ).$ # , " K. " # = E E %' (%' ( 'GK( '('G( G( 'G( ( (
"" "#,E" "#,. #)", " , , "
#. ' # '. 01 #)",#E#. , #'
, #,)", " , #E. "# #E, ) ,EE" , , #. .C)" K , "#" "# ' .$ , ,# ,## ' . ) #,"# = ( '(
( <0& B3' '3F! '# E#", )", . #E # )", , ##, #.# # E # . , , "#, "," #. ," "#, # ,#' " ,", ," , ##G ,#" ,-# .,' , K N# " # "#, ,"
.C
" "#," # "" G -" ""#" "
-# B2- " .& -" # "# )#"", " ,
H".* " # , "#," , " ) . "#," # # "
& ,# ,# *. ",",, " , # .$,# "# -
!!@
I."01 "7,
" # ) " .,= ,# ," K # , AK ""G $
# #"
" , .C '
# ' = ' ) #
, !: #% = ')
Y!: % Z )
Y :%
'K,ZK
( <5& 3''3F! '",
"#, , # N 4" # ## % ' . :%
"" 'K
" + %
' , #&+ ,"/1,4 3&14*# *. "
' # '% % . ' , "# " ,## , = /" 3 "#," 'H, ""
.$ " '% % "" #' A, ". 9 ,, "#",= & .5 #" # ##= # # &
5 = 3 & # #""
, " +# , /3- ## ) , " ."
01 ## " ," "
#.01 , ! . # " )"## #"#.
= @. # )",# !. #, )",# B. #% )",# L. ## M. % " # ## % , " % , )# & ,&%%*.
I.B0 "
!!J
@ " ## # " #. 4)",, # # %## A ",##.9 , ,#, " # , ,=$ ,-# ,#",
,
# # )", .0 , # #, # ,# % # ,## ," ,# " ,
", G )
" "#= ,( %(
( <8& K''@! ," , "#, ,,-##.C ,## %% %' ., , ""01 "#, /3 ,##' .. , ' . "
"#,
" ,-# " , , " .$ -## "01 # # " + . $ ,-," ###. , , " " ,#.. ! -"###. ##
,#," .9 ,", .. ! "#,2
0 = '1%#%!#JGQ7GLJE12 #JGQ.7G.JG.E$2 H2 G(
$# #G" #@M." , ,, , "#, "#, # # . ,7,.
6.3.2 Move by move – synchronization of threads ) ) # " +#= " ### #. ", 7,)#, ,# ,# ' # #, "" 7, # .5 ,# , " + . ) " ## # 7,
#.",: # " ," , = 5) # &T %% & 'K&( " : ", 4- & (
!B?
I."01 "7,
'%
'.7: 07( '.7: Q7'% ( '1G( %03%II( '#%7: 07( % & &% %1JED] 'D7: Q7'% ( 'J7: Q7'% ( K02<T %%<2Q( (
%3<<( '#%7: 07( !III( K.% % 07( G( 'G( '1%7: 07( '1%7: Q7'% ( ( 1 %' %% K&! (
%%%( 'D7: 07( !III( 'J7: 07( "% :( Q3T0( '#%7: Q7'% ( ( 1( L & %& & 5)(
4 " " # =" #" . # , ## ," ," "
I.B0 "
!B@
. / 3 , " .) ,#%7: "# " ##" #J7: "# " ##" . D7: ," " . .7: ," 1%7: ," #.," .% % # #01 ,-," =, << " #
A ,. )", " ## ,-# ". , ,1 ,#" ," 0
", , 7,
" , .5 07 ., 1 " ,
#" ," ,""
Q7'% /" 3. #,H, # &# * # 0 ,# 7,
.O#=
' # #
$ . 0 , . " , % <<# 07 " . " ), #= ! . # " # .. " #= !III(
, "# , " ## " # .:#, #" , , .., " ,"" "
"
" ,.$" ,""## ,# " , " , " ,. !
, = " , " ,#, # /" " 3 , #. , # ,A## # ,-# " . , ,! # , << , , ,-#
"# ## "
" "# :#<<# ,# . # " # " "", )" # ., ,#" "#.$ , & ,# ## " +
" ). , "", . ## " #
+ . #" "" -
!B!
I."01 "7,
.5 " , % " , . 01
, ,
% .
, .( , # ' , " 01 . # # ) ! = .7: %, 5) %' %% (
'!: & ( '1%.: !22", 42 ", 4 %% !: K&! %'%( '1%.: 22I2I( .7: ( #%7: %' %% (
'!: & ( '1%#%: !!: %% !: K&! %'%( '1%#%: ( #%7: ( J7: %' %% (
'!: & ( '1%J: !!: 2 %% !: K&! %'%( '.% ", 4( '1%J: 2.% ( J7: ( D7: %' %% ( '!: & ( '1%D: !!: 2", 4 %% !: K&! %'%( '1%D: 2 ( D7: (
I.B0 "
.% % %' %% (
!BB
'!: % & ( '1%` !: !!: 2 %% !: K&! %'%( '.% ", 4( '1%` !: 2.% ( .% UI( .% % ( 1%7: %' %% (
'!: & ( '1%.%: !!: %% !: K&! %'%( '1%.%: ( 1%7: (
# , ,# , # %% " %' & " B.!.6*. !#" "
"
"#, 7,.2 )" " 6.@1 - 0 . # " ," ," , ,-," '# ' . #"
" ," + $"", &/" # 3#/" # ,# 3*A,"
.1' , # " ,," , #. # # " , " ,# " @# , . # ," @# . #" " #,# .9 , "
" , # #. "#,# , = # %' ( '.% ", 4' I( 'F2O", 4 % % ( %%%( F3.% ( O3.% *( "'F2.% 2O3I ( ( # (
!BL
I."01 "7,
# "#, .1 #" #
" ,-," 'A ,G , #, " , " ##" " ,.," " #, 7, ", . " A, ", ,#",,
A '
, " ,#, ?&", 4* . ) "' , # #, @.," ' # ' " , ", 54A ,#" ,
6.4 Program generation at compile time 01 " "
# , 7, "# "
. ) ", .5 # , -"#01 " , # , ,01 .0, ,# "
, 01 )" &d*. "
= @. ) !. " # " " " B. " "" . "" ," " '% "
# ,. % ' ", ,, )# # "
% ' , , ,, " . ," " "
.. "
#," 2!#.
6.4.1 As usual – basics of the macro language # 01 , " !#" , ., ,, ' " & *" " ! & "" * " "" .8 , , , # " " ,## , , , ,#
01 .C ,#A #A
#"
' " d ' .5 ) , " , #" ! " d ' F-(
<d ' "= d ' 22-8Y2Z(
d ' Y2Z(
( <9& LC*D!3# 6 LKC*D7
I.L0 "
!BM
# " # "
" .22-
#" "# " "# !. " ,) #,#$% ,) ',# !# # ," "" ' "
,) #.$ ," ""
. ," # # d ' " "", ," d , ' = # # ## #
#
#"# .
# ,)"7, "
." # . " ,
"
.5 "
)" , "
" 01 .
,, #" # ' # ", ." #"#d' = d'0'2Q",(
#"0 ,' :&,#*# Q , ", ' H. 1 "" ## : " , ## "
"
H . , # "
,.C ", , ",?# , &<<*., , " #" )
, , , . ", ' ,"" @"
# .9 ,"" "" '% <", !< "
"", , ", 4 # ," # #, " . " '%<'< " #", "
" " / 3. , ## "
,"# " = d'0'( d03<E.<(
"" <E.<
# "
0. " , # ," N$ "
#," ) . )"
# '
" . ,..#"= d'E#JP$G2E#OGJQ'( dE#JP$G3<!: %% ", 4- & <( dE#OGJQ3<%% K&! !: %'%<(
,# #",)= '1%' : !' :R!2 E#JP$GE#OGJQ(
!BI
I."01 "7,
"
" , "
. 9 ," " d' #
d' = d'E!<E.<( d'/'%II(
E ,'#/'%,",. , ! # '. 5 " "" ",# "", 01 ,= d': # d': .
" ,"
"" " "
"##" = d'0'( d03<E.<( "% %% 0'!E. d':0( "% %% % % d03<0Q<( d':0( "% %% 0'!0Q
"
, " " , ) d- # " ",, #." "
01 ) ).. "" 700 "# " " ,#"".1 "" # - " # . "
)", # , = d'E'2",( dE3<*.<( d3-( 03E(
N 03E( E "# " #"# "
&# "#*. ," ,"= 03*.(
= "#! N = " G9 , "= 03-*.(
C ,#"#E d':E' (
I.L0 "
!B6
") E " "#." "" ' . 9 , " " d' ' ' %' " ' . 0 "
"" ," " , .4)") & * H, ,-," '%'%! , &%' , '#:"!. 9 ," #"#, = d'E -2H2+'( 1 % dE223<E <(
#
.,-," % #% .,", #. 4)" `' # `
`" # `% , , &`K* `&%%. # "# ) # ".9 ," ) , %
##, "
= %3%H( 30*Q( (
, "= 30*Q( -30-*Q-( 4304*Q4( +30+*Q+( H30H*QH(
"
", # = d'",( d3( d$( 30*Q( d*3( d"V3Hd d&%%$(
d&%% , "
, " " ,).C ," "
## " , &d- *# "" & )*." , , " ,d&%%= d'",( d%3%H( 30*Q( d (
d%
)" ,#
# ," d&%% .8
" ) # % = #% ## "" #" .$ # : , #. " # ' , , "-
!B@
I."01 "7,
, ,)
'#"
% % ", . ,-," " # "
'%
" ,"#",
= d''% 2T % ( d''( d3T %'% ( (
9 , " ,- ," T % ## ##
" ,## " '% , ", " ,.," "" @@ #= 4IF.GI554IH
# # "" 4 . ,, " , # " ##" ..
#" . , ,-," ! ," "" " " ! ..! 8 $% . , " , # , ,# !:%
.9 ,"
"" " ! #, ,-," ! . 5,,-," " ) " . $ d ' ") " , ,# , = d '
# d, '
. " , " # "
= d'O '( dO 3<E.-4<( d" O 2243<E.<d d ' O (
, " " d, ' # # # #
.
6.4.2 As called for – the preprocessor procedure " -"# "
"#, # #," .$ "
"#, "# " .
, )## "
# "" . ) " . '," ##A ) " ,= d'' !( d''(
I.L0 "
!BJ
d'%' 2G ",( '2G'2",( %3% &( " ,G2 22W3I ( ( I( d (
8
#" "",# ! & #' ", # *." ," , # "
#"#&d' d':*. # "#, " "# d%' # d "
.5 , #"## , ,# .
01 # ". # "
"#, ," "#, # , . ,'," "# "
)
"
"#,AH, .. , . " # ) , " ). 0, ,# ," # "
"#,
, "#, ,
.
###=)" #,, "#K # "
, ,, A ", #,, "#.C)= dP' %, 59 %' '( '2J'( J3< <MM( J3JMM<2NE.1/\L^8$OF#`JGPD0Q@ABN<( \ J3JMM<2N'"&aK %T :,!R=>;N<( J( d (
" P' 01 )= %' '%( 59 P%"P' %' %% ( d'P !( d ' P'( '' : <\= ; ' <( \ "%! P'( 59(
!L?
I."01 "7,
d ' , ,# , P' "
.4 ,#" "#,, ". # d' , " ,# ## d': " . P' ,# +# ##, , "
#" .5 , #,, #,"## "#, "#, .," , # ) " ," #, . 8 " P'," ." " , ," ' " # , " "" < ,, . #," " ," " ", # " , " ,.# , =9 , #'"#,", "#" . & # , "" ,.M!*9 , " , )
# # ,,
# . ,# "
,, )" = 6'9 ,0 +0 0!! ) ! G ) ! !! ; ,
, ,, ,-,"
' #
'
" ," , " ) , !# 6!. 5
# # ", "#, # )" = 6-3 ! !) ! 0 / % . ! ) . +0 ) + ,# ' ,#,,, ," "
"#, , ,. # ' ,# ' , , "# , "#,. " , "#,P' = dP' %' ( ''( < <K %' ( <2NE.1/\L^8$OF#`JGPD0Q@ABN<K %' ( <2N'"&aK %T :,!R=>;N<K %' ( d (
M! $ "#, ,# ,"" # .
I.L0 "
!L@
#. # ,# " " " , , , . .K ", %' "" ,# "" ". ", "A" " ," A"# ' """ )," ) "#, # . " " # # K #
%' .
6.4.3 Self-made – definition of statements of your own ## # ",
"
"#,.. d%' . " #
" "
"#, ).. 01 .$
01 )= K!%K!%(
, # # +# #, # "
+# .
#)" ," , # "# 01 "
"#,. ,.. ,0$:4 ,:4%%MB 01 ,# ) = : 0<<Q(
# ,# """ &# *"
# 0# "
# Q.""" # "",
# 0# , Q.,0$:4 " , # ," .5 " ",# "
"#, ) d ' & "#, #"G*= %' '% % '( 56 G%" %' %% ( d' !( d ' ( ''-I:( '0'9:( 'Q'4:( 3<.FO/\Q<( : 0<<Q( 02Q( 56(
MB :4%% # ! , ,
# 01 .
!L!
I."01 "7,
#
# ,# Q. "
"#, #" # ,##., # # : # "#,. """
# # 01 "
. "#, " # ".C " " # , ,= %Parse: /* to example B69 */ procedure (Value, With) statement; dcl (Value, With) char; dcl (A, B, C, Name) char; dcl K fixed; if ^parmset(Value) | ^parmset(With) then do; note ('Option missing in parse statement.', 12); return ('/*?*/'); end; K = index(With, "'"); A = substr(With, 1, K-1); B = substr(With, K, 3); C = substr(With, K+3); Name = '$' || counter(); <%(<K %' ( ans (comment('parse value (' || Value || ') with (' MMDMM<(<K %' ( <'<MMO MM<", (<K %' ( O MM<3 ,<MM MM<2<MMMM<(< K %' ( EMM<3 <MM MM<22<MMO MM< (< K %' ( .MM<3 <MM MM<2<MMO MM<*(< K %' ( < (<K %' ( d #(
,-," ## , # "
"#, K "#, ,# , #. "" , # +# .5, , +#., " ##
#. , <<
K
%' G " ", "#d % & " , ," "#,* "
,, "
. " # , " ?
I.L0 "
!LB
&
*L &*@ 4& *@! & *#@I & *. # ," , ,, " " & %'
%' " "*. "
"#, ,, ", ,) "
," , ,,#" 01 ," , ").# "#," = $ ," #" " " ,-. ,# # , # ",- ,"&# " ,# / "3" "# "*#G" , 0$:4 ,#' , & ,# , ,#*, #"" 0$:4 . ,# "
)#" ,# , 0$:4 " #= ,#" ##. ,- "
," '% ," , # 7,#. ""'% , ,@& M"" *
#" " "",. # ,, ",# # % ,. ,, .. " . ,
, , ,#" , ,# , & " . ,-," '%
, # " " " . "",, "# U# V.$ ,-,"
''% #
' #.0 , " = ''% , " , " " "# ,") ' , " " "#. # " " " = %( : 0<<Q 'CIIII", ( CIIII3 ,2<<( 03 22CIIII ( Q3 2CIIII*( (
$" # 0$:4" ,B?? "
.ML
ML " -" & (-" # " M.B.!*"# ##
& "*.
6." #
!LM
<& # 01 , #.# ; # #.$ 01 , ,# # ,"#" " 01 , # , # .01
,# # "", , A
, " 01 ,-," .
7.1 Low-level programming #' #0 , , ,. , , " , , , 01 #" ,- . " "## ##
. 01 " " ,# # # # , . " 01 A #" # ,# " #. , , # 01 ," " " , #" .
7.1.1 C-bits – bit manipulations on numbers #" , " , , , . ! ," ".. "# # # "", ".9 ," , ", 4 ,
"" "" , "# = 'D7$", 4: <9I7II7II7II<, ( 'D7E01", 4:
C
" ", , , ,"-# # #, *)#" &,# *. , " ,"# , "/ 3." , ,, " , 01 M & ## *K ,-," . % / 3 , /# 3#% /)", 3.$ #B! , .$)" % , , ""," ,. , & , ,"" , # " = ' ", 4- & <9I9I9I9I<, (
, / "3, ", , ,", ,- ," & # & . ,"#, " # , , # .. ", ) ", 9 & #" . , /", 3@@IB!# IL.
!LI
6." #
" "# ,7, #. ,## / 3 +
, # ,01 , , " , & " , *#, #," .$"" ," !. , "# " = '#%", 4 9( #%2-( #%2-( -#%2-( %-#%2-(
4- - 4- -
'O&", 4 9( O&2-( O&2-( -O&2-( %-O&2-(
4- I)4)+9-- 4- -
# " 1&:*1 ". , " #"
B!--,# #, " " " #, " .c
, # ,. # -# %-. - , - - , %- ## ,. , ++
#, %- - .
7.1.2 Anonymous – storage manipulations 8 01 " "# " H" . 9 ," "7, , # ##
# .,-," %' "7, "", # .. "%= 'E II"%#( #3%'II +(
%'," "" ," ,# =, , , K" .
# #,- , ,# ," = '"#(
C # " ," #N , , " ," , = E%'R %' # ", 4( '# % & ( 'R", 4 '#2+( R( E%'R(
# = ,#%' ## #" L-- +#. 7,
)" + # L ,@.
6.@1 -
!L6
,-," %'R # # , "#" ''K%&)# " L.!.B." ## " &,
"#%' *. "H, # , " " # "" = 'E2 -", 42 -."%2 4 'I '"E2
,- , , " , " , """
# " #, "##,.$ , ' , " , - , .. , " ) ,", + .+"##,, , . ,- , , %: # %: , # + ,
. #" ,, # " "
" .$)= ''I <-4+H5)96I<( '%:*422H( (
5 "" <-4-4+H6I< ,# ,.9 , " #", " '= "
" "
.9 , ,# # # ,"
+. %: "#)"
"
, # " #
+ "" #. ,, ! ) ) # %: , ,# , # , <-4-4-6I< "", ", #. ," " , = "'% 02Q2RQUI
<0& Q](
? 7,K ,0 ,# Q. ,# " 42#$ , # , ,- , , ' # '' .
)"
= 'E'7''II:( '''7''II: <E.<( ''E'7'2 ''7'2 &''7'(
!L@
6." #
0 !-#& ) " * :! & # ,# , # , ###
# ##
#.$ ," ," "" $ 42= ,## "
.4 ," ,#$%"" <E.< 42 "" . , ", , , " " $ ,#, #, JGE1$$"" # ,# " .
, ," ,- ," =
' #
:"! ,
#" =
' #
:"! ." " , , ) . # " "
. , # #" # , ,# B!O-.
,) = &, * "
), B!O"" !<= 'L!'K II7III' II7III<<( ' 7 'II: <E.<( ' %:L!'K*HI7III2 7 2 R 7 ( ,L!'K2 RL!'K2 7 (
# , # ', " &'#'" # " 6.!. & ,, *
, !<= 'L!'K II7III' II7III<<( '&7 +I7III' +I7III<0<( ' %:L!'K*HI7III2 &7 2 R&7 ( ,L!'K2 RL!'K2 &7 2 R&7 (
" " . " M???@ ,.$ ,," #", ). " # , "# @????? = '82$", 4( 'L!'K II7III' II7III<<( 'O 'H <59+<( ' %:L!'K*HI7III2 O 2 RO (
6.@1 -
!LJ
83 'L!'K2 RL!'K2
0 ## , , ," ".& " ,#,#="" ), !< "" ," #.* $ - '% :." # &"#, ,"* & -"#,*.
##
# . " ## = "a" #a ," , ,#. -"#" # # """
"#"" #. 5 ) , " #$"" #@@L? <" #@@L@Q " ##$"" # <)'<, <" # <H<,.$" " # ,# )
= '8
""' <H<,( \ 'K "%g 'E7& '( ' '% :E7& 2RE7& 2+I2 8
""2R8
""2+(
#
.
7.1.3 Internals – foreign data formats 01 "" ,-, ,"#"# ",##. #",. "
# 7, "" " ##" -"#, &+ -* "#., "" " )" , . # # , + , "", ## , , . 01 # # ," # :! &R :R&R" C *. ,#".. ''II:R( 3<E.<(
@?@ ##01 , " + ", # <E.<.$ #,-," # .MM :! &R " , # " )"#
.
MM - " #
G
!M?
6." #
# " ,7,# " "" . ## 01 # ," # , %,= 'DK! )' %:! &R <% !<2G !<2
9 , ,# " ,"" ," # ' .5, ,, """ & * " " G "# " , .2" # % ,, :! &:! &R % :! &. , , # , "",=C , #N #/ # 3= + #$% # . 7,"# ," -"
#<< . " ,
"# " "" # #) " .c #
" "&" ,
!# # *= , )"# #. " " " #
" . 9 , ,# " . #" = '%", 4
/ 3 7,"& + #$%* "# A ## G ,#"# , ,-," ' " , "
" - # 'F (
,
#. # 01 , :# %
:.$ , ,.. " /3&, #- ""*, / 3 , # # = 'O:", 4 :( 'E ", 4 %
:( " %O:( E 3O:( "/"% E (
( , ", , ," " . , " , ",
6.@1 -
!M@
&
#
.$%#+ # #&/
# 3* 0#&/# 3*.$ "" = / 3. ,#
,, ,F (
, -##)#" 7,". ",-," , & " !.6.@*. , , '", 7," )#" , ,#, ," , & = , &F 2RF (
C ##, ,"###
" , "# " #,. 9 ,, " , 7," "% = " & # ,
)"# " 0G " , , " # " , "
.
7.1.4 Systematically – API programming # " , ,-," ! .9 ,
" # # ," -"#," #
,. )" ! H"" ,# # " 01 #" -# = )I .%! &"QG " '% %' # %% %,'%( '# ' : % & ( 'J'", 4( J'3! <,'%!<MM# MM<<( 'J'( I
# ,"," # , # ", ,# " #! . 9 ,
" , ," ," &$0=" "*#".) #, !=
!M!
6." #
) :%
:E# %' %% ( 'E '-I:R( '\7:, <1%' :< !' :R!2 !: %% ", 4- & %% K&! !: %'%( 'J'", 4- & ( '#( ' '4-)5):R#( % "! R)6( %%%( K
E MM<3<MM ( <J'<MM J'( ( )(
C , ,"01 " "
#." "#,2
"4")" ,#, ##
, " #,." " ,-# "" .( , "/3.. # ##
##
& "G* "" . , , ,", -,#
# ""
. 01 " " ' =$ ' " # #.), ," B!6I6= # ' ) G $ ! #" " "# ' %% #= •
, K& ! " +#
" , ,01 , # -"
.
• !: # ##
,
#& ! * ,& , ,* ,#
#. •
%'% #" # "
# , , 01 # ", # ' # . 9 , ,# # ##, ,"$0 "#,. " )
" #, " %, K # # ,, #, !
.
6.@1 -
!MB
,
#, ,=,, ,# ##
, ,. "" %% " "#," "# ," # , , , #,,. <
01 " " ).5 ) ,#"# , ,= P%'E2( 'E"% %% ( '"%(
"" )
= 'P 2)(
, , , " , ""
,#.9 ,"# , ,-," % # "
= " E E(
9 , ,# , ," " # -""W. 8 ,-," & :" , ,)= < %"#EGL<2& :<#EGL<(
= " :<EJ3DJG<
< & ''" ]<( < &"]<(
,# 01 , ,"#- "#, ," ,"01
01 , %'
= /% .%' %% "% (
"
##
,"01 "#, . $ 01 , ###
"#,. " ,-," ! " ," )
, "#," ##
" , #. "#, " # "#, #&
#" , "#*A # # . $## ,#
##
"#," , "# N " , , ! ,# -= '.%& !: ( '#( !.%&3#( '.%&(
,
,#" ##
"#, ,"
! . ,
!ML
6." #
## , # " , & " ," "* ," #" # # 01 .&5 " " , #- *= " %' 0%% %'%!: ( '0! % & :R' ( '#( '# -", 4( '# 4"%( #3:&( # U# -( #*3:&R# -( # U# 4( "(
9 ,# # ,# # G
# ,.,-," :& , ##
., :&R + ,## ##
# !: , R "."" ,, ,
##".8 ## ,G , ,# # " " ,""01 . " ,#"
) ,, , " ,-," " , .
7.1.5 For long runners – checkpoint/restart ,-," # "# " . ," , "" " + . 5 H ", " "
", ," &"# * , " ,#. ""# ," # "" " #" "# , . ", "& #"# * ##. 5 ,, "" , ;1 N ( " ! .9 ,, "" " # " J1
&: 2 *; 4%4 .. G#OE0.#\3#JF\2J13J
J13J , , " J13OJ# .9 , ,#
" J13JO. J13O. " ,# "" " # &J13O. # , " *. ,, "# "" , " # .. Q.L8111O3.#PO8G2#E.321#3OD28#
6.@1 -
!MM
"##, , " H , M??? . ",
7, "
, # 7,# . , "F11# "" " #.
"F$1 OD #"" "# .9 ,
"02"" "#. "" " # ,",- , , 'K ," = 'J'", 4( ''K<Q.L8<2<#<2<#<2J'(
, , #,, , ,# ", . , # 22- &<Q.L8< #,* " #
# "" # 01 "" 7,& <#<* 02&<#F<* ,,01 , ," &? ,""
,*. 8 " : # .C # N "" #, ",# ] " , # = H # " "# " ,#, "" " #) K"" " ,# . ## ,"H ,# " " ,"
""" " #. " ,, " ; ### "" 22- 4%4- = ^FOE^F2O 2JGEJG3G#OE2# Q.L8111O321#3F$1 G#OE0.#\3#JF\
, " " # H , ,# " J1-0. 9 ," "# #, ,01 . ## ,01 '(
01 " #L?J!# , "" " #. ,# ' , , """"" " # ",- , , ' ' = '' '(
8 , " , = , #"" ,, .9 , ,
# , "
"'K" , #" 'K.
7.2 Manipulation of Wide Characters $" !I#"" #
4 # ) .4, ",,,) ." ,, )""" #.( $ "" " #
# , -
!MI
6." #
"" " !MI , = !????7,#G
" 01 ## ".
7.2.1 The first attempt – the GRAPHIC attribute @J@@ #" #" 01 , = - # ," 5#C48 "" "", . #," , &' # , # # )", , , .2 #=2 ,". " ) ### "" #
!MI"" "" ," "
.4
@!@"" # #"# @!@# , #" " "" # ; #O . ," ; " 7,) # "" ," +# # 2" #=
, "" "" ,, ,"" #. •
, "" " # ,"" # ) .
# &'01 , ="" .,-," # )#2 &'.)#2 # ''.," &' " )#2 , &' #," ' &' " &' )#2 .
,"
" =## )#2 #"#, .2 , #$"#4, # # " ,&',.
7.2.2 The second attempt – the WIDECHAR attribute "# 2 &"," " * #" ### " " # ,# #= (" # ##+#@?IL@-@."" " (5-@I "..@I , # """A G , @I , @!@ "" " # , , $ "" & J ?*.4, " ##.. "
(" #= # 8&# ,""
*#;. " , (5-@I.5 ,
" # " " ,)$& $*# # & #*.5 )
) #
)$.$ ) " # (" #",," (" #.;
6.!, #"
!M6
"" # H" #(" #K "" ;. 01 (" #
# , "# '# '.C ,")"'#; # # "# " 6.L. ) # , &%,DH, #= )- & %,'!'''D1.LEJ %' %% ( '&%,D !2 ' :R! % & 2 ' :R! % & %% 2 ", 4- & %% ", 4!: %% !: K&' %'% , <&%,D<( '8", 5 & ( 'G,'5:R <<( 'G'+:R
9 ,,# ##" &%,D ,# " . "
. ," )#" G, # G ' =G )"
# " ## )#" , 7,"= # 4 "# 4:,
. @I"" " ," ': , " " G,
.,-," '"""" # , ,.9 , # "$ " ##.
)#
=
( <<& 6D 7
!M@
6." #
4 , (" #01 " #)
.$ , = •
01 ," " (" #& &'*
•
5 '" .. #
•
$ '' # '= % :! & :! & # :! &R .#-"" :! &R
•
#' " # #" .C ,# # @!@ '"" " #" ' ' '% :% " # ,# #.
•
,-," "" "
" , #' , & )" *. ## % ' # % % ' " ,", '% :% % ,# ': & 6!* ' " ' % # & . " "" ## " #, # ," " " '%&, "" , # "" .
•
$ ,# ,, ' #"# ,, " # ''.
( ,(" # "(" #""..//<,. #" , , #" , .9 ,"## " 6.@.B.C , "" 01 # ' , ".
"(" # = 'D'I:
,# " , ,,, ," ". ( " ' ," "" 7," , #
'# ,# #, . "," #"" <<)
# )#"
#'& ,-" #,.( ' # <4II<, .
7.3 Using REXX Components :4%% ," ",
#" ",##01 # ., ,
" H," 01 "01 ",#" "
6.B( :4%%
!MJ
" .:4%%-0 01 , &# ,, #*.' #.4
01 0 #
:4%%7," :4%%", ).
7.3.1 Relationship – REXX calling conventions 7, :4%% , 01 - .5 ' ":4%% ,- 01 . ) ,- " " "#:4%%(1" , , .
# # ,# " # :4%%#"" . ## " A :! & 01 , ## ), . 1 , , , !\. :4%%(1= # 7,
# 01 , 01 , ,# ' #, # GC # "
#" ## # ,& , ,# # " , G*= )4 &%J00PG$ %' %% ( '!\8! !' :R!2 ", 4!: 2 % !: 2 ' :R!2 % !: %% K&! %'% ,<J00PG$<( 'J 2 - ", 42 - ' ( '# '2 - ", 4 &< %'%<2 - %:R< %'%<( '#%'II:( '.'( /%1$$ "'!\8!<J00PG$Q\G8Q<( EK"%% #%3<<( %%%( '!\8!<,,,<22# 2
#%MM3.( " &#%UI
#%3"#%2 &#% ( (
!I? 1!% !< <MM#%MM<
6." #
<(
)4(
,", J ## :4%%
= ####
.$#" !\. , 01
# :4%% ,- = @. ," & ,)* !. , ",:4%% & @ "* B. ##
##
",:4%% L. ",7,,&)*# M. ##
:4%% ,#. 9 , "H, "" ,#. " ## ", < %'%< .
" # " , " "# " " &" #
,, &
7.3.2 Simply huge – REXX programs in PL/I variables ' ,"" ,
:4%% 01 # :4%% , . , , ) , " ," .5 ) , - #, , # 0$
) ## ,H"., , :4%%,, = "E3<<M%
# ,# # # ,. $ ,
" , ) " :4%%# 01 . ,# # ) 01 " .$ ) ,# " # "", , , ,#.(# :4%% = .$ ,#:4%% ## @???# ", #.$ , ,01
"#" .: ,"#:4%% ,= )+ '% %"& J00 %' %% ( '' : <&,2!(<MM < '&II(<MM < , !(<( ' ' & (
6.B( :4%% 'E'4I:R <-4+H5)96I-4+H5)96I-4+H5)96I<( 'E-'4I:R <-4+H5)96I-4+H5)96I-4+H5)96I<( '# -2 - ", 4 &E2 &E-2 - E2E-( 'O '5:R <\\EOG.<( '#%& 2 -# 7,2 4 ", 4 & 2 4 2 -.%7,2 4 ", 4 2 4 ( ' :%
'H:R <O<( 'J 2 -$ ", 4 2 -E 7 ( ' 7 '-H5( ''7 '4-)5)J E( 'J'", 4( 'J'H", H( 'J,, ! ", 42 %"& 2 & ! 2 %"J00%& 2 %"J00%& 2 :%
", 42 ! 2 !, 2 & !: ", 4 %% K&! !: %'%( d"! 3
2 -2 J0/PO.GFO 2 J'H2 J (
!I@
!I!
6." #
!< J < MM '7 22J $ MM< <( / &' % "J EZ3 7
d"! 3
##
, ###
:4%% &*
# J,,." ," ,# ,. = , ,_B!??? ," J'H. " & )*" " :4%% .5 " ##!MI . ,# ' & 7 *:4%% #7, "#" ##
J .9 , # " , A "
.5 ! ," 1%/ # # \% / , "" # "#, .
! " , ## "# , # & , *. # #," , ##
" . ", # ,# , ) .
7.4 Utilizing Java components ; , # #
# , H"- # ] " ". # 01 , , N ; " . ,# " . , , ,; """ "=# , ,# " " , "," # , " "#.
, K , 7, 5 .)#" )"
, " # ,
, #. ," , ,## H"- # = , , # ,# '#" #. , ,## "
### &", -"# * ## "
H"", #. , #, ,
/" 3 H"- # . , )"# "
# " "
" .4 #" , "", A " ,+ -
6.L(+;"
!IB
" / " "3 ,
," , # " / 3. ,
# 01 # ;. " , " ; # 01 . -"# ;8"&;8* # .
7.4.1 Using the front end – PL/I sub-programs for Java
"
01 #;" "01 , ; #. , )) 01 # ," ", "& -#*;, " "" 01 ,- . 8 # ' ,; ) 01 " ,"# . # ;" # #: , #; ,, " ## &.. , *.5 ; = ''.% :% h &% ( '( ' ::%%E'( 'h! %$!Na:% N(i '':% &je h .% :% 3 .% :% ( % 3N000N( %E'( ! % NGJ% N * %
*N: N * '( i i
5
)
;. ) ,"= # :#" #%E' -; # "
.% :% . # ,# a:% ##."# H" "
.% :% : #&#
#* # = % # '.5
#N000N01 "#,%E' "#""", ,#
, " # H" ."
! % " # 01 , " )" # " " MM. C ,#01 " " ; #N" )= )H J% ^:' &#$ 'K&( %E' %' ^O :2FaK , <7^:7.% :% 7%E'< %% !: %'% K&! (
!IL
6." #
d ' a:( 'Fa'!aFa' % & ( '%%!a%% ( ' 1!a/1( ' '6:R' <'<( '^: &!a &( '.!a.( '#% ( '# &'II:R#% ( ' &1!a/1( ' & '6:R' <% <( ' ", 4( \ &'%"%a' .3 :\Fa'.^O :2Fa'( \1%" & &13 :\/1^O :2.2 & 2 <$a: & &(<( \^: & ^: &3 :\Fa'/^O :2Fa'2 &1( .% :^: &%#$'' & #% 3 :\ &PG/.^O :2^: &2%%( 1 : %" 3E'# &( J'' &%"^: & ' :J &PG/.^O :2^: &2#% ( \1%" 13 :\/1^O :2.2 2<<( : ' : /^O :2Fa'2 12 ( %E'( E' %' ", 4( '' % & ( '", ( '8", ( '$ ", ( ' :
2H2I2HI2II2HII2III( ' )'' % &
<<2<<2<0<2<$<2<.<2<1<2<<( 2$ 3I(
6.L(+;"
!IM
%3 &%! :( :3<<( %83%) :( " 2238 %( "8U3$ %( *3D8( $ 38( ( 3D8( :3
# .9 ," , % ' ." =),
# <^:< "
"01 "#, ; ## : #" #,# " . # "" "# ", " " # "## , 7,.8 01 "#,, " ## )& , " *G ,# .
# /01 #3= ,", : ," "
;8# H" "# #".$"
#" ^EE.#Q"" , @??? #"",##d ' .MI$," " "# :.. :\Fa'.. " )";, # , , + = @. , #" "
H" !. , 2 % B. , #" % L. , % M. ," "#,E' I. , 6. , 2 '# @. ,
,"# E' . MI 9 ,"#;$$.0981(24#" #" ," # # .
!II
6." #
$2 ";, # ," ,.$""; ; " , , .. , a: & & "
a: & &.$; , # # )"," ,
# 01 # A; (" # # G ,- #, : , # ",
# " B.B.! #" .
7.4.2 Without Java – Java classes for PL/I 01 ," BI? # , ,- 01 K ) , .$ , # " #
,+ "
,- 01 .$ " ; #; '
" " "
# # A" " , " , .( -"# ) ;8 ," , 01 . ) -"# ; , " &;* 01 " " ; "
- ### ;. 01 - ,#" #' , ", ,#
01 "
#, ,##" ". #" "
# H" ,-01 ."
,# ##,
"" #"" " " , / 3= )5 EK & :"% #$'^: 'K&( d ' a:( %& %' %% (
'G :' : < <(
6.L(+;" '#%", 4 4)( ''7 '76II", 4- & ( '%'K.!a'( '%'K!a%a' ( '\7 !a %1( 'G : &!a &( 'J7 !a %1( % '% % ^:7,'% & ( a:7 7,'% ''( &%%J 7 ( ( - a:7%% < 1a:'% 3OFO<( 4 a:7" 7'%'K. '
!I6
!I@
6." #
'%'7 '76II *'<6IIIIIIIIIIIII<( J 7 ( 17 7 ( )5(
" ," 17 7 )" , # . # -##" # -, " , ' ,#. - ;# # #" A ';" #. 4 ""
"
a: %'K%'K. , "; H" + ' # " " . H" H " ," # "
%'K7' ,# "# H" %'KA , " "# . # # ,## , ## , " ", " # "@.@.@J??. # # " ,, -"#, " . # ) " # #" 5 ." # , ,&", 4- & * "
#, , H, "7,#& @ # 6 *.$ ,# # & I *""& *#",,'7 '76IIG" ;. # 01 " #=## " # 01 , @ ;,@J??# , 01 ### ,-," '% . 7,#;# a a%a' a %1 ". #,"# a:'!. ""
#", 4- & # ') ;K#" #;
"+. ,# ) " # .";"
# &" & ' ,01 *
# "
# # , -"# ,. H <$a: & &(<.
# "
a: & & ; ,,&:%*. # ' # ' ",)",#. M6
,#" " ,, ;
# # ; 01 .C , "
. 9 ," , ;"
" H" #" # A# ;!2 " # # #"# 5. @
"G M6 ,# #" # ,#, ,#.
6.M<#%1
!IJ
7.5 CGI and XML ( $ 0 &<* ### )" ) ." ," 5 ) "
4) . " # " 01 " # 7," )%1# ", ".
7.5.1 Classical – CGI in PL/I 1,
,, ###
&(:1* # #
#4 . " "# " ,01 . " C0# ", , ## ,, ! = .% !, V UVU VU.% :% %"J% VU VUV%!U VU.% :% %"J% VU V"% '% 3N !'% % 77%& NU VU J% 2 V !3<,< 3<0
.% G!.5, # ., ## ",=
( <=& # << & , : ,##"" < -, ,# , #" # #" ,
#.C #N ) , # =
!6?
6." #
)) .% :% %"J% .\b\G 'K&( 7%& %' %% (
'82$", 4( 'J% 7 'II:( ''II:( 3& :<`PJQ7GJO\<( <03000XQ3$%< "3<< 'D7&<<2<<( %( 83 ,2<3<( $3 ,2<X<( "$3I $3 &*( K! "8W3I J% 7 3 28*2$ 8 ( J% 7 3<<( 'D7&J% 7 2 E'J% 7 ( ( 7%& ( D7& %' J% 2 (
'J% ' :( ' ", 4( '.J$/'-:
6.M<#%1
!6@
'%"! ( D7&( E' %' ", 4( E'(
))(
`PJQ7GJO\ " )"## / 3: 3" #X. ".5 "
: ,# , ,- " # ## , , ! . , #"# "" # ,#. " #" , ) ",=
( <;& # << : "#,# # , -"#<4 #.
# "#0. , # ) , ##.8 )@?? +K, ,# .$### 0 # , # ## # ## , .. ! . .FOGOG7$O\GL , # #.$ )/ 3 , A , #
# " ,#,, #:15. " ,, ##"A # )A" , &# ,-,"" =
!6!
6." #
)9 .% & &%.\b#FG 'K&( %& %' %% (
"& :<J`PG7GLF1<3<\G< 'D7&
'%7 % & ( 'O 7%"7 ", 4 % & ( % "! <% 2!'"2'RIII<( <.% !, <( K(
6.M<#%1
!6B
'.% ", 4( '% !'II:( '/7 <<( '8", H( ", '$", 4( '$ ", 4( ' ""7 &", 4 /7 &/7 &IIII* ( '' ""7 &:( '! " '%( '.J77 ( % "! < 2! <( .% 3I( $ 3/7 &( .J77 3
C0 "" GLF13N%N#O.GQ#3NLG$/FJ O.F11N "% "" O#PG GQ# 3 N/$N # ,# #"# ! ." , "
! #!
" # % . ,- $ '%
," " #:15. ,-," ! " , "","
, "" "@???? :15 "",#.0 " 8 # # ### , ,#
. # ,"
, ## ,)=
!6L
6." #
)-4-4I-'-kk .% 1%% "% ( 3N0N( " 3N._"%_",Nkk .% G!'% %' kk kk $ kk $ -kk $ 4kk $ +kk kk )-4-4I-'-kk .% 1%% "% ( 3NQNkk kk $% kk )-4-4I-'- kk
###-"" :#15 kk ".$ , #", ## "" ,.5 , #",# , ## K , ) , ##.
7.5.2 Working to rule – interpreting XML 9 ,"#" # " , "# " ,# " 01 .C " N " , ," ## .# " ,%1&4)## ,1,*"" # # ", . $ "C1#%1
,#" %1 # # . "##01 , ,- , , , # , .
# %1# ", ## ", "##
#.$%" $0 %1" " %1# ", .1'
, %1# ",= V%' U V &UD<%[V &U V U V[,,"
5 %1# C1# ",, -C1 # .$ /V[,,3. , , # #"# , , #. ( , %1# ", " # # ", ," %C1 , %1 . ) 01 ." ":4%% 01 .5 :4%% #,"" " A", 7,#A %1# ",", %C1" #" # "-
6.M<#%1
!6M
# .%C1
," C1, " ) %1 # ", ." #VU + , ) VU %C1" VU 7, VU #", ",##7, . $ ,# ,", " = )6 %0$ J00 'K&( d ' ,( '."'-:
'J 'III: <<( E07%"7%' 3\ 7'%
( E0 7%"7%' 3\ 7 '%
( E07%"7 3\ 7!7( E0 7%"7 3\ 7!7 ( E0.% 7''3\ 7!7' &( E0#%' &7 '% 3\ 7,,( % '% % E07,'% & ( J MM3< <MM E07%1MM< <( E07'3I( ( ',E02 J 2 1%' 2 &1%' ( % "! % R4-III( J ( 7%& ( \ 7'%
%' \ 7'%
(
!6I
6." #
\ 7 '%
%' \ 7 '%
(
\ 7!7 %' \ 7!7(
\ 7!7 %' \ 7!7 (
\ 7!7' & %' \ 7!7' &(
\ 7,, %' \ 7,,(
)6(
"," " , " ,- , , , . ,"," ! #"#E0.#Q"
= " : !% 2% 2", 4 !: ", 4 %% !: ( 'E0'2 -7%"7%' !: E07: 2 -% 7 "% % !: E07: 2 -7%"7 !: E07: 2 - 7%"7 !: E07: 2 ( E07: %' P%K 20 %K 2G%K & !: ", 4 %% !: ( 'P%K ( '0 %K ( 'G%K &", 4( I( (
6.M<#%1
!66
$ ! +# "#, " #,'!. ,!L," "#, " "# "
%1" # " ,#A )7%"7 "# " #V'% U " ,## 7%"7 V'% U ., ) %1 ## #" "#, "
# ,, . # "#, "#, ,?. M@ " # , "", # , ,) ,
," , "" "#," #. # " # J , " ,.5 ## , , " " # & * %1# ",. , , ,
.( , " " )" ## 01 , .+ , ;122- ," = ',E02 J 2 <"11Q11<(
5 , "#", (:1 = ',E02 J 2 <"!7"<(
%1# ", (" #"" . " #" ##,"# # ", ,"##,, , , " -"#" #.5 4, ) ,# <F 99H6 < ""
" , # .$ ) ," 7%"7 " ,#= \ 7!7 %' P%K 20 %K 2G%K & !: ", 4 %% !: ( 'P%K ( '0 %K ( 'G%K &", 4( '.'4-III0 %K ( 'J 'III:P%K (
M@
"
; # , .
!6@
6." #
' .22G%K &2."2."( <%' <J MM3<!NV UN<( < <J MM3<!NV%UN<( <'% <J MM3<!NVUN<( %( ( J MM3."( I( \ 7!7(
P%K # , ##
, 0 %K #" %1" ## G%K &
. #-"" &:#15* #" ":4%%
J %C1" #. "#, "
." "#," " #",##V[,,#[U= \ 7,, %' P%K 2#&2#& &2 #2# & !: ", 4%% !: (
'P%K ( '#&( '#&$ &", 4( '#( '# &", 4( '.'4-III#( 'J 'III:P%K ( J MM3 .22# &MM."( I( \ 7,,(
"" ##" :4%% ", # ," . , , ,, . !NV UN !NV4UN !ND<%[N !NV4UN !NV%UN "
6.M<#%1
!6J
:4%% ,&" " , ,## , "* #)",#= V U V4U D<%[ V4U V%U VU '% VU VU 1 VU V%U V U
"# 5 )&,# ,# ## ,*=
( =>& K* , ' ,-," "## . # $%, ", # 01 ,", %1 .( ,, ,,# " , ###" = ' ' -2 -L &'HI ND<%[N2 - 2 4 'HI <% <2 4.% -2 +O 'HI <#RR<2
8 " , %1"" =
!@?
6." #
' ""'III:( '.% ", 4( .% 3, ' '-2 ""2 , & ""( ""22.% (
, , ', ,", # , " ,&!*. " #, ##
,#, +
,.9 ,, ", " + "" " G,, ", %1 #,. " , ' # '" "" 01 "" # ' ) """"
" #,-," . ,## ",B!O "" ,#' . 9 ,,# # ,", "
# , ' #"" " # "" , # A ," #. C , " #= VOP.EJ1U VLE1O\UDX%(%[VLE1O\U VOPU V.FPJUVOEU.:''VOEUV#J.U-HIV#J.UV.FPJU V.FPJUVOEU K VOEUV#J.U4HIV#J.UV .FPJU VOPU VOP.EJ1U
9 ," .% , #".FPJ
" # C17,# " # " .C , "# ,", #"# :! &N, ' " ,. $ , & # *
"&..
# "#*, " ##., , ""#. " " , "" # ," =, '.#, , ' . $# ##
. " "##
".# , .$ # # """) G
$#)$= , #
!@@
Appendix A: Solution ideas " #
, #
#
,"' , ." ,
, # , , ."" " " # , ,# # "
# , #. $@=
" #
--# , &@?? , * # " ,
@
@
!
# O5#"<,
# @@ ##. $!=
$ " ,# 51$,= 3E
4+ H*) HI
H
$B=
", , # ,, #" # # .
" ," "","" #.
$L=
E#
, , #= EM2WWEXW(
$M=
,
$I=
7, #" , # # G
$6=
", , # ,, , = &E22.212( E**.*1*H(
$@=
"" # #%
", # )= .% 3I( % .3<<( &.( .% 3.% *( (
$J=
H, #,
, #" # &.%%2.%%4( .%%MM.%%4(
$@?= $, ," #= "O V 7 77 %
7 77 %3O (
!@!
$#)$= , # "
, S,SS . $ , , , ,
,G
$@@= $# #" ,, ' = 'D%( < <E 7'% 3E 7'% *( <<E7'% 3E7'% *( <<7'% 37'% *( %( (
%" , G $@!= , , -, #= &1!2% 2Q-2,( 13^MM% MMG&( "1U3<-III--+<X1V3<-III-4<
# , ,# # ,"" ,G $@B= 9 , %
= %1% 7 3%+( %$ 3%I( %3%+( < (
<(
## G $@L= 1 ,%
= " , # 6# " ,
. $@M= ( @! #,'6:. $@I= @?? # # ", # . ,
, " , # . $@6=
, " , $ 7 *. )""# ,,) & * #" ,#) ) #. $@@= 9 ," , %
= %#"'3<:<2
$@J= 5 " , , -# = 3 ,<'"&aK %T :,!R<2( -3 ,<'"&aK %T :,!R<2-( .% 2-*3(
$#)$= , #
!@B
$!?= 4""""# = .3 .2 <'"&aK %T :,!R<2 <'"&aK %T :,!R<(
$!@= , " " G 5 - # = 1%3 <'<2D%2<'<(
# # , !? G $!!= ( 4)!IG $!B= $" " # "# ,, ##!LT I?TI? " #, " ,#". $!L= , 2"%%$ 8-*28 , '. $!M= 7," , #G $!I= ," # !G $!6= DK! = 1!7%"77KK!!1*II(
$!@=
= 83 ,G,2D%( G,3 G,228 MM<<MM G,28* &D%(
$!J= 5 ", :"!# , :"!. $B?= " =
D%2 &D%2MM J: D%22 &D% (
9 , ,# " , # @G $B@= $ , , , G $B!= 0" """ " .: # #G $BB= $ , ,#)" , ,""
, G $BL= "," #" , = "$"7'% $" $"7'% J& V3
$ , " # ,, # ", " G $BM= 9 , ",
# ,# " #:% .
!@L
$#)$= , #
$BI=
= "/ %( " ,2<'<W3I
3MM+<<( "/"% (
$B6= K! # ," H," # # "
. $B@= $",# ## )" H, ,"
" .: ,# G $BJ= )##& = & &E MM<<<<<< G2%:( "%:W3<< & %(
$L?= , ," , = 3V4 *(
$L@= , " #= FK3<<( %3%6( " !,2 W3<<M !, 2W3<<M !%,2 2 W3<< FK3
$L!= " %," " , , ,d%
" 6@= %83 &%! )( ( MM K22 K(
K "
#6@ . $LB= $ )" ,# G
$#)=,-," , ,
!@M
Appendix B: Built-in functions/subroutines 4," # #T "#6# .
Arithmetic &)*
,&
*, )
"&)*
7, )
" )&)*
" ),"
# #
" H&)*
" )" H, )
&)*
,
7, )
&)*
)
)&)Y...Z*
), ,
&)Y...Z*
, ,
#&)*
-# )###
# &Y)Z*
# ,?#@& )",##*Y , 5%428&B@*Z
&)*
)
&)*
# )###&
*
,#&)*
,# )#K? ,#, -@
&)*
)&, -@? U@*
,"&)*
," )#" )
Array-handling &)*
/#3 )
&)*
/ 3 )
# &)YZ*
, )Y# Z
,#&)YZ*
, ,# )Y # Z
,#&)YZ*
,# )Y # Z
&)*
" ")#," ,
#&)*
#," )
,&)*
, )
Buffer-management " &)+*
" + ##
) # " &, ?7,)X
)V*
)&)Y+Z*
)#" ##
)## #Y+ #@"" Z
!@I
$#)=,-," , ,
" &*
T" " #
#)&)*
#
"" ),
#)&7*
#
7,
"&)*
#
"", " )
"&)*
#
"", " )
&)*
#
, "" " )
&)*
#
, "" " )
)"&)*
%1 ,",) ,
Condition-handling ##&*
#<42$$&8$4" # *
"&*
#""", #84:8" #
" #&*
" # " #
" #" #&*
, -##" # "
" ##&*
#, " # ##8-,
" ,&*
, , #" #
&*
" "" # #
,"&*
<:$0C ", #84:8" #
&*
" # #" #
"&*
"" # #
&*
T " "" # #
,"&*
# ", #84:8" #
," #&*
## ,", ,,
"&*
# 24C$:""", #84:8" #
,"&*
# 24C$: ", #84:8" #
Date/time #&*
, /#3=",#9922
#&Y)Z*
", # # Y ) 999922CCJJJZ
# &Y)YZZ*
, # # )Y #ZYZ
2
!@6
# #&Y)YZZ*
" , # # YZ
#
" &)*
" , # , " #
7YZ*
, #" ,# ## 7 "" ,",#
" &Y)YZZ*
, " # # )Y #ZYZ
" #&)YZ*
" , " # # YZ
" # &)*
" , " # , #
&*
",CCJJJ
##&)YZ*
'@') ##YZ
#&Y)Z*
, # ) , # Y, #Z ,# " ## @
L#YZ*
# !-###&9922* L-#
"" ,",#
LH,YZ*
# !-###&99222* L-# "" ,",#
LYZ*
# !-###&99* L-# "" ,",#
Floating-point inquiry (constants) &)*
#"@#)," @ & ##" )*
,&)*
, )" #
&)*
T, '@')
88
&)*
T, '@')
&)*
T, '@') #,&88*
&)*
T, '@') ? 88 , # .. , & , ## ?*
+ &)*
T, '@') ?& ,
) 88*
))&)*
, ) )
)&)*
, ) )
" &)*
, " ) &# ##"" # :$2%*
#)&)*
# )&, !@? @I*
&)*
, )" #
!@@
$#)=,-," , ,
Floating-point manipulation ) &)*
, ":$2%" &..B) @??*
#&)*
, )
"&)*
," ):$2%TT& )!TT*
,""&)*
,)
Input/Output " ,&)*
, , # )#, <4
0(
#&)*
'@'# ) "#
##&)"*
, 5%428&B@*, )#,"
## &)"*
, @ ? )#,"
## #&)"*
, "" )#,"
#&)*
)
&)*
'@')
#&)+*
# + ) ##
&)+*
",
) &+WA@ ? ",
+WU@ #
*
&)*
, ",
)& *
&)+*
+ ##
)
&)*
",,0:8)
&)*
",,0:8)
&)*
'@':4$2 ) " #
& , # *
Integer manipulation #&)Y...Z*
/#3 5%428&B@*,
&)*
/ 3 5%428&B@*,
&)*
5%428,
&)Y...Z*
/ 3 5%428&B@*,
#&)*
)
&)*
/ "3&5%428&B@*,*
&)*
/ "3&5%428&B@*,*
, #&)*
) ,
!&)*
/"3&5%428&B@*,*
!&)*
/"3&5%428&B@*,*
"
!@J
Mathematical "
&)*
""
&# *
&)*
" &# *
&)YZ*
" )Y ) Z&# *
#&)YZ*
"# )& ) *
&)*
""
"
&)*
"
#
"
#&)*
"
#
"
&)*
""
&)*
,"
"&)*
" ,"
)&)*
)
&)*
,"
&)*
!&)*
!
@?&)*
@?
&)*
,"
&)*
#
#&)*
#
&)*
"
7&)*
7,
7&)*
7,
",##
&)*
#
#&)*
#
&)*
"
Miscellaneous &*
C$:$1
"# &7)*
, ?, 7, ,7&# , )*, @ &#,
,7*K5%428&IB*
"&*
""" #
" &*
!MI"" "" #
" &7)*
, ?, 7, ,7&# , )*, @ &#,
,7*K5%428&B@*
&)*
, , )
!J?
$#)=,-," , ,
)&)YZ*
)#" )Y """ #@"" Z
&*
'@' # "#,'?'
#&)*
'@', ) ,#
" &*
" ) "#,
&*
01 ," # 01:4
&)*
'@', ) ,#
"#,&*
"
# "#,
,&')W'*
, '@' ) ,""
,
&)*
" # "" #")
,"&*
,"" "
,"&*
, " "
" ##&*
T, ##
", & @B + *
&)*
" " )
&)*
)", " #)#, " #
##&)*
##
# #)
, "&)*
) ,
#&)*
'@') #0 5%4224,
"&)*
24C$:&@*, )&5%428&@I*(8<842*
Ordinal-handling
#&)*
) #&," *
##&)*
#, #"
)
# ,""&)*
#, ,""
)
Precision-handling ##&)Y7Z*
## )#" &Y7Z*
&)YY7ZZ*
" ) 8$:9 " &7*
#"&)YY7ZZ*
" ) 24$1 " &7*
##&)Y7Z*
## )#"" &Y7Z*
)#&)YZ7ZZ*
" 5%42," &7*
&)YZ*
" 51$," &7*
,&)Y7Z*
, )#"" &Y7Z*
" &)Y7Z*
" ) " &Y7Z*
#&)Y7Z*
" ) #," &Y7Z*
,"&)Y7Z*
," )##"" &Y7Z*
0" -#
!J@
##&)Y7Z*
## )#" &Y7Z*
, #&)Y7Z*
" ) , #," &Y7Z*
Pseudovariables ##&)*
##
, 48:9)
&)*
, )
"&)*
""", #84:8" #
,"&*
<:$0C", #84:8" #
,"&*
", #84:8" #
&)*
, )
&)*
, ) ) "
, &)Y+Z*
, , ) Y +Z
"&*
24C$:""", #84:8" #
,"&*
24C$: ", #84:8" #
&)*
, ,", "##)
, "&)*
) #
,
Storage control ##&)*
##
)
###&)*
##
# &, ,$:98< *
"&*
#, ##
&#" 015:44*
" &)*
, ",, 1
" +&*
+ "###
&" C4O &<*7,#*
, "&*
$($ # , ##
&# " *
&)*
" , ")
,&)*
" 0:554#:28$1 5%428&B@*
" &)*
)&? 6*
"" &*
'@' "# ," ,#&" C4O&<*7,#*
", +&)*
", + )
", &)*
(::48c4
&*
!J!
$#)=,-," , ,
##&)*
##
)
#&)*
# ,",)
" &)*
) ,",&? ...* "#
,&*
, ##
&)*
" ) ,
##&)*
## )
#&)*
#" )#
, "&)*
," )
,&)*
" ,) ,
&)*
" ) ,
##&)*
## )
#&)*
#" )#
, "&)* ," ) ,&)*
" ,) &) #*
+&)*
#"# + )
&)*
c4
,&*
##
&)*
,", "##)
, "#&*
'@' ##
"#&" C4O &<*7,#*
&*
##
& ,1*
+&)*
+ 9$1(4 )& L *
String-handling &)YZ*
" ) Y Z
&)+*
" )#"" # &L* +
"&)Y+Z*
)"# Y###+Z
"&)Y+Z*
)"# Y###+Z
""&)YZ*
" ) C$:Y Z
""&)YZ*
" <:$0C ) )#"" Y Z # C$:
" &)*
" " ) )
#&)*
# )"" # ", ""
"&)YZ*
" ) <:$0C&C$:"
*
&)*
" " )) ""'55')
-#
!JB
#)&)Y+Z*
)Y
+Z
&)Y+Z*
, )
@Y###+Z
&)*
", )
&)*
" " )) ""'??')
" &)*
" ) "
)&)*
), )
&)Y+Z*
" )# ) )# +& " "
, + *
" "&)*
)"" # ", ""
&)*
" " U@) )&" 09*
"!&)+*
" )""+" #
&)*
)
&)Y+Z*
, ) Y### +Z
"&)Y+Z*
""," "" )? Y
+Z
"&)Y+Z*
""," "" )? K
" Y
+" # Z
, &)Y+Z*
, ) +Y #Z
&)*
, "", )&"
)#*
&)Y+Z*
) " "" + " # ""Y+
!MI-Z
&)YY+ZZ*
)"" "", #""
"",+ Y#+#, Z
," &)*
" ) ,"
&)Y+Z*
""," "")" ? Y
+Z
&)Y+Z*
""," "")" ? Y
+ZK "
&)*
" " )) 24C$:""'5555')
#"&)YZ*
" ) 24C$:Y Z
&)*
" " )) 24C$:""'????')
Subroutines "&)+*
" +42 ##
$ #
)
""&*
"" "" " # "
" ## "* "" " ## ## , " #&)*
,",
"##)
!JL
$#)=,-," , ,
#,&)YZ*
#,
"#"&)+*
" +$ ##
42 ##
)
&)+*
" +) "" ##
&)*
##
) "#, $11$4,"
&)+*
" + ##
##
)& " , *
&)+*
" + ##
##
)& "
*
&*
, "" " #
"&)*
01 ," #& 01:4*
)&...*
%1# ", #,
)&...*
%1# ", #
&...*
" #
&...*
" #
"&...*
" #
#&...*
" #
" "& ! *
Type functions #&=)=*
" ) # ,",
" &=)=*
" #), " ,
&=)=*
, #)
&=)=*
, #)
&=)=*
,",)#, # 7",#
"&=)=*
#)
+&=)=*
+ # ,",)
Preprocessor " &*
, #"" "
!MI
" &)*
"
) T#T " V#X )
" #&*
, " ##999922CCJJJ
" &*
, " # # 22..99 CC..& ##*
" &)*
" " ) )
0 "
!JM
" ,&*
" , '???@'"#@" "
# &)YZ*
, )Y # Z
,#&)YZ*
, ,# )Y # Z
#)&)Y+Z*
)Y
+Z
,#&)YZ*
,# )Y # Z
&)*
)
" &)*
" ) "
"" &*
" , " " #
"&*
" , ,")
"&*
"
"#, #
"&*
" , ,")
)&)Y...Z*
), ,
&)Y...Z*
, ,
&)*
'@'" " '?'
7, &)*
"
)
# ,
&)*
" " U@) )
, &)Y+Z*
, ) +Y #Z
&*
""
#"
&*
""
#"
&*
"" '01 B:6?'
&)Y+Z*
)"""+" # ""Y+
!MI-Z
&)YY+ZZ*
)"" "", #""
"",+ Y#+#, Z
," &)*
" ) ,"
&)Y+Z*
""," "")" ? Y
+Z
!J6
Index - BL , !B! ##," @L ##," @IM MB
!!@ #, JJ!B@ "," !LI " @I?@IJ@6@@@?!?B " @MJ " ," @IB " +," @6@!L6 $ !?L!?I. # @J@ !L! $8, !@I@?L $8 ## ML6@.@@.J6@!I!!? !L@ " # " # @M6 $0 !M@
@! # @J6 @6J , @6J!?! " # @@@@@L , @@M "# 6?JL LM )
!!@ )
!@6 ," , !!? ,", MI L@ "
!@6 $"" @I
6 " !!6. " # @ML , I , ", @MJ ," @@L - BI "# @66 #, @IM@6J!!@ " "
@I@
" #, ," , , #," ,," ," , " ," # -
," -, ,# , ,#, , + ,- , , ,, ## , , "- " " ," "# ," "," "," "," "," < ", "," "" ""," "," "" &" "* "" & * ""
@@@ @L@ !M@ @L @@ 6? @@J @?B MJ JM !LM JI @@L !?J L@I @M JM @L@ !6L !IJ !?J @J!!?J !?J @@6 M?!B@ ML !M! MJ !M! @?L JB @@B@BL @?B !BB 6L I@ I@ I@ !IJ !BM I@ MJ !MI IL @@J @6@!L6 @@J
!J@ "" !ML # "" ," @6@ #-#"# "
@JL. ##," " - MM #, " !@6 #," " , M? #," " L # ," " ," !LB # #," " , !L6 #
" ," " @M 22- " #," !B@ #, " !L@M #"," " ," !B@ #", " ), J! #", " )," J! #" " ), J! 241$:4 " ,#
L@M@. #,& #* " ,# !!!L!I #,& * " , # I@BB!L?6? #,&&)#"** " " @!@L #,&&** " " MJJLJ6 #,&)#"* " # @6! #,&* " # " # @MI #,&* " # ) @L@ #,&&** " H," JB #,&* " "#, !?? #,& #&)** " ", @J6 #,
, " @? #, " , @!6@J@ #, " , B! #,&* " I@!@L # " BL # # " @J.LM@?@ # " #, !!@ # ,", " @I ##, " " # I@JB@LL # " ," I6 # " #"# !!B #-$ , "
#," JB # " " ,," @BJ # " ,," !LB #" " @J6 250 "
" M? #," " ," !BB # , ","&''* @J #", ", +," @@L # # " !M6 # & #* # BI # & * # L6 #
#) @?? @M? @M@ @?@. @?M @?M @?6 @?6 @?6 @JM@J6 @M? @L @@ 6? M6!LB !@ @? 6L@I 6@ 6@ 66@? 6L@I @? @MB @MB @?B @! J6 @I 66 @?? @?@ @?L. @?L@@M !!B. !B@ !@! !?! @B! @L@ !!6 @! @BJ LJMI@@6!!M @J!!?J @L@ IM IM IM!!@
#) ##," @L 211 @BM # @BM. 2 , !L # "" LBL6@M? # L?LB!B6 2 !L # -
L? 2
5 !I! 2
"4 !M! 2
0 !!J #,, @@@ #," # !?@ - B6 42"" @I 42" # J@ #," J@ #-#"# BB # B@ ML ," @@L # @L@ # L!@B? #" # @B@@JJ!@B 482514" # !!. #," @BJ #
@6LL #" # @ML , !!L , @!6!BJ!MB @B@ ##," !MB ## ,# - !MB , @?B , @JB@JI!?J "" !!@ !6@ , @@!@@L@!B@LB " # @?6@L!@LI@M!@M6!!@ 42 !?B. !B? ) J.B66M ) @?@! ) @B?@B6 )
6@M!?!6BIJ? )
@! ) @!M ), @!@@B6@MI@J!!M! ) !IM
!JJ 4)0 - " "-$ , #," ," #," -5, ," ," ," )#, )## )#," )# )#- )# " # )# ) * ," -
," , ," ," "#, " " ", <4 # <4 ," < 5 , ", "," < "# < 0 #, #," C ,#,"
@L@ B6 @BM. @BM B@@J! !ML @JI !@!!6@ !@B !@B !@! @?! ML!BM @B@M @L @J6 I @L@LL @L@ @?@LL @L J 6L !?J BBL6 BJ @MJ@I@ !MB @!@ @!I @@@ @B@ !?J !6@ @M@ !? !MB @@L !I! @MB @L!.@M6 !MI !MI @?I @?M @@M @@I @!B M?
B?? @MB @@6 )," !M@ )#", 66 )#" 6M!LM )#", JJ )," !M@ C1 !6L , ! ## ML6@.@@.@M.J6 @!I@L? , 66 444 @?66 JL 5 !L !@! ," J! -0 ,# JB # !I #) !?@ #)," I@ILJM!!@!BJ!LB #)# !?6 , @MB # @MB " @MB , M@@B6@@L!!! ", @IL )
JI , !M? " @MB ,, @J! @!M , @MI@J! , @ML # " # @?@LL ," @? ," @? ," @MB ," @? ," @? (# !!L + ," @? L!!B6 " B@L6M@ @!! ; @6J!MI!I! ;8" !IB ;," !II ;8 !IB
#) H ; " # #, #, # O2 - , 1,4 ," ,#," 14 ," " " , ," , &,* , 1 1, &)#&IB** #, #)
&)#&B@IB** &)#&IB** &)##"&B@** ," & * -#"# #, " " # " " ," " ," "" ," ","
@I@ !II !?6 !?6!@? !?@.!?6 !?@ @JB I@B! !?B!?6 B@ L@@LB @LB @MB @?! M? @MB L?L!!B6 I@ !I! ! I? JM@!? MB @J6 !!J @MJ@@M @@J @@@ MI!!! @?I 6!@I @!6!MB M! @L @L 6L @B. @MM !M! B@ @IJ.@6L !M@ @@L !?J !@?!@! @@L @BL !LB !L?
B?@
#) "," "," "
"#,
# )," )," #)," "," "," ," ,"
) #, ," " # # ," ,-# ,
,#" ,," , , " # " ," # " )# ) ,
, " "#, , ,," , ,
H"
",
,
,"
##,"
#,"
, ","
,,"
#,"
!LB !L? !B@ @@6@ML M JB6 !@6 LJ. @!@ !L@ !L@ !L@ !L@ !L@ !MI 6B @6M !?J !MI !!I M@ M6 @L !!I @M @M@ @ @J6 !M@@B @@6 !M! @L@ MI @@@ !?? !B! @M @IJ@6L@@? !B6 JL @!J JJ @@? @@? @@? @@? @@? @@? !MB
8
,
","
" ,# -
" #" #,"
" ##,"
,"
","
,"
,","
," ,# -
," #,"
","
,","
+
&*
&#,"*
&#,"*
&*
#
#
#,"
##,"
# ,""," C4: 4
,,,
" #
# - " " ," ## "
,
," 0$:4"
0$:4 "" " "," ",,
!! @B@ @LI @LI @M6 @M6 !?? @M! @MB @LI @LI @L? !M@ !M@ @ML@JB!?I B 6 @@L !MB @@L@BL!BB @BL @BL !!J !M! @M @@L @?M @?! @?B @?B !I @J! @LL !!L BJJ? @B?@BI @M! JJ !!I @@M @@6 @@M !L! !LB !L@ I@ @?I J@ I@J?
B?! ","" ","" ",, " , , "" , , ""-: , " , , #-: , "#" , , , , , , , , , , -: , " , , ," ) , ) , , ) , , , , , , " , , # , , 01:) , -: , , ," ,, ##-5,
, 0 # &" &'" & *'** &" &')#&*'**. &" * " ," "& * "
"
"#, ," , "#, " "#, "," #," " # , ,# - #," ,","
#) I@ @I @I !L6 !MM !MM !MM @@6 !L6 !L6 !LI !L6 !L6 !MM !@L !@M !6L !6L!6I. !6L !@L !@L !@L !@L !@B @M? @IM @@? @IJ @II !!L !6@ !BM !BM !BL @L @L !BL !B@ !MB B!@ML@J! @@! @@B @M! !@@ IB!6? @@!@@L@!B I? @I6 @I6
,," , 0( ,, 7," 7, ," - "" # ," -" :$ # , ," -0 ,# "" , " # " #, " #" # " # " + ", # ", ", , &@* ," # ," "" "" "!," " #, "," "* , , ," :4%% :4%% :4%%
@@@ @M@ 6 !MB M6 !B@ L? !B@ LI IL !!6 !?L @J@!??!@@ J! J! JB !?@!?I @J6 @J! !?? @J@ !?L!?J!@! @!M @!! @!! @6@ !@@ @J@!?? @BM@B6 6L @@L @?@ M! L! I@ !L? @BI. @B?@BI. @L@ @?B @?J @!?.!BJ @!!!BJ I@ @L? @JJ!?@!@?!@! !M@!6L !I? !I?
#)
B?B
:)) !I! @BJ :4%%(1 !MJ " "
!I@ ," I@ @@6 : , @LL!IB ,"," @M! M? ,"," @MB ::2 !?L!?I 0$ !I? , & * !J6@@B 7," @M , &* !J6@ 7," JB , &)* @6? : !?L , &)* JM " @!M@I@ , & * MM " @MB , & * B? " ##," @MB , & * @LB ##, !6@ , & )"* @I? ## ,, !IJ , & )#"* @I L , & ) ,* @@J !L@ , & )7,* M6 "#, !L! , & ,"
,* 6L ", @@J@MJ!!@!M? , &)#* !!L # IM , & ) * L # , IM , & ) * !!@ " # @IB , @@@ @@M@MB , @M , @J! , @@6 B@ $% !6L # 6?JL
" L@MB ," I6!@@!!@
" @JJ ,# - I6 " @@@ " # @M@
"," IIJM. +" # @M@
"," II ,", M!
" ," @?6 ,",
ML
" #," @?6!I@ ,",, MB
" # ," @?6 ,- M? 414 , !I , , @!@
" !IJL!B6 , , "#, @!I
" @@6 , " LIM@
7,, @J!@JJ , "" # @M@
JI , ," MJJM!!@
@IJ!@? , ,# - I?
&* 6@ ,"," @L
-"",, !I ,," M?
#" @!! !IB
@L?@MM@6! < !MJ
, !II B@M!
#, 6! B@
#," JB ," !B@!M@
+" # B66!6@@LL@M@ !B@ !M@
+," @@L@@J!ML !B@
+) 6@@LL ,"
B?L ," , ) ##," "", # -# ," " #
," -5, , ," ," ,# - ,", ,, ,#, , "#," ,,#, ,##" # ,# " # (" # , #, , "," , " ,# - ,#, ," ," ($<4&(804&$8** (5-@I - #," ,, , ," +," , , +, " ," ,"
#) I!!6B !!6 @M? @J6 !!J @?M @JL.@J6 @L6 @L@ I! IL !?? !!M II II @?@ @?B.@@@. @@6 @@J @?L@@I @ JJ @6@ @J!!?J @JM@J6!?6 @LL !MI!66 6! J6 J6 @J! @BL J6 !MI B@II 6L @?B BB !ML !ML BJ@J@ IJ@! @J6 @J6 I? !LJ!M@ LJ ILJM II
$ "," C48 ," #", #"," #" #"&#* #"&#* # # ," %C1 ) * %1 )&" & ** )&" &,** )"," L#," LH,," L," + (8% + ,
+ - + ##" # T "
T0:4- `" `
`#" `#" `# `# ` ` `",# `",# ` " ` -$ , ` ` `-$ , ` "#, `" `)",# `) "
@J6.!?B!?@ @JI@J@ !!6!B@ !M6. !I !M@ !I@ !M@ !M@ !M@ !M@ @?@. !MI !M@ @J@!@! !6L @BI !IJ!6L !@? !@? !6J @?@ @?@ @?@ @JL@J@ @6 !LJ @LL JM@!I@B? @ !BI !B6 !BI !BM. !B6 !BJ !B6 !B6 @B! !BM !B@ @B! !L! @LJ @B! !BJ !BI !BM !B@