[COLOR=#a020f0]module[/color] my_functions
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#a020f0]contains[/color]
[COLOR=#a020f0]function[/color] first_n(s, n)
[COLOR=#0000ff]! returns first N characters of the string[/color]
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=*[/b][/color]):: s
[COLOR=#2e8b57][b]integer[/b][/color]::n
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=[/b][/color]n):: first_n
first_n [COLOR=#804040][b]=[/b][/color] s([COLOR=#ff00ff]1[/color]:n)
[COLOR=#a020f0]end function[/color] first_n
[COLOR=#a020f0]function[/color] substring(s, from_pos, to_pos)
[COLOR=#0000ff]! returns substring from the given position to the given position[/color]
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=*[/b][/color]):: s
[COLOR=#2e8b57][b]integer[/b][/color]:: from_pos, to_pos
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=[/b][/color]to_pos [COLOR=#804040][b]-[/b][/color] from_pos [COLOR=#804040][b]+[/b][/color] [COLOR=#ff00ff]1[/color]):: substring
substring [COLOR=#804040][b]=[/b][/color] s(from_pos : to_pos)
[COLOR=#a020f0]end function[/color] substring
[COLOR=#a020f0]function[/color] my_trim(s)
[COLOR=#0000ff]! returns substring from the given position to the given position[/color]
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=*[/b][/color]):: s
[COLOR=#2e8b57][b]integer[/b][/color]:: n
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#008080]len[/color]([COLOR=#008080]trim[/color](s))):: my_trim
my_trim [COLOR=#804040][b]=[/b][/color] [COLOR=#008080]trim[/color](s)
[COLOR=#a020f0]end function[/color] my_trim
[COLOR=#a020f0]end module[/color] my_functions
[COLOR=#a020f0]program[/color] strings
[COLOR=#a020f0]use[/color] my_functions
[COLOR=#2e8b57][b]implicit[/b][/color] [COLOR=#2e8b57][b]none[/b][/color]
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=*[/b][/color]), [COLOR=#2e8b57][b]parameter[/b][/color] :: inputString [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]"Fortran is old programming language"[/color]
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=*[/b][/color]), [COLOR=#2e8b57][b]parameter[/b][/color] :: blah [COLOR=#804040][b]=[/b][/color] [COLOR=#ff00ff]" Blah Blah Blah "[/color]
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]7[/color])::outputString1
[COLOR=#2e8b57][b]character[/b][/color]([COLOR=#2e8b57][b]len[/b][/color][COLOR=#804040][b]=[/b][/color][COLOR=#ff00ff]2[/color])::outputString2
outputString1 [COLOR=#804040][b]=[/b][/color] first_n(inputString, [COLOR=#ff00ff]7[/color])
[COLOR=#804040][b]print[/b][/color] [COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]"output1 = '"[/color], outputString1,[COLOR=#ff00ff]"'"[/color]
outputString2 [COLOR=#804040][b]=[/b][/color] substring(inputString, [COLOR=#ff00ff]9[/color], [COLOR=#ff00ff]10[/color])
[COLOR=#804040][b]print[/b][/color] [COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]"output2 = '"[/color], outputString2,[COLOR=#ff00ff]"'"[/color]
[COLOR=#804040][b]print[/b][/color] [COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]"output3 = '"[/color], substring(inputString, [COLOR=#ff00ff]12[/color], [COLOR=#ff00ff]14[/color]),[COLOR=#ff00ff]"'"[/color]
[COLOR=#804040][b]print[/b][/color] [COLOR=#804040][b]*[/b][/color], [COLOR=#ff00ff]"Trimmed '"[/color], blah, [COLOR=#ff00ff]"' = '"[/color], my_trim(blah),[COLOR=#ff00ff]"'"[/color]
[COLOR=#a020f0]end program[/color] strings