home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / FORTRAN / SUPERT87.ZIP / SCAN.FOR < prev    next >
Encoding:
Text File  |  1986-12-15  |  20.8 KB  |  281 lines

  1.       SUBROUTINE SCAN                                                   4227
  2.  
  3. c    include 'tcommon.for'
  4.     %include tcommon.for
  5.  
  6.       character*8 JCOND(4)
  7.       DIMENSION IBAD(100,2)
  8.     character*4 NUMS(9) ,ILET(2),JPQ(10,10)
  9.     data nums/'1','2','3','4','5','6','7','8','9'/
  10.       data ILET/'+','-'/
  11.       data jcond/'GREEN','YELLOW','ORANGE',' RED'/
  12.  
  13.       DO 100   I=1,10                                                   4265
  14.       DO 100    J=1,10                                                  4266
  15.       JPQ(I,J)=LETR(9)                                                  4267
  16. 100   IPQ(I,J)=LETR(8)                                                  4268
  17.       IF(IHERE.EQ.2)GO TO 1001                                          4269
  18.       IF(IDMG(6).GT.0)GO TO 105                                         4270
  19. C     CALL CPAGE                                                        4271
  20.       WRITE(*,1)ICE,JCE                                                 4272
  21. 1     FORMAT(' SHORT RANGE SENSOR SCAN FOR QUADRANT ',I2,',',I2 )       4273
  22. C     ...CALCULATE CURRENT RATING AND TIME RATIO.                       4274
  23.       R=LEFTK+LEFTR                                                     4275
  24.       S=NKL+MROM                                                        4276
  25.       IR=(S-R)/S*1000.                                                  4277
  26.       TRATE=XTIME/R                                                     4278
  27.       KP=1                                                              4279
  28.       IPLUSM=(TRATE-RTIME)/RTIME*100.                                   4280
  29.       IF(IPLUSM.LT.0)KP=2                                               4281
  30.       IPLUSM=IABS(IPLUSM)                                               4282
  31.       WRITE(*,21)                                                       4283
  32. 105   IF(IHERE.GE.1)GO TO 1000                                          4284
  33. C     ...RESET ARRAYS TO LOSE THINGS LEFT BEHIND.                       4285
  34. 9876  ETR(1)=0.                                                         4286
  35.       EFP(1)=0.                                                         4287
  36.       EFT(1,1)=0.                                                       4288
  37.       ITORP=ITORP+ITFIRE                                                4289
  38.       ITFIRE=0                                                          4290
  39.       DO 2017 J=1,18                                                    4291
  40.       ITKL(J)=0                                                         4292
  41. 2017  JTKL(J)=0                                                         4293
  42.       ACTPJM=PJAM                                                       4294
  43.       IF(ISTSH.EQ.0)GO TO 9873                                          4295
  44.       ISTSH=0                                                           4296
  45.       ISHD=0                                                            4297
  46.       ISHNUM=ISHNUM-1                                                   4298
  47. 9873  DO 9872 J=1,9                                                     4299
  48. 9872  IFNDS(J)=0                                                        4300
  49.       DO 9889 J=1,10                                                    4301
  50. 9889  ISHSTR(J)=0                                                       4302
  51.       DO 9875 J=2,20                                                    4303
  52.       ICNTL(J)=0                                                        4304
  53. 9875  ITRMEN(J)=0                                                       4305
  54.       IF(ISTAT.NE.0)ISTAT=9999                                          4306
  55.       DO 9874 J=1,30                                                    4307
  56. 9874  TORPS(J,1)=0.                                                     4308
  57.       IF(ICLOAK.LT.0.AND.ION.EQ.1)GO TO 4646                            4309
  58.       IX=XQE+.5                                                         4310
  59.       IY=YQE+.5                                                         4311
  60.       IPQ(IX,IY)=LETR(2)                                                4312
  61. 4646  IF(IDMG(6).EQ.0.OR.IDMG(7).EQ.0) IGAL(ICE,JCE)=JGAL(ICE,JCE)      4313
  62. C     ...GET CONTENTS FROM JGAL                                         4314
  63.       ICNTNT=JGAL(ICE,JCE)                                              4315
  64.       NROM=ICNTNT/1000                                                  4316
  65.       KLNGNS=ICNTNT/100-NROM*10                                         4317
  66.       IBASE=(ICNTNT-ICNTNT/100*100)/10                                  4318
  67.       NSTARS=ICNTNT-ICNTNT/10*10                                        4319
  68.       NTORPS=0                                                          4320
  69.       IGH=0                                                             4321
  70.       IF(RAN(IZZ).LE.PRGH)IGH=1                                         4322
  71.       IF(ICLOAK.EQ.2)ICLOAK=1                                           4323
  72.       NBAD=0                                                            4324
  73. C     ...EVERYTHING STARTS ON INTEGRAL COORDINATES                      4325
  74. C     ...FLAG THOSE POINTS TOO NEAR TO E TO PUT OBJECTS.                4326
  75.       DO 200    I=1,10                                                  4327
  76.       DO 200    J=1,10                                                  4328
  77.       DIST=(I-XQE)**2+(J-YQE)**2                                        4329
  78.       IF(SQRT(DIST).GT.ESDIST)GO TO 200                                 4330
  79.       NBAD=NBAD+1                                                       4331
  80.       IBAD(NBAD,1)=I                                                    4332
  81.       IBAD(NBAD,2)=J                                                    4333
  82. 200   CONTINUE                                                          4334
  83.       IHOLE=0                                                           4335
  84.       IF(IBL(ICE,JCE).EQ.0)GO TO 9877                                   4336
  85.       CALL PUTIN(IHOLE,JHOLE,NBAD,IBAD,LETR(9))                         4337
  86. 9877  ISTORM=0                                                          4338
  87.       IF(LEVEL.NE.3)GO TO 9879                                          4339
  88.       PSTORM=(NSTARS**3)/1000.                                          4340
  89.       IF(RAN(IZZ).GT.PSTORM)GO TO 9879                                  4341
  90.       CALL PUTIN(ISTORM,JSTORM,NBAD,IBAD,LETR(8))                       4342
  91. 6534  FORMAT(' WARNING - NUCLEONIC DISTURBANCES SIGHTED IN QUADRANT.')  4343
  92. C     ...PUT THINGS IN. NO TWO OBJECTS IN SAME PLACE.                   4344
  93. 9879  IF(KLNGNS.EQ.0)GO TO 300                                          4345
  94.       DO 110    I=1,KLNGNS                                              4346
  95.       CALL PUTIN(IX,IY,NBAD,IBAD,LETR(3))                               4347
  96.       JPQ(IX,IY)=NUMS(I)                                                4348
  97.       XKL(I,1)=IX                                                       4349
  98.       XKL(I,2)=IY                                                       4350
  99.       XKL(I,3)=0.                                                       4351
  100.       XKL(I,4)=0.                                                       4352
  101.       XKL(I,5)=0.                                                       4353
  102.       XKL(I,6)=0.                                                       4354
  103.       IX=RAN(IZZ)*XKFPST+NTSTPS+1                                       4355
  104.       XKL(I,8)=IX                                                       4356
  105.       XKL(I,7)=0.                                                       4357
  106. C     ...RANDOM K CREW STRENGTH AROUND MEAN.                            4358
  107.       IX=CREWK   +SIGN(RAN(IZZ)*25.,.5-RAN(IZZ))                        4359
  108.       XKL(I,9)=IX                                                       4360
  109. 110   CONTINUE                                                          4361
  110. 300   IF(NROM.EQ.0)GO TO 150                                            4362
  111.       JUMP=1                                                            4363
  112.       IF(ICLOAK.EQ.1.AND.RAN(IZZ).LE.PRCLDN)JUMP=2                      4364
  113.       DO 310    I=1,NROM                                                4365
  114.       CALL PUTIN(IX,IY,NBAD,IBAD,LETR(4))                               4366
  115.       IF(I.NE.1)GO TO 33305                                             4367
  116.       IF(JUMP.EQ.2)GO TO 33307                                          4368
  117. 33305 SCR=SCREWR                                                        4369
  118.       JPQ(IX,IY)=NUMS(I)                                                4370
  119.       GO TO 33308                                                       4371
  120. 33307 SCR=SCREWR*1.33                                                   4372
  121.       IPQ(IX,IY)=LETR(8)                                                4373
  122.       ICLOAK=2                                                          4374
  123. 33308 XROM(I,1)=IX                                                      4375
  124.       XROM(I,2)=IY                                                      4376
  125.       XROM(I,3)=0.                                                      4377
  126. C     ...RANDOM R CREW STRENGTH AROUND MEAN.                            4378
  127.       IX=SCR+SIGN(RAN(IZZ)*35.,.5-RAN(IZZ))                             4379
  128.       CREWR(I)=IX                                                       4380
  129.       IX=RAN(IZZ)*XRFTS+NTSTPS                                          4381
  130.       XROM(I,4)=IX                                                      4382
  131. 310   CONTINUE                                                          4383
  132. 150   IF(NSTARS.EQ.0)GO TO 170                                          4384
  133.       DO 160 I=1,NSTARS                                                 4385
  134.       CALL PUTIN(IX,IY,NBAD,IBAD,LETR(1))                               4386
  135.       JPQ(IX,IY)=NUMS(I)                                                4387
  136.       STARS(I,1)=IX                                                     4388
  137.       STARS(I,2)=IY                                                     4389
  138.       RAD(I)=RAN(IZZ)*.75+.25                                           4390
  139. 160   CONTINUE                                                          4391
  140. 170   IF(IGH.EQ.0)GO TO 180                                             4392
  141.       CALL PUTIN(IX,IY,NBAD,IBAD,LETR(5))                               4393
  142.       GHOST(1)=IX                                                       4394
  143.       GHOST(2)=IY                                                       4395
  144.       GHOST(3)=0.                                                       4396
  145.       GHOST(4)=RAN(IZZ)*GHVMX                                           4397
  146.       GHOST(6)=GHOST(4)                                                 4398
  147.       GHOST(5)=RAN(IZZ)*360.                                            4399
  148.       GHOST(7)=GHOST(5)                                                 4400
  149.       GHOST(8)=0.                                                       4401
  150.       GHOST(9)=0.                                                       4402
  151.       GHOST(10)=0.                                                      4403
  152.       GHOST(11)=RAN(IZZ)*GHEMX                                          4404
  153.       IX=RAN(IZZ)*GHTMX+1.                                              4405
  154.       GHOST(12)=IX                                                      4406
  155.       GHOST(13)=0.                                                      4407
  156.       IGHPH=1                                                           4408
  157.       IF(RAN(IZZ).LE.PPHASD)IGHPH=0                                     4409
  158.       IGHTR=1                                                           4410
  159.       IF(RAN(IZZ).LE.PTORPD)IGHTR=0                                     4411
  160.       IGHDR=1                                                           4412
  161.       IF(RAN(IZZ).LE.PDRVD)IGHDR=0                                      4413
  162.       IGHDE=1                                                           4414
  163.       IF(RAN(IZZ).LE.PDEFD)IGHDE=0                                      4415
  164. 180   IF(IBASE.EQ.0)GO TO 1900                                          4416
  165.       CALL PUTIN(IX,IY,NBAD,IBAD,LETR(6))                               4417
  166.       BASE(1)=IX                                                        4418
  167.       BASE(2)=IY                                                        4419
  168.       MAXRQ=0                                                           4420
  169.       IBMENR=RAN(IZZ)*SBMNR                                             4421
  170.       GO TO 1900                                                        4422
  171. 1000  IF(IDMG(6).GT.0)RETURN                                            4423
  172. C     ...ALREADY HERE. PUT THINGS IN THEIR PLACE ACCORDING TO PROPER    4424
  173. C     ...HIERARCHY.                                                     4425
  174. 1001  IF(ISTSH.NE.99)GO TO 1010                                         4426
  175.       IX=SHX+.5                                                         4427
  176.       IY=SHY+.5                                                         4428
  177.       IPQ(IX,IY)=LETR(12)                                               4429
  178. C     ...TO SET UP IPQ FOR PRINTING QUAD IF ALREADY GENERATED.          4430
  179. 1010  IF(NTORPS.EQ.0)GO TO 1100                                         4431
  180.       DO 1050      I=1,NTORPS                                           4432
  181.       IF(TORPS(I,1).EQ.0.)GO TO 1050                                    4433
  182.       IX=TORPS(I,1)+.5                                                  4434
  183.       IY=TORPS(I,2)+.5                                                  4435
  184.       IPQ(IX,IY)=LETR(7)                                                4436
  185. 1050  CONTINUE                                                          4437
  186.       GO TO 1100                                                        4438
  187. 1300  IF(IBASE.EQ.0)GOTO 1200                                           4439
  188.       IX=BASE(1)                                                        4440
  189.       IY=BASE(2)                                                        4441
  190.       IPQ(IX,IY)=LETR(6)                                                4442
  191. 1200  IF(IGH.EQ.0)GO TO 1550                                            4443
  192.       IX=GHOST(1)   +.5                                                 4444
  193.       IY=GHOST(2)   +.5                                                 4445
  194.       IPQ(IX,IY)=LETR(5)                                                4446
  195.       GO TO 1550                                                        4447
  196. 1500  IF(NROM.EQ.0)GOTO 1400                                            4448
  197.       DO 1350    I=1,NROM                                               4449
  198.       IF(XROM(I,1).EQ.0.)GO TO 1350                                     4450
  199.       IF(ICLOAK.EQ.2.AND.IHERE.NE.2.AND.I.EQ.1)GO TO 1350               4451
  200.       IX=XROM(I,1)                                                      4452
  201.       IY=XROM(I,2)                                                      4453
  202.       IPQ(IX,IY)=LETR(4)                                                4454
  203.       JPQ(IX,IY)=NUMS(I)                                                4455
  204. 1350  CONTINUE                                                          4456
  205. 1400  IF(KLNGNS.EQ.0)GO TO 1900                                         4457
  206.       DO 1450  I=1,KLNGNS                                               4458
  207.       IF(XKL(I,1).EQ.0.)GO TO 1450                                      4459
  208.       IX=XKL(I,1)+.5                                                    4460
  209.       IY=XKL(I,2)+.5                                                    4461
  210.       IPQ(IX,IY)=LETR(3)                                                4462
  211.       JPQ(IX,IY)=NUMS(I)                                                4463
  212. 1450  CONTINUE                                                          4464
  213.       GO TO 1900                                                        4465
  214. 1100  IX=XQE+.5                                                         4466
  215.       IY=YQE+.5                                                         4467
  216.       IF(ICLOAK.LT.0.AND.ION.EQ.1)GO TO 1300                            4468
  217.       IPQ(IX,IY)=LETR(2)                                                4469
  218.       GO TO 1300                                                        4470
  219. 1550  IF(NSTARS.EQ.0)GO TO 1500                                         4471
  220.       DO 1600 I=1,NSTARS                                                4472
  221.       IF(STARS(I,1).EQ.0.)GO TO 1600                                    4473
  222.       IX=STARS(I,1)                                                     4474
  223.       IY=STARS(I,2)                                                     4475
  224.       IPQ(IX,IY)=LETR(1)                                                4476
  225.       JPQ(IX,IY)=NUMS(I)                                                4477
  226. 1600  CONTINUE                                                          4478
  227.       GO TO 1500                                                        4479
  228. C     ...PRINTOUT AREA.                                                 4480
  229. 1900  ICOND=1                                                           4481
  230.       IF(IDMG(6).GT.0)RETURN                                            4482
  231.       IF(IHERE.EQ.2)RETURN                                              4483
  232.       IGAL(ICE,JCE)=JGAL(ICE,JCE)                                       4484
  233.       IF(ENERGY.LE.500.)ICOND=2                                         4485
  234.       IF(NROM+KLNGNS.EQ.0)GO TO 1950                                    4486
  235.       IF(KLNGNS.EQ.0)GO TO 1920                                         4487
  236.       DO 1910 J=1,KLNGNS                                                4488
  237.       IF(XKL(J,1).EQ.0..OR.ICNTL(J+1).EQ.1)GO TO 1910                   4489
  238.       ICOND=3                                                           4490
  239.       GO TO 1950                                                        4491
  240. 1910  CONTINUE                                                          4492
  241. 1920  IF(NROM.EQ.0)GO TO 1950                                           4493
  242.       DO 1930 J=1,NROM                                                  4494
  243.       IF(XROM(J,1).EQ.0..OR.ICNTL(J+10).EQ.1)GO TO 1930                 4495
  244.       ICOND=3                                                           4496
  245.       GO TO 1950                                                        4497
  246. 1930  CONTINUE                                                          4498
  247. 1950  IF(IHOLE.EQ.0)GO TO 1975                                          4499
  248.       IPQ(IHOLE,JHOLE)=LETR(9)                                          4500
  249. 1975  IF(ICOND.EQ.3.AND.DEFL.EQ.0.)ICOND=4                              4501
  250.       WRITE(*,11)(IPQ(I,10),JPQ(I,10),I=1,10),SDATE,XTIME               4502
  251.       WRITE(*,12)(IPQ(I,9),JPQ(I,9),I=1,10),JCOND(ICOND)                4503
  252.       WRITE(*,13)(IPQ(I,8),JPQ(I,8),I=1,10),XQE,YQE                     4504
  253.       WRITE(*,14)(IPQ(I,7),JPQ(I,7),I=1,10),ENERGY                      4505
  254.       WRITE(*,15)(IPQ(I,6),JPQ(I,6),I=1,10) ,ITORP                      4506
  255.       WRITE(*,16)(IPQ(I,5),JPQ(I,5),I=1,10),LEFTK   ,LEFTR              4507
  256.       WRITE(*,17)(IPQ(I,4),JPQ(I,4),I=1,10),MEN,ITRMEN(1)               4508
  257.       WRITE(*,18)(IPQ(I,3),JPQ(I,3),I=1,10),DEFL                        4509
  258.       WRITE(*,19)(IPQ(I,2),JPQ(I,2),I=1,10),PDEG,PSP                    4510
  259.       WRITE(*,20)(IPQ(I,1),JPQ(I,1),I=1,10),IR,TRATE,ILET(KP),IPLUSM    4511
  260. 11    FORMAT(1X,20A1,5X,'STARDATE: ',F7.2,'  LEFT: ',F6.2)              4512
  261. 12    FORMAT(1X,20A1,5X,'CONDITION: ',A10)                              4513
  262. 13    FORMAT(1X,20A1,5X,'SHIP POSITION: ',F4.1,',',F4.1)                4514
  263. 14    FORMAT(1X,20A1,5X,'ENERGY: ',F8.2)                                4515
  264. 15    FORMAT(1X,20A1,5X,'TORPEDOS: ',I2)                                4516
  265. 16    FORMAT(1X,20A1,5X,'ENEMY LEFT(K,R): ',I3,',',I3)                  4517
  266. 17    FORMAT(1X,20A1,5X,'CREW: ',I4,' TROOPS: ',I4)                     4518
  267. 18    FORMAT(1X,20A1,5X,'DEFLECTOR POWER: ',F8.2)                       4519
  268. 19    FORMAT(1X,20A1,5X,'BEARING: ',F4.0,' SPEED: ',F5.3)               4520
  269. 20    FORMAT(1X,20A1,5X,'RATING: ',I3,' TIME RATIO: ',F4.2,'(',A1,I3,'%)4521
  270.      1')                                                                4522
  271.       WRITE(*,21)                                                       4523
  272. 21    FORMAT(' ------------------------------')                         4524
  273.       IF(KLNGNS+NROM.LT.9.OR.IHERE.NE.0)GO TO 99998                     4525
  274.       WRITE(*,65310)                                                    4526
  275. 65310 FORMAT(' WELCOME TO THE CONVENTION! HEH, HEH, HEH...')            4527
  276. 99998 IF(ISTORM.EQ.0.OR.IHERE.NE.0)GO TO 99999                          4528
  277.       WRITE(*,6534)                                                     4529
  278. 99999 IF(IHERE.EQ.0)IHERE=1                                             4530
  279.       RETURN                                                            4531
  280.       END                                                               4532
  281.