* PACKAGE ASTEP    !" 時間ステップ制御
*
*  [HIS] 96/03/14 (takepiro) 
***********************************************************************
      SUBROUTINE ATSSET            !"  時刻制御セットアップ
     I         ( ITSTR , ITEND , INTOUT , 
     I           HINTG )
*
* [PARAM]
#include        "zhdim.F"            !" 文字列文字数
*
* [MODIFY]
      INTEGER IT                !" ループカウンタ
*
* [OUTPUT]
      CHARACTER  HINTG * (NCC)  !" 時間積分スイッチ
      LOGICAL    OOUT           !" 出力スイッチ
      LOGICAL    OEND           !" 終了スイッチ
*
      INTEGER    ITSTR          !" 計算開始ステップ
      INTEGER    ITEND          !" 計算終了ステップ
      INTEGER    INTOUT         !" 出力間隔
*
* [INTERNAL SAVE]
      INTEGER    ITSTRX         !" 計算開始ステップ
      INTEGER    ITENDX         !" 計算終了ステップ
      INTEGER    INTOUX         !" 出力間隔
      CHARACTER  HINTGX * (NCC) !" 時間積分スイッチ
      LOGICAL    OFIRST
*
      SAVE   ITSTRX, ITENDX, INTOUX, HINTGX, 
     &       OFIRST
*
      DATA   OFIRST / .TRUE. /
*
      ITSTRX = ITSTR
      ITENDX = ITEND
      INTOUX = INTOUT
      HINTGX = HINTG
*
      IF ( OFIRST ) THEN
         OFIRST = .FALSE. 
         CALL MSGDMP( 'M','ATSSET','SETTING TIME-STEP PARAMETERS' )
      ELSE
         CALL MSGDMP( 'W','ATSSET','TIME-STEP PARAMETERS MODIFIED' )
      ENDIF
      RETURN
*
*------------------------------------------------------
      ENTRY ATSTEP            !"  時刻制御 
     M         ( IT   ,     
     O           HINTG , OOUT , OEND )
*
*"   < 1. ステップ数をすすめる >
*
      IT = IT + 1
*
*"   < 2. 時間積分フラッグ > 
*
      HINTG = HINTGX
*
*"   < 3. 出力判定 > 
*
      IF( (IT.EQ.ITENDX) .OR. (MOD(IT,INTOUX).EQ.0) ) THEN
         OOUT = .TRUE. 
      ELSE
         OOUT = .FALSE. 
      ENDIF
*
*"   < 4. 終了判定 >
*
      IF( IT .EQ. ITENDX )THEN
         OEND = .TRUE.
      ELSE
         OEND = .FALSE.
      ENDIF
*
      RETURN
      END
