        SUBROUTINE  MDI
     *     (N, IA,JA, MAX,V,L, HEAD,LAST,NEXT, MARK,TAG, FLAG)            OD 313
        INTEGER  IA(1), JA(1),  V(1), L(1),  HEAD(1), LAST(1), NEXT(1),   OD 314
     *     MARK(1), TAG,  FLAG,  SFS, VI,DVI, VJ                          OD 315
C                                                                         OD 316
C----INITIALIZE DEGREES, ELEMENT LISTS, AND DEGREE LISTS                  OD 317
        DO 1 VI=1,N                                                       OD 318
          MARK(VI) = 1                                                    OD 319
          L(VI) = 0                                                       OD 320
   1      HEAD(VI) = 0                                                    OD 321
        SFS = N+1                                                         OD 322
C                                                                         OD 323
C----CREATE NONZERO STRUCTURE                                             OD 324
C----FOR EACH NONZERO ENTRY A(VI,VJ) IN STRICT UPPER TRIANGLE             OD 325
        DO 3 VI=1,N                                                       OD 326
          JMIN = IA(VI)                                                   OD 327
          JMAX = IA(VI+1) - 1                                             OD 328
          IF (JMIN.GT.JMAX)  GO TO 3                                      OD 329
          DO 2 J=JMIN,JMAX                                                OD 330
            VJ = JA(J)                                                    OD 331
            IF (VI.GE.VJ)  GO TO 2                                        OD 332
              IF (SFS.GE.MAX)  GO TO 101                                  OD 333
C                                                                         OD 334
C------ENTER VJ IN ELEMENT LIST FOR VI                                    OD 335
              MARK(VI) = MARK(VI) + 1                                     OD 336
              V(SFS) = VJ                                                 OD 337
              L(SFS) = L(VI)                                              OD 338
              L(VI) = SFS                                                 OD 339
              SFS = SFS+1                                                 OD 340
C                                                                         OD 341
C------ENTER VI IN ELEMENT LIST FOR VJ                                    OD 342
              MARK(VJ) = MARK(VJ) + 1                                     OD 343
              V(SFS) = VI                                                 OD 344
              L(SFS) = L(VJ)                                              OD 345
              L(VJ) = SFS                                                 OD 346
              SFS = SFS+1                                                 OD 347
   2        CONTINUE                                                      OD 348
   3      CONTINUE                                                        OD 349
C                                                                         OD 350
C----CREATE DEGREE LISTS AND INITIALIZE MARK VECTOR                       OD 351
        DO 4 VI=1,N                                                       OD 352
          DVI = MARK(VI)                                                  OD 353
          NEXT(VI) = HEAD(DVI)                                            OD 354
          HEAD(DVI) = VI                                                  OD 355
          LAST(VI) = -DVI                                                 OD 356
          IF (NEXT(VI).GT.0)  LAST(NEXT(VI)) = VI                         OD 357
   4      MARK(VI) = TAG                                                  OD 358
C                                                                         OD 359
        RETURN                                                            OD 360
C                                                                         OD 361
C ** ERROR -- INSUFFICIENT STORAGE                                        OD 362
 101    FLAG = 9*N + VI                                                   OD 363
        RETURN                                                            OD 364
        END                                                               OD 365
