@@ -538,6 +538,7 @@ RECURSIVE SUBROUTINE read_deck(filename, first_call, deck_state_in)
538538 deck_values(2 )% value = ' '
539539 slen = 1
540540 line = 1
541+ deck_line_number = ' 0'
541542 column = 0
542543
543544 ! Use non-advancing IO to pop characters off the deck file one at a time
@@ -558,6 +559,7 @@ RECURSIVE SUBROUTINE read_deck(filename, first_call, deck_state_in)
558559 got_eof = .TRUE.
559560 column = 0
560561 line = line + 1
562+ CALL integer_as_string(line - 1 , deck_line_number)
561563 ELSE
562564 got_eor = .FALSE.
563565 column = column + 1
@@ -667,6 +669,7 @@ RECURSIVE SUBROUTINE read_deck(filename, first_call, deck_state_in)
667669 END IF
668670 continuation = .FALSE.
669671 line = line + 1
672+ CALL integer_as_string(line - 1 , deck_line_number)
670673 column = 0
671674 END IF
672675
@@ -678,6 +681,7 @@ RECURSIVE SUBROUTINE read_deck(filename, first_call, deck_state_in)
678681 io = io_units(iu)
679682 WRITE (io,* )
680683 WRITE (io,* ) ' *** ERROR ***'
684+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
681685 IF (flip > 1 ) THEN
682686 WRITE (io,* ) ' Whilst reading ' ,TRIM (deck_values(1 )% value) &
683687 // ' = ' // TRIM (deck_values(2 )% value(1 :pos-1 ))
@@ -847,6 +851,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
847851 io = io_units(iu)
848852 WRITE (io,* )
849853 WRITE (io,* ) ' *** WARNING ***'
854+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
850855 WRITE (io,* ) ' The block "' // TRIM (value) &
851856 // ' " cannot be set because'
852857 WRITE (io,* ) ' the code has not been compiled with the correct ' &
@@ -861,6 +866,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
861866 io = io_units(iu)
862867 WRITE (io,* )
863868 WRITE (io,* ) ' *** WARNING ***'
869+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
864870 WRITE (io,* ) ' The block "' // TRIM (value) &
865871 // ' " cannot be set because'
866872 WRITE (io,* ) ' the code has not been compiled with the correct ' &
@@ -875,6 +881,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
875881 io = io_units(iu)
876882 WRITE (io,* )
877883 WRITE (io,* ) ' *** WARNING ***'
884+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
878885 WRITE (io,* ) ' Unknown block "' // TRIM (value) &
879886 // ' " in input deck, ignoring' , deck_state
880887 END DO
@@ -903,6 +910,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
903910 WRITE (du,* )
904911 IF (err_count /= 0 ) THEN
905912 WRITE (du,* ) ' *** WARNING ***'
913+ WRITE (du,* ) ' Input deck line number ' , TRIM (deck_line_number)
906914 WRITE (du,* ) ' Block "' // TRIM (ADJUSTL (value)) // ' " contains errors'
907915 WRITE (du,* )
908916 END IF
@@ -919,6 +927,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
919927 io = io_units(iu)
920928 WRITE (io,* )
921929 WRITE (io,* ) ' *** ERROR ***'
930+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
922931 WRITE (io,* ) ' Value "' // TRIM (value) // ' " in element "' &
923932 // TRIM (element) // ' " is invalid and cannot be parsed.'
924933 WRITE (io,* ) ' Code will terminate'
@@ -947,6 +956,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
947956 io = io_units(iu)
948957 WRITE (io,* )
949958 WRITE (io,* ) ' *** WARNING ***'
959+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
950960 WRITE (io,* ) ' Unrecognised element "' // TRIM (element) &
951961 // ' " in input deck.'
952962 WRITE (io,* ) ' Code will continue to run, but behaviour is undefined'
@@ -960,6 +970,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
960970 io = io_units(iu)
961971 WRITE (io,* )
962972 WRITE (io,* ) ' *** WARNING ***'
973+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
963974 WRITE (io,* ) ' Element "' // TRIM (element) &
964975 // ' " is set multiple times in this deck.'
965976 WRITE (io,* ) ' Code will continue using first value in deck'
@@ -973,6 +984,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
973984 io = io_units(iu)
974985 WRITE (io,* )
975986 WRITE (io,* ) ' *** WARNING ***'
987+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
976988 WRITE (io,* ) ' Element "' // TRIM (element) &
977989 // ' " is set multiple times in this deck.'
978990 WRITE (io,* ) ' Code will continue using last value in deck'
@@ -986,6 +998,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
986998 io = io_units(iu)
987999 WRITE (io,* )
9881000 WRITE (io,* ) ' *** ERROR ***'
1001+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
9891002 WRITE (io,* ) ' Value "' // TRIM (value) // ' " in element "' &
9901003 // TRIM (element) // ' " is'
9911004 WRITE (io,* ) ' invalid or could not be parsed. Code will terminate.'
@@ -1000,6 +1013,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
10001013 io = io_units(iu)
10011014 WRITE (io,* )
10021015 WRITE (io,* ) ' *** WARNING ***'
1016+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
10031017 WRITE (io,* ) ' Value "' // TRIM (value) // ' " in element "' &
10041018 // TRIM (element) // ' " is'
10051019 WRITE (io,* ) ' invalid or could not be parsed. Code will use' , &
@@ -1015,6 +1029,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
10151029 io = io_units(iu)
10161030 WRITE (io,* )
10171031 WRITE (io,* ) ' *** ERROR ***'
1032+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
10181033 WRITE (io,* ) ' Value "' // TRIM (value) // ' " in element "' &
10191034 // TRIM (element) // ' " cannot be'
10201035 WRITE (io,* ) ' set because a prerequisite element "' &
@@ -1031,6 +1046,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
10311046 io = io_units(iu)
10321047 WRITE (io,* )
10331048 WRITE (io,* ) ' *** WARNING ***'
1049+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
10341050 WRITE (io,* ) ' The element "' // TRIM (element) // ' " of block "' &
10351051 // TRIM (current_block_name) // ' " cannot be set'
10361052 WRITE (io,* ) ' because the code has not been compiled with the ' &
@@ -1048,6 +1064,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
10481064 io = io_units(iu)
10491065 WRITE (io,* )
10501066 WRITE (io,* ) ' *** WARNING ***'
1067+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
10511068 WRITE (io,* ) TRIM (extended_error_string)
10521069 WRITE (io,* )
10531070 END DO
@@ -1059,6 +1076,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
10591076 io = io_units(iu)
10601077 WRITE (io,* )
10611078 WRITE (io,* ) ' *** ERROR ***'
1079+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
10621080 WRITE (io,* ) TRIM (extended_error_string)
10631081 WRITE (io,* )
10641082 END DO
@@ -1071,6 +1089,7 @@ SUBROUTINE handle_deck_element(element, value, errcode_deck)
10711089 io = io_units(iu)
10721090 WRITE (io,* )
10731091 WRITE (io,* ) ' *** ERROR ***'
1092+ WRITE (io,* ) ' Input deck line number ' , TRIM (deck_line_number)
10741093 WRITE (io,* ) ' You have managed to find an impossible situation in ' &
10751094 // ' this code.'
10761095 WRITE (io,* ) ' Good for you. Just because of that, the code will ' &
0 commit comments