SUBROUTINE DRAW_CALTRIG() C---------------------------------------------------------------------- C- C- Purpose and Methods : Draw the foreground of the Calorimeter Trigger C- display. C- C- Inputs : none C- Outputs : none C- Controls: none C- C- Created 26-APR-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- Updated 30-APR-1992 Philippe Laurens, Steven Klocek C Add new items C- Updated 22-JAN-1994 Philippe Laurens - MSU L1 Trigger C- add large tile count, compact comparator states, C- add large tile jet list C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'LV1_MPOOL_DERIVED.INC' INCLUDE 'LV1_MPOOL_FORMATTED.INC' INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MON_SCREEN_LAYOUT.PARAMS' INCLUDE 'LV1_GLOB_THRSH_AO.INC' C CHARACTER*132 BUFFER INTEGER COUNT, POSITION, OLD_POSITION, LENGTH, ETA, PHI INTEGER THRESH_TYPE, THRESH_INDEX, RS_NUM INTEGER ISTAT C INTEGER OVERFLOW_MIS_PT PARAMETER (OVERFLOW_MIS_PT = 255) C INTEGER LT_REFSET, THRESHOLD, LT_COUNT CHARACTER*32 LT_ANDOR_NAME INTEGER LT_REFSET_0, LT_REFSET_7 INTEGER GE_1, GE_2, GE_3 PARAMETER (LT_REFSET_0 = 0, LT_REFSET_7 = 7) PARAMETER (GE_1 = 1, GE_2 = 2, GE_3= 3) INTEGER LT_ANDOR_NUM(LT_REFSET_0:LT_REFSET_7,GE_1:GE_3) LOGICAL LT_ANDOR_OK C LOGICAL FIRST SAVE FIRST DATA FIRST /.TRUE./ C C----------------------------------------------------------------------- C initialize array of andor term numbers for large tiles IF ( FIRST .EQV. .TRUE. ) THEN FIRST = .FALSE. C LT_ANDOR_OK = .TRUE. C DO LT_REFSET = LT_REFSET_0, LT_REFSET_7 DO THRESHOLD = GE_1, GE_3 C LT_ANDOR_NAME = ' ' WRITE ( LT_ANDOR_NAME, 1000 ) LT_REFSET, THRESHOLD 1000 FORMAT ( 'L1C_LT_CNT_', I1, '_GE', I1 ) C LT_ANDOR_NUM( LT_REFSET, THRESHOLD) = -1 C scan andor terms to find large tile term DO COUNT = ANDOR_NUM_MIN, ANDOR_NUM_MAX IF ( ANDOR_TERM_NAME(COUNT) .EQ. LT_ANDOR_NAME ) THEN IF ( LT_ANDOR_NUM( LT_REFSET, THRESHOLD) .NE. -1 ) THEN PRINT *, 'Multiple instance of Large Tile Andor Term', & ' /', LT_ANDOR_NAME, '/' LT_ANDOR_OK = .FALSE. END IF LT_ANDOR_NUM( LT_REFSET, THRESHOLD) = COUNT END IF END DO IF ( LT_ANDOR_NUM( LT_REFSET, THRESHOLD) .EQ. -1 ) THEN PRINT *, 'Failure locating Large Tile Andor Term ', & ' /', LT_ANDOR_NAME, '/' LT_ANDOR_OK = .FALSE. END IF END DO END DO ENDIF C----------------------------------------------------------------------- C Draw top portion of screen C C Local time and date C CALL PUT_STRING(CT_DATE_L, CT_DATE_C, CURRENT_TIME) C C Global Level 1 Trigger Rate C CALL BUILD_REAL_STRING(LV1_TRIGGER_RATE, 2, & BUFFER(1:CT_LV1_RATE_W)) CALL PUT_STRING(CT_LV1_RATE_L, CT_LV1_RATE_C, & BUFFER(1:CT_LV1_RATE_W)) C C Monitoring status C BUFFER = ' ' IF (INFO_FRESH .EQV. .TRUE.) THEN BUFFER(CT_MONIT_STATUS_W - 5:CT_MONIT_STATUS_W) = 'Fresh' ELSE BUFFER(CT_MONIT_STATUS_W - 5:CT_MONIT_STATUS_W) = 'Stale' ENDIF CALL PUT_STRING(CT_MONIT_STATUS_L, CT_MONIT_STATUS_C, & BUFFER(1:CT_MONIT_STATUS_W)) C C Level 0 rate C BUFFER = ' ' IF (LV0_TRIGGER_RATE .GE. 10000.) THEN CALL BUILD_REAL_STRING(LV0_TRIGGER_RATE / 1000., 2, & BUFFER(1:CT_LV0_RATE_W)) BUFFER(CT_LV0_RATE_W+2:CT_LV0_RATE_W+4) = 'kHz' ELSE CALL BUILD_REAL_STRING(LV0_TRIGGER_RATE, 2, & BUFFER(1:CT_LV0_RATE_W)) BUFFER(CT_LV0_RATE_W+2:CT_LV0_RATE_W+4) = 'Hz' ENDIF CALL PUT_STRING(CT_LV0_RATE_L, CT_LV0_RATE_C, & BUFFER(1:CT_LV0_RATE_W+4)) C C Level 1 status C BUFFER = ' ' IF (FRAMEWORK_RUNNING .EQV. .TRUE.) THEN BUFFER(CT_LV1_STATUS_W - 6:CT_LV1_STATUS_W) = 'Running' ELSE BUFFER(CT_LV1_STATUS_W - 6:CT_LV1_STATUS_W) = 'Paused' ENDIF CALL PUT_STRING(CT_LV1_STATUS_L, CT_LV1_STATUS_C, & BUFFER(1:CT_LV1_STATUS_W)) C C Level 0 good C IF (CALTRIG_DATA.LV0_GOOD .EQV. .TRUE.) THEN CALL PUT_STRING(CT_LV0_GOOD_L, CT_LV0_GOOD_C, 'Yes') ELSE CALL PUT_STRING(CT_LV0_GOOD_L, CT_LV0_GOOD_C, 'No ') ENDIF C C Level 0 Bin C CALL INTTOSTR(CALTRIG_DATA.LV0_BIN, BUFFER(1:CT_LV0_BIN_W), 1) IF ((BUFFER(1:1) .NE. '-') .AND. (BUFFER(2:2) .NE. '-')) THEN IF (BUFFER(2:2) .EQ. ' ') THEN BUFFER(2:2) = '+' ELSEIF (BUFFER(1:1) .EQ. ' ') THEN BUFFER(1:1) = '+' ENDIF ENDIF C CALL PUT_STRING(CT_LV0_BIN_L, CT_LV0_BIN_C, & BUFFER(1:CT_LV0_BIN_W)) C C Lookup Pages C P[=+L] C Logical pages are not available yet. C CALL INTTOSTR(CALTRIG_DATA.ET_LOOKUP_PAGE_PHYS, & BUFFER(1:CT_ET_PAGE_W), 1) CALL PUT_STRING(CT_ET_PAGE_L, CT_ET_PAGE_C, & BUFFER(1:CT_ET_PAGE_W)) C CALL INTTOSTR(CALTRIG_DATA.L2_LOOKUP_PAGE_PHYS, & BUFFER(1:CT_L2_PAGE_W), 1) CALL PUT_STRING(CT_L2_PAGE_L, CT_L2_PAGE_C, & BUFFER(1:CT_L2_PAGE_W)) C CALL INTTOSTR(CALTRIG_DATA.PT_LOOKUP_PAGE_PHYS, & BUFFER(1:CT_PT_PAGE_W), 1) CALL PUT_STRING(CT_PT_PAGE_L, CT_PT_PAGE_C, & BUFFER(1:CT_PT_PAGE_W)) C C Global energy sums C CALL BUILD_REAL_STRING(CALTRIG_DATA.EM_ET_E, 2, & BUFFER(1:CT_E_SUMS_W)) CALL PUT_STRING(CT_E_SUMS_L1, CT_E_SUMS_C1, BUFFER(1:CT_E_SUMS_W)) C CALL BUILD_REAL_STRING(CALTRIG_DATA.HD_ET_E, 2, & BUFFER(1:CT_E_SUMS_W)) CALL PUT_STRING(CT_E_SUMS_L1, CT_E_SUMS_C2, BUFFER(1:CT_E_SUMS_W)) C CALL BUILD_REAL_STRING(CALTRIG_DATA.TOT_ET_E, 2, & BUFFER(1:CT_E_SUMS_W)) CALL PUT_STRING(CT_E_SUMS_L1, CT_E_SUMS_C3, BUFFER(1:CT_E_SUMS_W)) C CALL BUILD_REAL_STRING(CALTRIG_DATA.EM_L2_E, 2, & BUFFER(1:CT_E_SUMS_W)) CALL PUT_STRING(CT_E_SUMS_L2, CT_E_SUMS_C1, BUFFER(1:CT_E_SUMS_W)) C CALL BUILD_REAL_STRING(CALTRIG_DATA.HD_L2_E, 2, & BUFFER(1:CT_E_SUMS_W)) CALL PUT_STRING(CT_E_SUMS_L2, CT_E_SUMS_C2, BUFFER(1:CT_E_SUMS_W)) C CALL BUILD_REAL_STRING(CALTRIG_DATA.TOT_L2_E, 2, & BUFFER(1:CT_E_SUMS_W)) CALL PUT_STRING(CT_E_SUMS_L2, CT_E_SUMS_C3, BUFFER(1:CT_E_SUMS_W)) C CALL BUILD_REAL_STRING(CALTRIG_DATA.PX_PT, 2, & BUFFER(1:CT_E_SUMS_W)) CALL PUT_STRING(CT_E_SUMS_L3, CT_E_SUMS_C1, BUFFER(1:CT_E_SUMS_W)) C CALL BUILD_REAL_STRING(CALTRIG_DATA.PY_PT, 2, & BUFFER(1:CT_E_SUMS_W)) CALL PUT_STRING(CT_E_SUMS_L3, CT_E_SUMS_C2, BUFFER(1:CT_E_SUMS_W)) C IF (CALTRIG_DATA.MIS_PT .NE. OVERFLOW_MIS_PT) THEN CALL BUILD_REAL_STRING(CALTRIG_DATA.MIS_PT, 2, & BUFFER(1:CT_E_SUMS_W)) ELSE BUFFER(1:CT_E_SUMS_W) = ' OVER' ENDIF CALL PUT_STRING(CT_E_SUMS_L3, CT_E_SUMS_C3, BUFFER(1:CT_E_SUMS_W)) C C Count of towers above Reference Sets. C CALL INTTOSTR(CALTRIG_DATA.EM_TOWER_RS_COUNT(RS_SET_MIN), & BUFFER(1:CT_TWR_CNT_W), 1) CALL PUT_STRING(CT_EM_TWR_CNT_L, CT_TWR_CNT_C1, & BUFFER(1:CT_TWR_CNT_W)) C CALL INTTOSTR(CALTRIG_DATA.EM_TOWER_RS_COUNT(RS_SET_MIN+1), & BUFFER(1:CT_TWR_CNT_W), 1) CALL PUT_STRING(CT_EM_TWR_CNT_L, CT_TWR_CNT_C2, & BUFFER(1:CT_TWR_CNT_W)) C CALL INTTOSTR(CALTRIG_DATA.EM_TOWER_RS_COUNT(RS_SET_MIN+2), & BUFFER(1:CT_TWR_CNT_W), 1) CALL PUT_STRING(CT_EM_TWR_CNT_L, CT_TWR_CNT_C3, & BUFFER(1:CT_TWR_CNT_W)) C CALL INTTOSTR(CALTRIG_DATA.EM_TOWER_RS_COUNT(RS_SET_MIN+3), & BUFFER(1:CT_TWR_CNT_W), 1) CALL PUT_STRING(CT_EM_TWR_CNT_L, CT_TWR_CNT_C4, & BUFFER(1:CT_TWR_CNT_W)) C CALL INTTOSTR(CALTRIG_DATA.TOT_TOWER_RS_COUNT(RS_SET_MIN), & BUFFER(1:CT_TWR_CNT_W), 1) CALL PUT_STRING(CT_TOT_TWR_CNT_L, CT_TWR_CNT_C1, & BUFFER(1:CT_TWR_CNT_W)) C CALL INTTOSTR(CALTRIG_DATA.TOT_TOWER_RS_COUNT(RS_SET_MIN+1), & BUFFER(1:CT_TWR_CNT_W), 1) CALL PUT_STRING(CT_TOT_TWR_CNT_L, CT_TWR_CNT_C2, & BUFFER(1:CT_TWR_CNT_W)) C CALL INTTOSTR(CALTRIG_DATA.TOT_TOWER_RS_COUNT(RS_SET_MIN+2), & BUFFER(1:CT_TWR_CNT_W), 1) CALL PUT_STRING(CT_TOT_TWR_CNT_L, CT_TWR_CNT_C3, & BUFFER(1:CT_TWR_CNT_W)) C CALL INTTOSTR(CALTRIG_DATA.TOT_TOWER_RS_COUNT(RS_SET_MIN+3), & BUFFER(1:CT_TWR_CNT_W), 1) CALL PUT_STRING(CT_TOT_TWR_CNT_L, CT_TWR_CNT_C4, & BUFFER(1:CT_TWR_CNT_W)) C C Large Tile Counts above refsets C IF ( LT_ANDOR_OK .EQV. .TRUE. ) THEN DO LT_REFSET = LT_REFSET_0, LT_REFSET_7 C IF ( ANDOR_STATE( LT_ANDOR_NUM (LT_REFSET, GE_3) ) & .EQV. .TRUE. ) THEN IF ( ( ANDOR_STATE( LT_ANDOR_NUM (LT_REFSET, GE_2) ) & .EQV. .TRUE. ) & .AND. ( ANDOR_STATE( LT_ANDOR_NUM (LT_REFSET, GE_1) ) & .EQV. .TRUE. ) ) THEN BUFFER = '>=3' ELSE BUFFER = '>*3' END IF C ELSE IF ( ANDOR_STATE( LT_ANDOR_NUM (LT_REFSET, GE_2) ) & .EQV. .TRUE. ) THEN IF ( ANDOR_STATE( LT_ANDOR_NUM (LT_REFSET, GE_1) ) & .EQV. .TRUE. ) THEN BUFFER = ':=2' ELSE BUFFER = ':*2' END IF C ELSE IF ( ANDOR_STATE( LT_ANDOR_NUM (LT_REFSET, GE_1) ) & .EQV. .TRUE. ) THEN BUFFER = ':=1' ELSE BUFFER = ':=0' END IF C CALL PUT_STRING( CT_LG_TILE_CNT_L, & CT_LT_CNT_C1 + LT_REFSET * CT_LT_CNT_CS, & BUFFER(1:3) ) C END DO C END IF C C threshold comparator states C DO THRESH_TYPE = GT_EM_ET_THRSH, GT_TOT_ET_THRSH BUFFER = ' ' DO THRESH_INDEX = 0, GT_MAX_E_THRSH-1 IF (CALTRIG_DATA.GLOB_THRSH_E_CLEARED(THRESH_INDEX, & THRESH_TYPE) .EQ. GT_T) THEN BUFFER(1+THRESH_INDEX*CT_GT_W:1+THRESH_INDEX*CT_GT_W) & = 'T' ELSEIF (CALTRIG_DATA.GLOB_THRSH_E_CLEARED(THRESH_INDEX, & THRESH_TYPE) .EQ. GT_F) THEN BUFFER(1+THRESH_INDEX*CT_GT_W:1+THRESH_INDEX*CT_GT_W) & = 'F' ENDIF END DO C CALL PUT_STRING(CT_GT_EM_ET_L + THRESH_TYPE-1, CT_GT_C1, & BUFFER(1:CT_GT_E_E)) END DO C THRESH_TYPE = GT_MIS_PT_THRSH BUFFER = ' ' DO THRESH_INDEX = 0, GT_MAX_E_THRSH-1 IF (CALTRIG_DATA.GLOB_THRSH_E_CLEARED(THRESH_INDEX, & THRESH_TYPE) .EQ. GT_T) THEN BUFFER(1+THRESH_INDEX*CT_GT_W:1+THRESH_INDEX*CT_GT_W) & = 'T' ELSEIF (CALTRIG_DATA.GLOB_THRSH_E_CLEARED(THRESH_INDEX, & THRESH_TYPE) .EQ. GT_F) THEN BUFFER(1+THRESH_INDEX*CT_GT_W:1+THRESH_INDEX*CT_GT_W) & = 'F' ENDIF END DO C CALL PUT_STRING(CT_GT_MIS_PT_L, CT_GT_C1, BUFFER(1:CT_GT_E_E)) C DO RS_NUM = GT_RS_MIN, GT_RS_MAX BUFFER = ' ' DO THRESH_INDEX = 0, GT_MAX_CNT_THRSH-1 C IF (CALTRIG_DATA.GLOB_THRSH_CNT_CLEARED(THRESH_INDEX, & RS_NUM, GT_EM_CNT_THRSH) .EQ. GT_T) THEN BUFFER(CT_GT_W*THRESH_INDEX+1:CT_GT_W*THRESH_INDEX+1) & = 'T' ELSEIF (CALTRIG_DATA.GLOB_THRSH_CNT_CLEARED(THRESH_INDEX, & RS_NUM, GT_EM_CNT_THRSH) .EQ. GT_F) THEN BUFFER(CT_GT_W*THRESH_INDEX+1:CT_GT_W*THRESH_INDEX+1) & = 'F' ENDIF C END DO CALL PUT_STRING( CT_RS_EM0_L + RS_NUM, CT_GT_C2, & BUFFER(1:CT_GT_CNT_E)) C END DO C DO RS_NUM = GT_RS_MIN, GT_RS_MAX BUFFER = ' ' DO THRESH_INDEX = 0, GT_MAX_CNT_THRSH-1 C IF (CALTRIG_DATA.GLOB_THRSH_CNT_CLEARED(THRESH_INDEX, & RS_NUM, GT_TOT_CNT_THRSH) .EQ. GT_T) THEN BUFFER(CT_GT_W*THRESH_INDEX+1:CT_GT_W*THRESH_INDEX+1) & = 'T' ELSEIF (CALTRIG_DATA.GLOB_THRSH_CNT_CLEARED(THRESH_INDEX, & RS_NUM, GT_TOT_CNT_THRSH) .EQ. GT_F) THEN BUFFER(CT_GT_W*THRESH_INDEX+1:CT_GT_W*THRESH_INDEX+1) & = 'F' ENDIF C END DO CALL PUT_STRING( CT_RS_TOT0_L + RS_NUM, CT_GT_C3, & BUFFER(1:CT_GT_CNT_E)) C END DO C C Jet lists C CALL INTTOSTR(CALTRIG_DATA.EM_JET_LIST_LENGTH, & BUFFER(1:CT_JET_COUNT_W), 1) CALL PUT_STRING(CT_EMJ_L, CT_JET_COUNT_C, & BUFFER(1:CT_JET_COUNT_W)) IF (CALTRIG_DATA.EM_JET_LIST_COMPLETE .EQV. .TRUE.) THEN CALL PUT_STRING(CT_EMJ_L, CT_JET_COMPLETE_C, 'Yes') ELSE CALL PUT_STRING(CT_EMJ_L, CT_JET_COMPLETE_C, 'No ') ENDIF C BUFFER = ' ' POSITION = 1 DO COUNT = 1, CALTRIG_DATA.EM_JET_LIST_LENGTH OLD_POSITION = POSITION BUFFER(POSITION:POSITION) = '(' POSITION = POSITION + 1 C IF (CALTRIG_DATA.EM_JET_LIST_ETA(COUNT) .LT. 0) THEN BUFFER(POSITION:POSITION) = '-' ELSE BUFFER(POSITION:POSITION) = '+' ENDIF POSITION = POSITION + 1 IF (IABS(CALTRIG_DATA.EM_JET_LIST_ETA(COUNT)) .GE. 10) THEN CALL INTTOSTR(IABS(CALTRIG_DATA.EM_JET_LIST_ETA(COUNT)), & BUFFER(POSITION:POSITION+1), 1) POSITION = POSITION + 2 ELSE CALL INTTOSTR(IABS(CALTRIG_DATA.EM_JET_LIST_ETA(COUNT)), & BUFFER(POSITION:POSITION), 1) POSITION = POSITION + 1 ENDIF C BUFFER(POSITION:POSITION) = ',' POSITION = POSITION + 1 IF (CALTRIG_DATA.EM_JET_LIST_PHI(COUNT) .GE. 10) THEN CALL INTTOSTR(CALTRIG_DATA.EM_JET_LIST_PHI(COUNT), & BUFFER(POSITION:POSITION+1), 1) POSITION = POSITION + 2 ELSE CALL INTTOSTR(CALTRIG_DATA.EM_JET_LIST_PHI(COUNT), & BUFFER(POSITION:POSITION), 1) POSITION = POSITION + 1 ENDIF C BUFFER(POSITION:POSITION+1) = ') ' POSITION = POSITION + 2 C IF ((POSITION .GT. 80) & .OR. ((COUNT .NE. CALTRIG_DATA.EM_JET_LIST_LENGTH) & .AND.(POSITION .GT. 77)) ) THEN BUFFER(OLD_POSITION:80) = '...' GOTO 500 ENDIF END DO C 500 CONTINUE CALL PUT_STRING(CT_EMJ_L+1, 1, BUFFER(1:80) ) C CALL INTTOSTR(CALTRIG_DATA.TOT_JET_LIST_LENGTH, & BUFFER(1:CT_JET_COUNT_W), 1) CALL PUT_STRING(CT_TOTJ_L, CT_JET_COUNT_C, & BUFFER(1:CT_JET_COUNT_W)) IF (CALTRIG_DATA.TOT_JET_LIST_COMPLETE .EQV. .TRUE.) THEN CALL PUT_STRING(CT_TOTJ_L, CT_JET_COMPLETE_C, 'Yes') ELSE CALL PUT_STRING(CT_TOTJ_L, CT_JET_COMPLETE_C, 'No ') ENDIF C BUFFER = ' ' POSITION = 1 DO COUNT = 1, CALTRIG_DATA.TOT_JET_LIST_LENGTH OLD_POSITION = POSITION BUFFER(POSITION:POSITION) = '(' POSITION = POSITION + 1 C IF (CALTRIG_DATA.TOT_JET_LIST_ETA(COUNT) .LT. 0) THEN BUFFER(POSITION:POSITION) = '-' ELSE BUFFER(POSITION:POSITION) = '+' ENDIF POSITION = POSITION + 1 IF (IABS(CALTRIG_DATA.TOT_JET_LIST_ETA(COUNT)) .GE. 10) THEN CALL INTTOSTR(IABS(CALTRIG_DATA.TOT_JET_LIST_ETA(COUNT)), & BUFFER(POSITION:POSITION+1), 1) POSITION = POSITION + 2 ELSE CALL INTTOSTR(IABS(CALTRIG_DATA.TOT_JET_LIST_ETA(COUNT)), & BUFFER(POSITION:POSITION), 1) POSITION = POSITION + 1 ENDIF C BUFFER(POSITION:POSITION) = ',' POSITION = POSITION + 1 IF (CALTRIG_DATA.TOT_JET_LIST_PHI(COUNT) .GE. 10) THEN CALL INTTOSTR(CALTRIG_DATA.TOT_JET_LIST_PHI(COUNT), & BUFFER(POSITION:POSITION+1), 1) POSITION = POSITION + 2 ELSE CALL INTTOSTR(CALTRIG_DATA.TOT_JET_LIST_PHI(COUNT), & BUFFER(POSITION:POSITION), 1) POSITION = POSITION + 1 ENDIF C BUFFER(POSITION:POSITION+1) = ') ' POSITION = POSITION + 2 C IF ((POSITION .GT. 80) & .OR. ((COUNT .NE. CALTRIG_DATA.TOT_JET_LIST_LENGTH) & .AND.(POSITION .GT. 77)) ) THEN BUFFER(OLD_POSITION:80) = '...' GOTO 600 ENDIF END DO C 600 CONTINUE CALL PUT_STRING(CT_TOTJ_L+1, 1, BUFFER(1:80) ) C CALL INTTOSTR(CALTRIG_DATA.LG_TILE_LIST_LENGTH, & BUFFER(1:CT_JET_COUNT_W), 1) CALL PUT_STRING(CT_LGTL_L, CT_JET_COUNT_C, & BUFFER(1:CT_JET_COUNT_W)) IF (CALTRIG_DATA.LG_TILE_LIST_COMPLETE .EQV. .TRUE.) THEN CALL PUT_STRING(CT_LGTL_L, CT_JET_COMPLETE_C, 'Yes') ELSE CALL PUT_STRING(CT_LGTL_L, CT_JET_COMPLETE_C, 'No ') ENDIF C BUFFER = ' ' POSITION = 1 DO COUNT = 1, CALTRIG_DATA.LG_TILE_LIST_LENGTH OLD_POSITION = POSITION BUFFER(POSITION:POSITION) = '(' POSITION = POSITION + 1 C IF (CALTRIG_DATA.LG_TILE_LIST_ETA(COUNT) .LT. 0) THEN BUFFER(POSITION:POSITION) = '-' ELSE BUFFER(POSITION:POSITION) = '+' ENDIF POSITION = POSITION + 1 IF (IABS(CALTRIG_DATA.LG_TILE_LIST_ETA(COUNT)) .GE. 10) THEN CALL INTTOSTR(IABS(CALTRIG_DATA.LG_TILE_LIST_ETA(COUNT)), & BUFFER(POSITION:POSITION+1), 1) POSITION = POSITION + 2 ELSE CALL INTTOSTR(IABS(CALTRIG_DATA.LG_TILE_LIST_ETA(COUNT)), & BUFFER(POSITION:POSITION), 1) POSITION = POSITION + 1 ENDIF C BUFFER(POSITION:POSITION) = ',' POSITION = POSITION + 1 IF (CALTRIG_DATA.LG_TILE_LIST_PHI(COUNT) .GE. 10) THEN CALL INTTOSTR(CALTRIG_DATA.LG_TILE_LIST_PHI(COUNT), & BUFFER(POSITION:POSITION+1), 1) POSITION = POSITION + 2 ELSE CALL INTTOSTR(CALTRIG_DATA.LG_TILE_LIST_PHI(COUNT), & BUFFER(POSITION:POSITION), 1) POSITION = POSITION + 1 ENDIF C BUFFER(POSITION:POSITION+1) = ') ' POSITION = POSITION + 2 C IF ((POSITION .GT. 80) & .OR. ((COUNT .NE. CALTRIG_DATA.LG_TILE_LIST_LENGTH) & .AND.(POSITION .GT. 77)) ) THEN BUFFER(OLD_POSITION:80) = '...' GOTO 700 ENDIF END DO C 700 CONTINUE CALL PUT_STRING(CT_LGTL_L+1, 1, BUFFER(1:80) ) C CALL MOVE_CURSOR_SAFE() CALL FLUSH_SCREEN() C---------------------------------------------------------------------- 999 RETURN END