C                             PROTEIN DATA BANK SOURCE CODE     DGPLOT  DGPLOT21
C                             AUTHOR. E.SWANSON,F.BERNSTEIN             DGPLOT22
C                             ENTRY DATE. 10/78   SUPPORTED             DGPLOT23
C                             LAST REVISION.  1/83                      DGPLOT31
C                             PURPOSE. DIAGONAL PLOTS ON PRINTER        DGPLOT25
C                             LANGUAGE. FORTRAN IV                      DGPLOT26
C                                                                       DGPLOT27
C                                                                       DGPLOT28
C                                                                       DGPLOT29
C                                                                       DGPLOT10
      PROGRAM DGPLOT(INPUT,OUTPUT,TAPE1,TAPE2,TAPE5=INPUT,TAPE6=OUTPUT) DGPLOT 3
C                                                                       DGPLOT 4
C     THIS PROGRAM WAS WRITTEN UNDER NATIONAL INSTITUTES OF             DGPLOT 5
C     HEALTH GRANT GM-13401 BY                                          DGPLOT 6
C                                                                       DGPLOT 7
C        ERIC SWANSON                                                   DGPLOT 8
C        DEPARTMENT OF BIOCHEMISTRY                                     DGPLOT 9
C        UNIVERSITY OF WASHINGTON                                       DGPLOT10
C        SEATTLE, WASHINGTON 98195 USA                                  DGPLOT11
C                                                                       DGPLOT12
C     IT WAS REWRITTEN IN ITS PRESENT FORM BY                           DGPLOT13
C                                                                       DGPLOT14
C        FRANCES C. BERNSTEIN                                           DGPLOT15
C        PROTEIN DATA BANK                                              DGPLOT16
C        CHEMISTRY DEPARTMENT                                           DGPLOT17
C        BROOKHAVEN NATIONAL LABORATORY                                 DGPLOT18
C        UPTON, NEW YORK 11973 USA                                      DGPLOT19
C                                                                       DGPLOT20
C     THE PROTEIN DATA BANK IS FUNDED BY THE NATIONAL SCIENCE           DGPLOT21
C     FOUNDATION UNDER GRANT PCM 77-16811.                              DGPLOT22
C                                                                       DGPLOT23
C     PLEASE NOTIFY THE PROTEIN DATA BANK OF ANY PROBLEMS IN USING THIS DGPLOT24
C     PROGRAM.                                                          DGPLOT25
C                                                                       DGPLOT26
C                                                                       DGPLOT27
C     A. PURPOSE                                                        DGPLOT28
C                                                                       DGPLOT29
C     TO PRODUCE PRINTED DIAGONAL PLOTS.  PROGRAM DGPLOT WILL READ      DGPLOT30
C     PROTEIN DATA BANK ENTRIES AND PRODUCE DIAGONAL PLOTS ON THE       DGPLOT31
C     SYSTEM OUTPUT FILE.                                               DGPLOT32
C                                                                       DGPLOT33
C                                                                       DGPLOT34
C     B. INPUT/OUTPUT FILES                                             DGPLOT35
C                                                                       DGPLOT36
C     SYMBOLIC     LOGICAL   DESCRIPTION                                DGPLOT37
C     DESIGNATION  UNIT                                                 DGPLOT38
C                                                                       DGPLOT39
C     INP          TAPE5     SYSTEM INPUT FILE                          DGPLOT40
C     IOUT         TAPE6     SYSTEM OUTPUT FILE TO BE PRINTED           DGPLOT41
C     IDATA        TAPE1     PROTEIN DATA BANK ENTRIES TO BE PROCESSED  DGPLOT42
C     ITEMP        TAPE2     SCRATCH FILE IF ENCODE/DECODE CANNOT BE    DGPLOT43
C                            USED                                       DGPLOT44
C                                                                       DGPLOT45
C                                                                       DGPLOT46
C     C. INPUT PARAMETERS                                               DGPLOT47
C                                                                       DGPLOT48
C     DGPLOT READS ONE INPUT PARAMETER RECORD FROM THE INPUT FILE (INP).DGPLOT49
C     THIS IS FOLLOWED BY ONE TITLE RECORD FOR EACH PROTEIN DATA BANK   DGPLOT50
C     ENTRY TO BE PROCESSED.                                            DGPLOT51
C                                                                       DGPLOT52
C     INPUT PARAMETER RECORD    FORMAT(A4,1X,I5)                        DGPLOT53
C                                                                       DGPLOT54
C        COLS. 1-4. IDX.  NAME OF ATOMS TO BE USED FOR THE DISTANCE     DGPLOT55
C                         CALCULATION.  IF BLANK, THIS IS ASSUMED TO    DGPLOT56
C                         BE * CA * (DENOTING ALPHA CARBON).  THE       DGPLOT57
C                         PROGRAM WILL CALCULATE DISTANCES BETWEEN      DGPLOT58
C                         PAIRS OF RESIDUES FOR THE PARTICULAR ATOM     DGPLOT59
C                         DEFINED BY THIS FOUR-CHARACTER STRING.        DGPLOT60
C                                                                       DGPLOT61
C        COLS. 6-10. LIMIT. MAXIMUM DISTANCE (IN ANGSTROMS) TO BE       DGPLOT62
C                         REPRESENTED ON THE PRINTED DIAGONAL PLOT.     DGPLOT63
C                         IF BLANK, LIMIT IS ASSUMED TO BE 16 ANGSTROMS.DGPLOT64
C                         AT PRESENT, PROGRAM DGPLOT CAN REPRESENT      DGPLOT65
C                         DISTANCES UP TO 36 ANGSTROMS (SEE BELOW).     DGPLOT66
C                                                                       DGPLOT67
C     TITLE RECORDS ARE REPRODUCED ON THE SYSTEM OUTPUT FILE.  THESE    DGPLOT68
C     RECORDS MAY BE BLANK.                                             DGPLOT69
C                                                                       DGPLOT70
C     THE PROGRAM WILL STOP WHEN THERE ARE NO MORE TITLE CARDS ON       DGPLOT71
C     FILE INP OR WHEN THERE ARE NO MORE PROTEIN DATA BANK ENTRIES ON   DGPLOT72
C     FILE IDATA.                                                       DGPLOT73
C                                                                       DGPLOT74
C                                                                       DGPLOT75
C     D. OUTPUT                                                         DGPLOT76
C                                                                       DGPLOT77
C     ALL OUTPUT IS PRODUCED ON THE SYSTEM OUTPUT FILE TO BE PRINTED.   DGPLOT78
C     BECAUSE THE PLOT IS PRODUCED ON THE LINE PRINTER IT IS LIMITED TO DGPLOT79
C     110 POINTS IN THE HORIZONTAL DIRECTION.  IF THERE ARE MORE THAN   DGPLOT80
C     THAT NUMBER OF POINTS (RESIDUES), THE PLOT WILL BE PRODUCED IN    DGPLOT81
C     VERTICAL STRIPS WHICH CAN BE PASTED TOGETHER.                     DGPLOT82
C                                                                       DGPLOT83
C     IF THE PRINTER CANNOT ACCOMODATE LINES OF 125 CHARACTERS          DGPLOT84
C     (INCLUDING CARRIAGE CONTROL) THE PROGRAM WILL NEED TO BE MODIFIED.DGPLOT85
C                                                                       DGPLOT86
C     EACH TER RECORD PRODUCES A ROW AND COLUMN OF + CHARACTERS IN THE  DGPLOT87
C     APPROPRIATE PLACE.                                                DGPLOT88
C                                                                       DGPLOT89
C     FOR DISTANCES LESS THAN 10 ANGSTROMS THE ACTUAL DISTANCE IS       DGPLOT90
C     PRINTED.  FOR LARGER DISTANCES THE LETTERS OF THE ALPHABET ARE    DGPLOT91
C     USED STARTING WITH A=10, B=11, ETC.  THIS IMPOSES AN ABSOLUTE     DGPLOT92
C     LIMIT OF 36 ANGSTROMS ON THE MAXIMUM DISTANCE THAT CAN BE PRINTED DGPLOT93
C     IRRESPECTIVE OF THE DISTANCE THAT WAS SPECIFIED ON THE INPUT      DGPLOT94
C     PARAMETER RECORD.  ALL THESE DISTANCES ARE ROUNDED.               DGPLOT95
C                                                                       DGPLOT96
C                                                                       DGPLOT97
C     E. MACHINE DEPENDENCIES                                           DGPLOT98
C                                                                       DGPLOT99
C     DATE AND TIME ARE CDC ROUTINES TO RETURN 10 CHARACTERS IN ONE WORDDGPLO100
C     WHICH CAN THEN BE PRINTED.                                        DGPLO101
C                                                                       DGPLO102
C     THIS PROGRAM MUST HANDLE CHARACTERS STORED IN WORDS.  AN          DGPLO103
C     ATTEMPT WAS MADE TO HAVE A LIMIT OF FOUR CHARACTERS PER WORD.     DGPLO104
C     TYPICALLY A RECORD IS READ IN 20A4 FORMAT AND IDENTIFIED.  IT IS  DGPLO105
C     SUBSEQUENTLY ENCODED INTO A LINE OF 8A10 FORMAT THAT CAN IN TURN  DGPLO106
C     BE DECODED USING THE APPROPRIATE FORMAT.  THE ARRAY *LINE* IS     DGPLO107
C     ALWAYS USED FOR THIS PURPOSE.  FOR COMPUTERS WITH ENCODE/DECODE   DGPLO108
C     CAPABILITIES ONLY THE DIMENSION OF *LINE* AND A FORMAT STATEMENT  DGPLO109
C     NEED BE CHANGED.  FOR A COMPUTER WITHOUT ENCODE/DECODE IT IS      DGPLO110
C     NECESSARY TO REMOVE THE USE OF THIS FEATURE.  IN THAT CASE        DGPLO111
C     THE RECORD CAN BE WRITTEN ON A SCRATCH FILE (ITEMP) AND REREAD.   DGPLO112
C     THE CODE TO DO THIS HAS BEEN TESTED AND IS ALWAYS PRESENT AS      DGPLO113
C     COMMENT CARDS ALONG WITH THE ENCODE/DECODE STATEMENTS.            DGPLO114
C                                                                       DGPLO115
C     ALL COMPARISONS OF WORDS CONTAINING CHARACTERS ARE DONE USING     DGPLO116
C     THE ARITHMETIC STATEMENT FUNCTION ICOMP (SEE BELOW).              DGPLO117
C                                                                       DGPLO118
C     TO RUN PROGRAM DGPLOT ON A MACHINE WITH LIMITED MEMORY IT MAY BE  DGPLO119
C     NECESSARY TO CHANGE THE DIMENSIONS OF IRSNAM, IRSNUM, IRSINS,     DGPLO120
C     IRSCHN, X, Y, Z TO A SMALLER NUMBER AND REDEFINE LIMAT TO TAKE ON DGPLO121
C     THAT SAME VALUE.  LIMAT DEFINES THE MAXIMUM NUMBER OF RESIDUES    DGPLO122
C     THAT CAN BE HANDLED BY THE PROGRAM.                               DGPLO123
C                                                                       DGPLO124
C     THE FOLLOWING VARIABLES IN THIS PROGRAM ARE USED TO STORE         DGPLO125
C     CHARACTERS AT 4 PER WORD                                          DGPLO126
C                                                                       DGPLO127
C        IALT, IBLANK, ICA, ICHAR, ID, IDX, IFMT, IHVTER, IPLUS,        DGPLO128
C        IROW, IRSCHN, IRSINS, IRSNAM, ITITLE                           DGPLO129
C                                                                       DGPLO130
C     THE FOLLOWING VARIABLES IN THIS PROGRAM ARE USED TO STORE         DGPLO131
C     CHARACTERS AT 10 PER WORD                                         DGPLO132
C                                                                       DGPLO133
C        IDAT, ITIM                                                     DGPLO134
C                                                                       DGPLO135
C                                                                       DGPLO136
C     CORRECTION. FIX CODE GIVEN IN COMMENT RECORDS. 12-MAR-79.         DGPLOT11
C                                                                       DGPLOT12
C                                                                       DGPLOT11
C     CORRECTION. INSERT COMMENT CARDS AT BEGINNING FOR USE BY          DGPLOT12
C      DIRECTORY PROGRAM. 20-SEP-79.                                    DGPLOT13
C                                                                       DGPLOT32
C     CORRECTION. INCREASE DIMENSIONS TO ALLOW FOR LARGER STRUCTURES.   DGPLOT33
C      CORRECT HANDLING OF OVERLY LARGE STRUCTURE.  DO NOT USE          DGPLOT34
C      VARIABLE ITEMP FOR TWO DIFFERENT PURPOSES.  WRITE END-OF-FILE    DGPLOT35
C     BETWEEN PLOTS.  06-JAN-83.                                        DGPLOT36
      DIMENSION IROW(110)                                               DGPLO137
      DIMENSION ITITLE(20)                                              DGPLO138
      DIMENSION ICHAR(36)                                               DGPLO139
      DIMENSION IFMT(20)                                                DGPLO140
      COMMON /FILES/ INP,IOUT,IDATA,ITEMP                               DGPLO141
      DIMENSION IRSNAM(2000),IRSNUM(2000),IRSINS(2000),IRSCHN(2000)     DGPLOT37
      DIMENSION X(2000),Y(2000),Z(2000)                                 DGPLOT38
      DATA LIMAT/2000/                                                  DGPLOT39
      DATA ICHAR/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,1HA,1HB,1HC,1HDDGPLO145
     1,1HE,1HF,1HG,1HH,1HI,1HJ,1HK,1HL,1HM,1HN,1HO,1HP,1HQ,1HR,1HS,1HT,1DGPLO146
     2HU,1HV,1HW,1HX,1HY,1HZ/                                           DGPLO147
      DATA INP/5/,IOUT/6/,IDATA/1/,ITEMP/2/                             DGPLO148
      DATA IBLANK/1H /                                                  DGPLO149
      DATA IPLUS/1H+/                                                   DGPLO150
      DATA ICA/4H CA /                                                  DGPLO151
      DATA IHVTER/3HTER/                                                DGPLO152
C                                                                       DGPLO153
C      JCODE = 0 FOR GOOD ATOM                                          DGPLO154
C            = 1 FOR TER CODE                                           DGPLO155
C            = 2 FOR END CODE                                           DGPLO156
C            = 3 FOR END-OF-FILE SENSED                                 DGPLO157
C                                                                       DGPLO158
      DATA JCODE/0/                                                     DGPLO159
C                                                                       DGPLO160
C     THIS DATA STATEMENT DEFINES THE FORMAT USED TO READ THE ATOM AND  DGPLO161
C     HETATM RECORDS FROM A PROTEIN DATA BANK ENTRY.  FOR OTHER FORMATS DGPLO162
C     IT WOULD HAVE TO BE CHANGED.                                      DGPLO163
C                                                                       DGPLO164
      DATA IFMT/4H(7X,,4HI4, ,4H1X, ,4HA4, ,4HA1, ,4HA3, ,4H1X, ,4HA1, ,DGPLO165
     14HI4  ,4H,A1,,4H3X, ,4H3F8.,4H3)  ,7*0/                           DGPLO166
C                                                                       DGPLO167
C     ICOMP IS AN ARITHMETIC STATEMENT FUNCTION USED TO COMPARE TWO     DGPLO168
C     WORDS.  THE RESULT IS ZERO FOR EQUALITY AND NON-ZERO OTHERWISE.   DGPLO169
C     ALL COMPARISONS INVOLVING CHARACTERS ARE DONE VIA ICOMP.  THIS    DGPLO170
C     FUNCTION MAY HAVE TO BE CHANGED FOR OTHER THAN CDC COMPUTERS.     DGPLO171
C                                                                       DGPLO172
      ICOMP(I,J)=I-J                                                    DGPLO173
      READ (INP,250) IDX,LIMIT                                          DGPLO174
      IF (LIMIT.LE.0) LIMIT=16                                          DGPLO175
      IF (LIMIT.GT.36) LIMIT=36                                         DGPLO176
      IF (ICOMP(IDX,IBLANK).EQ.0) IDX=ICA                               DGPLO177
   10 CONTINUE                                                          DGPLO178
      READ (INP,260) ITITLE                                             DGPLO179
C                                                                       DGPLO180
C     THE STATEMENT BELOW WILL TRANSFER CONTROL TO STATEMENT 240 IF AN  DGPLO181
C     END-OF-FILE WAS ENCOUNTERED ON THE INPUT DEVICE.  IF NO END-OF-   DGPLO182
C     FILE IS SENSED CONTROL IS ASSUMED BY STATEMENT 20.                DGPLO183
C                                                                       DGPLO184
      IF (EOF(INP)) 240,20                                              DGPLO185
   20 CONTINUE                                                          DGPLO186
      WRITE (IOUT,270)                                                  DGPLO187
C                                                                       DGPLO188
C     DATE AND TIME ARE CDC ROUTINES TO RETURN 10 CHARACTERS IN ONE     DGPLO189
C     WORD WHICH CAN THEN BE PRINTED.  THIS WILL PROBABLY HAVE TO BE    DGPLO190
C     CHANGED (OR SIMPLY DELETED) ON OTHER EQUIPMENT.                   DGPLO191
C                                                                       DGPLO192
      CALL DATE (IDAT)                                                  DGPLO193
      CALL TIME (ITIM)                                                  DGPLO194
      WRITE (IOUT,280) ITIM,IDAT                                        DGPLO195
      WRITE (IOUT,290) ITITLE                                           DGPLO196
C                                                                       DGPLO197
C     ALL ATOMS ARE STORED IN MEMORY .  OTHERWISE THIS PROGRAM WOULD BE DGPLO198
C     UNNECESSARILY COMPLICATED AND I/O BOUND.                          DGPLO199
C                                                                       DGPLO200
      I=0                                                               DGPLO201
      NTER=0                                                            DGPLO202
   30 I=I+1                                                             DGPLO203
C                                                                       DGPLO204
C     LIMAT IS THE MAXIMUM NUMBER OF RESIDUES ALLOWED.                  DGPLO205
C                                                                       DGPLO206
      IF (I.LE.LIMAT) GO TO 50                                          DGPLO207
      WRITE (IOUT,300) LIMAT                                            DGPLO208
C                                                                       DGPLO209
C     HAVE STORED MAXIMUM NUMBER OF ATOMS POSSIBLE.  THROW AWAY ANY     DGPLO210
C     EXTRAS AND MAKE SURE THAT FILE IDATA IS PROPERLY POSITIONED TO BE DGPLO211
C     ABLE TO PROCESS MORE THAN ONE PROTEIN DATA BANK ENTRY.            DGPLO212
C                                                                       DGPLO213
   40 CALL NXTLIN(JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,    DGPLOT10
     1IFMT,JCODE)                                                       DGPLOT11
      IF (JCODE.EQ.0) GO TO 40                                          DGPLO216
      IF (JCODE.EQ.1) GO TO 40                                          DGPLO217
      GO TO 80                                                          DGPLO218
   50 CONTINUE                                                          DGPLO219
C                                                                       DGPLO220
C     KEEP READING ATOMS AND SAVING THE SPECIFIED ONES                  DGPLO221
C                                                                       DGPLO222
      JCODSV=JCODE                                                      DGPLO223
      CALL NXTLIN (JUNK,ID,IALT,IRSNAM(I),IRSCHN(I),IRSNUM(I),IRSINS(I),DGPLO224
     1X(I),Y(I),Z(I),IFMT,JCODE)                                        DGPLO225
C                                                                       DGPLO226
C     IF DOUBLE END-OF-FILE SENSED ON FILE IDATA IT IS TIME TO STOP.    DGPLO227
C                                                                       DGPLO228
      IF ((JCODE.EQ.3).AND.(JCODSV.EQ.3)) GO TO 240                     DGPLO229
      IF (JCODE.EQ.0) GO TO 60                                          DGPLO230
      IF (JCODE.EQ.1) GO TO 70                                          DGPLO231
      IF (JCODSV.EQ.0) GO TO 80                                         DGPLO232
      IF (JCODSV.EQ.1) GO TO 80                                         DGPLO233
      GO TO 50                                                          DGPLO234
   60 IF (ID.EQ.IDX) GO TO 30                                           DGPLO235
      GO TO 50                                                          DGPLO236
   70 IRSNAM(I)=IHVTER                                                  DGPLO237
      NTER=NTER+1                                                       DGPLO238
      GO TO 30                                                          DGPLO239
   80 NP=I-1                                                            DGPLO240
      NAT=NP-NTER                                                       DGPLO241
      WRITE (IOUT,310) NAT,IDX,NTER                                     DGPLO242
      IF (NAT.NE.0) GO TO 90                                            DGPLO243
      WRITE (IOUT,320)                                                  DGPLO244
      ENDFILE IOUT                                                      DGPLOT12
      GO TO 10                                                          DGPLO245
   90 WRITE (IOUT,330)                                                  DGPLO246
C                                                                       DGPLO247
C     DETERMINE THE NUMBER OF VERTICAL STRIPS REQUIRED.                 DGPLO248
C                                                                       DGPLO249
      NBLK=(NP-1)/110+1                                                 DGPLO250
      DO 230 JBLK=1,NBLK                                                DGPLO251
C                                                                       DGPLO252
C     PLOT VERTICAL STRIP OF NEXT 110 ATOMS                             DGPLO253
C                                                                       DGPLO254
      JLIMLO=110*(JBLK-1)+1                                             DGPLO255
      JLIMUP=JLIMLO+109                                                 DGPLO256
      IF (JLIMUP.LE.NP) GO TO 100                                       DGPLO257
      JLIMUP=NP                                                         DGPLO258
  100 CONTINUE                                                          DGPLO259
C                                                                       DGPLO260
C     CHAIN INDICATOR                                                   DGPLO261
C                                                                       DGPLO262
      WRITE (IOUT,340) (IRSCHN(I),I=JLIMLO,JLIMUP)                      DGPLO263
      WRITE (IOUT,350)                                                  DGPLO264
      DO 110 I=1,110                                                    DGPLO265
  110 IROW(I)=IBLANK                                                    DGPLO266
C                                                                       DGPLO267
C     NUMBER THE COLUMNS.                                               DGPLO268
C                                                                       DGPLO269
C     THOUSANDS DIGIT                                                   DGPLO270
C                                                                       DGPLO271
      DO 120 I=JLIMLO,JLIMUP                                            DGPLO272
      IJ=I-JLIMLO+1                                                     DGPLO273
      ITEM=IRSNUM(I)/1000+1                                             DGPLOT13
      IF (ITEM.EQ.1) GO TO 120                                          DGPLOT14
      IROW(IJ)=ICHAR(ITEM)                                              DGPLOT15
  120 CONTINUE                                                          DGPLO277
      WRITE (IOUT,350) IROW                                             DGPLO278
C                                                                       DGPLO279
C     HUNDREDS DIGIT                                                    DGPLO280
C                                                                       DGPLO281
      DO 130 I=JLIMLO,JLIMUP                                            DGPLO282
      IJ=I-JLIMLO+1                                                     DGPLO283
      KX=IRSNUM(I)/100                                                  DGPLO284
      ITEM=MOD(KX,10)+1                                                 DGPLOT16
      IF ((ITEM.EQ.1).AND.(ICOMP(IROW(IJ),IBLANK).EQ.0)) GO TO 130      DGPLOT17
      IROW(IJ)=ICHAR(ITEM)                                              DGPLOT18
  130 CONTINUE                                                          DGPLO288
      WRITE (IOUT,350) IROW                                             DGPLO289
C                                                                       DGPLO290
C     TENS DIGIT                                                        DGPLO291
C                                                                       DGPLO292
      DO 140 I=JLIMLO,JLIMUP                                            DGPLO293
      IJ=I-JLIMLO+1                                                     DGPLO294
      KX=IRSNUM(I)/10                                                   DGPLO295
      ITEM=MOD(KX,10)+1                                                 DGPLOT19
      IF ((ITEM.EQ.1).AND.(ICOMP(IROW(IJ),IBLANK).EQ.0)) GO TO 140      DGPLOT20
      IROW(IJ)=ICHAR(ITEM)                                              DGPLOT21
  140 CONTINUE                                                          DGPLO299
      WRITE (IOUT,350) IROW                                             DGPLO300
C                                                                       DGPLO301
C     ONES DIGIT                                                        DGPLO302
C                                                                       DGPLO303
      DO 150 I=JLIMLO,JLIMUP                                            DGPLO304
      IJ=I-JLIMLO+1                                                     DGPLO305
      ITEM=MOD(IRSNUM(I),10)+1                                          DGPLOT22
      IF ((ITEM.EQ.1).AND.(ICOMP(IROW(IJ),IBLANK).EQ.0)) GO TO 150      DGPLOT23
      IROW(IJ)=ICHAR(ITEM)                                              DGPLOT24
  150 CONTINUE                                                          DGPLO309
      WRITE (IOUT,350) IROW                                             DGPLO310
C                                                                       DGPLO311
C     INSERTION CODE                                                    DGPLO312
C                                                                       DGPLO313
      WRITE (IOUT,350) (IRSINS(I),I=JLIMLO,JLIMUP)                      DGPLO314
      WRITE (IOUT,350)                                                  DGPLO315
      DO 220 I=1,JLIMUP                                                 DGPLO316
C                                                                       DGPLO317
C     COMPUTE DISTANCES AND PRINT APPROPRIATE CHARACTERS                DGPLO318
C                                                                       DGPLO319
      DO 160 L=1,110                                                    DGPLO320
  160 IROW(L)=IBLANK                                                    DGPLO321
      LOWLIM=JLIMLO                                                     DGPLO322
      IF (LOWLIM.LT.I) LOWLIM=I                                         DGPLO323
      IF (ICOMP(IRSNAM(I),IHVTER).NE.0) GO TO 180                       DGPLO324
      DO 170 L=LOWLIM,JLIMUP                                            DGPLO325
      LL=L-JLIMLO+1                                                     DGPLO326
  170 IROW(LL)=IPLUS                                                    DGPLO327
      GO TO 210                                                         DGPLO328
  180 DO 200 J=LOWLIM,JLIMUP                                            DGPLO329
      DIST=SQRT((X(I)-X(J))**2+(Y(I)-Y(J))**2+(Z(I)-Z(J))**2)           DGPLO330
      IND=IFIX(DIST+.5)+1                                               DGPLO331
      INDEX=J-JLIMLO+1                                                  DGPLO332
      IF (IND.GT.10000) GO TO 190                                       DGPLO333
      IF (IND.GT.LIMIT) GO TO 200                                       DGPLO334
      IROW(INDEX)=ICHAR(IND)                                            DGPLO335
      GO TO 200                                                         DGPLO336
  190 IROW(INDEX)=IPLUS                                                 DGPLO337
  200 CONTINUE                                                          DGPLO338
  210 WRITE (IOUT,360) IRSNAM(I),IRSCHN(I),IRSNUM(I),IRSINS(I),IROW     DGPLO339
  220 CONTINUE                                                          DGPLO340
  230 CONTINUE                                                          DGPLO341
      ENDFILE IOUT                                                      DGPLOT25
      GO TO 10                                                          DGPLO342
  240 CONTINUE                                                          DGPLO343
      WRITE (IOUT,370)                                                  DGPLO344
      STOP                                                              DGPLO345
C                                                                       DGPLO346
C                                                                       DGPLO347
  250 FORMAT (A4,1X,I5)                                                 DGPLO348
  260 FORMAT (20A4)                                                     DGPLO349
  270 FORMAT (1H1,42HOUTPUT OF PROTEIN DATA BANK PROGRAM DGPLOT)        DGPLO350
  280 FORMAT (8H0RUN AT ,A10,4H ON ,A10)                                DGPLO351
  290 FORMAT (1H0,20A4)                                                 DGPLO352
  300 FORMAT (46H0 TOO MANY ACCEPTABLE ATOMS - WILL PLOT FIRST ,I4)     DGPLO353
  310 FORMAT (1H0,I5,1X,A4,15H ATOMS ACCEPTED/1X,I5,21H TER RECORDS ACCEDGPLO354
     1PTED)                                                             DGPLO355
  320 FORMAT (19H0 NO PLOT GENERATED)                                   DGPLO356
  330 FORMAT (49H0 THE DISTANCES PLOTTED ARE MEASURED IN ANGSTROMS/30H  DGPLO357
     1WHERE A=11, B=12, C=13, ETC.)                                     DGPLO358
  340 FORMAT (1H1,14X,110A1)                                            DGPLO359
  350 FORMAT (15X,110A1)                                                DGPLO360
  360 FORMAT (1X,A3,1X,A1,1X,I4,A1,3X,110A1)                            DGPLO361
  370 FORMAT (1H1,42HEND OF PROTEIN DATA PROGRAM PROGRAM DGPLOT)        DGPLO362
      END                                                               DGPLO363
      SUBROUTINE NXTLIN (NATOML,NAML,NALTL,NAMRSL,NCHANL,NUML,INSL,XL,YLDGPLO364
     1,ZL,IFMT,JCODE)                                                   DGPLO365
C                                                                       DGPLO366
C     THIS ROUTINE WILL PRINT CERTAIN RECORDS ON THE OUTPUT FILE.       DGPLO367
C     FOR ATOM AND HETATM RECORDS THE NEEDED PARAMETERS ARE RETURNED VIADGPLO368
C     THE ARGUMENT LIST.                                                DGPLO369
C                                                                       DGPLO370
C     NATOML IS THE ATOM SERIAL NUMBER                                  DGPLO371
C     NAML IS THE ATOM NAME                                             DGPLO372
C     NALTL IS THE ALTERNATE POSITION INDICATOR                         DGPLO373
C     NAMRSL IS THE RESIDUE NAME                                        DGPLO374
C     NCHANL IS THE CHAIN INDICATOR                                     DGPLO375
C     NUML IS THE RESIDUE NUMBER                                        DGPLO376
C     INSL IS THE INSERTION CODE                                        DGPLO377
C     XL, YL, ZL ARE THE COORDINATES OF THE ATOM                        DGPLO378
C                                                                       DGPLO379
C     IFMT IS AN ARRAY STORING THE FORMAT USED TO READ ATOM AND HETATM  DGPLO380
C     RECORDS FROM A PROTEIN DATA BANK ENTRY.  IT IS DEFINED IN THE     DGPLO381
C     MAIN PROGRAM AND USED BELOW.                                      DGPLO382
C                                                                       DGPLO383
C      JCODE = 0 FOR GOOD ATOM                                          DGPLO384
C            = 1 FOR TER CODE                                           DGPLO385
C            = 2 FOR END CODE                                           DGPLO386
C            = 3 FOR END-OF-FILE SENSED                                 DGPLO387
C                                                                       DGPLO388
C     THE FOLLOWING VARIABLES IN THIS ROUTINE ARE USED TO STORE         DGPLO389
C     CHARACTERS AT 4 PER WORD                                          DGPLO390
C                                                                       DGPLO391
C        IATOM, IAUTH, ICMP, IDATE, IEND, IFMT, IHEAD, IHETA, INSL,     DGPLO392
C        INTRY, IREC, IREMA, ITER, JRNL, NALTL, NAML, NAMRSL, NCHANL    DGPLO393
C                                                                       DGPLO394
C     THE FOLLOWING VARIABLES IN THIS ROUTINE ARE USED TO STORE         DGPLO395
C     CHARACTERS AT 10 PER WORD                                         DGPLO396
C                                                                       DGPLO397
C        LINE                                                           DGPLO398
C                                                                       DGPLO399
      DIMENSION IFMT(20)                                                DGPLO400
      DIMENSION IDATE(3)                                                DGPLO401
      DIMENSION IREC(20)                                                DGPLO402
      DIMENSION LINE(8)                                                 DGPLO403
      COMMON /FILES/ INP,IOUT,IDATA,ITEMP                               DGPLO404
      DATA IATOM/4HATOM/,IHEAD/4HHEAD/,ICMP/4HCOMP/,ITER/4HTER /        DGPLO405
      DATA IEND/4HEND /,IAUTH/4HAUTH/,JRNL/4HJRNL/,IHETA/4HHETA/        DGPLO406
      DATA IREMA/4HREMA/                                                DGPLO407
      DATA XJUNK/10000./,YJUNK/10000./,ZJUNK/10000./                    DGPLO408
      ICOMP(I,J)=I-J                                                    DGPLO409
      JCODE=0                                                           DGPLO410
   10 READ (IDATA,90) IREC                                              DGPLO411
C                                                                       DGPLO412
C     THE STATEMENT BELOW WILL TRANSFER CONTROL TO STATEMENT 80 IF AN   DGPLO413
C     END-OF-FILE WAS ENCOUNTERED ON THE INPUT DEVICE.  IF NO END-OF-   DGPLO414
C     FILE IS SENSED CONTROL IS ASSUMED BY STATEMENT 20.                DGPLO415
C                                                                       DGPLO416
      IF (EOF(IDATA)) 80,20                                             DGPLO417
C                                                                       DGPLO418
C     IDENTIFY TYPE OF RECORD                                           DGPLO419
C                                                                       DGPLO420
   20 IF (ICOMP(IREC(1),IATOM).EQ.0) GO TO 30                           DGPLO421
      IF (ICOMP(IREC(1),IHETA).EQ.0) GO TO 30                           DGPLO422
      IF (ICOMP(IREC(1),IREMA).EQ.0) GO TO 10                           DGPLO423
      IF (ICOMP(IREC(1),IHEAD).EQ.0) GO TO 50                           DGPLO424
      IF (ICOMP(IREC(1),ICMP).EQ.0) GO TO 60                            DGPLO425
      IF (ICOMP(IREC(1),ITER).EQ.0) GO TO 70                            DGPLO426
      IF (ICOMP(IREC(1),IAUTH).EQ.0) GO TO 60                           DGPLO427
      IF (ICOMP(IREC(1),IEND).EQ.0) GO TO 40                            DGPLO428
      IF (ICOMP(IREC(1),JRNL).EQ.0) GO TO 60                            DGPLO429
      GO TO 10                                                          DGPLO430
C                                                                       DGPLO431
C     ATOM OR HETATM RECORD                                             DGPLO432
C                                                                       DGPLO433
   30 CONTINUE                                                          DGPLO434
C     REWIND ITEMP                                                      DGPLO435
C     WRITE (ITEMP,90) IREC                                             DGPLOT13
C     REWIND ITEMP                                                      DGPLO437
C     READ(ITEMP,IFMT) NATOML,NAML,NALTL,NAMRSL,NCHANL,NUML,INSL,XL,YL, DGPLO438
C     ZL                                                                DGPLO439
      ENCODE (80,90,LINE(1) )(IREC(I),I=1,20)                           DGPLO440
      DECODE (80,IFMT,LINE(1) )NATOML,NAML,NALTL,NAMRSL,NCHANL,NUML,INSLDGPLO441
     1,XL,YL,ZL                                                         DGPLO442
      RETURN                                                            DGPLO443
   40 JCODE=2                                                           DGPLO444
      RETURN                                                            DGPLO445
C                                                                       DGPLO446
C     HEADER RECORD                                                     DGPLO447
C                                                                       DGPLO448
   50 CONTINUE                                                          DGPLO449
C     REWIND ITEMP                                                      DGPLO450
C     WRITE (ITEMP,90) IREC                                             DGPLOT14
C     REWIND ITEMP                                                      DGPLO452
C     READ (ITEMP,100) IDATE,INTRY                                      DGPLOT15
      ENCODE (80,90,LINE(1) )(IREC(I),I=1,20)                           DGPLO454
      DECODE (80,100,LINE(1) )IDATE,INTRY                               DGPLO455
      WRITE (IOUT,110) INTRY,IDATE                                      DGPLO456
      GO TO 10                                                          DGPLO457
C                                                                       DGPLO458
C     SHIFT THE *COMPND*, *AUTH* OR *JRNL* INFORMATION IN IREC LEFT BY  DGPLO459
C     10 CHARACTERS AND PRINT THE STRING                                DGPLO460
C                                                                       DGPLO461
   60 CONTINUE                                                          DGPLO462
C     REWIND ITEMP                                                      DGPLO463
C     WRITE (ITEMP,90) IREC                                             DGPLOT16
C     REWIND ITEMP                                                      DGPLO465
C     READ (ITEMP,120) (IREC(I),I=1,15)                                 DGPLOT17
      ENCODE (80,90,LINE(1) )(IREC(I),I=1,20)                           DGPLO467
      DECODE (80,120,LINE(1) )(IREC(I),I=1,15)                          DGPLO468
      WRITE (IOUT,130) (IREC(I),I=1,15)                                 DGPLO469
      GO TO 10                                                          DGPLO470
C                                                                       DGPLO471
C     TER RECORD                                                        DGPLO472
C                                                                       DGPLO473
   70 JCODE=1                                                           DGPLO474
C     REWIND ITEMP                                                      DGPLO475
C     WRITE (ITEMP,90) IREC                                             DGPLOT18
C     REWIND ITEMP                                                      DGPLO477
C     READ (ITEMP,140) NAMRSL,NCHANL,NUML,INSL                          DGPLOT19
      ENCODE (80,90,LINE(1) )(IREC(I),I=1,20)                           DGPLO479
      DECODE (80,140,LINE(1) )NAMRSL,NCHANL,NUML,INSL                   DGPLO480
C                                                                       DGPLO481
C     INSERT DUMMY COORDINATES FOR TER TO FORCE LONG DISTANCES AND      DGPLO482
C     HENCE SPECIALLY MARKED COLUMNS AND ROWS.                          DGPLO483
C                                                                       DGPLO484
      XL=XJUNK                                                          DGPLO485
      YL=YJUNK                                                          DGPLO486
      ZL=ZJUNK                                                          DGPLO487
      RETURN                                                            DGPLO488
   80 JCODE=3                                                           DGPLO489
      RETURN                                                            DGPLO490
C                                                                       DGPLO491
C                                                                       DGPLO492
C                                                                       DGPLO493
   90 FORMAT (20A4)                                                     DGPLO494
  100 FORMAT (50X,2A4,A2,2X,A4)                                         DGPLO495
  110 FORMAT (25H0PROTEIN DATA BANK ENTRY ,A4,9H  DATED  ,2A4,A2,4H FOR)DGPLO496
  120 FORMAT (10X,15A4)                                                 DGPLO497
  130 FORMAT (1X,15A4)                                                  DGPLO498
  140 FORMAT (17X,A3,1X,A1,I4,A1)                                       DGPLO499
      END                                                               DGPLO500