|
what stmt is instruction x'0016' ? is it the CRTS instruction?
can you post the compile listing?
-Steve Richter
-----Original Message-----
From: David Colford <dcolford@pathix.com>
To: mi400@midrange.com <mi400@midrange.com>
Date: Wednesday, August 15, 2001 12:57 PM
Subject: [MI400] Help !! Old (and I mean Old) MI Code compiles but won't run
>Hi
>
>Here's the situation......
>
>I have a piece of old MI vendor code (see below)
>
>Thing to note about this are
>1. It has no semicolons (I had to add them)
>2. When I add the semicolons (as I have donw with other MI code and it
>works ) it compiles but doesn't run I get MCH0601
>
> Space offset X'4040A24F' or teraspace offset X'0000000000000000' is
> outside current limit for object PATHIX16S2DCOLFORD 283123.
>
> Function check. MCH0601 unmonitored by MDOC at statement *N,
>instruction
> X'0016'.
>
>3. This program is called via a link to a special file and is used to put
>records on a screen. It was working until we hit 1700 lines of help text.
>My intent here is just toi increase the size of 1700 to say 5000 and leave
>it for another 10 years
>4. The original compiler for this is the 'PUMPKIN V1R1M0' version... Is
>this the problem? Anyone have a copy of this
>
>Can anyone see anything wrong here ?? Do you need more info
>
>Thanks in advance
>Dave
>
>
>
>
>
>/*********************************************************************/
>/* HELP TEXT EDITOR WORK SPACE HANDLER */
>/*********************************************************************/
>
>ENTRY *(EXTPARM) EXT;
>DCL SPCPTR XRQS-SPP PARM;
>DCL SPCPTR XSTS-SPP PARM;
>DCL SPCPTR XERRCODE-SPP PARM;
>DCL SPCPTR XIOAREA-SPP PARM;
>DCL SPCPTR XCTL-SPP PARM;
>DCL SPCPTR XFIRST-SPP PARM;
>DCL SPCPTR XCURRENT-SPP PARM;
>DCL SPCPTR XSPCNAME-SPP PARM;
>DCL SPCPTR XEOF-SPP PARM;
>DCL OL EXTPARM(XRQS-SPP,XSTS-SPP,XERRCODE-SPP,XIOAREA-SPP,
> XCTL-SPP,XFIRST-SPP,XCURRENT-SPP,XSPCNAME-SPP,
> XEOF-SPP) PARM EXT;
>DCL DD XRQS CHAR(1) BAS(XRQS-SPP);
>DCL DD XSTS CHAR(1) BAS(XSTS-SPP);
>DCL DD XERRCODE ZND(5,0) BAS(XERRCODE-SPP);
>DCL DD XIOAREA CHAR(67) BAS(XIOAREA-SPP);
>DCL DD XCTL CHAR(1) BAS(XCTL-SPP);
>DCL DD XFIRST PKD(15,0) BAS(XFIRST-SPP);
>DCL DD XCURRENT PKD(15,0) BAS(XCURRENT-SPP);
>DCL DD XSPCNAME CHAR(30) BAS(XSPCNAME-SPP);
>DCL DD XEOF CHAR(1) BAS(XEOF-SPP);
>
>/********************************************************************/
>/* START */
>/********************************************************************/
>
> CMPBLA(B) XRQS,'O'/EQ(OPEN);
> CMPBLA(B) XRQS,'C'/EQ(CLOSE);
> CMPBLA(B) XRQS,'R'/EQ(READ);
> CMPBLA(B) XRQS,'W'/EQ(WRITE);
>
> CPYBLA XSTS,'2';
> CPYNV XERRCODE,90001;/* INVALID REQUEST */
> RTX *;
>
>/********************************************************************/
>/* OPEN FILE: RESOLVE WROK SPACE (CREATE IF NOT EXIST) */
>/********************************************************************/
>
>DCL EXCM EXCM1 EXCID(H'2201') BP(CRTSPACE) SKP;
>
>OPEN:
> CMPBLA(B) XCTL,' '/NEQ(OPENEND);
>
> RSLVSP CTX-SYP,CTX-ID,*,X'FF00';
> CPYBLA WRKSPC-NAME,XSPCNAME;
> MODEXCPD EXCM1,*ENABLE,X'01';
> RSLVSP WRKSPC-SYP,WRKSPC-ID,CTX-SYP,X'FF00';
> MODEXCPD EXCM1,*DISABLE,X'01';
> SETSPPFP WRKSPC-SPP,WRKSPC-SYP;
> CPYNV XFIRST,WRKSPC-FIRST;
> CPYNV XCURRENT,0;
> CPYBLA XSTS,'0';
> CPYNV XERRCODE,0;
>OPENEND: RTX *;
>CRTSPACE:
> MODEXCPD EXCM1,*DISABLE,X'01';
> CPYBLA SPCTMPL-NAME,XSPCNAME;
> CRTS WRKSPC-SYP,SPCTMPL-SPP;
> SETSPPFP WRKSPC-SPP,WRKSPC-SYP;
> CPYNV WRKSPC-FIRST,0;
> CPYNV WRKSPC-COUNT,0;
> CPYNV XFIRST,0;
> CPYNV XCURRENT,0;
> CPYBLA XSTS,'0';
> CPYNV XERRCODE,0;
> RTX *;
>
>/********************************************************************/
>/* CLOSE FILE: DESTROY SPACE (IF REQUESTED) */
>/********************************************************************/
>
>CLOSE:
> CMPBLA(B) XCTL,' '/NEQ(CLOSEEND);
> DESS WRKSPC-SYP;
> DEACTPG *;
>CLOSEEND: RTX *;
>
>/********************************************************************/
>/* READ FILE */
>/********************************************************************/
>
>DCL DD CURRENT BIN(4) AUTO;
>DCL DD OFFSET BIN(4) AUTO;
>DCL DD FREE CHAR(8) AUTO INIT(X'FFFFFFFFFFFFFFFF');
>
>READ:
> CPYNV CURRENT,XCURRENT;
> CPYBWP RECORD-SPP,WRKSPC-SPP;
> SETSPPO RECORD-SPP,CURRENT;
>
> CMPBLA(B) XCTL,'P'/EQ(READPREV);
> CMPBLA(B) XCTL,'N'/EQ(READNEXT);
> CMPBLA(B) XCTL,'C'/EQ(READOK);
> CMPBLA(B) XCTL,'E'/EQ(READEND);
>
> CPYBLA XSTS,'2';
> CPYNV XERRCODE,90002; /* INVALID READ REQUEST */
> RTX *;
>
>READPREV:
> CMPNV(B) CURRENT,0/EQ(EOF);
> CMPNV(B) RECORD-PREV,0/EQ(EOF);
> CPYNV CURRENT,RECORD-PREV;
> SETSPPO RECORD-SPP,CURRENT;
> B READOK;
>
>READNEXT:
> CMPNV(B) WRKSPC-COUNT,0/EQ(ADDRECORD);
> CMPNV(B) RECORD-NEXT,0/EQ(ADDRECORD);
> CMPNV(B) CURRENT,0/HI(TAG1);
> CPYNV CURRENT,WRKSPC-FIRST;
> B TAG2;
>TAG1: CPYNV CURRENT,RECORD-NEXT;
>TAG2: SETSPPO RECORD-SPP,CURRENT;
> B READOK;
>ADDRECORD:
> CMPNV(B) WRKSPC-COUNT,1700/EQ(EOF);
> CPYNV PREV,0;
> CPYNV NEXT,0;
> CMPNV(B) CURRENT,0/EQ(END51);
> CPYNV PREV,CURRENT;
> CPYNV NEXT,RECORD-NEXT;
>END51:
>
>/* NEW RECORD */
> SEARCH CURRENT,WRKSPC-PTR,FREE,1;
> MULT(S) CURRENT,75;
> SUBN(S) CURRENT,59;
> SETSPPO RECORD-SPP,CURRENT;
> CPYNV RECORD-PREV,PREV;
> CPYNV RECORD-NEXT,NEXT;
> CPYBLAP RECORD-DATA,' ',' ';
> CPYNV WRKSPC-LAST,CURRENT;
> ADDN(S) WRKSPC-COUNT,1;
>
>/* PREVIOUS RECORD */
> CMPNV(B) RECORD-PREV,0/EQ(END52);
> SETSPPO RECORD-SPP,RECORD-PREV;
> CPYNV RECORD-NEXT,CURRENT;
> SETSPPO RECORD-SPP,CURRENT;
> B END53;
>END52: CPYNV WRKSPC-FIRST,CURRENT;
>END53: B READOK;
>
>
>READEND:
> CMPNV(B) CURRENT,0/HI(CONT1);
> CMPNV(B) WRKSPC-FIRST,0/EQ(EOF);
> CPYNV CURRENT,WRKSPC-FIRST;
> B CONT2;
>CONT1: CMPNV(B) RECORD-NEXT,0/EQ(EOF);
> CPYNV CURRENT,RECORD-NEXT;
>CONT2: SETSPPO RECORD-SPP,CURRENT;
> CPYNV OFFSET,CURRENT;
>CF: CMPBLAP(B) RECORD-DATA,' ',' '/NEQ(ENDREADEND);
> CMPNV(B) RECORD-NEXT,0/EQ(EOF);
> CPYNV OFFSET,RECORD-NEXT;
> SETSPPO RECORD-SPP,OFFSET;
> B CF;
>ENDREADEND:SETSPPO RECORD-SPP,CURRENT;
>
>READOK:
> CPYBLA XIOAREA,RECORD-DATA;
> CPYNV XFIRST,WRKSPC-FIRST;
> CPYNV XCURRENT,CURRENT;
> CPYBLA XSTS,'0';
> CPYNV XERRCODE,0;
> RTX *;
>
>
>EOF:
> CPYBLA XEOF,'1';
> CPYBLA XSTS,'0';
> CPYNV XERRCODE,0;
> RTX *;
>
>/********************************************************************/
>/* WRITE FILE */
>/********************************************************************/
>
>DCL DD NEXT BIN(4) AUTO;
>DCL DD PREV BIN(4) AUTO;
>DCL DD BUFFER CHAR(75) AUTO;
>
>WRITE:
> CPYNV CURRENT,XCURRENT;
> CPYBWP RECORD-SPP,WRKSPC-SPP;
> SETSPPO RECORD-SPP,CURRENT;
>
> CMPBLA(B) XCTL,'B'/EQ(ADDBEFORE);
> CMPBLA(B) XCTL,'A'/EQ(ADDAFTER);
> CMPBLA(B) XCTL,'U'/EQ(UPDATE);
> CMPBLA(B) XCTL,'D'/EQ(DELETE);
>
> CPYBLA XSTS,'2';
> CPYNV XERRCODE,90003; /* INVALID WRITE REQUEST */
> RTX *;
>
>ADDBEFORE:
> CPYNV PREV,0;
> CPYNV NEXT,0;
> CMPNV(B) CURRENT,0/EQ(END01);
> CPYNV PREV,RECORD-PREV;
> CPYNV NEXT,CURRENT;
>END01:
>
>/* NEW RECORD */
> CMPNV(B) WRKSPC-COUNT,1700/EQ(END02); /* SPACE FULL */
> SEARCH CURRENT,WRKSPC-PTR,FREE,1;
> MULT(S) CURRENT,75;
> SUBN(S) CURRENT,59;
> SETSPPO RECORD-SPP,CURRENT;
> CPYNV RECORD-PREV,PREV;
> CPYNV RECORD-NEXT,NEXT;
> CPYBLA RECORD-DATA,XIOAREA;
> ADDN(S) WRKSPC-COUNT,1;
> B END03;
>END02: CPYNV CURRENT,WRKSPC-LAST;
> SETSPPO RECORD-SPP,CURRENT;
> CPYNV WRKSPC-LAST,RECORD-PREV;
> SETSPPO RECORD-SPP,RECORD-PREV;
> CPYNV RECORD-NEXT,0;
> SETSPPO RECORD-SPP,CURRENT;
> CPYNV RECORD-PREV,PREV;
> CPYNV RECORD-NEXT,NEXT;
> CPYBLA RECORD-DATA,XIOAREA;
>END03:
>
>/* PREVIOUS RECORD */
> CMPNV(B) RECORD-PREV,0/EQ(END04);
> SETSPPO RECORD-SPP,RECORD-PREV;
> CPYNV RECORD-NEXT,CURRENT;
> SETSPPO RECORD-SPP,CURRENT;
> B END05;
>END04: CPYNV WRKSPC-FIRST,CURRENT;
>END05:
>
>/* NEXT RECORD */
> CMPNV(B) RECORD-NEXT,0/EQ(END06);
> SETSPPO RECORD-SPP,RECORD-NEXT;
> CPYNV RECORD-PREV,CURRENT;
> SETSPPO RECORD-SPP,CURRENT;
> B END07;
>END06: CPYNV WRKSPC-LAST,CURRENT;
>END07:
> CPYNV XFIRST,WRKSPC-FIRST;
> CPYNV XCURRENT,CURRENT;
> CPYBLA XSTS,'0';
> CPYNV XERRCODE,0;
> RTX *;
>
>
>ADDAFTER:
> CPYNV PREV,0;
> CPYNV NEXT,WRKSPC-FIRST;
> CMPNV(B) CURRENT,0/EQ(END21);
> CPYNV PREV,CURRENT;
> CPYNV NEXT,RECORD-NEXT;
>END21:
>
>/* NEW RECORD */
> CMPNV(B) WRKSPC-COUNT,1700/EQ(END22); /* SPACE FULL */
> SEARCH CURRENT,WRKSPC-PTR,FREE,1;
> MULT(S) CURRENT,75;
> SUBN(S) CURRENT,59;
> SETSPPO RECORD-SPP,CURRENT;
> CPYNV RECORD-PREV,PREV;
> CPYNV RECORD-NEXT,NEXT;
> CPYBLA RECORD-DATA,XIOAREA;
> ADDN(S) WRKSPC-COUNT,1;
> B END23;
>END22: CPYNV CURRENT,WRKSPC-LAST;
> SETSPPO RECORD-SPP,CURRENT;
> CPYNV WRKSPC-LAST,RECORD-PREV;
> SETSPPO RECORD-SPP,RECORD-PREV;
> CPYNV RECORD-NEXT,0;
> SETSPPO RECORD-SPP,CURRENT;
> CPYNV RECORD-PREV,PREV;
> CPYNV RECORD-NEXT,NEXT;
> CPYBLA RECORD-DATA,XIOAREA;
>END23:
>
>/* PREVIOUS RECORD */
> CMPNV(B) RECORD-PREV,0/EQ(END24);
> SETSPPO RECORD-SPP,RECORD-PREV;
> CPYNV RECORD-NEXT,CURRENT;
> SETSPPO RECORD-SPP,CURRENT;
> B END25;
>END24: CPYNV WRKSPC-FIRST,CURRENT;
>END25:
>
>/* NEXT RECORD */
> CMPNV(B) RECORD-NEXT,0/EQ(END26);
> SETSPPO RECORD-SPP,RECORD-NEXT;
> CPYNV RECORD-PREV,CURRENT;
> SETSPPO RECORD-SPP,CURRENT;
> B END27;
>END26: CPYNV WRKSPC-LAST,CURRENT;
>END27:
> CPYNV XFIRST,WRKSPC-FIRST;
> CPYNV XCURRENT,CURRENT;
> CPYBLA XSTS,'0';
> CPYNV XERRCODE,0;
> RTX *;
>
>
>UPDATE:
> CPYBLA RECORD-DATA,XIOAREA;
> CPYNV XFIRST,WRKSPC-FIRST;
> CPYNV XCURRENT,CURRENT;
> CPYBLA XSTS,'0';
> CPYNV XERRCODE,0;
> RTX *;
>
>
>DELETE:
> CPYNV PREV,RECORD-PREV;
> CPYNV NEXT,RECORD-NEXT;
>
> CMPNV(B) PREV,0/EQ(END41);
> SETSPPO RECORD-SPP,PREV;
> CPYNV RECORD-NEXT,NEXT;
> B END42;
>END41: CPYNV WRKSPC-FIRST,NEXT;
>END42:
> CMPNV(B) NEXT,0/EQ(END43);
> SETSPPO RECORD-SPP,NEXT;
> CPYNV RECORD-PREV,PREV;
> B END44;
>END43: CPYNV WRKSPC-LAST,PREV;
>END44:
> SUBN(S) WRKSPC-COUNT,1;
>
> SETSPPO RECORD-SPP,CURRENT;
> CPYBLAP RECORD-BUFF,X'FFFFFFFFFFFFFFFF',X'00';
>
> CPYNV CURRENT,NEXT;
> SETSPPO RECORD-SPP,CURRENT;
>
> CPYNV XFIRST,WRKSPC-FIRST;
> CPYNV XCURRENT,CURRENT;
> CPYBLA XSTS,'0';
> CPYNV XERRCODE,0;
> RTX *;
>
>/********************************************************************/
>
>DCL SYSPTR WRKSPC-SYP;
>DCL SPCPTR WRKSPC-SPP;
>DCL DD WRKSPC-FIRST BIN(4) BAS(WRKSPC-SPP) POS(1); /* FIRST LINE */
>DCL DD WRKSPC-LAST BIN(4) BAS(WRKSPC-SPP) POS(5); /* LAST LINE */
>DCL DD WRKSPC-COUNT BIN(4) BAS(WRKSPC-SPP) POS(13); /* LINE COUNT */
>DCL DD WRKSPC-DUMMY CHAR(1) BAS(WRKSPC-SPP) POS(17);
>DCL DD WRKSPC-PTR(1700) CHAR(8) DEF(WRKSPC-DUMMY) AEO(75);
>
>DCL SPCPTR RECORD-SPP AUTO;
>DCL DD RECORD-PREV BIN(4) BAS(RECORD-SPP) POS(1); /* PREV LINE */
>DCL DD RECORD-NEXT BIN(4) BAS(RECORD-SPP) POS(5); /* NEXT LINE */
>DCL DD RECORD-DATA CHAR(67) BAS(RECORD-SPP) POS(9); /* DATA */
>DCL DD RECORD-BUFF CHAR(75) BAS(RECORD-SPP) POS(1);
>
>DCL SPCPTR SPCTMPL-SPP AUTO INIT(SPCTMPL);
>DCL DD SPCTMPL CHAR(160) AUTO;
>DCL DD * BIN(4) DEF(SPCTMPL) POS(1) INIT(160);
>DCL DD * CHAR(2) DEF(SPCTMPL) POS(9) INIT(X'19EE');
>DCL DD SPCTMPL-NAME CHAR(30) DEF(SPCTMPL) POS(11);
>DCL DD * CHAR(4) DEF(SPCTMPL) POS(41) INIT(X'E2000000');
>DCL DD * CHAR(4) DEF(SPCTMPL) POS(45) INIT(X'00000000');
>DCL DD * BIN(4) DEF(SPCTMPL) POS(49) INIT(127516);
>DCL DD * CHAR(1) DEF(SPCTMPL) POS(53) INIT(X'FF');
>DCL DD * CHAR(4) DEF(SPCTMPL) POS(54) INIT(X'03000000');
>DCL DD * CHAR(1) DEF(SPCTMPL) POS(58) INIT(X'00');
>DCL DD * CHAR(2) DEF(SPCTMPL) POS(59) INIT(X'FF00');
>DCL SYSPTR CTX-SYP DEF(SPCTMPL) POS(65);
>
>DCL DD WRKSPC-ID CHAR(34) AUTO;
>DCL DD * CHAR(2) DEF(WRKSPC-ID) POS(1) INIT(X'19EE');
>DCL DD WRKSPC-NAME CHAR(30) DEF(WRKSPC-ID) POS(3);
>DCL DD * CHAR(2) DEF(WRKSPC-ID) POS(33) INIT(X'0000');
>
>DCL DD CTX-ID CHAR(34) AUTO;
>DCL DD * CHAR(2) DEF(CTX-ID) POS(1) INIT(X'0401');
>DCL DD * CHAR(30) DEF(CTX-ID) POS(3) INIT('QRECOVERY');
>DCL DD * CHAR(2) DEF(CTX-ID) POS(33) INIT(X'0000');
>
>DCL CON *ENABLE CHAR(2) INIT(X'A000');
>DCL CON *DISABLE CHAR(2) INIT(X'2000');
> PEND;
>
>
>_______________________________________________
>This is the MI Programming on the AS400 / iSeries (MI400) mailing list
>To post a message email: MI400@midrange.com
>To subscribe, unsubscribe, or change list options,
>visit: http://lists.midrange.com/cgi-bin/listinfo/mi400
>or email: MI400-request@midrange.com
>
>
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.