HP3000-L Archives

June 2005, Week 3

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Olav Kappert <[log in to unmask]>
Reply To:
Olav Kappert <[log in to unmask]>
Date:
Mon, 20 Jun 2005 20:49:23 -0400
Content-Type:
text/plain
Parts/Attachments:
text/plain (193 lines)
Brian:

First of all, reading this code is difficult.

Place all the macros up front in one place, and that they are defined
prior to its use,
Make sure that the replacement value substituted into the macro does not
exceed the length of the line,
Next check that all macros are terminated by an #, and not continued
onto the next line without following the proper syntax,
Next make sure that macro are not recursive, because there is no
specific method for terminating the macro call sequence,
Lastly, I would never make the replacement characters be part of an
variable or command, ie ab-!1-ef; in the past I have had various
unexplained problems.

The last suggestion, I would do a small test to make sure that every is
as wanted.

For my very last comment, display the compiled source, and check to see
what it is doing.....

Olav.


Brian Donaldson wrote:

>I have about 200+ lines of code that really need to be in a macro.
>
>Only two parms are being passed into the macro but the amount of code is
>what I think is killing me.....
>
>The error is:
>
>PAGE 0001  COBOL II/iX HP31500A.04.21  [85] Copyright Hewlett-Packard CO.
>1987
>
>LINE #   SEQ # COL ERROR SEV            TEXT
>----------------------------------------------------------------------------
>--
> 11328  683200  12  390  Q  COMPILER ERROR: UNIMPLEMENTED CASE 12350 in
>                            PROCEDURE GET'MACRO - array MACROTEXT too small.
>*** FATAL ERROR TABLE OVERFLOW ***
> 11328  683200  12  461  D  DYNAMIC ARRAY ERROR, OUT OF SPACE.
>
>1 ERROR(s), 1 QUESTIONABLE, 0 WARNING(s)
>*** COMPILATION TERMINATED ***
>procedure STACK_TRACE
>DEBUG/iX C.25.06
>
>HPDEBUG Intrinsic at: 244.001724dc stack_trace+$9c
>       PC=244.001724dc stack_trace+$9c
>NM* 0) SP=4185e9f8 RP=244.00173334 abnormal_termination+$16c
>NM  1) SP=4185e898 RP=244.00173994 error+$3ec
>NM  2) SP=4185e7b8 RP=244.00173398 simple_error+$30
>NM  3) SP=4185e4f8 RP=244.0013cce8 pp_warn+$c4
>NM  4) SP=4185e4b0 RP=244.0013ee18 get_macro+$b4
>NM  5) SP=4185e400 RP=244.0013e3e0 check_ppid+$44
>NM  6) SP=4185b2d8 RP=244.001416d0 process_source+$300
>NM  7) SP=4185b290 RP=244.001417e4 get_record+$68
>NM  8) SP=4185b1c8 RP=244.001367e8 get_source_rec+$34
>NM  9) SP=4185b190 RP=244.0013676c peek_source+$19c
>NM  a) SP=4185b0f0 RP=244.00132110 get_exp_source+$148
>NM  b) SP=4185b098 RP=244.00132ea8 do_pass_0+$d0
>NM  c) SP=4185af60 RP=244.001335ac ANSI74+$18c
>NM  d) SP=41854258 RP=244.00000000
>     (end of NM stack)
>
>    CHECKED SYNTAX ONLY.
>    CPU TIME = 0:00:05.  WALL TIME = 0:01:03.
>
>run COBOL.PUB.SYS,ANSI85;parm=7;info=""
>Program terminated in an error state. (CIERR 976)
>ERRORS IN COMPILE
>   setjcw jcw=fatal
>Unless a CONTINUE is in effect, the remainder of the
>current UDC will be flushed. (CIWARN 1723)
>
>Sample of the code is:
>
>Mainline calling the macro:
>
>     COPY FDBFHBLD OF VMACRO.
>     %LOADFDBFHB(FDB#,DETAIL#)
>     COPY FDBFHBL2 OF VMACRO.
>     %LOADFDBFHB2(FDB#,DETAIL#)
>     COPY FDBFHBL3 OF VMACRO.
>     %LOADFDBFHB3(FDB#,DETAIL#)
>
>Sample code in the macro:
>
>$CONTROL NOLIST
>$PREPROCESSOR DELIMITER=~
>$DEFINE %LOADFDBFHB1=
>     MOVE SPACES         TO PAGE-005-FILE-!2-REC.
>     MOVE DB-!1-VA-LEFT  TO WS-VAD-LEFT.
>     MOVE DB-!1-VA-RIGHT TO WS-VAD-RIGHT.
>     STRING "Virtual Addr (DEC): " DELIMITED BY SIZE
>            WS-VAD-LEFT            DELIMITED BY SIZE
>            " "                    DELIMITED BY SIZE
>            WS-VAD-RIGHT           DELIMITED BY SIZE
>       INTO PAGE-005-FILE-!2-REC
>     END-STRING.
>     MOVE WS-PAGE-NO-005 TO PAGE-005-PAGE-NO.
>     MOVE WS-LINE-NO-005 TO PAGE-005-LINE-NO.
>     COPY VMACRO0 OF VMACRO.
>     %WRITEPAGERECORD(005#,49#,3000-EDIT-ERR#)
>     COPY VMACROA OF VMACRO.
>     %PAGEINCR(005#,3000-EDIT-ERR#).
>     ADD 1 TO WS-ENTRIES-SELECTED.
>
>     INITIALIZE WS-UFIDS-TABLE.
>     MOVE DB-!1-VA-LEFT            TO WS-UFIDS(1).
>     MOVE DB-!1-VA-RIGHT           TO WS-UFIDS(2).
>     MOVE SPACES                   TO WS-UFIDS-HEX-TABLE
>                                      WS-VAD-LEFT-X
>                                      WS-VAD-RIGHT-X.
>     CALL "Convert_UFIDS_To_Hex" USING WS-UFIDS-TABLE,
>                                       WS-UFIDS-HEX-TABLE
>     END-CALL.
>     COMPUTE WS-SUB = FUNCTION LENGTH(WS-VAD-LEFT).
>     MOVE WS-SUB TO WS-SUB-A.
>     PERFORM VARYING WS-SUB FROM WS-SUB BY -1
>               UNTIL WS-SUB < 1
>        IF WS-UFIDS-HEX-X (1)(WS-SUB:1) NOT = SPACES THEN
>           MOVE WS-UFIDS-HEX-X (1)(WS-SUB:1)
>             TO WS-VAD-LEFT-X     (WS-SUB-A:1)
>           SUBTRACT 1 FROM WS-SUB-A
>        END-IF
>     END-PERFORM.
>     COMPUTE WS-SUB = FUNCTION LENGTH(WS-VAD-RIGHT).
>     MOVE WS-SUB TO WS-SUB-A.
>     PERFORM VARYING WS-SUB FROM WS-SUB BY -1
>               UNTIL WS-SUB < 1
>        IF WS-UFIDS-HEX-X (2)(WS-SUB:1) NOT = SPACES THEN
>           MOVE WS-UFIDS-HEX-X (2)(WS-SUB:1)
>             TO WS-VAD-RIGHT-X    (WS-SUB-A:1)
>           SUBTRACT 1 FROM WS-SUB-A
>        END-IF
>     END-PERFORM.
>     MOVE SPACES TO PAGE-005-FILE-!2-REC.
>     STRING "Virtual Addr (HEX): " DELIMITED BY SIZE
>            WS-VAD-LEFT-X          DELIMITED BY SIZE
>            " "                    DELIMITED BY SIZE
>            WS-VAD-RIGHT-X         DELIMITED BY SIZE
>       INTO PAGE-005-FILE-!2-REC
>     END-STRING.
>     MOVE WS-PAGE-NO-005 TO PAGE-005-PAGE-NO.
>     MOVE WS-LINE-NO-005 TO PAGE-005-LINE-NO.
>     COPY VMACRO0 OF VMACRO.
>     %WRITEPAGERECORD(005#,49#,3000-EDIT-ERR#)
>     COPY VMACROA OF VMACRO.
>     %PAGEINCR(005#,3000-EDIT-ERR#).
>     ADD 1 TO WS-ENTRIES-SELECTED.
>
>     MOVE SPACES         TO PAGE-005-FILE-!2-REC.
>     MOVE WS-PAGE-NO-005 TO PAGE-005-PAGE-NO.
>     MOVE WS-LINE-NO-005 TO PAGE-005-LINE-NO.
>     COPY VMACRO0 OF VMACRO.
>     %WRITEPAGERECORD(005#,49#,3000-EDIT-ERR#)
>     COPY VMACROA OF VMACRO.
>     %PAGEINCR(005#,3000-EDIT-ERR#).
>     ADD 1 TO WS-ENTRIES-SELECTED.
>
>     MOVE SPACES          TO PAGE-005-FILE-!2-REC.
>     MOVE DB-!1-REC-SIZE TO WS-REC-SIZE-DISP.
>     STRING "Record Size(Bytes): " DELIMITED BY SIZE
>            WS-REC-SIZE-DISP       DELIMITED BY SIZE
>       INTO PAGE-005-FILE-!2-REC
>     END-STRING.
>     MOVE WS-PAGE-NO-005 TO PAGE-005-PAGE-NO.
>     MOVE WS-LINE-NO-005 TO PAGE-005-LINE-NO.
>     COPY VMACRO0 OF VMACRO.
>     %WRITEPAGERECORD(005#,49#,3000-EDIT-ERR#)
>     COPY VMACROA OF VMACRO.
>     %PAGEINCR(005#,3000-EDIT-ERR#).
>     ADD 1 TO WS-ENTRIES-SELECTED.
>             etc etc......
>
>Anyone got suggestions how to fix this problem and make the macro work?
>
>TIA,
>Brian.
>
>* To join/leave the list, search archives, change list settings, *
>* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
>
>
>

* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *

ATOM RSS1 RSS2