Warning, /frameworks/syntax-highlighting/autotests/reference/highlight.f90.ref is written in an unsupported language. File is not indexed.
0001 <Comment>! This file is an example to test the syntax highlighting file fortran-free.xml</Comment><br/> 0002 <Comment>! (for fortran, free format)</Comment><br/> 0003 <Normal Text></Normal Text><br/> 0004 <Comment>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</Comment><br/> 0005 <Comment>! THIS IS AN EXAMPLE OF A MODULE !</Comment><br/> 0006 <Comment>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</Comment><br/> 0007 <Keyword>module</Keyword><Normal Text> module_example</Normal Text><br/> 0008 <Normal Text></Normal Text><br/> 0009 <Normal Text> </Normal Text><Comment>! use 'implicit none' when you want all variables to be declared</Comment><br/> 0010 <Normal Text> </Normal Text><Keyword>implicit</Keyword><Normal Text> </Normal Text><Keyword>none</Keyword><br/> 0011 <Normal Text></Normal Text><br/> 0012 <Comment>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</Comment><br/> 0013 <Comment>! PUBLICS AND PRIVATES</Comment><br/> 0014 <Normal Text></Normal Text><br/> 0015 <Normal Text> </Normal Text><Comment>! In fortran 90 you can define your own operator</Comment><br/> 0016 <Normal Text> </Normal Text><Data Type>public</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> </Normal Text><Keyword>operator</Keyword><Symbol>(</Symbol><Operator>.norm.</Operator><Symbol>)</Symbol><br/> 0017 <Normal Text> </Normal Text><Data Type>public</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> </Normal Text><Keyword>operator</Keyword><Symbol>(</Symbol><Keyword>+</Keyword><Symbol>)</Symbol><Normal Text> </Normal Text><Comment>! <-- you can also overload the usual operators</Comment><br/> 0018 <Normal Text> </Normal Text><Data Type>public</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> factorial</Normal Text><br/> 0019 <Normal Text> </Normal Text><Data Type>public</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> example_fn</Normal Text><br/> 0020 <Normal Text></Normal Text><br/> 0021 <Normal Text> </Normal Text><Data Type>private</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> point3d_add</Normal Text><br/> 0022 <Normal Text> </Normal Text><Data Type>private</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> point3d_norm</Normal Text><br/> 0023 <Normal Text></Normal Text><br/> 0024 <Comment>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</Comment><br/> 0025 <Comment>! USER-DEFINED TYPES...</Comment><br/> 0026 <Normal Text></Normal Text><br/> 0027 <Normal Text> </Normal Text><Comment>! This is a definition to use in declarations of real variables,</Comment><br/> 0028 <Normal Text> </Normal Text><Comment>! parameters, etc.</Comment><br/> 0029 <Normal Text> </Normal Text><Data Type>integer</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>parameter</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>public</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> kr </Normal Text><Keyword>=</Keyword><Normal Text> </Normal Text><Transformational Function>selected_real_kind</Transformational Function><Symbol>(</Symbol><Decimal>10</Decimal><Symbol>)</Symbol><br/> 0030 <Normal Text></Normal Text><br/> 0031 <Normal Text> </Normal Text><Comment>! This is a user-defined type</Comment><br/> 0032 <Normal Text> </Normal Text><Data Type>type</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>public</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> point3d</Normal Text><br/> 0033 <Normal Text> </Normal Text><Data Type>real(kind=kr)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> x</Normal Text><Symbol>,</Symbol><Normal Text> y</Normal Text><Symbol>,</Symbol><Normal Text> z</Normal Text><br/> 0034 <Normal Text> </Normal Text><Data Type>end type</Data Type><Normal Text> point3d</Normal Text><br/> 0035 <Normal Text></Normal Text><br/> 0036 <Normal Text> </Normal Text><Comment>! This type is useless: it is only an example of type definition!</Comment><br/> 0037 <Normal Text> </Normal Text><Data Type>type</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>public</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> example_type</Normal Text><br/> 0038 <Normal Text> </Normal Text><Data Type>complex(kind=kr)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> c </Normal Text><Comment>! <-- a complex number (two reals of kind kr)!</Comment><br/> 0039 <Normal Text> </Normal Text><Data Type>real</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>dimension(-10:10)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> </Normal Text><Keyword>&</Keyword><Normal Text> </Normal Text><Comment>! <-- this line does not end here!</Comment><br/> 0040 <Normal Text> r1</Normal Text><Symbol>,</Symbol><Normal Text> r2 </Normal Text><Comment>! <-- this is the final part of the previous line</Comment><br/> 0041 <Normal Text> </Normal Text><Data Type>real</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>pointer</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>dimension(:)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> pointer_to_array_of_real</Normal Text><br/> 0042 <Normal Text> </Normal Text><Data Type>real</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>dimension(:)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>pointer</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> array_of_pointer_to_real</Normal Text><br/> 0043 <Normal Text> </Normal Text><Data Type>end type</Data Type><Normal Text> example_type</Normal Text><br/> 0044 <Normal Text></Normal Text><br/> 0045 <Comment>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</Comment><br/> 0046 <Comment>! INTERFACES...</Comment><br/> 0047 <Normal Text></Normal Text><br/> 0048 <Normal Text> </Normal Text><Comment>! Interface for the norm of a 3-D vector</Comment><br/> 0049 <Normal Text> </Normal Text><Keyword>interface</Keyword><Normal Text> </Normal Text><Keyword>operator</Keyword><Symbol>(</Symbol><Operator>.norm.</Operator><Symbol>)</Symbol><br/> 0050 <Normal Text> </Normal Text><Keyword>module procedure</Keyword><Normal Text> point3d_norm</Normal Text><br/> 0051 <Normal Text> </Normal Text><Keyword>end interface</Keyword><br/> 0052 <Normal Text></Normal Text><br/> 0053 <Normal Text> </Normal Text><Comment>! Interface for the operator '+'</Comment><br/> 0054 <Normal Text> </Normal Text><Keyword>interface</Keyword><Normal Text> </Normal Text><Keyword>operator</Keyword><Symbol>(</Symbol><Keyword>+</Keyword><Symbol>)</Symbol><br/> 0055 <Normal Text> </Normal Text><Keyword>module procedure</Keyword><Normal Text> point3d_add</Normal Text><br/> 0056 <Normal Text> </Normal Text><Keyword>end interface</Keyword><br/> 0057 <Normal Text></Normal Text><br/> 0058 <Comment>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</Comment><br/> 0059 <Comment>! SOME DECLARATIONS...</Comment><br/> 0060 <Normal Text></Normal Text><br/> 0061 <Normal Text> </Normal Text><Comment>! A real number can be declared with the following line:</Comment><br/> 0062 <Normal Text> </Normal Text><Data Type>real(kind=kr)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> real_var1</Normal Text><br/> 0063 <Normal Text> </Normal Text><Comment>! But if you are not interested on the precision of floating point numbers,</Comment><br/> 0064 <Normal Text> </Normal Text><Comment>! you can use simply:</Comment><br/> 0065 <Normal Text> </Normal Text><Data Type>real</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> real_var2</Normal Text><br/> 0066 <Normal Text></Normal Text><br/> 0067 <Normal Text> </Normal Text><Comment>! An array can be declared in two ways:</Comment><br/> 0068 <Normal Text> </Normal Text><Data Type>real(kind=kr)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>dimension(1:10, -4:5)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>private</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> a</Normal Text><Symbol>,</Symbol><Normal Text> b</Normal Text><Symbol>,</Symbol><Normal Text> c</Normal Text><br/> 0069 <Normal Text> </Normal Text><Data Type>real(kind=kr)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>private</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> d</Normal Text><Symbol>(</Symbol><Decimal>1</Decimal><Normal Text>:</Normal Text><Decimal>10</Decimal><Symbol>,</Symbol><Normal Text> </Normal Text><Keyword>-</Keyword><Decimal>4</Decimal><Normal Text>:</Normal Text><Decimal>5</Decimal><Symbol>)</Symbol><br/> 0070 <Normal Text></Normal Text><br/> 0071 <Normal Text> </Normal Text><Comment>! This is a string with fixed lenght</Comment><br/> 0072 <Normal Text> </Normal Text><Data Type>character(len=10)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> str_var</Normal Text><br/> 0073 <Normal Text></Normal Text><br/> 0074 <Normal Text> </Normal Text><Comment>! This is an allocatable array, which can be a target of a pointer</Comment><br/> 0075 <Normal Text> </Normal Text><Data Type>type(example_type)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>private</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>dimension(:)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>allocatable</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>target</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> </Normal Text><Keyword>&</Keyword><br/> 0076 <Normal Text> many_examples</Normal Text><br/> 0077 <Normal Text></Normal Text><br/> 0078 <Comment>! Fortran 90 hasn't got its own preprocessor, it uses the C preprocessor!</Comment><br/> 0079 <Preprocessor>#ifdef XXX</Preprocessor><br/> 0080 <Normal Text></Normal Text><br/> 0081 <Preprocessor>#endif</Preprocessor><br/> 0082 <Normal Text></Normal Text><br/> 0083 <Keyword>contains</Keyword><br/> 0084 <Normal Text></Normal Text><br/> 0085 <Normal Text></Normal Text><br/> 0086 <Normal Text> </Normal Text><Comment>! The sum of two points</Comment><br/> 0087 <Normal Text> </Normal Text><Keyword>pure</Keyword><Normal Text> </Normal Text><Keyword>function</Keyword><Normal Text> point3d_add</Normal Text><Symbol>(</Symbol><Normal Text>a</Normal Text><Symbol>,</Symbol><Normal Text> b</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>result</Keyword><Symbol>(</Symbol><Normal Text>rs</Normal Text><Symbol>)</Symbol><br/> 0088 <Normal Text> </Normal Text><Data Type>type(point3d)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> rs</Normal Text><br/> 0089 <Normal Text> </Normal Text><Data Type>type(point3d)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>intent(in)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> a</Normal Text><Symbol>,</Symbol><Normal Text> b</Normal Text><br/> 0090 <Normal Text> rs</Normal Text><Operator>%</Operator><Normal Text>x </Normal Text><Keyword>=</Keyword><Normal Text> a</Normal Text><Operator>%</Operator><Normal Text>x </Normal Text><Keyword>+</Keyword><Normal Text> b</Normal Text><Operator>%</Operator><Normal Text>x</Normal Text><br/> 0091 <Normal Text> rs</Normal Text><Operator>%</Operator><Normal Text>y </Normal Text><Keyword>=</Keyword><Normal Text> a</Normal Text><Operator>%</Operator><Normal Text>y </Normal Text><Keyword>+</Keyword><Normal Text> b</Normal Text><Operator>%</Operator><Normal Text>y</Normal Text><br/> 0092 <Normal Text> rs</Normal Text><Operator>%</Operator><Normal Text>z </Normal Text><Keyword>=</Keyword><Normal Text> a</Normal Text><Operator>%</Operator><Normal Text>z </Normal Text><Keyword>+</Keyword><Normal Text> b</Normal Text><Operator>%</Operator><Normal Text>z</Normal Text><br/> 0093 <Normal Text> </Normal Text><Keyword>end function</Keyword><Normal Text> point3d_add</Normal Text><br/> 0094 <Normal Text></Normal Text><br/> 0095 <Normal Text></Normal Text><br/> 0096 <Normal Text> </Normal Text><Comment>! The norm of a point</Comment><br/> 0097 <Normal Text> </Normal Text><Keyword>pure</Keyword><Normal Text> </Normal Text><Keyword>function</Keyword><Normal Text> point3d_norm</Normal Text><Symbol>(</Symbol><Normal Text>a</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>result</Keyword><Symbol>(</Symbol><Normal Text>rs</Normal Text><Symbol>)</Symbol><br/> 0098 <Normal Text> </Normal Text><Data Type>real(kind=kr)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> rs</Normal Text><br/> 0099 <Normal Text> </Normal Text><Data Type>type(point3d)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>intent(in)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> a</Normal Text><br/> 0100 <Normal Text> rs </Normal Text><Keyword>=</Keyword><Normal Text> </Normal Text><Elemental Procedure>sqrt</Elemental Procedure><Symbol>(</Symbol><Normal Text>a</Normal Text><Operator>%</Operator><Normal Text>x </Normal Text><Keyword>*</Keyword><Normal Text> a</Normal Text><Operator>%</Operator><Normal Text>x </Normal Text><Keyword>+</Keyword><Normal Text> a</Normal Text><Operator>%</Operator><Normal Text>y </Normal Text><Keyword>*</Keyword><Normal Text> a</Normal Text><Operator>%</Operator><Normal Text>y </Normal Text><Keyword>+</Keyword><Normal Text> a</Normal Text><Operator>%</Operator><Normal Text>z </Normal Text><Keyword>*</Keyword><Normal Text> a</Normal Text><Operator>%</Operator><Normal Text>z</Normal Text><Symbol>)</Symbol><br/> 0101 <Normal Text> </Normal Text><Keyword>end function</Keyword><Normal Text> point3d_norm</Normal Text><br/> 0102 <Normal Text></Normal Text><br/> 0103 <Normal Text></Normal Text><br/> 0104 <Normal Text> </Normal Text><Comment>! A simple recursive function</Comment><br/> 0105 <Normal Text> </Normal Text><Keyword>recursive</Keyword><Normal Text> </Normal Text><Keyword>function</Keyword><Normal Text> factorial</Normal Text><Symbol>(</Symbol><Normal Text>i</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>result</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>rs</Normal Text><Symbol>)</Symbol><br/> 0106 <Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> rs</Normal Text><br/> 0107 <Normal Text> </Normal Text><Data Type>integer</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>intent(in)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> i</Normal Text><br/> 0108 <Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text> i </Normal Text><Operator><=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Normal Text> </Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>then</Keyword><br/> 0109 <Normal Text> rs </Normal Text><Keyword>=</Keyword><Normal Text> </Normal Text><Decimal>1</Decimal><br/> 0110 <Normal Text> </Normal Text><Keyword>else</Keyword><br/> 0111 <Normal Text> rs </Normal Text><Keyword>=</Keyword><Normal Text> i </Normal Text><Keyword>*</Keyword><Normal Text> factorial</Normal Text><Symbol>(</Symbol><Normal Text>i </Normal Text><Keyword>-</Keyword><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>)</Symbol><br/> 0112 <Normal Text> </Normal Text><Keyword>end if</Keyword><br/> 0113 <Normal Text> </Normal Text><Keyword>end function</Keyword><Normal Text> factorial</Normal Text><br/> 0114 <Normal Text></Normal Text><br/> 0115 <Normal Text></Normal Text><br/> 0116 <Normal Text> </Normal Text><Comment>! This is a useless function</Comment><br/> 0117 <Normal Text> </Normal Text><Keyword>subroutine</Keyword><Normal Text> example_fn</Normal Text><Symbol>(</Symbol><Normal Text>int_arg</Normal Text><Symbol>,</Symbol><Normal Text> real_arg</Normal Text><Symbol>,</Symbol><Normal Text> str_arg</Normal Text><Symbol>)</Symbol><br/> 0118 <Normal Text> </Normal Text><Data Type>integer</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>intent(in)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> int_arg</Normal Text><br/> 0119 <Normal Text> </Normal Text><Data Type>real(kind=kr)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>intent(out)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> real_arg</Normal Text><br/> 0120 <Normal Text> </Normal Text><Data Type>character(len=*)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>intent(in)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> str_arg</Normal Text><br/> 0121 <Normal Text></Normal Text><br/> 0122 <Normal Text> </Normal Text><Data Type>type(example_type)</Data Type><Symbol>,</Symbol><Normal Text> </Normal Text><Data Type>pointer</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> p</Normal Text><br/> 0123 <Normal Text> </Normal Text><Data Type>integer</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> n</Normal Text><Symbol>,</Symbol><Normal Text> i</Normal Text><Symbol>,</Symbol><Normal Text> j</Normal Text><br/> 0124 <Normal Text> </Normal Text><Data Type>logical</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> flag</Normal Text><br/> 0125 <Normal Text></Normal Text><br/> 0126 <Normal Text> flag </Normal Text><Keyword>=</Keyword><Normal Text> </Normal Text><Logical>.true.</Logical><Normal Text> </Normal Text><Comment>! .true. is not an operator!</Comment><br/> 0127 <Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text> flag </Normal Text><Operator>.and.</Operator><Normal Text> flag </Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>then</Keyword><Normal Text> </Normal Text><Comment>! .and. is a pre-defined operator</Comment><br/> 0128 <Normal Text> </Normal Text><IO Function>print</IO Function><Normal Text> </Normal Text><Keyword>*</Keyword><Symbol>,</Symbol><Normal Text> </Normal Text><String>"blabla"</String><br/> 0129 <Normal Text> </Normal Text><Keyword>end if</Keyword><br/> 0130 <Normal Text></Normal Text><br/> 0131 <Normal Text> </Normal Text><Comment>! Examples of inquiry functions: allocated, lbound, ubound.</Comment><br/> 0132 <Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text> </Normal Text><Operator>.not.</Operator><Normal Text> </Normal Text><Inquiry Function>allocated</Inquiry Function><Symbol>(</Symbol><Normal Text>many_examples</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>then</Keyword><br/> 0133 <Normal Text> </Normal Text><Keyword>allocate</Keyword><Symbol>(</Symbol><Normal Text> many_examples</Normal Text><Symbol>(</Symbol><Decimal>10</Decimal><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>)</Symbol><br/> 0134 <Normal Text> </Normal Text><Keyword>end if</Keyword><br/> 0135 <Normal Text> </Normal Text><IO Function>print</IO Function><Normal Text> </Normal Text><Keyword>*</Keyword><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Lower bound = "</String><Symbol>,</Symbol><Normal Text> </Normal Text><Inquiry Function>lbound</Inquiry Function><Symbol>(</Symbol><Normal Text>many_examples</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>)</Symbol><br/> 0136 <Normal Text> </Normal Text><IO Function>print</IO Function><Normal Text> </Normal Text><Keyword>*</Keyword><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Upper bound = "</String><Symbol>,</Symbol><Normal Text> </Normal Text><Inquiry Function>ubound</Inquiry Function><Symbol>(</Symbol><Normal Text>many_examples</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>)</Symbol><br/> 0137 <Normal Text></Normal Text><br/> 0138 <Normal Text> p </Normal Text><Keyword>=</Keyword><Operator>></Operator><Normal Text> many_examples</Normal Text><Symbol>(</Symbol><Decimal>5</Decimal><Symbol>)</Symbol><Normal Text> </Normal Text><Comment>! <-- p is a pointer</Comment><br/> 0139 <Normal Text></Normal Text><br/> 0140 <Normal Text> </Normal Text><Comment>! A strange way to calculate i*i: add the first i odd numbers</Comment><br/> 0141 <Normal Text> i </Normal Text><Keyword>=</Keyword><Normal Text> </Normal Text><Decimal>6</Decimal><br/> 0142 <Normal Text> j </Normal Text><Keyword>=</Keyword><Normal Text> </Normal Text><Decimal>0</Decimal><br/> 0143 <Normal Text> </Normal Text><Keyword>do</Keyword><Normal Text> n </Normal Text><Keyword>=</Keyword><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>,</Symbol><Normal Text> i</Normal Text><br/> 0144 <Normal Text> j </Normal Text><Keyword>=</Keyword><Normal Text> j </Normal Text><Keyword>+</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Decimal>2</Decimal><Keyword>*</Keyword><Normal Text>n </Normal Text><Keyword>-</Keyword><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>)</Symbol><br/> 0145 <Normal Text> </Normal Text><Keyword>end do</Keyword><br/> 0146 <Normal Text> </Normal Text><IO Function>print</IO Function><Normal Text> </Normal Text><Keyword>*</Keyword><Symbol>,</Symbol><Normal Text> </Normal Text><String>"i*i = "</String><Symbol>,</Symbol><Normal Text> i</Normal Text><Keyword>*</Keyword><Normal Text>i</Normal Text><Symbol>,</Symbol><Normal Text> j</Normal Text><br/> 0147 <Normal Text></Normal Text><br/> 0148 <Normal Text> real_arg </Normal Text><Keyword>=</Keyword><Normal Text> </Normal Text><Data Type>real(j)</Data Type><Normal Text> </Normal Text><Comment>! <-- here the highlighting is not very good:</Comment><br/> 0149 <Normal Text> </Normal Text><Comment>! it is unable to distinguish between this and a definition like:</Comment><br/> 0150 <Normal Text> </Normal Text><Comment>! real(kind=kr) :: a</Comment><br/> 0151 <Normal Text> </Normal Text><Keyword>deallocate</Keyword><Symbol>(</Symbol><Normal Text> many_examples </Normal Text><Symbol>)</Symbol><br/> 0152 <Normal Text> </Normal Text><Keyword>end subroutine</Keyword><Normal Text> example_fn</Normal Text><br/> 0153 <Normal Text></Normal Text><br/> 0154 <Keyword>end module</Keyword><Normal Text> module_example</Normal Text><br/> 0155 <Normal Text></Normal Text><br/> 0156 <Normal Text></Normal Text><br/> 0157 <Comment>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</Comment><br/> 0158 <Comment>! THIS IS THE MAIN PROGRAM !</Comment><br/> 0159 <Comment>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</Comment><br/> 0160 <Keyword>program</Keyword><Normal Text> example</Normal Text><br/> 0161 <Normal Text> </Normal Text><Keyword>use</Keyword><Normal Text> module_example</Normal Text><br/> 0162 <Normal Text></Normal Text><br/> 0163 <Normal Text> </Normal Text><Comment>! this is another example of use of the 'implicit' keyword</Comment><br/> 0164 <Normal Text> </Normal Text><Keyword>implicit</Keyword><Normal Text> </Normal Text><Data Type>double precision</Data Type><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>a</Normal Text><Keyword>-</Keyword><Normal Text>h</Normal Text><Symbol>,</Symbol><Normal Text>o</Normal Text><Keyword>-</Keyword><Normal Text>z</Normal Text><Symbol>)</Symbol><br/> 0165 <Normal Text></Normal Text><br/> 0166 <Normal Text> </Normal Text><Data Type>real(kind=kr)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> var_out</Normal Text><br/> 0167 <Normal Text></Normal Text><br/> 0168 <Normal Text> </Normal Text><Data Type>type(point3d)</Data Type><Normal Text> </Normal Text><Data Type>::</Data Type><Normal Text> </Normal Text><Keyword>&</Keyword><br/> 0169 <Normal Text> a </Normal Text><Keyword>=</Keyword><Normal Text> point3d</Normal Text><Symbol>(</Symbol><Float>0.0_kr</Float><Symbol>,</Symbol><Normal Text> </Normal Text><Float>1.0_kr</Float><Symbol>,</Symbol><Normal Text> </Normal Text><Float>2.0_kr</Float><Symbol>),</Symbol><Normal Text> </Normal Text><Keyword>&</Keyword><br/> 0170 <Normal Text> b </Normal Text><Keyword>=</Keyword><Normal Text> point3d</Normal Text><Symbol>(</Symbol><Float>4.0_kr</Float><Symbol>,</Symbol><Normal Text> </Normal Text><Float>5.0_kr</Float><Symbol>,</Symbol><Normal Text> </Normal Text><Float>6.0_kr</Float><Symbol>)</Symbol><br/> 0171 <Normal Text></Normal Text><br/> 0172 <Normal Text> </Normal Text><IO Function>print</IO Function><Normal Text> </Normal Text><Keyword>*</Keyword><Symbol>,</Symbol><Normal Text> </Normal Text><String>"a + b = "</String><Symbol>,</Symbol><Normal Text> </Normal Text><Operator>.norm.</Operator><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>a </Normal Text><Keyword>+</Keyword><Normal Text> b</Normal Text><Symbol>)</Symbol><br/> 0173 <Normal Text> </Normal Text><IO Function>print</IO Function><Normal Text> </Normal Text><Keyword>*</Keyword><Symbol>,</Symbol><Normal Text> </Normal Text><String>"factorial of 5 = "</String><Symbol>,</Symbol><Normal Text> factorial</Normal Text><Symbol>(</Symbol><Decimal>5</Decimal><Symbol>)</Symbol><br/> 0174 <Normal Text></Normal Text><br/> 0175 <Normal Text> </Normal Text><Keyword>call</Keyword><Normal Text> example_fn</Normal Text><Symbol>(</Symbol><Decimal>1</Decimal><Symbol>,</Symbol><Normal Text> var_out</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"hello!"</String><Symbol>)</Symbol><br/> 0176 <Normal Text></Normal Text><br/> 0177 <Keyword>end program</Keyword><Normal Text> example</Normal Text><br/>