1 C GETOBJ--          Find obj described by adj, name pair
  2 C
  3 C Declarations
  4 C
  5 C This routine details on bit 3 of PRSFLG
  6 C
  7           INTEGER FUNCTION GETOBJ(OIDX,AIDX,SPCOBJ)
  8           IMPLICIT INTEGER(A-Z)
  9           %include dparam
 10           LOGICAL THISIT,GHERE,LIT,CHOMP,DFLAG,NOADJS
 11 C
 12 C old     DFLAG=(PRSFLG.AND.8).NE.0
 13           DFLAG=AND(PRSFLG,8).NE.0
 14           CHOMP=.FALSE.
 15           AV=AVEHIC(WINNER)
 16           OBJ=0                                             ! assume dark.
 17           IF(.NOT.LIT(HERE)) GO TO 200            ! lit?
 18 C
 19           OBJ=SCHLST(OIDX,AIDX,HERE,0,0,SPCOBJ)   ! search room.
 20           IF(DFLAG) WRITE(OUTCH,10) OBJ
 21 10        FORMAT(' SCHLST- ROOM SCH ',I6)
 22           IF(OBJ) 1000,200,100                              ! test result.
 23 C old 100 IF((AV.EQ.0).OR.(AV.EQ.OBJ).OR.(OCAN(OBJ).EQ.AV).OR.
 24 C old     &         ((OFLAG2(OBJ).AND.FINDBT).NE.0)) GO TO 200
 25 100       IF((AV.EQ.0).OR.(AV.EQ.OBJ).OR.(OCAN(OBJ).EQ.AV).OR.
 26           &         (AND(OFLAG2(OBJ),FINDBT).NE.0)) GO TO 200
 27           CHOMP=.TRUE.                                      ! not reachable.
 28 C
 29 200       IF(AV.EQ.0) GO TO 400                             ! in vehicle?
 30           NOBJ=SCHLST(OIDX,AIDX,0,AV,0,SPCOBJ)    ! search vehicle.
 31           IF(DFLAG) WRITE(OUTCH,220) NOBJ
 32 220       FORMAT(' SCHLST- VEH SCH  ',I6)
 33           IF(NOBJ) 800,400,300                              ! test result.
 34 300       CHOMP=.FALSE.                                     ! reachable.
 35           IF(OBJ.EQ.NOBJ) GO TO 400               ! same as before?
 36           IF(OBJ.NE.0) NOBJ=-NOBJ                           ! amb result?
 37           OBJ=NOBJ
 38 C
 39 400       NOBJ=SCHLST(OIDX,AIDX,0,0,WINNER,SPCOBJ)          ! search adventurer.
 40           IF(DFLAG) WRITE(OUTCH,430) NOBJ
 41 430       FORMAT(' SCHLST- ADV SCH  ',I6)
 42           IF(NOBJ) 800,900,500                              ! test result
 43 500       IF(OBJ.EQ.0) GO TO 800                            ! any previous? no, use nobj.
 44           IF(AIDX.NE.0) GO TO 600                           ! yes, amb, any adj?
 45           IF(NOADJS(OBJ).NEQV.NOADJS(NOBJ)) GO TO 700 ! both adj or no adj?
 46 600       OBJ=-NOBJ                               ! ambiguous result.
 47           GO TO 900
 48 700       IF(NOADJS(OBJ)) GO TO 900               ! if old no adj, use old.
 49 800       OBJ=NOBJ                                ! return new object.
 50 900       IF(CHOMP) OBJ=-10000                              ! unreachable.
 51 1000      GETOBJ=OBJ
 52 C
 53           IF(GETOBJ.NE.0) GO TO 1500              ! got something?
 54           DO 1200 I=STRBIT+1,OLNT                           ! no, search globals.
 55             IF(.NOT.THISIT(OIDX,AIDX,I,SPCOBJ)) GO TO 1200
 56             IF(.NOT.GHERE(I,HERE)) GO TO 1200     ! can it be here?
 57             IF(GETOBJ.EQ.0) GO TO 1150            ! got one yet?
 58             IF(AIDX.NE.0) GO TO 1050              ! yes, no adj?
 59             IF(NOADJS(GETOBJ).NEQV.NOADJS(I)) GO TO 1100    ! only one with no adj?
 60 1050        GETOBJ=-I                                       ! ambiguous
 61             GO TO 1200
 62 1100        IF(NOADJS(GETOBJ)) GO TO 1200                   ! if old no adj, retain.
 63 1150        GETOBJ=I                                        ! new is target.
 64 1200      CONTINUE
 65 C
 66 1500      CONTINUE                                ! end of search.
 67           IF(DFLAG) WRITE(OUTCH,1540) GETOBJ
 68 1540      FORMAT(' SCHLST- RESULT   ',I6)
 69           RETURN
 70           END
 71 C page
 72 C SCHLST--          Search for object
 73 C
 74 C Declarations
 75 C
 76           INTEGER FUNCTION SCHLST(OIDX,AIDX,RM,CN,AD,SPCOBJ)
 77           IMPLICIT INTEGER(A-Z)
 78           %include dparam
 79           LOGICAL THISIT,QHERE,NOTRAN,NOVIS,AEMPTY,NOADJS
 80 C
 81 C Functions and data
 82 C
 83 C old     NOTRAN(O)=((OFLAG1(O).AND.TRANBT).EQ.0).AND.
 84 C old     &         ((OFLAG2(O).AND.OPENBT).EQ.0)
 85           NOTRAN(O)=(AND(OFLAG1(O),TRANBT).EQ.0).AND.
 86           &         (AND(OFLAG2(O),OPENBT).EQ.0)
 87 C old     NOVIS(O)=((OFLAG1(O).AND.VISIBT).EQ.0)
 88           NOVIS(O)=(AND(OFLAG1(O),VISIBT).EQ.0)
 89 C
 90           SCHLST=0                                ! no result.
 91           AEMPTY=.FALSE.                                    ! no ambiguous empty.
 92           DO 1000 I=1,OLNT                        ! search objects.
 93             IF(NOVIS(I).OR.
 94           &         (((RM.EQ.0).OR.(.NOT.QHERE(I,RM))).AND.
 95           &          ((CN.EQ.0).OR.(OCAN(I).NE.CN)).AND.
 96           &          ((AD.EQ.0).OR.(OADV(I).NE.AD)))) GO TO 1000
 97             IF(.NOT.THISIT(OIDX,AIDX,I,SPCOBJ)) GO TO 200
 98             IF(SCHLST.EQ.0) GO TO 150             ! got one already?
 99             IF(AIDX.NE.0) GO TO 2000              ! adj? then ambiguous
100             IF(NOADJS(I)) GO TO 100               ! new have no adj?
101             AEMPTY=.TRUE.                                   ! no, old might, flag.
102             GO TO 200
103 100         IF(NOADJS(SCHLST)) GO TO 2000                   ! old have no adj?
104 150         SCHLST=I                                        ! new is unique, or
105                                                             ! new has no adj, old does.
106 C
107 C If open or transparent, search the object itself.
108 C
109 200         IF(NOTRAN(I)) GO TO 1000
110 C
111 C Search is conducted in reverse.  All objects are checked to
112 C See if they are at some level of containment inside object 'I'.
113 C If they are at level 1, or if all links in the containment
114 C chain are open, visible, and have SEARCHME set, they can qualify
115 C as a potential match.
116 C
117             DO 500 J=1,OLNT                       ! search objects.
118               IF(NOVIS(J).OR. (.NOT.THISIT(OIDX,AIDX,J,SPCOBJ)))
119           &         GO TO 500                     ! visible & match?
120               X=OCAN(J)                                     ! get container.
121 300           IF(X.EQ.I) GO TO 400                ! inside target?
122               IF(X.EQ.0) GO TO 500                ! inside anything?
123 C old         IF(NOVIS(X).OR.NOTRAN(X).OR.
124 C old     &         ((OFLAG2(X).AND.SCHBT).EQ.0)) GO TO 500
125               IF(NOVIS(X).OR.NOTRAN(X).OR.
126           &         (AND(OFLAG2(X),SCHBT).EQ.0)) GO TO 500
127               X=OCAN(X)                                     ! go another level.
128               GO TO 300
129 C
130 400           IF(SCHLST.EQ.0) GO TO 450           ! already got one?
131               IF(AIDX.NE.0) GO TO 2000            ! adj? then ambiguous.
132               IF(NOADJS(J)) GO TO 425             ! new have no adj?
133               AEMPTY=.TRUE.                       ! no, ambiguous empty.
134               GO TO 500
135 425           IF(NOADJS(SCHLST)) GO TO 2000       ! old have no adj? then amb.
136 450           SCHLST=J                                      ! new is unique, or
137                                                             ! new has no adj, and old does.
138 500         CONTINUE
139 C
140 1000      CONTINUE
141           IF(.NOT.AEMPTY.OR.(SCHLST.EQ.0)) RETURN ! if none or not amb, done.
142           IF(NOADJS(SCHLST)) RETURN               ! if amb, and no adj, done.
143 2000      SCHLST=-SCHLST                                    ! amb return.
144           RETURN
145 C
146           END
147 C page
148 C THISIT--          Validate object vs description
149 C
150 C Declarations
151 C
152           LOGICAL FUNCTION THISIT(OIDX,AIDX,OBJ,SPCOBJ)
153           IMPLICIT INTEGER(A-Z)
154           %include dparam
155 C
156           THISIT=.FALSE.                                    ! assume no match.
157           IF((SPCOBJ.NE.0).AND.(OBJ.EQ.SPCOBJ)) GO TO 500
158 C
159 C Check for object names
160 C
161           IF(OIDX.EQ.0) RETURN                              ! no obj? lose.
162           I=OIDX
163 100       IF(IABS(OVOC(I)).EQ.OBJ) GO TO 200      ! found it?
164           I=I+1                                             ! adv to next.
165           IF(OVOC(I).LT.0) GO TO 100              ! still part of list?
166           RETURN                                            ! if done, lose.
167 C
168 200       IF(AIDX.EQ.0) GO TO 500                           ! no adj? done.
169           I=AIDX
170 300       IF(IABS(AVOC(I)).EQ.OBJ) GO TO 500      ! found it?
171           I=I+1                                             ! adv to next.
172           IF(AVOC(I).LT.0) GO TO 300              ! still part of list?
173           RETURN                                            ! if done, lose.
174 C
175 500       THISIT=.TRUE.
176           RETURN
177           END
178 C page
179 C SYNMCH--          Syntax matcher
180 C
181 C Declarations
182 C
183 C This routine details on bit 4 of PRSFLG
184 C
185           LOGICAL FUNCTION SYNMCH(X)
186           IMPLICIT INTEGER(A-Z)
187           %include dparam
188           LOGICAL SYNEQL,TAKEIT,DFLAG
189           CHARACTER*(TEXLNT) STR
190           CHARACTER*(WRDLNT) FINDVB,FINDPR,LCIFY,LCWORD
191           CHARACTER*(WRDLNT+2) LCPRP1,LCPRP2
192           external dtext_$read (descriptors)
193 C page
194 C SYNMCH, PAGE 2
195 C
196           SYNMCH=.FALSE.
197 C old     DFLAG=(PRSFLG.AND.16).NE.0
198           DFLAG=AND(PRSFLG,16).NE.0
199           J=ACT                                             ! set up ptr to syntax.
200           DRIVE=0                                           ! no default.
201           DFORCE=0                                ! no forced default.
202 C old     QPREP=OFLAG.AND.OPREP                             ! valid orphan prep flag.
203           QPREP=AND(OFLAG,OPREP)                            ! valid orphan prep flag.
204           LIMIT=J+VVOC(J)+1                       ! compute limit.
205           J=J+1                                             ! advance to next.
206 C
207 200       CALL UNPACK(J,NEWJ)                     ! unpack syntax.
208           IF(DFLAG) WRITE(OUTCH,210) J,OBJ1,PREP1,DOBJ,DFL1,DFL2
209 210       FORMAT(' SYNMCH DOBJ INPUTS TO SYNEQL- ',6I7)
210 C old     SPREP=DOBJ.AND.VPMASK                             ! save expected prep.
211           SPREP=AND(DOBJ,VPMASK)                            ! save expected prep.
212           IF(SYNEQL(PREP1,OBJ1,DOBJ,DFL1,DFL2)) GO TO 1000
213 C
214 C Direct syntax match fails, try direct as indirect.
215 C
216           IF((OBJ2.NE.0).OR.(OBJ1.EQ.0).OR.
217           &         (.NOT.SYNEQL(PREP1,OBJ1,IOBJ,IFL1,IFL2)))
218           &         GO TO 500                     ! try direct as indirect.
219           OBJ2=OBJ1                               ! move direct to indirect.
220           PREP2=PREP1
221           OBJ1=0                                            ! no direct.
222           PREP1=0
223           DRIVE=J                                           ! save as driver.
224           GO TO 3100                                        ! go try to get direct obj
225 C
226 C Direct syntax match and direct-as-indirect fail.
227 C
228 500       IF(OBJ1.NE.0) GO TO 3000                ! if direct obj, on to next.
229           GO TO 2500                                        ! go do defaults.
230 C
231 C Direct syntax match succeeded, try indirect.
232 C
233 1000      IF(DFLAG) WRITE(OUTCH,1010) J,OBJ2,PREP2,IOBJ,IFL1,IFL2
234 1010      FORMAT(' SYNMCH IOBJ INPUTS TO SYNEQL- ',6I7)
235 C old     SPREP=IOBJ.AND.VPMASK                             ! save expected prep.
236           SPREP=AND(IOBJ,VPMASK)                            ! save expected prep.
237           IF(SYNEQL(PREP2,OBJ2,IOBJ,IFL1,IFL2)) GO TO 6000
238 C
239 C Indirect syntax match fails.
240 C
241           IF(OBJ2.NE.0) GO TO 3000                ! if ind object, on to next.
242 2500      IF((QPREP.EQ.0).OR.(QPREP.EQ.SPREP)) DFORCE=J      ! if prep mch.
243 C old     IF((VFLAG.AND.SDRIV).NE.0) DRIVE=J      ! if driver, record.
244           IF(AND(VFLAG,SDRIV).NE.0) DRIVE=J       ! if driver, record.
245           IF(DFLAG) WRITE(OUTCH,2510) J,QPREP,SPREP,DFORCE,DRIVE
246 2510      FORMAT(' SYNMCH DEFAULT SYNTAXES- ',5I7)
247 3000      J=NEWJ
248           IF(J.LT.LIMIT) GO TO 200                ! more to do?
249 C page
250 C SYNMCH, PAGE 3
251 C
252 C Match has failed.  If default syntax exists, try to snarf
253 C orphans or GWIMs, or make new orphans.
254 C
255 3100      IF(DFLAG) WRITE(OUTCH,3110) DRIVE,DFORCE,OBJ1,OBJ2
256 3110      FORMAT(' SYNMCH, DRIVE=',2I6,'  OBJECTS =',2I6)
257           IF(DRIVE.EQ.0) DRIVE=DFORCE             ! no driver? use force.
258           IF(DRIVE.EQ.0) GO TO 10000              ! any driver?
259           CALL UNPACK(DRIVE,DFORCE)               ! unpack dflt syntax.
260           LCWORD=LCIFY(FINDVB(DRIVE),2)           ! get verb string.
261 C old     LCPRP1=' '//LCIFY(FINDPR(DOBJ.AND.VPMASK),1)//' '
262           LCPRP1=' '//LCIFY(FINDPR(INT(AND(DOBJ,VPMASK))),1)//' '
263 C old     LCPRP2=' '//LCIFY(FINDPR(IOBJ.AND.VPMASK),1)//' '
264           LCPRP2=' '//LCIFY(FINDPR(INT(AND(IOBJ,VPMASK))),1)//' '
265 C
266 C Try to fill direct object slot if that was the problem.
267 C
268 C old     IF(((VFLAG.AND.SDIR).EQ.0).OR.(OBJ1.NE.0)) GO TO 4000
269           IF((AND(VFLAG,SDIR).EQ.0).OR.(OBJ1.NE.0)) GO TO 4000
270 C old     OBJ1=OFLAG.AND.OOBJ1
271           OBJ1=AND(OFLAG,OOBJ1)
272           IF(OBJ1.EQ.0) GO TO 3500                ! any orphan?
273           IF(SYNEQL(OPREP1,OBJ1,DOBJ,DFL1,DFL2)) GO TO 4000
274 C
275 C Orphan fails, try GWIM.
276 C
277 3500      OBJ1=GWIM(DOBJ,DFW1,DFW2)               ! get gwim.
278           IF(DFLAG) WRITE(OUTCH,3530) OBJ1
279 3530      FORMAT(' SYNMCH- DO GWIM= ',I6)
280           IF(OBJ1.GT.0) GO TO 4000                ! test result.
281 C old     CALL ORPHAN(-1,ACT,0,0,DOBJ.AND.VPMASK,' ',PREP2,OBJ2)      ! fails, orphan.
282           CALL ORPHAN(-1,ACT,0,0,INT(AND(DOBJ,VPMASK)),' ',PREP2,OBJ2)          ! fails, orphan.
283           BUNSUB=0                                ! no EXCEPT clause.
284           IF(OBJ2.GT.0) GO TO 3800                ! if iobj, go print.
285 3700      WRITE(OUTCH,3750)
286           &         LCWORD(1:NBLEN(LCWORD)),LCPRP1(1:NBLEN(LCPRP1)+1)
287 3750      FORMAT(1X,A,A,'what?')
288           TELFLG=.TRUE.
289           RETURN
290 C
291 3800      X=IABS(ODESC2(OBJ2))                              ! get iobj description.
292 C old     READ(DBCH,REC=X) J,STR                            ! read data base.
293           call dtext_$read (x, j, str)                      ! read data base
294           CALL TXCRYP(X,STR)                      ! decrypt the line.
295           WRITE(OUTCH,3880) LCWORD(1:NBLEN(LCWORD)),
296           &         LCPRP1(1:NBLEN(LCPRP1)+1),
297           &         LCPRP2(1:NBLEN(LCPRP2)+1),STR(1:NBLEN(STR))
298 3880      FORMAT(1X,A,A,'what',A,'the ',A,'?')
299           TELFLG=.TRUE.
300           RETURN
301 C page
302 C SYNMCH, PAGE 4
303 C
304 C Try to fill indirect object slot if that was the problem.
305 C
306 C old 4000          IF(((VFLAG.AND.SIND).EQ.0).OR.(OBJ2.NE.0)) GO TO 6000
307 4000      IF((AND(VFLAG,SIND).EQ.0).OR.(OBJ2.NE.0)) GO TO 6000
308 C old     OBJ2=OFLAG.AND.OOBJ2
309           OBJ2=AND(OFLAG,OOBJ2)
310           IF(OBJ2.EQ.0) GO TO 4500                ! any orphan?
311           IF(SYNEQL(OPREP2,OBJ2,IOBJ,IFL1,IFL2)) GO TO 6000
312 C
313 C Orphan fails, try GWIM.
314 C
315 4500      OBJ2=GWIM(IOBJ,IFW1,IFW2)               ! gwim.
316           IF(DFLAG) WRITE(OUTCH,4550) OBJ2
317 4550      FORMAT(' SYNMCH- IO GWIM= ',I6)
318           IF(OBJ2.GT.0) GO TO 6000
319           IF(OBJ1.GT.0) GO TO 4600                ! if dobj, go print.
320 C old     CALL ORPHAN(-1,ACT,OFLAG.AND.OPREP1,
321 C old     &         OFLAG.AND.OOBJ1,IOBJ.AND.VPMASK,' ',0,0)
322           CALL ORPHAN(-1,ACT,INT(AND(OFLAG,OPREP1)),
323           &         INT(AND(OFLAG,OOBJ1)),INT(AND(IOBJ,VPMASK)),' ',0,0)
324           GO TO 3700
325 C
326 C Error with direct object available.
327 C
328 C old 4600          CALL ORPHAN(-1,ACT,PREP1,OBJ1,IOBJ.AND.VPMASK,' ',0,0)
329 4600      CALL ORPHAN(-1,ACT,PREP1,OBJ1,INT(AND(IOBJ,VPMASK)),' ',0,0)
330           X=IABS(ODESC2(OBJ1))                              ! get dobj description.
331 C old     READ(DBCH,REC=X) J,STR                            ! read data base.
332           call dtext_$read (x, j, str)                      ! read data base
333           CALL TXCRYP(X,STR)                      ! decrypt the line.
334           WRITE(OUTCH,4660) LCWORD(1:NBLEN(LCWORD)),
335           &         LCPRP1(1:NBLEN(LCPRP1)+1),
336           &         STR(1:NBLEN(STR)),LCPRP2(1:NBLEN(LCPRP2)+1)
337 4660      FORMAT(1X,A,A,'the ',A,A,'what?')
338           TELFLG=.TRUE.
339           RETURN
340 C
341 C Total chomp.
342 C
343 10000     CALL RSPEAK(601)                        ! cant do anything.
344           BUNSUB=0
345           RETURN
346 C page
347 C SYNMCH, PAGE 5
348 C
349 C Now try to take individual objects and
350 C in general clean up the parse vector.
351 C
352 C old 6000          IF((VFLAG.AND.SFLIP).EQ.0) GO TO 7000   ! flip?
353 6000      IF(AND(VFLAG,SFLIP).EQ.0) GO TO 7000    ! flip?
354           J=OBJ1                                            ! yes.
355           OBJ1=OBJ2
356           OBJ2=J
357 C
358 C old 7000          PRSA=VFLAG.AND.SVMASK                             ! get verb.
359 7000      PRSA=AND(VFLAG,SVMASK)                            ! get verb.
360           PRSO=OBJ1                               ! get dir obj.
361           PRSI=OBJ2                               ! get ind obj.
362           IF(.NOT.TAKEIT(PRSO,DOBJ)) RETURN       ! try take.
363           IF(.NOT.TAKEIT(PRSI,IOBJ)) RETURN       ! try take.
364           SYNMCH=.TRUE.
365           IF(DFLAG) WRITE(OUTCH,7050) SYNMCH,PRSA,PRSO,PRSI,ACT,OBJ1,OBJ2
366 7050      FORMAT(' SYNMCH- RESULTS ',L1,6I7)
367           RETURN
368 C
369           END
370 C page
371 C UNPACK- Unpack syntax specification, adv pointer
372 C
373 C Declarations
374 C
375           SUBROUTINE UNPACK(OLDJ,J)
376           IMPLICIT INTEGER(A-Z)
377           %include dparam
378 C
379           DO 10 I=1,11                                      ! clear syntax.
380             SYN(I)=0
381 10        CONTINUE
382 C
383           VFLAG=VVOC(OLDJ)
384           J=OLDJ+1
385 C old     IF((VFLAG.AND.SDIR).EQ.0) RETURN        ! dir object?
386           IF(AND(VFLAG,SDIR).EQ.0) RETURN         ! dir object?
387           DFL1=-1                                           ! assume std.
388           DFL2=-1
389 C old     IF((VFLAG.AND.SSTD).EQ.0) GO TO 100     ! std object?
390           IF(AND(VFLAG,SSTD).EQ.0) GO TO 100      ! std object?
391           DFW1=-1                                           ! yes.
392           DFW2=-1
393           DOBJ=VABIT+VRBIT+VFBIT
394           GO TO 200
395 C
396 100       DOBJ=VVOC(J)                                      ! not std.
397           DFW1=VVOC(J+1)
398           DFW2=VVOC(J+2)
399           J=J+3
400 C old     IF((DOBJ.AND.VEBIT).EQ.0) GO TO 200     ! vbit = vfwim?
401           IF(AND(DOBJ,VEBIT).EQ.0) GO TO 200      ! vbit = vfwim?
402           DFL1=DFW1                               ! yes.
403           DFL2=DFW2
404 C
405 C old 200 IF((VFLAG.AND.SIND).EQ.0) RETURN        ! ind object?
406 200       IF(AND(VFLAG,SIND).EQ.0) RETURN         ! ind object?
407           IFL1=-1                                           ! assume std.
408           IFL2=-1
409           IOBJ=VVOC(J)
410           IFW1=VVOC(J+1)
411           IFW2=VVOC(J+2)
412           J=J+3
413 C old     IF((IOBJ.AND.VEBIT).EQ.0) RETURN        ! vbit = vfwim?
414           IF(AND(IOBJ,VEBIT).EQ.0) RETURN         ! vbit = vfwim?
415           IFL1=IFW1                               ! yes.
416           IFL2=IFW2
417           RETURN
418 C
419           END
420 C page
421 C SYNEQL- Test for syntax equality
422 C
423 C Declarations
424 C
425           LOGICAL FUNCTION SYNEQL(PREP,OBJ,SPREP,SFL1,SFL2)
426           IMPLICIT INTEGER(A-Z)
427           %include dparam
428 C
429           IF(OBJ.EQ.0) GO TO 100                            ! any object?
430 C old     SYNEQL=(PREP.EQ.(SPREP.AND.VPMASK)).AND.
431 C old     &         (((SFL1.AND.OFLAG1(OBJ)).OR.
432 C old     &           (SFL2.AND.OFLAG2(OBJ))).NE.0)
433           SYNEQL=(PREP.EQ.AND(SPREP,VPMASK)).AND.
434           &         (OR(AND(SFL1,OFLAG1(OBJ)),
435           &           AND(SFL2,OFLAG2(OBJ))).NE.0)
436           RETURN
437 C
438 100       SYNEQL=(PREP.EQ.0).AND.(SFL1.EQ.0).AND.(SFL2.EQ.0)
439           RETURN
440 C
441           END