- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have added a function fyuppr to uppercase a string based on a call to an existing subroutine syuppr. For some reason fyuppr is only returning 1 char. eg. if carg(1) = '-cwd', then the line carg(i) = fyuppr(carg(i)) puts '-' into carg(1). Here is the code:
...
character(256) :: fyuppr
character(256), allocatable :: carg(:)
numargs = nargs()-1
allocate(carg(numargs))
do i = 1, numargs
call getarg(i,carg(i)) ! carg(i) contains '-cwd' here
carg(i) = fyuppr(carg(i)) ! carg(i) only gets the 1st char here for some reason, ie '-'
enddo
...
FUNCTION FYUPPR (STRING)
IMPLICIT NONE
CHARACTER(LEN=*) STRING
CHARACTER(LEN=LEN(STRING)) FYUPPR
CALL SYUPPR(STRING)
FYUPPR = STRING ! STRING contains all chars here, ie '-CWD'
RETURN
END
SUBROUTINE SYUPPR (STRING)
IMPLICIT NONE
INTEGER I, J
CHARACTER(LEN=*) STRING
CHARACTER(LEN=26) UPVALS, LOVALS
DATA UPVALS / 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' /
DATA LOVALS / 'abcdefghijklmnopqrstuvwxyz' /
DO I = 1, LEN_TRIM(STRING)
J = INDEX(LOVALS,STRING(I:I))
IF (J > 0) STRING(I:I) = UPVALS(J:J)
ENDDO
RETURN
END
Any idea?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
[fortran] module upr contains FUNCTION FYUPPR (STRING) IMPLICIT NONE CHARACTER(LEN=*) STRING CHARACTER(LEN=LEN(STRING)) FYUPPR CALL SYUPPR(STRING) FYUPPR = STRING ! STRING contains all chars here, ie '-CWD' RETURN END FUNCTION FYUPPR SUBROUTINE SYUPPR (STRING) IMPLICIT NONE INTEGER I, J CHARACTER(LEN=*) STRING CHARACTER(LEN=26) UPVALS, LOVALS DATA UPVALS / 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' / DATA LOVALS / 'abcdefghijklmnopqrstuvwxyz' / DO I = 1, LEN_TRIM(STRING) J = INDEX(LOVALS,STRING(I:I)) IF (J > 0) STRING(I:I) = UPVALS(J:J) ENDDO RETURN END SUBROUTINE SYUPPR end module upr program xupr use upr character(len=256), allocatable :: carg(:) numargs = nargs()-1 allocate(carg(numargs)) do i = 1, numargs call getarg(i,carg(i)) ! carg(i) contains '-cwd' here carg(i) = fyuppr(carg(i)) ! carg(i) only gets the 1st char here for some reason, ie '-' write(*,'(1x,I2,2x,A)')i,carg(i) enddo end program xupr [/fortran]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page