* * QCORCODE The QC for one form at a time in the CData * screen set. * Description: * Uses algorithm based on the QC FOUND IN THE CLIOCOM SYSTEM * * Parameters: Nothing is passed all flags are set directly in the * Flag database * PROCEDURE QCORCODE *add a previous record field for use in qc 06 laPreRec lcCurField = FIELD(LISTR.VIKNO) lcWhatF = "FRECORDS." + ALLTRIM(lcCurField) lcWhat = "RECORDS." + ALLTRIM(lcCurField) DO CASE *Quality Control Command NO 01 *Function * This QC command checks the current element against the stated * max and min CASE "01" $ CHECKER.QC ttt1 = ALLTRIM(CHECKER.RL1) ttt2 = ALLTRIM(CHECKER.RL2) temp1 = ((listr.convert * VAL(&lcWhat)) &ttt1 VAL(CHECKER.VAL1A)) temp2 = ((listr.convert * VAL(&lcWhat)) &ttt2 VAL(CHECKER.VAL2A)) IF ((temp1 .AND. temp2) .AND. !ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat)) IF glDBug WAIT " The value is in range " + &lcWhat WINDOW ENDIF SELECT FRECORDS REPLACE &lcWhatF WITH "AA" SELECT RECORDS ELSE IF !EMPTY(&lcWhat) IF NOT ISALPHA(ALLTRIM(&lcWhat)) SELECT FRECORDS REPLACE &lcWhatF WITH "CC" SELECT RECORDS ENDIF ENDIF ENDIF *3333333333333333333333333333333333333333333333333333333333 *Quality Control Command NO 03 *Function RELATED ELEMENT GLOBAL LIMINTS * This QC command checks LIMIT on the current element * when the current element meets the limit the related * element must also meet the stated limit CASE "03" $ CHECKER.QC ttt1 = ALLTRIM(CHECKER.RL1) ttt2 = CHECKER.rl2 tlcElemno = CHECKER.elm2 temp1 = ((listr.convert * VAL(&lcWhat)) &ttt1 VAL(CHECKER.VAL1A)) IF((temp1 ) .AND. !ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat)) SELECT LISR1 GO TOP LOCATE FOR lisr1.ELENO = tlcElemno IF FOUND() lcCurField = FIELD(LISR1.VIKNO, "RECORDS") tlcWhatF = "FRECORDS." + ALLTRIM(lcCurField) tlcWhat = "RECORDS." + ALLTRIM(lcCurField) temp1 = ((lisr1.convert * VAL(&tlcWhat)) &ttt2 VAL(CHECKER.VAL2A)) IF !(temp1 ) IF !ISALPHA(ALLTRIM(&tlcWhat)) .AND. !EMPTY(&tlcWhat) .AND. ; !ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat) SELECT FRECORDS REPLACE &lcWhatF WITH "CC" REPLACE &tlcWhatF WITH "CC" SELECT RECORDS ENDIF ENDIF ELSE ENDIF ELSE ENDIF SELECT LISTR SELECT RECORDS *3333333333333333333333333333333333333333333333333333333333 *4444444444444444444444444444444444444444444444444444444444 *Quality Control Command NO 04 *Function RELATED ELEMENT ON THE SAME LINE * This QC command checks NUMERIC elements based on the * checker data base CASE "04" $ CHECKER.QC ttt1 = ALLTRIM(CHECKER.RL1) ttt2 = CHECKER.rl2 tlcElemno = CHECKER.elm2 temp1 = ((listr.convert * VAL(&lcWhat)) ) *VAL(CHECKER.VAL1A)) *IF((temp1 ) .AND. !ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat)) IF(!ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat)) SELECT LISR1 GO TOP LOCATE FOR lisr1.ELENO = tlcElemno IF FOUND() lcCurField = FIELD(LISR1.VIKNO, "RECORDS") tlcWhatF = "FRECORDS." + ALLTRIM(lcCurField) tlcWhat = "RECORDS." + ALLTRIM(lcCurField) temp2 = (temp1 &ttt1 (lisr1.convert * VAL(&tlcWhat))) IF ((temp2 ) .AND. !ISALPHA(ALLTRIM(&tlcWhat)) .AND. !EMPTY(&tlcWhat)) ELSE SELECT FRECORDS REPLACE &lcWhatF WITH "CC" REPLACE &tlcWhatF WITH "CC" SELECT RECORDS ENDIF ELSE ENDIF ELSE ENDIF SELECT LISTR SELECT RECORDS *4444444444444444444444444444444444444444444444444444444444 *6666666666666666666666666666666666666666666666666666666666 *Quality Control Command NO 06 *Function GLOBAL RATE OF CHANGE * This QC command checks to see if the rate of change * from the current element to the previous element is <= to * val2a of the checker database CASE "06" $ CHECKER.QC PRIVATE tlnVal1,tlnVal2,tlnVal3 IF RECNO() = 1 SCATTER TO laPreRec BLANK ELSE SKIP -1 IF gcShipId = RECORDS.SHIPCC SCATTER TO laPreRec ELSE SCATTER TO laPreRec BLANK ENDIF SKIP 1 ENDIF IF !EMPTY(laPreRec(LISTR.VIKNO)) .AND. !EMPTY(&lcWhat) IF (!ISALPHA(ALLTRIM(laPreRec(LISTR.VIKNO))) .AND. !ISALPHA(&lcWhat)) tlnVal1 = VAL(laPreRec(LISTR.VIKNO)) * listr.convert tlnVal2 = listr.convert * VAL(&lcWhat) IF laPreRec(3) = RECORDS.SHIPCC IF ABS(tlnVal1 - tlnVal2) >= VAL(CHECKER.Val2a) REPLACE &lcWhatF WITH "CC" ENDIF ENDIF ENDIF ENDIF *6666666666666666666666666666666666666666666666666666666666 *6060606060606060606060606060606060606060606060606060606060 *Quality Control Command NO 60 *Function * This QC command checks the last two digits of the current * numeric element to see if the digits are >= to val1a or * <= to val2a CASE "60" $ CHECKER.QC ttt1 = ALLTRIM(CHECKER.RL1) ttt2 = ALLTRIM(CHECKER.RL2) temp1 = (VAL(RIGHT(ALLTRIM(&lcWhat),2)) &ttt1 VAL(CHECKER.VAL1A)) temp2 = (VAL(RIGHT(ALLTRIM(&lcWhat),2)) &ttt2 VAL(CHECKER.VAL2A)) IF ((temp1 .AND. temp2) .AND. !ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat)) *A valid value ELSE IF !EMPTY(&lcWhat) IF NOT ISALPHA(ALLTRIM(&lcWhat)) SELECT FRECORDS REPLACE &lcWhatF WITH "CC" SELECT RECORDS ENDIF ENDIF ENDIF *6060606060606060606060606060606060606060606060606060606060 *6262626262626262626262626262626262626262626262626262626262 *Quality Control Command NO 62 *Function * This QC command checks the current alpha element against * the list of valid values in the checker data base. CASE "62" $ CHECKER.QC IF ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat) IF (ALLTRIM(&lcWhat) $ CHECKER.POSVALS) SELECT FRECORDS REPLACE &lcWhatF WITH "AA" SELECT RECORDS ELSE SELECT FRECORDS *WAIT "tHIS VALUE IS TO BE FLAGED " + ALLTRIM(&lcWhat) window REPLACE &lcWhatF WITH "CC" SELECT RECORDS ENDIF ENDIF *6262626262626262626262626262626262626262626262626262626262 *6363636363636363636363636363636363636363636363636363636363 *Quality Control Command NO 63 *Function RELATED ELEMENT ON THE SAME LINE Barrometer * corrected = HEADERS.barecorr + as read CASE "63" $ CHECKER.QC IF (EMPTY(HEADERS.bartype) .OR. HEADERS.bartype $ "aA") .AND. !EMPTY(HEADERS.barecorr) ttt1 = ALLTRIM(CHECKER.RL1) ttt2 = CHECKER.rl2 tlcElemno = CHECKER.elm2 temp1 = ((listr.convert * VAL(&lcWhat)) ) *VAL(CHECKER.VAL1A)) *IF((temp1 ) .AND. !ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat)) IF(!ISALPHA(ALLTRIM(&lcWhat)) .AND. !EMPTY(&lcWhat)) SELECT LISR1 GO TOP LOCATE FOR lisr1.ELENO = tlcElemno IF FOUND() lcCurField = FIELD(LISR1.VIKNO, "RECORDS") tlcWhatF = "FRECORDS." + ALLTRIM(lcCurField) tlcWhat = "RECORDS." + ALLTRIM(lcCurField) temp2 = (temp1 &ttt1 ((lisr1.convert * VAL(&tlcWhat)) + val(HEADERS.barecorr))) IF ((temp2 ) .AND. !ISALPHA(ALLTRIM(&tlcWhat)) .AND. !EMPTY(&tlcWhat)) ELSE SELECT FRECORDS REPLACE &lcWhatF WITH "CC" REPLACE &tlcWhatF WITH "CC" SELECT RECORDS ENDIF ELSE ENDIF ELSE ENDIF ENDIF SELECT LISTR SELECT RECORDS *6363636363636363636363636363636363636363636363636363636363 *CASE "02" $ CHECKER.QC *CASE "05" $ CHECKER.QC *CASE "07" $ CHECKER.QC *CASE "08" $ CHECKER.QC *CASE "51" $ CHECKER.QC *CASE "52" $ CHECKER.QC *CASE "53" $ CHECKER.QC *OTHERWISE *WAIT "This QC Command is not available" + CHECKER.QC WINDOW NOWAIT ENDCASE RETURN