home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / fortran / library / ssp / matstor / array.for next >
Text File  |  1985-11-29  |  3KB  |  87 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE ARRAY
  5. C
  6. C        PURPOSE
  7. C           CONVERT DATA ARRAY FROM SINGLE TO DOUBLE DIMENSION OR VICE
  8. C           VERSA.  THIS SUBROUTINE IS USED TO LINK THE USER PROGRAM
  9. C           WHICH HAS DOUBLE DIMENSION ARRAYS AND THE SSP SUBROUTINES
  10. C           WHICH OPERATE ON ARRAYS OF DATA IN A VECTOR FASHION.
  11. C
  12. C        USAGE
  13. C           CALL ARRAY (MODE,I,J,N,M,S,D)
  14. C
  15. C        DESCRIPTION OF PARAMETERS
  16. C           MODE - CODE INDICATING TYPE OF CONVERSION
  17. C                    1 - FROM SINGLE TO DOUBLE DIMENSION
  18. C                    2 - FROM DOUBLE TO SINGLE DIMENSION
  19. C           I    - NUMBER OF ROWS IN ACTUAL DATA MATRIX
  20. C           J    - NUMBER OF COLUMNS IN ACTUAL DATA MATRIX
  21. C           N    - NUMBER OF ROWS SPECIFIED FOR THE MATRIX D IN
  22. C                  DIMENSION STATEMENT
  23. C           M    - NUMBER OF COLUMNS SPECIFIED FOR THE MATRIX D IN
  24. C                  DIMENSION STATEMENT
  25. C           S    - IF MODE=1, THIS VECTOR IS INPUT WHICH CONTAINS THE
  26. C                  ELEMENTS OF A DATA MATRIX OF SIZE I BY J. COLUMN I+1
  27. C                  OF DATA MATRIX FOLLOWS COLUMN I, ETC. IF MODE=2,
  28. C                  THIS VECTOR IS OUTPUT REPRESENTING A DATA MATRIX OF
  29. C                  SIZE I BY J CONTAINING ITS COLUMNS CONSECUTIVELY.
  30. C                  THE LENGTH OF S IS IJ, WHERE IJ=I*J.
  31. C           D    - IF MODE=1, THIS MATRIX OF SIZE N BY M IS OUTPUT,
  32. C                  CONTAINING A DATA MATRIX OF SIZE I BY J IN THE FIRST
  33. C                  I ROWS AND J COLUMNS. IF MODE=2, THIS N BY M MATRIX
  34. C                  IS INPUT CONTAINING A DATA MATRIX OF SIZE I BY J IN
  35. C                  THE FIRST I ROWS AND J COLUMNS.
  36. C
  37. C        REMARKS
  38. C           VECTOR S CAN BE IN THE SAME LOCATION AS MATRIX D.  VECTOR S
  39. C           IS REFERRED AS A MATRIX IN OTHER SSP ROUTINES, SINCE IT
  40. C           CONTAINS A DATA MATRIX.
  41. C           THIS SUBROUTINE CONVERTS ONLY GENERAL DATA MATRICES (STORAGE
  42. C           MODE OF 0).
  43. C
  44. C        SUBROUTINES AND FUNCTION SUBROUTINES REQUIRED
  45. C           NONE
  46. C
  47. C        METHOD
  48. C           REFER TO THE DISCUSSION ON VARIABLE DATA SIZE IN THE SECTION
  49. C           DESCRIBING OVERALL RULES FOR USAGE IN THIS MANUAL.
  50. C
  51. C     ..................................................................
  52. C
  53.       SUBROUTINE ARRAY (MODE,I,J,N,M,S,D)
  54.       DIMENSION S(1),D(1)
  55. C
  56.       NI=N-I
  57. C
  58. C        TEST TYPE OF CONVERSION
  59. C
  60.       IF(MODE-1) 100, 100, 120
  61. C
  62. C        CONVERT FROM SINGLE TO DOUBLE DIMENSION
  63. C
  64.   100 IJ=I*J+1
  65.       NM=N*J+1
  66.       DO 110 K=1,J
  67.       NM=NM-NI
  68.       DO 110 L=1,I
  69.       IJ=IJ-1
  70.       NM=NM-1
  71.   110 D(NM)=S(IJ)
  72.       GO TO 140
  73. C
  74. C        CONVERT FROM DOUBLE TO SINGLE DIMENSION
  75. C
  76.   120 IJ=0
  77.       NM=0
  78.       DO 130 K=1,J
  79.       DO 125 L=1,I
  80.       IJ=IJ+1
  81.       NM=NM+1
  82.   125 S(IJ)=D(NM)
  83.   130 NM=NM+NI
  84. C
  85.   140 RETURN
  86.       END
  87.