HP 3000 Manuals

Sample Program Listings [ Symbolic Debugger/iX User's Guide ] MPE/iX 5.0 Documentation


Symbolic Debugger/iX User's Guide

Sample Program Listings 

This section lists the language source files used in the sample debugger
sessions on line.

            These source files:                           are listed in:

                 DEMOCBMS                                   Figure 2-2
                 DEMOCBSS                                   Figure 2-3
                  DEMOFS                                    Figure 2-4
                  DEMOPS                                    Figure 2-5
                  DEMOCS                                    Figure 2-6

Sample HP COBOL II Program 
_______________________________________________________________________
|                                                                     |
|     $CONTROL BOUNDS, VERBS, MAP, CROSSREF                           |
|      IDENTIFICATION DIVISION.                                       |
|      PROGRAM-ID.  RAIN-REPORT.                                      |
|      ENVIRONMENT DIVISION.                                          |
|      DATA DIVISION.                                                 |
|      WORKING-STORAGE SECTION.                                       |
|        77  NUMBER-YEARS               PIC 9.                        |
|        77  FIRST-YEAR                 PIC 9(4).                     |
|        01  YEAR-INDEX                 PIC 9(4)    COMP.             |
|        01  NUM-OF-MONTHS              PIC 9(4)    COMP.             |
|        01  MONTH-TOTALS               VALUE ZEROS.                  |
|            05  MT-TABLE               PIC 9(6)V99                   |
|                                       OCCURS 60 TIMES.              |
|      PROCEDURE DIVISION.                                            |
|      100-MAIN-ROUTINE.                                              |
|          PERFORM 200-GET-INPUT.                                     |
|          PERFORM 300-CALCULATE.                                     |
|          PERFORM 400-PRINT-REPORT.                                  |
|          PERFORM 500-STOP-RUN.                                      |
|      200-GET-INPUT.                                                 |
|          DISPLAY "ENTER THE FIRST YEAR YOU WISH TO REPORT ON:".     |
|          ACCEPT FIRST-YEAR.                                         |
|          IF (FIRST-YEAR < 1950) OR (1988 < FIRST-YEAR) THEN         |
|              GO 200-GET-INPUT.                                      |
|          DISPLAY "ENTER THE # OF YEARS YOU WISH TO CONSIDER (1-5):".|
|          ACCEPT NUMBER-YEARS.                                       |
|          IF (NUMBER-YEARS < 0) OR (5 < NUMBER-YEARS) THEN           |
|              GO 200-GET-INPUT.                                      |
|      300-CALCULATE.                                                 |
|          COMPUTE YEAR-INDEX = (FIRST-YEAR - 1950) * 12.             |
|          COMPUTE NUM-OF-MONTHS = NUMBER-YEARS * 122.                |
|          CALL "LOADMT" USING YEAR-INDEX,                            |
|                              NUM-OF-MONTHS,                         |
|                              MONTH-TOTALS.                          |
|      400-PRINT-REPORT.                                              |
|      500-STOP-RUN.                                                  |
|          STOP RUN.                                                  |
_______________________________________________________________________

          Figure 2-2.  HP COBOL II Main Source File, DEMOCBMS 

Sample HP COBOL II Program 
___________________________________________________________
|                                                         |
|     $CONTROL SUBPROGRAM, BOUNDS, VERBS, MAP, CROSSREF   |
|      IDENTIFICATION DIVISION.                           |
|      PROGRAM-ID.  LOADMT.                               |
|      AUTHOR.  ANON.                                     |
|      ENVIRONMENT DIVISION.                              |
|      INPUT-OUTPUT SECTION.                              |
|      FILE-CONTROL.                                      |
|        SELECT RAINFILE ASSIGN TO "RAINFALL.pub.sys".    |
|      DATA DIVISION.                                     |
|      FILE SECTION.                                      |
|        FD RAINFILE.                                     |
|        01  INCHES-PER-MONTH           PIC 9(6)V99.      |
|      WORKING-STORAGE SECTION.                           |
|        77  77-INDEX                   PIC S9(4)    COMP.|
|      LINKAGE SECTION.                                   |
|        01  YEAR-INDEX                 PIC 9(4)     COMP.|
|        01  NUM-OF-MONTHS              PIC 9(4)     COMP.|
|        01  MONTH-TOTALS.                                |
|            05  MT-TABLE               PIC 9(6)V99  COMP |
|                                       OCCURS 60 TIMES.  |
|      PROCEDURE DIVISION USING YEAR-INDEX,               |
|                               NUM-OF-MONTHS,            |
|                               MONTH-TOTALS.             |
|      100-MAIN-SUBROUTINE.                               |
|          OPEN INPUT RAINFILE.                           |
|          PERFORM 200-READ-RAINFILE YEAR-INDEX TIMES.    |
|          MOVE 1 TO 77-INDEX.                            |
|          PERFORM 300-LOAD-MT-TABLE NUM-OF-MONTHS TIMES. |
|          CLOSE RAINFILE.                                |
|          PERFORM 500-GOBACK.                            |
|      200-READ-RAINFILE.                                 |
|          READ RAINFILE AT END GO 500-GOBACK.            |
|      300-LOAD-MT-TABLE.                                 |
|          PERFORM 200-READ-RAINFILE.                     |
|          MOVE INCHES-PER-MONTH TO MT-TABLE (77-INDEX).  |
|          ADD 1 TO 77-INDEX.                             |
|      500-GOBACK.                                        |
|          GOBACK.                                        |
___________________________________________________________

          Figure 2-3.  HP COBOL II Subroutine Source File, DEMOCBSS 

Sample HP FORTRAN 77 Program 
_________________________________________________________________________
|                                                                       |
|     $CONTROL RANGE, CODE_OFFSETS, TABLES                              |
|           PROGRAM RAIN_REPORT                                         |
|           INTEGER*2 NUMBER_YEARS,                                     |
|          2          FIRST_YEAR,                                       |
|          3          YEAR_INDEX,                                       |
|          4          NUM_OF_MONTHS                                     |
|           REAL MONTH_TOTALS(60)                                       |
|       100 PRINT *,'ENTER THE FIRST YEAR YOU WISH TO REPORT ON:  '     |
|           READ (5,*) FIRST_YEAR                                       |
|           IF ((FIRST_YEAR .LT. 1950).OR.(FIRST_YEAR .GT. 1988)) THEN  |
|             GOTO 100                                                  |
|           ENDIF                                                       |
|       110 PRINT *,'ENTER THE # OF YEARS YOU WISH TO CONSIDER (1-5):  '|
|           READ (5,*) NUMBER_YEARS                                     |
|           IF ((NUMBER_YEARS .LT. 1).OR.(NUMBER_YEARS .GT. 5)) THEN    |
|             GOTO 110                                                  |
|           ENDIF                                                       |
|           YEAR_INDEX = (FIRST_YEAR - 1950) * 12                       |
|           NUM_OF_MONTHS = NUMBER_YEARS * 122                          |
|           CALL LOADMT (YEAR_INDEX, NUM_OF_MONTHS, MONTH_TOTALS)       |
|           PRINT *,'PROGRAM ENDS'                                      |
|           STOP                                                        |
|           END                                                         |
|                                                                       |
|           SUBROUTINE LOADMT (YEAR_INDEX, NUM_OF_MONTHS, MONTH_TOTALS) |
|           INTEGER*2 YEAR_INDEX,                                       |
|          2          NUM_OF_MONTHS,                                    |
|          3          TABLE_INDEX                                       |
|           REAL MONTH_TOTALS(60),                                      |
|          2     HOLD_RAINFALL                                          |
|           OPEN (UNIT=10, FILE='RAINFALL.pub.sys')                     |
|           DO I=1, YEAR_INDEX                                          |
|             READ (10,*) HOLD_RAINFALL                                 |
|           END DO                                                      |
|           DO TABLE_INDEX = 1,NUM_OF_MONTHS                            |
|             READ (UNIT=10, FMT=10, END=900) HOLD_RAINFALL             |
|             MONTH_TOTALS(TABLE_INDEX) = HOLD_RAINFALL                 |
|           END DO                                                      |
|       900 RETURN                                                      |
|           END                                                         |
_________________________________________________________________________

          Figure 2-4.  HP FORTRAN 77 Main Source File, DEMOFS 

Sample HP Pascal Program 
____________________________________________________________________________
|                                                                          |
|     $RANGE ON, CODE_OFFSETS ON, TABLES ON$                               |
|     program RainReport (INPUT, OUTPUT, RainFall);                        |
|                                                                          |
|     type                                                                 |
|       YearType       = 1900..2000;                                       |
|       NumYearsType   = 0..200;                                           |
|       MonthTotalType = REAL;                                             |
|       ArrayType      = ARRAY [1..60] of MonthTotalType;                  |
|                                                                          |
|     var                                                                  |
|       NumYears     :  NumYearsType;                                      |
|       FirstYear    :  YearType;                                          |
|       YearIndex    :  INTEGER;                                           |
|       NumOfMonths  :  INTEGER;                                           |
|       MonthTable   :  ArrayType;                                         |
|       RainFall     :  TEXT;                                              |
|                                                                          |
|     procedure GetInput;                                                  |
|     {                                                                    |
|     This procedure prompts the user for the initial year and number of   |
|     years for the report.  It also checks to see that the year and number|
|     of years are within range.                                           |
|     }                                                                    |
|     const                                                                |
|       YearPrompt     = 'Enter the first year on which to report:  ';     |
|       NumYearsPrompt = 'Enter the # of years to consider (1 - 5):  ';    |
|                                                                          |
|     procedure GetFirstYear;                                              |
|     begin {GetFirstYear statements};                                     |
|       writeln (OUTPUT);                                                  |
|       prompt (OUTPUT, YearPrompt);                                       |
|       readln (INPUT, FirstYear);                                         |
|       IF (FirstYear < 1950) or (FirstYear > 1988) THEN                   |
|         GetFirstYear;                                                    |
|     end {GetFirstYear statements};                                       |
____________________________________________________________________________

          Figure 2-5.  HP Pascal Main Source File, DEMOPS 
__________________________________________________________________________
|                                                                        |
|     procedure GetNumYears;                                             |
|     begin {procedure GetNumYears statements};                          |
|       writeln (OUTPUT);                                                |
|       prompt (OUTPUT, NumYearsPrompt);                                 |
|       readln (INPUT, NumYears);                                        |
|       IF (NumYears < 1) or (NumYears > 5) THEN                         |
|         GetNumYears;                                                   |
|     end;                                                               |
|                                                                        |
|     begin {level 1 procedure};                                         |
|       GetFirstYear;                                                    |
|       GetNumYears;                                                     |
|       YearIndex   := (FirstYear - 1950) * 12;                          |
|       NumOfMonths := NumYears * 122;                                   |
|     end {level 1 procedure};                                           |
|                                                                        |
|     procedure LoadMonthTable;                                          |
|     var                                                                |
|       ArrayIndex    :  INTEGER;                                        |
|       HoldRainFall  :  INTEGER;                                        |
|                                                                        |
|     begin {LoadMonthTable statements};                                 |
|       HoldRainFall := 0;                                               |
|       reset (RainFall, 'RAINFALL.pub.sys');                            |
|       FOR ArrayIndex := 1 to YearIndex DO                              |
|     {                                                                  |
|         This loop will perform dummy reads to get the file to the start|
|         of the requested data.                                         |
|     }                                                                  |
|         readln (RainFall, HoldRainFall);                               |
|       FOR ArrayIndex := 1 to NumOfMonths DO                            |
|         begin {FOR loop}                                               |
|           readln (RainFall, HoldRainFall);                             |
|           MonthTable[ArrayIndex] := HoldRainFall / 100                 |
|         end {FOR loop}                                                 |
|     end {LoadMonthTable statements};                                   |
|                                                                        |
|     begin {main program}                                               |
|       GetInput;                                                        |
|       LoadMonthTable                                                   |
|     end {of program}.                                                  |
__________________________________________________________________________

          Figure 2-5.  Pascal Main Source File, DEMOPS (Continued) 

Sample HP C Program 
________________________________________________________________________________
|                                                                              |
|     #include <stdio.h>                                                       |
|                                                                              |
|     #define YEAR_PROMPT       "\nEnter the first year on which to report:  " |
|     #define NUM_YEARS_PROMPT  "\nEnter the # of years to consider (1 - 5):  "|
|                                                                              |
|     typedef  int               year_type;                                    |
|     typedef  int               num_years_type;                               |
|     typedef  double            month_total_type;                             |
|     typedef  month_total_type  array_type[60];                               |
|                                                                              |
|     num_years_type   num_years;                                              |
|     year_type        first_year;                                             |
|     int              year_index;                                             |
|     int              num_of_months;                                          |
|     array_type       month_table;                                            |
|     FILE            *rain_fall,                                              |
|                     *fopen();                                                |
|                                                                              |
|     void get_first_year()                                                    |
|     {                                                                        |
|        printf (YEAR_PROMPT);                                                 |
|        scanf ("%d", &first_year);                                            |
|        if ((first_year < 1950) || (first_year > 1988))                       |
|           get_first_year();                                                  |
|     }                                                                        |
|                                                                              |
|     void get_num_years()                                                     |
|     {                                                                        |
|        printf (NUM_YEARS_PROMPT);                                            |
|        scanf ("%d", &num_years);                                             |
|        if ((num_years < 1) || (num_years > 5))                               |
|           get_num_years();                                                   |
|     }                                                                        |
________________________________________________________________________________

          Figure 2-6.  C Main Source File, DEMOCS 
__________________________________________________________________________________
|                                                                                |
|     void get_input()                                                           |
|     {                                                                          |
|        /*                                                                      |
|         * This function prompts the user for the initial year and number of    |
|         * years for the report.  It also checks to see that the year and number|
|         * of years are within range.                                           |
|         */                                                                     |
|       get_first_year();                                                        |
|       get_num_years();                                                         |
|       year_index    = (first_year - 1950) * 12;                                |
|       num_of_months = num_years * 122;                                         |
|     }                                                                          |
|                                                                                |
|     void load_month_table()                                                    |
|     {                                                                          |
|        int  array_index;                                                       |
|        int  hold_rain_fall = 0;                                                |
|                                                                                |
|        rain_fall = fopen("RAINFALL.pub.sys", "r");                             |
|        /* This loop will perform dummy reads to get the file to the start      |
|         * of the requested data.                                               |
|         */                                                                     |
|        for (array_index = 1; array_index <= year_index; array_index++)         |
|           fscanf (rain_fall, "%d", &hold_rain_fall);                           |
|        for (array_index = 1; array_index <= num_of_months; array_index++) {    |
|           fscanf (rain_fall, "%d", &hold_rain_fall);                           |
|           month_table[array_index] = hold_rain_fall / 100;                     |
|        }                                                                       |
|     }                                                                          |
|                                                                                |
|     main()                                                                     |
|     {                                                                          |
|        get_input();                                                            |
|        load_month_table();                                                     |
|     }                                                                          |
__________________________________________________________________________________

          Figure 2-6.  C Main Source File, DEMOCS (Continued) 



MPE/iX 5.0 Documentation