diff --git a/src/components/Fortran/Fortran_Calls_Methods_Functions_Subroutines.vue b/src/components/Fortran/Fortran_Calls_Methods_Functions_Subroutines.vue
new file mode 100644
index 0000000..0a89535
--- /dev/null
+++ b/src/components/Fortran/Fortran_Calls_Methods_Functions_Subroutines.vue
@@ -0,0 +1,171 @@
+
+
+ Calls, Methods, Functions and Subroutines
+
+ In Fortran, there is no such thing as methods, but functions and subroutines instead. Fortran, compared to
+ other C-like programming languages, executes functions and subroutines differently. And what even is a subroutine?
+ Well, fret not, for we will discuss that in this post.
+
+ functions are pretty much the same as methods in newer programming languages. They take in an input, and return an
+ output. They can also just take an input, and save it to a file. Or they could also just return a constant value.
+ At the end of the day, it's just a piece of code that is usually reused between multiple parts of the program.
+
+ subroutines are almost the exact same as functions. One such difference is that subroutine doesn't return anything,
+ in the traditional sense. If functions return a modified version of the input, a subroutine modifies the input data
+ in place.
+
+ A subroutines parameters are often annotated inside the code block, with an intent. Observe the code below:
+
+
+
+
+module PlusHelper
+ implicit none
+
+ public :: plus_two
+ contains
+ subroutine plus_two (number)
+ integer, intent (out) :: number
+ number = number + 2
+ end subroutine plus_two
+
+end module PlusHelper
+
+
+
+ It's fairly easy to understand, really. We tell the compiler that number is intended
+ to be used and modified. intent() is a keyword used to hint and guide the compiler in what to do
+ with the value, deep down when compiling to machine code.
+
+ in tells the compiler that the value is only used, but not modified. out
+ tells the compiler that the value is returned to the caller. We'll show how it's returned later on. inout
+ tells the compiler that the value is used, modified and then returned.
+
+ As we can see with the code, number is being added by 2, and then returned. We'll see how the
+ value is used in the caller later.
+
+ Let's show another example, that showcases this functionality a little better:
+
+
+
+module MultiplyHelper
+ implicit none
+
+ public :: multiply_by
+ contains
+ subroutine multiply (number, multiply)
+ integer, intent(out) :: number
+ integer, intent(in) :: multiply
+
+ number = number * multiply
+ end subroutine multiply
+
+end module MultiplyHelper
+
+
+
+ As we can see with the code, it just returns the number after it has been multiplied by
+ the multiply value. Now let's see how we call the subroutine:
+
+
+
+
+program hello
+ use PlusHelper, only: plus_two
+ use MultiplyHelper, only: multiply_by
+ implicit none
+
+ integer :: number = 5
+ print *, number
+
+ call plus_two(number)
+ print *, number
+
+ call multiply_by(number, 2)
+ print *, number
+end program hello
+
+
+
+ And the output looks like this:
+
+
+
+$ ./main
+ 5
+ 7
+ 14
+
+
+
+
+ That was pretty simply. That's how subroutines works. Now let's go over functions. First we start by defining
+ out function.
+
+
+
+function divide_by(number, divide) result(return)
+ integer, intent(in) :: number
+ integer, intent(in) :: divide
+ integer :: return
+
+ return = number / divide
+end function divide_by
+
+
+
+ As we can see, it's almost like we're defining a subroutine. Do notice that we're still using the
+ intent keyword. We define out return as an integer as well. Also note that we're dividing integers,
+ and not floats. So the numbers are prone to rounding.
+
+ Let's take a look on how we call a function.
+
+
+
+program hello
+ use PlusHelper, only: plus_two
+ use MultiplyHelper, only: multiply_by
+ implicit none
+
+ integer :: divide_by
+ integer :: number = 5
+ print *, number
+
+ call plus_two(number)
+ print *, number
+
+ call multiply_by(number, 2)
+ print *, number
+ print *, divide_by(number, 2)
+end program hello
+
+
+
+ We create an integer that serves as the return for out function divide_by(n, k).
+ And we call it just by writing the function name with it's parameters.
+
+ The output looks like this:
+
+
+
+
+$ ./main
+ 5
+ 7
+ 14
+ 7
+
+
+
+
+ TLDR: Functions are assigned as variables, and subroutines are imported and called with the call keyword.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Fortran/Fortran_Index.vue b/src/components/Fortran/Fortran_Index.vue
index 9d49d44..180a98b 100644
--- a/src/components/Fortran/Fortran_Index.vue
+++ b/src/components/Fortran/Fortran_Index.vue
@@ -24,6 +24,7 @@
> Set Up
> Hello World
> Data Types
+ > Method, Functions, Sub Routines and Calls
> Reading A File
diff --git a/src/components/Fortran/Fortran_Reading_Files.vue b/src/components/Fortran/Fortran_Reading_Files.vue
index 305082b..f137ed6 100644
--- a/src/components/Fortran/Fortran_Reading_Files.vue
+++ b/src/components/Fortran/Fortran_Reading_Files.vue
@@ -1,15 +1,19 @@
-
Reading A File In Fortran 90
-
-
+
Reading A File In Fortran 90
-
+ Reading files in high level programming languages is rather easy. I C#, you would just create a
+ StreamReader object, and execute: streamReader.ReadLine() and bam,
+ you've read the first line of the file. Now just check if the string returned is null, in a while loop, and you've
+ read the whole file. Easy peasy.
-
+ In Fortran 90, however, there is a little more than that. Not a lot more, to be honest, but there is a little more.
\ No newline at end of file
diff --git a/src/main.ts b/src/main.ts
index 078629a..f7f5e65 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -12,6 +12,8 @@ import FortranReadingFiles from "./components/Fortran/Fortran_Reading_Files.vue"
import FortranHelloWorld from "./components/Fortran/Fortran_Hello_World.vue";
import FortranSetUp from "./components/Fortran/Fortran_Set_Up.vue";
import FortranDataTypes from "./components/Fortran/Fortran_Data_Types.vue";
+import FortranCallsMethodsFunctionsSubroutines
+ from "./components/Fortran/Fortran_Calls_Methods_Functions_Subroutines.vue";
const router = createRouter({
history: createWebHistory(),
@@ -23,6 +25,7 @@ const router = createRouter({
{path: '/Fortran/SetUp', name: 'SetUp', component: FortranSetUp},
{path: '/Fortran/HelloWorld', name: 'HelloWorld', component: FortranHelloWorld},
{path: '/Fortran/DataTypes', name: 'DataTypes', component: FortranDataTypes},
+ {path: '/Fortran/Methods', name: 'Methods', component: FortranCallsMethodsFunctionsSubroutines},
{path: '/Fortran/ReadingAFile', name: 'ReadingAFile', component: FortranReadingFiles},
{path: '/Pascal', name: 'Pascal', component: PascalIndex},
diff --git a/tags/CodeTag.vue b/tags/CodeTag.vue
index 967efcf..4b1e524 100644
--- a/tags/CodeTag.vue
+++ b/tags/CodeTag.vue
@@ -1,11 +1,3 @@
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tags/PageStart.vue b/tags/PageStart.vue
new file mode 100644
index 0000000..d49622b
--- /dev/null
+++ b/tags/PageStart.vue
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/tags/Paragraph.vue b/tags/Paragraph.vue
new file mode 100644
index 0000000..e1f07fe
--- /dev/null
+++ b/tags/Paragraph.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file