Read array of "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, | intent(in) | :: | 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 |
Integer array read from setup file or initialized with default values
FUNCTION GETINTARRAY(Key,nIntegers,Proposal,quiet_def_in) ! MODULES IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CHARACTER(LEN=*),INTENT(IN) :: Key !! Search for this keyword in ini file INTEGER,INTENT(IN) :: nIntegers !! Number of values in array 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 :: GetIntArray(nIntegers) !! Integer array read from setup file or initialized with default values !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES CHARACTER(LEN=MAXLEN) :: HelpStr,ProposalStr CHARACTER(LEN=8) :: tmpstrarray(nIntegers) CHARACTER(LEN=8) :: DefMsg,tmpstr 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 iInteger=1+count_sep(Key,helpstr,",") IF(iInteger.NE.nIntegers)THEN WRITE(tmpstr,'(I8)')nIntegers CALL abort(__STAMP__,& "Problem reading parameter '"//TRIM(key)//"', expected integer array of size "//TRIM(tmpstr)//", got '= "//TRIM(helpStr)//"'", & TypeInfo="InvalidParameterError") END IF READ(HelpStr,*,IOSTAT=ioerr)tmpstrarray IF(ioerr.NE.0)THEN CALL abort(__STAMP__,& "Problem reading parameter '"//TRIM(key)//"', expected integer array, got '= "//TRIM(helpStr)//"'", & TypeInfo="InvalidParameterError") END IF DO iInteger=1,nIntegers READ(tmpstrarray(iInteger),"(I8)",IOSTAT=ioerr) getIntArray(iInteger) IF(ioerr.NE.0)THEN CALL abort(__STAMP__,& "Problem reading parameter '"//TRIM(key)//"', expected integer array, got '= "//TRIM(helpStr)//"'", & TypeInfo="InvalidParameterError") END IF END DO 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 FUNCTION GETINTARRAY