Nodes of different colours represent the following:
Solid arrows point from a parent (sub)module to the submodule which is descended from it. Dashed arrows point from a module being used to the module or program unit using it. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(inout) | :: | ErrorsFound |
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
SUBROUTINE GetDSTData(ErrorsFound)
! SUBROUTINE INFORMATION:
! AUTHOR Linda Lawrie
! DATE WRITTEN August 2000
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine gets a possible "Daylight Saving Period" from the IDF. Using this
! will overwrite any prior DST data.
! METHODOLOGY EMPLOYED:
! Processes the following IDD definition:
! DaylightSavingPeriod,
! \memo This object sets up the Daylight Saving period for any RunPeriod.
! \memo Ignores any DaylightSavingperiod values on the weather file and uses this definition.
! \memo (These are not used with DesignDay objects.)
! A1, \field StartDate
! A2, \field EndDate
! \memo Dates can be several formats:
! \memo <number>/<number> (month/day)
! \memo <number> <Month>
! \memo <Month> <number>
! \memo <Nth> <Weekday> in <Month)
! \memo Last <WeekDay> in <Month>
! \memo <Month> can be January, February, March, April, May, June, July, August, September,
! October, November, December
! \memo Months can be the first 3 letters of the month
! \memo <Weekday> can be Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
! \memo <Nth> can be 1 or 1st, 2 or 2nd, etc. up to 5(?)
! REFERENCES:
! na
! USE STATEMENTS:
USE DataIPShortCuts
USE InputProcessor, ONLY: GetNumObjectsFound, GetObjectItem
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
LOGICAL, INTENT(INOUT) :: ErrorsFound ! will be set to true if severe errors are found in inputs
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER NumFound
INTEGER NumAlphas
INTEGER IOSTAT
INTEGER NumNumbers
cCurrentModuleObject='RunPeriodControl:DaylightSavingTime'
NumFound=GetNumObjectsFound(cCurrentModuleObject)
IF (NumFound == 1 ) THEN
CALL GetObjectItem(cCurrentModuleObject,1,cAlphaArgs,NumAlphas,rNumericArgs,NumNumbers,IOSTAT, &
AlphaBlank=lAlphaFieldBlanks,NumBlank=lNumericFieldBlanks, &
AlphaFieldnames=cAlphaFieldNames,NumericFieldNames=cNumericFieldNames)
IF (NumAlphas /= 2) THEN
CALL ShowSevereError(TRIM(cCurrentModuleObject)//': Insufficient fields, must have Start AND End Dates')
ErrorsFound=.true.
ELSE ! Correct number of arguments
CALL ProcessDateString(cAlphaArgs(1),IDFDST%StMon,IDFDST%StDay,IDFDST%StWeekDay,IDFDST%StDateType,ErrorsFound)
IF (IDFDST%StDateType == InvalidDate) THEN
CALL ShowSevereError(TRIM(cCurrentModuleObject)//': Invalid '//TRIM(cAlphaFieldNames(1))//'='//TRIM(cAlphaArgs(1)))
ErrorsFound=.true.
ENDIF
CALL ProcessDateString(cAlphaArgs(2),IDFDST%EnMon,IDFDST%EnDay,IDFDST%EnWeekDay,IDFDST%EnDateType,ErrorsFound)
IF (IDFDST%EnDateType == InvalidDate) THEN
CALL ShowSevereError(TRIM(cCurrentModuleObject)//': Invalid '//TRIM(cAlphaFieldNames(2))//'='//TRIM(cAlphaArgs(2)))
ErrorsFound=.true.
ENDIF
IDFDaylightSaving=.true.
ENDIF
ELSEIF (NumFound > 1) THEN
CALL ShowSevereError(TRIM(cCurrentModuleObject)//': Too many objects in Input File, only one allowed.')
ErrorsFound=.true.
ENDIF
RETURN
END SUBROUTINE GetDSTData