Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- subroutine findsubstring (lineToSearch,line)
- character line(256), lineToSearch(20) !# line precisa ser ponteiro
- !# precisa descobrir o tamanho de line e lineToSearch;
- ! função do fortran ou receber de argumento?
- logical found, loop
- integer i1, i2, i3
- common/args/ count
- count = 0
- i1 = 0
- found = .false.
- loop = .true.
- !i = index(line,lineToSearch) !#OLD# Procura se lineToSearch é uma substring de line, se não for, i recebe 0
- do while (i1.LT.len(line) .and. loop.EQV..true.) ! Implementação da função index
- i2 = 0
- if (line(i1).EQ.lineToSearch(i2)) then ! Comparação de inteiros;
- ! Testa se o caractere atual de line é igual ao primeiro de lineToSearch
- found = .true.
- i3 = i1
- do while (found.EQV..true. .and. i2.LT.len(lineToSearch) .and. i3.LE.len(line))
- if (i3.EQ.len(line) .or. lineToSearch(i2).NE.line(i3)) then ! Se a string não existe, nao encontrou
- found = .false.
- end if
- i2 = i2 + 1
- i3 = i3 + 1
- end do
- end if
- if (found.EQV..true.) then ! Se a string existe
- loop = .false. ! Para sair do loop principal
- i1 = i3
- end if
- i1 = i1 + 1
- end do
- if (i1.EQ.len(line)) then
- i1 = 0
- end if
- if (i.NE.0) then ! se i é diferente de 0, ou seja, lineToSearch é uma substring de line
- count = count + 1
- !line = line + i + 1 !# Corrigir esta aritmética de ponteiros; line no momento é character
- do while (i.NE.0)
- !i = index(line,lineToSearch)
- if (i.NE.0) then
- count = count + 1
- !line = line + i + 1 !# Corrigir esta aritmética de ponteiros; line no momento é character
- end if
- end do
- end if
- return
- end subroutine findsubstring
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement