OS/360 PL/I unclear syntax error

This is a discussion on OS/360 PL/I unclear syntax error within the pl1 forums in Programming Languages category; Hello, I tried to compile a PL/I program under OS/360 release 21.8. However, there is some syntax error which I do not understand. I think the "logical or" operator is coded incorrectly. Could anyone please explain me what is wrong? Please see the listing below. Thank you, Andrew Makhorin //TEST JOB MSGLEVEL=(1,1),REGION=200K // EXEC PL1LFC XXPL1L EXEC PGM=IEMAA,PARM='LOAD,NODECK',REGION=52K 10000001 XXSYSPRINT DD SYSOUT=A 20000001 XXSYSLIN DD DSNAME=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSSQ, *30000001 XX SPACE=(80, (250,100)) 40000001 XXSYSUT3 DD DSNAME=&&SYSUT3,UNIT=SYSDA,SPACE=(80,(250,250)), *46000019 XX DCB=BLKSIZE=80 52000019 XXSYSUT1 DD DSNAME=&&SYSUT1,UNIT=SYSDA,SPACE=(1024,(60,60),,CO NTIG),*60000001 XX SEP=(SYSUT3,SYSLIN),DCB=BLKSIZE=1024 70000019 //PL1L.SYSIN DD * // IEF236I ALLOC. FOR TEST PL1L IEF237I 352 ALLOCATED TO SYSPRINT IEF237I ...

Go Back   Application Development Forum > Programming Languages > pl1

Object Mix

Register FAQ Calendar Search Today's Posts Mark Forums Read
  #1  
Old 02-02-2008, 07:18 PM
Mao
Guest
 
Default OS/360 PL/I unclear syntax error


Hello,

I tried to compile a PL/I program under OS/360 release 21.8. However,
there is some syntax error which I do not understand. I think the
"logical or" operator is coded incorrectly. Could anyone please
explain
me what is wrong? Please see the listing below.

Thank you,

Andrew Makhorin


//TEST JOB MSGLEVEL=(1,1),REGION=200K
// EXEC PL1LFC
XXPL1L EXEC
PGM=IEMAA,PARM='LOAD,NODECK',REGION=52K
10000001
XXSYSPRINT DD
SYSOUT=A
20000001
XXSYSLIN DD DSNAME=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSSQ,
*30000001
XX SPACE=(80,
(250,100))
40000001
XXSYSUT3 DD DSNAME=&&SYSUT3,UNIT=SYSDA,SPACE=(80,(250,250)),
*46000019
XX
DCB=BLKSIZE=80
52000019
XXSYSUT1 DD
DSNAME=&&SYSUT1,UNIT=SYSDA,SPACE=(1024,(60,60),,CO NTIG),*60000001
XX
SEP=(SYSUT3,SYSLIN),DCB=BLKSIZE=1024
70000019
//PL1L.SYSIN DD *
//
IEF236I ALLOC. FOR TEST PL1L
IEF237I 352 ALLOCATED TO SYSPRINT
IEF237I 151 ALLOCATED TO SYSLIN
IEF237I 352 ALLOCATED TO SYSUT3
IEF237I 352 ALLOCATED TO SYSUT1
IEF237I 150 ALLOCATED TO SYSIN

PAGE 1
VERSION 5.5 OS/360 PL/I COMPILER
(F)
DATE 80.034


PL/I F COMPILER OPTIONS SPECIFIED ARE AS FOLLOWS--

LOAD,NODECK


THE COMPLETE LIST OF OPTIONS USED DURING THIS COMPILATION IS--
EBCDIC

CHAR60
NOMACRO

SOURCE2

NOMACDCK
COMP

SOURCE
NOATR
NOXREF

NOEXTREF
NOLIST
LOAD
NODECK
FLAGW
NOSTMT

SIZE=0198496

LINECNT=050

OPT=01

SORMGIN=(002,072)

NOEXTDIC
NONEST

OPLIST

SYNCHKT


*OPTIONS IN EFFECT*
EBCDIC,CHAR60,NOMACRO,SOURCE2,NOMACDCK,COMP,SOURCE ,NOATR,NOXREF,NOEXTREF,NOLIST,LOAD,
*OPTIONS IN EFFECT*
NODECK,FLAGW,NOSTMT,SIZE=0198496,LINECNT=050,OPT=0 1,SORMGIN=(002,072),NOEXTDIC,
*OPTIONS IN EFFECT* NONEST,OPLIST,SYNCHKT
DISTWE:
PROC(P,KAO,FO,WE,S,T,ET,W);
PAGE 2


1 DISTWE: PROC(P,KAO,FO,WE,S,T,ET,W);
2 DCL (P,KAO(*),FO(*),S,T,RP(P),I,J) BIN FIXED;
3 DCL (WE(*),W,WR(P)) BIN FLOAT;
4 DCL 1 ET(*),
2 EP BIN FIXED,
2 EQ BIN FIXED;
5 ET=0; EP=0; RP=0; RP(S)=1; WR=0;
10 M: J=0; W=10**6;
12 DO I=1 TO P; IF RP(I)=1 THEN IF WR(I)<W THEN
15 DO;J=I;W=WR(I);
18 END;
19 END;
20 * IF J=T ! J=0 THEN RETURN; RP(J)=-1;
24 DO I=KAO(J) TO KAO(J+1)-1;
25 IF WE(I)<10**6 THEN IF RP(FO(I))=0 THEN
27 DO; RP(FO(I))=1; WR(FO(I))=WR(J)+WE(I);
30 ET(FO(I)).EP=J; ET(FO(I)).EQ=I;
32 END;
33 ELSE
33 DO; W=WR(J)+WE(I); IF W<WR(FO(I)) THEN
36 DO; WR(FO(I))=W; ET(FO(I)).EP=J;
39 ET(FO(I)).EQ=I;
40 END;
41 END;
42 END;
43 GO TO M;
44 END DISTWE;
DISTWE:
PROC(P,KAO,FO,WE,S,T,ET,W);
PAGE 3


STORAGE REQUIREMENTS.
----------------------

THE STORAGE AREA (IN STATIC) FOR THE PROCEDURE LABELLED
DISTWE
IS 272 BYTES LONG.

THE PROGRAM CSECT IS NAMED DISTWE AND IS 1358 BYTES LONG.

THE STATIC CSECT IS NAMED *DISTWEA AND IS 416 BYTES LONG.


*STATISTICS* SOURCE RECORDS = 27,PROG TEXT STMNTS =
44,OBJECT BYTES = 1358
DISTWE:
PROC(P,KAO,FO,WE,S,T,ET,W);
PAGE 4


TABLE OF OFFSETS AND STATEMENT NUMBERS WITHIN PROCEDURE
DISTWE

OFFSET (HEX) 0000 00D8 0134 017C 01B2 01C8 0200 0206 0222 0236 024C
0268
0268 026E 027E 027E 0292 02A2 02A8 02AE 02C0
STATEMENT NO 1 5 6 7 8 9 10 11 12 13 14
15
16 17 18 19 20 21 22 23 24

OFFSET (HEX) 0300 032E 0354 0354 036A 03AA 03D2 03F6 03FA 03FA 0426
044A
044A 0462 048A 04AE 04AE 04B2 04C6 04CA
STATEMENT NO 25 26 27 28 29 30 31 32 33 34 35
36
37 38 39 40 41 42 43 44
DISTWE:
PROC(P,KAO,FO,WE,S,T,ET,W);
PAGE 5


COMPILER DIAGNOSTICS.




ERRORS.


IEM0097I 19 INVALID CHARACTER HAS BEEN REPLACED BY BLANK IN
OR
FOLLOWING STATEMENT NUMBER 19 . THE


CONTAINING OUTPUT RECORD IS MARKED BY AN
ASTERISK.


IEM0074I 20 THEN INSERTED IN IF STATEMENT NUMBER 20


IEM0096I 21 SEMI-COLON NOT FOUND WHEN EXPECTED IN STATEMENT
NUMBER 21 . ONE HAS BEEN INSERTED.


IEM0095I 22 LABEL ON STATEMENT NUMBER 22 HAS NO COLON. ONE
IS
ASSUMED.




WARNINGS.


IEM0526I 1 OPTION MAIN HAS NOT BEEN SPECIFIED FOR THE
EXTERNAL
PROCEDURE, STATEMENT NUMBER 1


IEM0764I ONE OR MORE FIXED BINARY ITEMS OF PRECISION 15
OR
LESS HAVE BEEN GIVEN HALFWORD STORAGE. THEY


ARE FLAGGED '*********' IN THE XREF/ATR LIST.





END OF DIAGNOSTICS.


AUXILIARY STORAGE WILL NOT BE USED FOR DICTIONARY WHEN SIZE = 120K


COMPILE TIME .01 MINS
DISTWE:
PROC(P,KAO,FO,WE,S,T,ET,W);
PAGE 6


ELAPSED TIME .01 MINS
IEF142I - STEP WAS EXECUTED - COND CODE 0008
IEF285I SYS80034.T024515.SV000.TEST.R0000001 SYSOUT
IEF285I VOL SER NOS= WORK02.
IEF285I SYS80034.T024515.RV000.TEST.LOADSET PASSED
IEF285I VOL SER NOS= WORK01.
IEF285I SYS80034.T024515.RV000.TEST.SYSUT3 DELETED
IEF285I VOL SER NOS= WORK02.
IEF285I SYS80034.T024515.RV000.TEST.SYSUT1 DELETED
IEF285I VOL SER NOS= WORK02.
IEF285I SYS80034.T024515.RV000.TEST.S0000002 SYSIN
IEF285I VOL SER NOS= SYSRES.
IEF285I SYS80034.T024515.RV000.TEST.S0000002 DELETED
IEF285I VOL SER NOS= SYSRES.
IEF285I SYS80034.T024515.RV000.TEST.LOADSET DELETED
IEF285I VOL SER NOS= WORK01.
Reply With Quote
  #2  
Old 02-02-2008, 07:42 PM
Peter Flass
Guest
 
Default Re: OS/360 PL/I unclear syntax error

Mao wrote:
> Hello,
>
> I tried to compile a PL/I program under OS/360 release 21.8. However,
> there is some syntax error which I do not understand. I think the
> "logical or" operator is coded incorrectly. Could anyone please
> explain
> me what is wrong? Please see the listing below.
>


Looks to me like you're using the "bang" character (!) in place of "or"
(|). I believe some compilers allow this, but the F compiler is pretty
picky.

Reply With Quote
  #3  
Old 02-03-2008, 04:53 AM
Mao
Guest
 
Default Re: OS/360 PL/I unclear syntax error

>
> Looks to me like you're using the "bang" character (!) in place of "or"
> (|). I believe some compilers allow this, but the F compiler is pretty
> picky.


Thank you for your response. I tried both ! (excalamtion mark) and |
(vertical dash); the error is the same. Maybe there should be [ or ] ?
(I forgot to say that I am using Hercules to simulate System/360.)
Reply With Quote
  #4  
Old 02-03-2008, 08:05 AM
Peter Flass
Guest
 
Default Re: OS/360 PL/I unclear syntax error

Mao wrote:
>>Looks to me like you're using the "bang" character (!) in place of "or"
>>(|). I believe some compilers allow this, but the F compiler is pretty
>>picky.

>
>
> Thank you for your response. I tried both ! (excalamtion mark) and |
> (vertical dash); the error is the same. Maybe there should be [ or ] ?
> (I forgot to say that I am using Hercules to simulate System/360.)


It should be EBCDIC '4F'x. Hercules complicates things a bit. The
translation may depend on what tn3270 program you're using. You're cot
using the 48-character set, are you? I didn't think to look at your
options. You want CHAR60 instead of CHAR48.

Reply With Quote
  #5  
Old 02-03-2008, 09:52 AM
Mao
Guest
 
Default Re: OS/360 PL/I unclear syntax error



Peter Flass wrote:
> Mao wrote:
> >>Looks to me like you're using the "bang" character (!) in place of "or"
> >>(|). I believe some compilers allow this, but the F compiler is pretty
> >>picky.

> >
> >
> > Thank you for your response. I tried both ! (excalamtion mark) and |
> > (vertical dash); the error is the same. Maybe there should be [ or ] ?
> > (I forgot to say that I am using Hercules to simulate System/360.)

>
> It should be EBCDIC '4F'x. Hercules complicates things a bit. The
> translation may depend on what tn3270 program you're using. You're cot
> using the 48-character set, are you? I didn't think to look at your
> options. You want CHAR60 instead of CHAR48.


Thank you very much. Using a brute force approach and IEBPTPCH utility
I found a code which is translated to EBCDIC 0x4F; it is ASCII 0xD7
(215 in dec). And now my PL/I program is compiled without errors.
(However, the choice of Hercules' developers seems to me not
reasonable, because 0xD7 is non-standard ASCII code.)
Reply With Quote
  #6  
Old 02-03-2008, 11:17 AM
Peter Flass
Guest
 
Default Re: OS/360 PL/I unclear syntax error

Mao wrote:
>
> Peter Flass wrote:
>
>>Mao wrote:
>>
>>>>Looks to me like you're using the "bang" character (!) in place of "or"
>>>>(|). I believe some compilers allow this, but the F compiler is pretty
>>>>picky.
>>>
>>>
>>>Thank you for your response. I tried both ! (excalamtion mark) and |
>>>(vertical dash); the error is the same. Maybe there should be [ or ] ?
>>>(I forgot to say that I am using Hercules to simulate System/360.)

>>
>>It should be EBCDIC '4F'x. Hercules complicates things a bit. The
>>translation may depend on what tn3270 program you're using. You're cot
>>using the 48-character set, are you? I didn't think to look at your
>>options. You want CHAR60 instead of CHAR48.

>
>
> Thank you very much. Using a brute force approach and IEBPTPCH utility
> I found a code which is translated to EBCDIC 0x4F; it is ASCII 0xD7
> (215 in dec). And now my PL/I program is compiled without errors.
> (However, the choice of Hercules' developers seems to me not
> reasonable, because 0xD7 is non-standard ASCII code.)


It is strange, but as I said it's your terminal emulator, not Hercules
(presumably). Many emulators also offer the opportunity to customize
the translations used.

Reply With Quote
  #7  
Old 02-03-2008, 04:08 PM
robin
Guest
 
Default Re: OS/360 PL/I clear syntax error

"Mao" <mao@gnu.org> wrote in message
news:b1164f79-dd92-44b1-b8c6-437d2297ec95@i72g2000hsd.googlegroups.com...
>
> Hello,
>
> I tried to compile a PL/I program under OS/360 release 21.8. However,
> there is some syntax error which I do not understand. I think the
> "logical or" operator is coded incorrectly.


That's curious, because the error message says that
the offending character has been replaced by a blank.

What you also needed to show us is the original source line.
Have you tried re-typing the entire line? (and the one before,
since the compiler cites "in or following stmt 19")
Mightn't hurt to re-type the following line also, making 3 altogether.

> 19 END;
> 20 * IF J=T ! J=0 THEN RETURN; RP(J)=-1;
> 24 DO I=KAO(J) TO KAO(J+1)-1;


> IEM0097I 19 INVALID CHARACTER HAS BEEN REPLACED BY BLANK IN
> OR
> FOLLOWING STATEMENT NUMBER 19 . THE
> CONTAINING OUTPUT RECORD IS MARKED BY AN
> ASTERISK.





Reply With Quote
  #8  
Old 02-03-2008, 04:08 PM
robin
Guest
 
Default Re: OS/360 PL/I clear syntax error

"Peter Flass" <Peter_Flass@Yahoo.com> wrote in message
news:47a5bc22$0$22608$4c368faf@roadrunner.com...

> It should be EBCDIC '4F'x. Hercules complicates things a bit. The
> translation may depend on what tn3270 program you're using. You're cot
> using the 48-character set, are you? I didn't think to look at your
> options. You want CHAR60 instead of CHAR48.


The listing of options says "CHAR60", so that's not the problem.


Reply With Quote
  #9  
Old 02-03-2008, 08:20 PM
Bob Lidral
Guest
 
Default Re: OS/360 PL/I unclear syntax error

Mao wrote:
>
> Peter Flass wrote:
>
>>Mao wrote:
>>
>>>>Looks to me like you're using the "bang" character (!) in place of "or"
>>>>(|). I believe some compilers allow this, but the F compiler is pretty
>>>>picky.
>>>
>>>
>>>Thank you for your response. I tried both ! (excalamtion mark) and |
>>>(vertical dash); the error is the same. Maybe there should be [ or ] ?
>>>(I forgot to say that I am using Hercules to simulate System/360.)

>>
>>It should be EBCDIC '4F'x. Hercules complicates things a bit. The
>>translation may depend on what tn3270 program you're using. You're cot
>>using the 48-character set, are you? I didn't think to look at your
>>options. You want CHAR60 instead of CHAR48.

>
>
> Thank you very much. Using a brute force approach and IEBPTPCH utility
> I found a code which is translated to EBCDIC 0x4F; it is ASCII 0xD7
> (215 in dec). And now my PL/I program is compiled without errors.
> (However, the choice of Hercules' developers seems to me not
> reasonable, because 0xD7 is non-standard ASCII code.)


Have you tried ASCII 0x7C for vertical bar? Also, for the not sign, the
ASCII code should be 0xAC.

Bob Lidral
lidral at alum dot mit dot edu

Reply With Quote
  #10  
Old 02-04-2008, 11:34 AM
Mao
Guest
 
Default Re: OS/360 PL/I unclear syntax error

> It is strange, but as I said it's your terminal emulator, not Hercules
> (presumably). Many emulators also offer the opportunity to customize
> the translations used.


I do not think it depends on a terminal emulator (I am using windows
telnet). Looking through the hercules code I found the translate table
used, which, in fact, maps ASCII 0xD7 to EBCDIC 0x4F and vice versa.
Moreover, there already was a discussion on the Hercules list
concerning this issue. As I understand such strange coding for PL/I
"logical or" is used to allow using a "natural" coding in C programs.
Reply With Quote
Reply


Thread Tools
Display Modes


All times are GMT -5. The time now is 04:23 PM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
vB Ad Management by =RedTyger=

In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.