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/>