subroutine ssrcma (rsav, isav, job) C----------------------------------------------------------------------- C This routine saves or restores (depending on JOB) the contents of C the Common blocks SLS001, SLSA01, which are used C internally by one or more ODEPACK solvers. C C RSAV = real array of length 10 or more. C ISAV = integer array of length 29 or more. C JOB = flag indicating to save or restore the Common blocks: C JOB = 1 if Common is to be saved (written to RSAV/ISAV) C JOB = 2 if Common is to be restored (read from RSAV/ISAV) C A call with JOB = 2 presumes a prior call with JOB = 1. C----------------------------------------------------------------------- integer isav, job integer ils, ilsa integer i, lenrls, lenils, lenila real rsav real rls, rlsa dimension rsav(*), isav(*) common /sls001/ rls(9), ils(25) common /slsa01/ rlsa, ilsa(4) data lenrls/9/, lenils/25/, lenila/4/ c if (job .eq. 2) go to 100 do 10 i = 1,lenrls 10 rsav(i) = rls(i) rsav(lenrls+1) = rlsa c do 20 i = 1,lenils 20 isav(i) = ils(i) do 25 i = 1,lenila 25 isav(lenils+i) = ilsa(i) c return c 100 continue do 110 i = 1,lenrls 110 rls(i) = rsav(i) rlsa = rsav(lenrls+1) c do 120 i = 1,lenils 120 ils(i) = isav(i) do 125 i = 1,lenila 125 ilsa(i) = isav(lenils+i) c return c----------------------- end of subroutine ssrcma ---------------------- end