*HPCOEF SUBROUTINE HPCOEF (HLP, K, HHP) C C LATEST REVISION - 03/15/90 (JRD) C C THIS SUBROUTINE COMPUTE THE HI-PASS FILTER CORRESPONDING C TO THE INPUT K TERM LOW PASS FILTER COEFFICIENTS. C C WRITTEN BY - JANET R. DONALDSON C STATISTICAL ENGINEERING DIVISION C NATIONAL BUREAU OF STANDARDS, BOULDER, COLORADO C C CREATION DATE - NOVEMBER 26, 1980 C C C VARIABLE DECLARATIONS C C SCALAR ARGUMENTS INTEGER + K C C ARRAY ARGUMENTS REAL + HHP(*),HLP(*) C C SCALARS IN COMMON INTEGER + IERR C C LOCAL SCALARS INTEGER + IPRT LOGICAL + ERR01,ERR02,ERR03,HEAD C C LOCAL ARRAYS CHARACTER + LHLP(8)*1,LK(8)*1,NMSUB(6)*1 C C EXTERNAL SUBROUTINES EXTERNAL EISGE,ERIODD,ERSLF,HPFLT,IPRINT C C COMMON BLOCKS COMMON /ERRCHK/IERR C C VARIABLE DEFINITIONS (ALPHABETICALLY) C C LOGICAL ERR01, ERR02, ERR03 C VALUE(S) INDICATING WHETHER AN ERROR WAS DETECTED (TRUE) OR NOT C (FALSE). C LOGICAL HEAD C A FLAG INDICATING WHETHER THE HEADING SHOULD BE PRINTED C (TRUE) OR NOT (FALSE). IF A HEADING IS PRINTED, THE VALUE C OF HEAD WILL BE CHANGED TO FALSE. C REAL HHP(K) C THE ARRAY IN WHICH THE HIGH PASS FILTER COEFFICIENTS C WILL BE RETURNED. C REAL HLP(K) C THE ARRAY IN WHICH THE INPUT LOW PASS FILTER COEFFICIENTS C ARE STORED. C INTEGER IERR C THE INTEGER VALUE RETURNED BY THIS ROUTINE DESIGNATING C WHETHER ANY ERRORS WERE DETECTED IN THE PARAMETER LIST. C IF IERR .EQ. 0, NO ERRORS WERE DETECTED. C IF IERR .EQ. 1, ERRORS HAVE BEEN DETECTED. C INTEGER IPRT C THE UNIT NUMBER USED FOR OUTPUT. C INTEGER K C THE NUMBER OF FILTER TERMS TO BE COMPUTED. C CHARACTER*1 LHLP(8), LK(8) C THE ARRAYS CONTAINING THE NAMES OF THE VARIABLES HLP AND K. C CHARACTER*1 NMSUB(6) C THE ARRAY CONTAINING THE NAME OF THIS SUBROUTINE. C C SET UP NAME ARRAYS C DATA + NMSUB(1), NMSUB(2), NMSUB(3), NMSUB(4), NMSUB(5), NMSUB(6) + / 'H', 'P', 'C', 'O', 'E', 'F'/ DATA + LK(1), LK(2), LK(3), LK(4), LK(5), LK(6), LK(7), LK(8) + / 'K', ' ', ' ', ' ', ' ', ' ', ' ', ' '/ DATA + LHLP(1), LHLP(2), LHLP(3), LHLP(4), LHLP(5), LHLP(6), LHLP(7), + LHLP(8) + / 'H', 'L', 'P', ' ', ' ', ' ', ' ', ' '/ C C SET UP FOR ERROR CHECKING C IERR = 0 HEAD = .TRUE. C C CALL ERROR CHECKING ROUTINES C CALL EISGE(NMSUB, LK, K, 1, 1, HEAD, ERR01, LK) C CALL ERIODD(NMSUB, LK, K, 1, HEAD, ERR02) C IF (ERR01 .OR. ERR02) GO TO 10 C CALL ERSLF(NMSUB, LHLP, K, HLP, HEAD, ERR03) C IF (ERR03) GO TO 10 GO TO 20 C 10 CONTINUE IERR = 1 CALL IPRINT (IPRT) WRITE (IPRT, 1000) RETURN C 20 CONTINUE C CALL HPFLT (HLP, K, HHP) C RETURN C C FORMAT STATEMENTS C 1000 FORMAT (/42H THE CORRECT FORM OF THE CALL STATEMENT IS// + 32H CALL HPCOEF (HLP, K, HHP)) END