|
The code is as
follows:
LABEL ONE
SET RULES OFF CLEAR VAR VSOC SET VAR VSOC INT CLEAR VAR NOPER SET RULES OFF SET VAR VNAME1 TEXT SET VAR VREPNAME TEXT SET VAR NOPER TEXT REMOVE VIEW TEMP RENAME TABLE GINPUT TO TEMP1 NOCHECK CREATE VIEW GINPUT AS SELECT
+
T1.NAMEX,SOC,SEM,COURSE,GRADENO,XYEAR,DATX,GRADE,PER,POINTS,COUNAME + FROM PERSONAL T1,TEMP1 T2 WHERE T1.SOC=T2.SOC ORDER BY SOC SET ERR VAR VDERR;SET VAR VONE INT TO 0 DECLARE CUR1 SCROLL CURSOR FOR SELECT PER FROM DESINPUT WHERE + (SEM=.VSEM AND COURSE=.VCOUR AND XYEAR=.VYEAR) GROUP BY PER OPEN CUR1 RESET FETCH CUR1 INTO VPER IND VI1 SET VAR VERR INT =.VDERR WHILE VERR=0 THEN SET VAR VONE INT TO (.VONE+.VPER) FETCH CUR1 INTO VPER IND VI1 SET VAR VERR INT =.VDERR ENDWHILE DROP CURSOR CUR1 CLEAR VAR VERR,VDERR,VPER IF VONE NE 100 THEN SET VAR NOPER TEXT TO 'YES';GOTO LEXUS ELSE CLEAR VAR NOPER;GOTO LEXUS ENDIF LABEL LEXUS DECLARE CUR1 SCROLL CURSOR FOR SELECT NAMEX FROM GINPUT + WHERE (SEM=.VSEM AND COURSE=.VCOUR AND XYEAR=.VYEAR) GROUP BY NAMEX OPEN CUR1 RESET
FETCH CUR1 INTO STUDNAME IND VI1 WHILE SQLCODE <> 100 THEN CLS FROM 6 TO 25 *(INFORMATION FOR GRADE INPUT TO COMPUTE AVERAGES) --WRITE 'PLEASE WAIT' AT 15 15 YELLOW ON BLACK CLEAR VAR TOTAL LOWX HIGHX CTN AVG1 AVERAGE1 LETTER SET VAR LETTER TEXT;SET VAR LOWX INT;SET VAR HIGHX INT SET VAR TOTAL INT;SET VAR LOW INT;SET VAR CT INT;SET VAR NOPER TEXT SET VAR V1 INT TO AVEGTYPE,V2 TEXT TO AVEGNAME IN DESINPUT WHERE + (SEM=.VSEM AND XYEAR=.VYEAR AND COURSE=.VCOUR) IF V1=1 THEN RUN AVERAGEA IN GRADE.APX GOTO LEXUS1 --GOTO AVERAGEA ENDIF IF V1=2 THEN GOTO LOWESTX ENDIF IF V1=3 THEN GOTO PERCENTX ELSE RETURN ENDIF LABEL LOWESTX *(TOTAL GRADES BASED ON THE SS#, COURSE#, SEM AND XYEAR) SET VAR VSOC TO SOC IN GINPUT WHERE NAMEX=.STUDNAME SET VAR GNAME TEXT TO COUNAME IN GINPUT WHERE NAMEX=.STUDNAME AND + SEM=.VSEM AND XYEAR=.VYEAR AND COURSE=.VCOUR COMPUTE TOTAL AS SUM GRADE FROM GINPUT WHERE (SOC=.VSOC AND + COURSE= .VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR) *(FIND THE LOWEST GRADE AND COUNT ALL ENTERED FOR EACH STUDENT) COMPUTE LOWX AS MIN GRADE FROM GINPUT WHERE (SOC=.VSOC AND + COURSE=.VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR) COMPUTE CT AS COUNT DES FROM DESINPUT WHERE (COURSE=.VCOUR AND + SEM=.VSEM AND XYEAR=.VYEAR) COMPUTE HIGHX AS MAX GRADE FROM GINPUT WHERE (SOC=.VSOC AND + COURSE=.VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR) SET VAR CTN INT;SET VAR CTN TO 0;SET VAR CTN TO (.CT-1) SET VAR AVG1 REAL SET VAR AVERAGE1 REAL;SET VAR AVG1 TO ((.TOTAL-.LOWX)/.CTN) SET VAR AVERAGE1 REAL TO 0;SET VAR AVERAGE1 TO (.AVG1) *(CONDITION FOR LETTER GRADE ON DISPLAY) SET VAR LETTER TEXT IF AVERAGE1 GE 89.91111 THEN SET VAR LETTER TO 'A' ENDIF IF AVERAGE1 BETWEEN 79.91111 AND 89.90000 THEN SET VAR LETTER TO 'B' ENDIF IF AVERAGE1 BETWEEN 69.91111 AND 79.90000 THEN SET VAR LETTER TO 'C' ENDIF IF AVERAGE1 BETWEEN 59.91111 AND 69.90000 THEN SET VAR LETTER TO 'D' ENDIF IF AVERAGE1 LE 59.900000 THEN SET VAR LETTER TO 'F' ENDIF RECALC;GOTO LEXUS1 LABEL AVERAGEA SET VAR AVERAGE1 REAL TO 0 SET VAR AVERAGE1 TO (.TOTAL) SET VAR GNAME TEXT TO COUNAME IN GINPUT WHERE NAMEX=.STUDNAME AND + SEM=.VSEM AND XYEAR=.VYEAR AND COURSE=.VCOUR SET VAR VSOC TO SOC IN GINPUT WHERE NAMEX=.STUDNAME COMPUTE TOTAL11 AS SUM GRADE FROM GINPUT WHERE + (SOC=.VSOC AND COURSE= .VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR) COMPUTE TOTAL AS AVG GRADE FROM GINPUT WHERE + (SOC=.VSOC AND COURSE= .VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR + AND GRADE IS NOT NULL) *(FIND THE LOWEST GRADE AND COUNT ALL ENTERED FOR EACH STUDENT) COMPUTE LOWX AS MIN GRADE FROM GINPUT WHERE + (SOC=.VSOC AND COURSE=.VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR) COMPUTE CT AS COUNT DES FROM DESINPUT WHERE (COURSE=.VCOUR + AND SEM=.VSEM AND XYEAR=.VYEAR) COMPUTE HIGHX AS MAX GRADE FROM GINPUT WHERE (SOC=.VSOC AND + COURSE=.VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR) SET VAR AVG1 TO (.TOTAL) *(CONDITION FOR LETTER GRADE ON DISPLAY) SET VAR LETTER TEXT IF AVERAGE1 GE 89.91111 THEN SET VAR LETTER TO 'A' ENDIF IF AVERAGE1 BETWEEN 79.91111 AND 89.90000 THEN SET VAR LETTER TO 'B' ENDIF IF AVERAGE1 BETWEEN 69.91111 AND 79.90000 THEN SET VAR LETTER TO 'C' ENDIF IF AVERAGE1 BETWEEN 59.91111 AND 69.90000 THEN SET VAR LETTER TO 'D' ENDIF IF AVERAGE1 LE 59.900000 THEN SET VAR LETTER TO 'F' ENDIF RECALC;GOTO LEXUS1
LABEL PERCENTX IF NOPER IS NOT NULL THEN SET VAR V2 TEXT TO 'AVERAGE GRADE. THE PERCENTAGES DO NOT EQUAL 100%' RUN AVERAGEA IN GRADE.APX RETURN
--GOTO AVERAGEA ELSE ENDIF SET VAR AVERAGE1 REAL TO 0;SET ERR VAR VDERR
SET VAR AVERAGE1 REAL TO 0 SET VAR VSOC TO SOC IN GINPUT WHERE NAMEX=.STUDNAME DECLARE CUR2 SCROLL CURSOR FOR SELECT PER FROM GINPUT WHERE + SOC=.VSOC AND SEM=.VSEM AND COURSE=.VCOUR AND XYEAR=.VYEAR + GROUP BY PER OPEN CUR2 RESET FETCH NEXT FROM CUR2 INTO VPER IND VI1 SET VAR VERR INT =.VDERR WHILE VERR=0 THEN SET VAR VONE REAL COMPUTE VONE AS AVG POINTS FROM GINPUT WHERE (PER=.VPER AND + SOC=.VSOC AND SEM=.VSEM AND COURSE=.VCOUR AND XYEAR=.VYEAR) SET VAR AVERAGE1 REAL TO (.AVERAGE1 + .VONE) FETCH NEXT FROM CUR2 INTO VPER IND VI1 SET VAR VERR INT =(.VDERR) ENDWHILE DROP CURSOR CUR2 CLEAR VAR VONE,VPER,VERR,VDERR SET VAR VSOC TO SOC IN GINPUT WHERE NAMEX=.STUDNAME SET VAR GNAME TEXT TO COUNAME IN GINPUT WHERE NAMEX=.STUDNAME AND + SEM=.VSEM AND XYEAR=.VYEAR AND COURSE=.VCOUR COMPUTE LOWX AS MIN GRADE FROM GINPUT WHERE (SOC=.VSOC + AND COURSE=.VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR) COMPUTE HIGHX AS MAX GRADE FROM GINPUT WHERE + (SOC=.VSOC AND COURSE=.VCOUR AND SEM=.VSEM AND XYEAR=.VYEAR) SET VAR AVG1 REAL TO (.AVERAGE1) *(CONDITION FOR LETTER GRADE ON DISPLAY) SET VAR LETTER TEXT IF AVERAGE1 GE 89.91111 THEN SET VAR LETTER TO 'A' ENDIF IF AVERAGE1 BETWEEN 79.91111 AND 89.90000 THEN SET VAR LETTER TO 'B' ENDIF IF AVERAGE1 BETWEEN 69.91111 AND 79.90000 THEN SET VAR LETTER TO 'C' ENDIF IF AVERAGE1 BETWEEN 59.91111 AND 69.90000 THEN SET VAR LETTER TO 'D' ENDIF IF AVERAGE1 LE 59.900000 THEN SET VAR LETTER TO 'F' ENDIF RECALC
RETURN Benjamin Strickland
|
- Witango-Talk: Problem with Stored Procedure Benjamin Strickland
- RE: Witango-Talk: Problem with Stored Procedure Ben Johansen
- Benjamin Strickland
