|
想调用一个f77的子程序,里面有两个数组indexj(*),ivor(*)大小未知,想请问在主程序中如何定义它们的类型?[Fortran] 纯文本查看 复制代码 01 | subroutine comsca ( iknoel , ipodia , indexj , ivor , necke , |
02 | & nknot , nelem , mknpel , laenge , nitot , miwrk ) |
03 | implicit double precision ( a - h , o - z ) |
04 | dimension iknoel ( mknpel , nelem ) , necke ( nelem ) , |
05 | & ipodia ( nknot ) , indexj ( * ) , ivor ( * ) |
11 | c Schleife ueber alle Elemente |
17 | c Doppelschleife ( iem , jem ) ueber lokale Element - Fhgr. , um globale |
18 | c besetzte Positionen ( i , j ) zu finden |
19 | c ipodia ( i ) : wird als Hilfsfeld benutzt ; zeigt auf die Pos. des |
20 | c zuletzt gefundenen Eintrages der Zeile i |
21 | c ivor ( ip ) : zeigt auf den vorherigen Eintrag der gleichen Zeile |
29 | c Suche in Zeile i , ob Spalte j schon vorhanden |
34 | if ( indexj ( ip ) .eq. j ) goto 30 |
39 | c neue Spalte fuer Zeile i gefunden |
42 | if ( ipos + nitot .gt. miwrk ) stop 'comsto: miwrk vergroessern' |
52 | c indexj am Ende von ivor aufbauen und anschliessend |
53 | c nach indexj zurueckkopieren |
57 | if ( ip .eq. 0 ) stop 'Leere Zeile in comsto' |
63 | ivor ( ipos + nj ) = indexj ( ip ) |
68 | call iasort ( ivor ( ipos +1 ) , nj ) |
71 | if ( ivor ( ipos ) .ne. i ) stop 'comsto: falsches Diagonalelement' |
74 | indexj ( ip ) = ivor ( ip + laenge ) |
|
|