Finds the row to which the current block belongs If there is no valid block, pos is set to 0
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | pos |
current position |
||
integer, | intent(inout) | :: | row |
input: current row; output: the row corresponding to the position |
||
integer, | intent(in) | :: | maxrows |
maxmimum row |
||
integer, | intent(in), | DIMENSION(:) | :: | row_p |
row pointers |
PURE SUBROUTINE find_proper_row(pos, row, maxrows, row_p) !! Finds the row to which the current block belongs !! If there is no valid block, pos is set to 0 INTEGER, INTENT(IN) :: pos !! current position INTEGER, INTENT(INOUT) :: row !! input: current row; output: the row corresponding to the position INTEGER, INTENT(IN) :: maxrows !! maxmimum row INTEGER, DIMENSION(:), INTENT(IN) :: row_p !! row pointers ! --------------------------------------------------------------------------- IF (pos .GT. 0) THEN IF (row .LT. 1) THEN row = 1 ELSEIF (row .GT. maxrows) THEN row = maxrows END IF DO WHILE (row_p(row + 1) .LT. pos) row = row + 1 IF (row .GT. maxrows) THEN row = 0 EXIT END IF END DO ELSE row = 0 END IF END SUBROUTINE find_proper_row