Allocate and read integer array of unknown length "nIntegers" integer values named "Key" from ini file. If keyword "Key" is not found in setup file, the default values "Proposal" are used to create the array (error if "Proposal" not given). Setup file was read in before and is stored as list of character strings starting with "FirstString".
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | Key |
Search for this keyword in ini file |
||
| integer, | ALLOCATABLE | :: | GetIntArray(:) |
Integer array read from setup file or initialized with default values |
||
| integer, | intent(out) | :: | nIntegers |
Number of values in array |
||
| integer, | intent(in), | optional | :: | Proposal(:) |
Default values as integer array |
|
| logical, | intent(in), | optional | :: | quiet_def_in |
flag to be quiet if DEFAULT is taken |
SUBROUTINE GETINTALLOCARRAY(Key,GetIntArray,nIntegers,Proposal,quiet_def_in) ! MODULES IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CHARACTER(LEN=*),INTENT(IN) :: Key !! Search for this keyword in ini file INTEGER ,OPTIONAL,INTENT(IN) :: Proposal(:) !! Default values as integer array LOGICAL ,OPTIONAL,INTENT(IN) :: quiet_def_in !! flag to be quiet if DEFAULT is taken !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES INTEGER,INTENT(OUT) :: nIntegers !! Number of values in array INTEGER,ALLOCATABLE :: GetIntArray(:) !! Integer array read from setup file or initialized with default values !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES CHARACTER(LEN=MAXLEN) :: HelpStr,ProposalStr CHARACTER(LEN=8) :: DefMsg INTEGER :: iInteger INTEGER :: ioerr LOGICAL :: quiet_def !=================================================================================================================================== IF (PRESENT(Proposal)) THEN CALL ConvertToProposalStr(ProposalStr,intarr=Proposal) CALL FindStr(Key,HelpStr,DefMsg,ProposalStr) ELSE CALL FindStr(Key,HelpStr,DefMsg) END IF !count number of components nIntegers=1+count_sep(helpstr,",") IF(ALLOCATED(GetIntArray)) DEALLOCATE(GetIntArray) ALLOCATE(GetIntArray(nIntegers)) READ(HelpStr,*,IOSTAT=ioerr)GetIntArray IF(ioerr.NE.0)THEN WRITE(UNIT_stdout,*)'PROBLEM IN READIN OF LINE (integer array):' WRITE(UNIT_stdout,*) '"',TRIM(key),' = ',TRIM(helpStr),'"' CALL abort(__STAMP__,"") END IF quiet_def=.FALSE. IF(PRESENT(quiet_def_in))THEN IF(INDEX(TRIM(DefMsg),"DEFAULT").NE.0)THEN quiet_def=quiet_def_in END IF END IF IF(.NOT.quiet_def) THEN SWRITE(UNIT_stdOut,'(a3,a30,a3,a28,i4,a4,a7,a3)',ADVANCE='NO') ' | ',TRIM(Key),' | ',& 'Integer array of size (',nIntegers,') | ',TRIM(DefMsg),' | ' DO iInteger=0,nIntegers-1 IF ((iInteger.GT.0) .AND. (MOD(iInteger,8).EQ.0)) THEN SWRITE(UNIT_stdOut,*) SWRITE(UNIT_stdOut,'(a80,a3)',ADVANCE='NO')'',' | ' END IF SWRITE(UNIT_stdOut,'(i5)',ADVANCE='NO')GetIntArray(iInteger+1) END DO SWRITE(UNIT_stdOut,*) END IF !quiet_def END SUBROUTINE GETINTALLOCARRAY