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:
Brian Donaldson <[log in to unmask]>
Reply To:
Brian Donaldson <[log in to unmask]>
Date:
Tue, 21 Jun 2005 01:23:59 -0400
Content-Type:
text/plain
Parts/Attachments:
text/plain (233 lines)
Olav:

Thanks for the suggestions.

However, I pretty much answered my own question by breaking up the code
into many little macros. That made the compile error go away and now
everything works just fine.

I would've preferred to have done it all in one fell swoop but that wasn't
working. I suspected I was trying to do too much in one action and it looks
like I was correct :-(


As an extra little FYI -- the replacement parms I was putting in between
variable names was quite simple and saved a *lot* of time in the coding
department. We have 2 different data sets where all the items are named
*almost* identically -- one has "FDB" in the names and the other has "FHB"
in them. So putting all the coding into a macro and using either "FDB"
or "FHB" (depending on which data set is being accessed) as the replacement
parm prefix/suffix saved a lot of time. It works great and really isn't
that difficult to read at all.

All our macros are stored in a copylib module, hence the COPY command in
the source.

Thanks, Olav for your input. Much appreciated.

Brian.




On Mon, 20 Jun 2005 20:49:23 -0400, Olav Kappert <[log in to unmask]>
wrote:

>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 *

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

ATOM RSS1 RSS2