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'%( "