000010IDENTIFICATIONDIVISION. 000020PROGRAM-ID. TABLE-PROG. 000030AUTHOR. TIMOTHY R P BROWN. 000035 000037***************************************************** 000040* Program to update a football league table * 000045* and output a new updated table * 000046* Based on English Premiership season 1999-2000 * 000047***************************************************** 000048 000050ENVIRONMENTDIVISION. 000060INPUT-OUTPUTSECTION. 000070FILE-CONTROL. 000080SELECT TEAM-REC-IN ASSIGNTO"INPUT.REC" 000090ORGANIZATIONISSEQUENTIAL. 000100SELECT WORK-FILE ASSIGNTO SORTWK01. 000105* for MicroFocus compiler 000107* replace SORTWK01 with 'WORKFILE.DAT' 000110SELECT SORT-OUT ASSIGNTO"SORTED.REC" 000120ORGANIZATIONISSEQUENTIAL. 000130SELECT PRINT-FILE ASSIGNTO PRINTER. 000140 000150 000160DATADIVISION. 000170FILESECTION. 000180FD TEAM-REC-IN. 00019001 TEAM-REC. 00020003 TEAM-CODE PIC XXX. 00021003 TEAM-NAME PIC X(20). 00022003 PLAYED PIC99. 00023003 GOALS-FOR PIC99. 00024003 GOALS-AGST PIC99. 00025003 G-WON PIC99. 00026003 G-LOST PIC99. 00027003 G-DRAWN PIC99. 00028003 GOAL-DIFF PIC S99 SIGNLEADINGSEPARATE. 00029003 POINTS PIC99. 000300 000310SD WORK-FILE. 00032001 WORK-REC. 00033003 TEAM-CODE-KEY PIC XXX. 00034003PIC X(22). 00035003 GF-KEY PIC99. 00036003PIC X(8). 00037003 GD-KEY PIC S99 SIGNLEADINGSEPARATE. 00038003 POINTS-KEY PIC99. 000390 000400 000410FD PRINT-FILE. 00042001 TEXT-OUT PIC X(60). 000430 000440FD SORT-OUT. 00045001 TEAM-REC-OUT. 00046003 STEAM-CODE PIC XXX. 00047003 STEAM-NAME PIC X(20). 00048003 SPLAYED PIC99. 00049003 SGOALS-FOR PIC99. 00050003 SGOALS-AGST PIC99. 00051003 SG-WON PIC99. 00052003 SG-LOST PIC99. 00053003 SG-DRAWN PIC99. 00054003 SGOAL-DIFF PIC S999. 00055003 SPOINTS PIC99. 000560 000570 000580 000590 000600WORKING-STORAGESECTION. 000610 00062001 M PIC99. 00063001 REAL-GOAL-DIFF PIC S999. 000640 00065001 W-DATE. 00066003 W-YEAR PIC99. 00067003 W-MON PIC99. 00068003 W-DAY PIC99. 000690 000700 00071001 SCORE. 00072003 W-H-SCR PIC9. 00073003PIC X VALUE"-". 00074003 W-A-SCR PIC9. 000750 00076001 P-TITLE. 00077003PIC X(5) VALUESPACES. 00078003 TAB-TITLE PIC X(34) 000790VALUE"The English FA Premier League". 000800 00081003 P-DATE. 00082005 P-DAY PIC XX. 00083005PIC X VALUE"/". 00084005 P-MON PIC XX. 00085005PIC X VALUE"/". 00086005 P-YEAR PIC XX. 000870 00088001 P-UNDERLINE PIC X(45) VALUEALL"-". 00089001 P-GAP PIC X VALUESPACE. 000900 00091001 P-HEADER. 00092003PIC X(6) VALUESPACES. 00093003 TAB-TEAM PIC X(4) VALUE"TEAM". 00094003PIC X(11) VALUESPACES. 00095003 PLY PIC X(5) VALUE"Playd". 00096003PIC X VALUESPACE. 00097003 WO PIC XXX VALUE"Won". 00098003PIC X VALUESPACE. 00099003 DR PIC XXXX VALUE"Drwn". 00100003PIC X VALUESPACE. 00101003 LO PIC XXXX VALUE"Lost". 00102003PIC X VALUESPACE. 00103003 GF PIC XXX VALUE"For". 00104003PIC X VALUESPACE. 00105003 GA PIC X(5) VALUE"Agnst". 00106003PIC X VALUESPACE. 00107003 GD PIC XX VALUE"GD". 00108003PIC X VALUESPACE. 00109003 PTS PIC XXX VALUE"PTS". 001100 00111001 W-TEXT-OUT. 00112003 P-TAB-POS PIC99. 00113003PIC X VALUESPACE. 00114003 P-TEAM PIC X(20). 00115003 P-PLAYED PIC99. 00116003PIC XXX VALUESPACES. 00117003 P-G-WON PIC Z9. 00118003PIC XX VALUESPACES. 00119003 P-G-DRAWN PIC Z9. 00120003PIC XXX VALUESPACES. 00121003 P-G-LOST PIC Z9. 00122003PIC XXX VALUESPACES. 00123003 P-GOALS-FOR PIC99. 00124003PIC XX VALUESPACES. 00125003 P-GOALS-AGST PIC99. 00126003PIC XX VALUESPACES. 00127003 P-GOAL-DIFF PIC ZZ9. 00128003PIC XX VALUESPACES. 00129003 P-POINTS PIC Z9. 001300 001310 00132001 SCORE-TAB. 00133003 TAB-SCORE PIC9OCCURS2. 00134001 T-POINTS-TAB. 00135003 T-POINTS PIC99OCCURS20. 00136001 POINTS-TAB. 00137003 TAB-POINTS PIC9OCCURS2. 00138001 T-G-FOR-TAB. 00139003 T-G-FOR PIC99OCCURS20. 00140001 T-G-AGST-TAB. 00141003 T-G-AGST PIC99OCCURS20. 00142001 T-G-DIFF-TAB. 00143003 T-G-DIFF PIC99OCCURS20. 00144001 TAB-TEAM-NAME. 00145003 TEAM PIC XXX OCCURS2. 001460 001470 00148001 V-TEAM-FLAG PIC X. 00149088 V-TEAM VALUE"Y". 00150001 V-SCORE-FLAG PIC X. 00151088 V-SCORE VALUE"Y". 00152001 SORT-ONLY-FLAG PIC X. 00153088 SORT-ONLY VALUE"Y". 001540 001550 00156001 ENDING-KEY PIC X VALUESPACE. 00157001 SWITCH PIC9. 00158001 EOF-FLAG PIC X VALUE"N". 00159001 COUNTER PIC99. 00160001 W-GOAL-DIFF PIC99. 00161001 LAST-SCORE PIC X. 00162001 N PIC99. 001630 001640***************************************************** 001650 001660PROCEDUREDIVISION. 001670 001680 MAIN-PARAGRAPH. 001690 001700PERFORM DISPLAY-INSTRUCTIONS 001710PERFORM INPUT-DATA 001720PERFORM SORT-TABLE 001730PERFORM PRINT-TABLE 001740DISPLAY" Type Q or X to exit program." 001750ACCEPT ENDING-KEY 001760STOPRUN. 001770******************************************************************* 001780 DISPLAY-INSTRUCTIONS. 001790DISPLAY" Instructions" 001800DISPLAY" " 001810DISPLAY" Following prompts, enter the first " 001820DISPLAY"3 letters of the team in lower case. " 001830DISPLAY" Then enter the score (home team score first)." 001840DISPLAY" To perform SORT ONLY function, type 'xxx' " 001850DISPLAY"at both team prompts. ". 001860******************************************************************* 001870 INPUT-DATA. 001880MOVE"n"TO LAST-SCORE 001890MOVE"N"TO SORT-ONLY-FLAG 001900PERFORMUNTIL LAST-SCORE = "y"OR"Y" 001910MOVE"N"TO V-SCORE-FLAG 001920MOVE"N"TO V-TEAM-FLAG 001930PERFORMUNTIL V-TEAM 001940DISPLAY"INPUT HOME TEAM >" 001950ACCEPT TEAM (1) 001960DISPLAY"INPUT AWAY TEAM >" 001970ACCEPT TEAM (2) 001980PERFORM VAL-TEAM 001990END-PERFORM 002000IF TEAM (1) = "XXX"OR"xxx"THEN 002010MOVE"Y"TO LAST-SCORE 002020PERFORM SORT-TABLE 002030ELSE 002040PERFORMUNTIL V-SCORE or SORT-ONLY 002050DISPLAY"INPUT RESULT AS 'X-Y'" 002060ACCEPT SCORE 002070MOVE W-H-SCR TO TAB-SCORE (1) 002080MOVE W-A-SCR TO TAB-SCORE (2) 002090PERFORM VAL-SCORE 002100END-PERFORM 002110DISPLAY"LAST RESULT? Y/N" 002120ACCEPT LAST-SCORE 002130PERFORM CALC-POINTS 002140PERFORM UPDATE-RECORD 002150END-IF 002160END-PERFORM. 002170******************************************************************* 002180 VAL-TEAM. 002190PERFORMVARYING COUNTER FROM1BY1 002200UNTIL COUNTER > 2 002210 002220EVALUATETRUE 002230WHEN TEAM (COUNTER) = "ars"or"ast"or"bra"or 002240"che"or"cov"or"der"or 002250"eve"or"lee"or"lei"or 002260"liv"or"man"or"mid"or 002270"new"or"she"or"sou"or 002280"sun"or"tot"or"wat"or 002290"wes"or"wim" 002300MOVE"Y"TO V-TEAM-FLAG 002310WHENOTHERMOVE"N"TO V-TEAM-FLAG 002320END-EVALUATE 002340END-PERFORM 002350IFNOT V-TEAM THENDISPLAY 002360"INVALID TEAM CODE ENTERED-" 002370"RE-ENTER BOTH TEAM CODES AGAIN." 002380END-IF. 002390******************************************************************* 002400 VAL-SCORE. 002410IF ( W-H-SCR > 9 ) OR ( W-A-SCR > 9 ) 002420THENPERFORM BIG-SCORE 002430END-IF 002440IF ( W-H-SCR NOTNUMERIC) OR ( W-H-SCR NOTNUMERIC) 002450THENMOVE"N"TO V-SCORE-FLAG 002460ELSEMOVE"Y"TO V-SCORE-FLAG 002470END-IF 002480IFNOT V-SCORE THEN 002490DISPLAY"INVALID SCORE ENTRY. PLEASE RE-ENTER SCORE." 002500END-IF. 002510******************************************************************* 002520 BIG-SCORE. 002525* Putting a STOP RUN in this paragraph is probably 002527* very bad programming practise. Better logic could be used! 002530DISPLAY"A team has scored more than 10 goals. " 002540DISPLAY"This program will terminate now. " 002550DISPLAY"Following this, the record in Input.rec " 002560DISPLAY"will have to be ammended manually" 002580DISPLAY" Following this perform SORT ONLY procedure." 002600ACCEPT ENDING-KEY 002610STOPRUN. 002620 002630******************************************************************* 002640 CALC-POINTS. 002650IF TAB-SCORE (1) > TAB-SCORE (2) THEN 002660MOVE3TO TAB-POINTS (1) 002670ELSE 002680IF TAB-SCORE (2) > TAB-SCORE (1) THEN 002690ADD3TO TAB-POINTS (2) 002700ELSE 002710MOVE1TO TAB-POINTS (1) 002720MOVE1TO TAB-POINTS (2) 002730END-IF 002740END-IF. 002750 002760******************************************************************* 002770 UPDATE-RECORD. 002790MOVE1TO N 002800MOVE1TO M 002810OPEN I-O TEAM-REC-IN 002820PERFORMUNTIL M > 20 002830READ TEAM-REC-IN 002840ATEND 002850DISPLAY TEAM (1) " has details ammended" 002860NOTATEND 002870IF TEAM (1) = TEAM-CODE THEN 002880PERFORM ADJUST-DATA 002890 002900END-IF 002910ADD1TO M 002920END-READ 002930END-PERFORM 002940 002950CLOSE TEAM-REC-IN 002955 002970MOVE2TO N 002980MOVE1TO M 002980 002990OPEN I-O TEAM-REC-IN 003000PERFORMUNTIL M > 20 003010READ TEAM-REC-IN 003020ATEND 003030DISPLAY TEAM (2) " has details ammended" 003040NOTATEND 003050IF TEAM (2) = TEAM-CODE THEN 003060PERFORM ADJUST-DATA 003080END-IF 003090ADD1TO M 003100END-READ 003110END-PERFORM 003120CLOSE TEAM-REC-IN 003130DISPLAY"Table has been updated". 003140******************************************************************* 003150 ADJUST-DATA. 003160IF N = 1THENMOVE2TO SWITCH 003170ELSEMOVE1TO SWITCH 003180END-IF 003190ADD TAB-SCORE (N) TO GOALS-FOR 003200ADD TAB-SCORE (SWITCH) TO GOALS-AGST 003210SUBTRACT GOALS-AGST FROM GOALS-FOR GIVING GOAL-DIFF 003220ADD TAB-POINTS (N) TO POINTS 003230ADD1TO PLAYED 003240EVALUATE TAB-POINTS (N) 003250WHEN3ADD1TO G-WON 003260WHENZEROADD1TO G-LOST 003270WHEN1ADD1TO G-DRAWN 003280END-EVALUATE 003290REWRITE TEAM-REC. 003300******************************************************************* 003310 SORT-TABLE. 003320SORT WORK-FILE 003330ONDESCENDINGKEY POINTS-KEY GD-KEY GF-KEY 003340USING TEAM-REC-IN 003350GIVING SORT-OUT. 003360 003370******************************************************************* 003380 PRINT-TABLE. 003390ACCEPT W-DATE FROMDATE 003400MOVE W-DAY TO P-DAY 003410MOVE W-MON TO P-MON 003420MOVE W-YEAR TO P-YEAR 003430 003440OPENINPUT SORT-OUT 003450OUTPUT PRINT-FILE 003460 003470WRITE TEXT-OUT FROM P-TITLE AFTER1LINE 003480WRITE TEXT-OUT FROM P-UNDERLINE AFTER1LINE 003490WRITE TEXT-OUT FROM P-GAP AFTER1LINE 003500WRITE TEXT-OUT FROM P-HEADER AFTER1LINE 003510MOVE1TO N 003520PERFORMUNTIL N > 20 003530READ SORT-OUT 003540ATENDMOVE"Y"TO EOF-FLAG 003550NOTATEND 003560MOVE N TO P-TAB-POS 003570MOVE STEAM-NAME TO P-TEAM 003580MOVE SPLAYED TO P-PLAYED 003590MOVE SG-WON TO P-G-WON 003600MOVE SG-LOST TO P-G-LOST 003610MOVE SG-DRAWN TO P-G-DRAWN 003620MOVE SGOALS-FOR TO P-GOALS-FOR 003630MOVE SGOALS-AGST TO P-GOALS-AGST 003650MOVE SGOAL-DIFF TO P-GOAL-DIFF 003660MOVE SPOINTS TO P-POINTS 003670 003680WRITE TEXT-OUT FROM W-TEXT-OUT 003700END-READ 003710ADD1TO N 003720END-PERFORM 003730CLOSE SORT-OUT PRINT-FILE 003740DISPLAY"Table is now written to the printer". 003750*******************************************************************
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet am 2026-06-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.