[Download-List] segmentation fault

Don Prezioso dprez at ashland.edu
Thu Nov 3 11:34:29 EST 2005


O.K., I'm really puzzled on this one. 
 
I have a virtual field that calls a subroutine. In LIST statements it works fine, but DOWNLOAD gives a segmentation fault.
 
First the error:
 
:GET.LIST TEST.DVP
10 records retrieved to list 0.
>DOWNLOAD STUDENTS STU.DMD.CREDITS FORMAT FIXED
DOWNLOAD version 7.12
Using input file STUDENTS
Output to screen
 
Segmentation fault
ibmp630:/datatel/live/collive $
 
The virtual field code is:
 
SUBR("DELTA.MU.DELTA.CREDITS",STUDENTS.ID)
 
And the DELTA.MU.DELTA.CREDITS subroutine code is:
 
SUBROUTINE DELTA.MU.DELTA.CREDITS(RESULT,ID.NO)
*  TAKES AN ID NUMBER AND RETURNS A TOTAL NUMBER CREDITS EARNED FOR
*  DELTA MU DELTA REPORT
COMMON /DMDCRED/ OPENED, F.TRANS.GROUP, F.STUD.ACAD.CRED, F.STU.ACAD.LEVEL, ACAD.LEVELS
IF NOT(OPENED) THEN
  OPEN '','TRANSCRIPT.GROUPINGS' TO F.TRANS.GROUP
     ELSE STOP "UNABLE TO OPEN TRANSCRIPT GROUPING FILE"
  OPEN '','STUDENT.ACAD.CRED' TO F.STUD.ACAD.CRED
     ELSE STOP "UNABLE TO OPEN STUDENT.ACAD.CRED FILE"
  OPEN '','STUDENT.ACAD.LEVELS' TO F.STU.ACAD.LEVEL
     ELSE STOP "UNABLE TO OPEN STUDENT.ACAD.LEVELS FILE"
  READ TG.REC FROM F.TRANS.GROUP, 'MB'
    ELSE TG.REC = ''
  ACAD.LEVELS = TG.REC<2>
  OPENED = 1
END
*
X.TOTAL = 0
RESULT = 0
ACAD.LEVEL.COUNT = DCOUNT(ACAD.LEVELS, at VM)
FOR LEVEL = 1 TO ACAD.LEVEL.COUNT
  READ STA.REC FROM F.STU.ACAD.LEVEL,ID.NO:'*':ACAD.LEVELS<1,LEVEL> THEN
    STUDENT.ACAD.CRED = STA.REC<10>
    CRED.COUNT = DCOUNT(STUDENT.ACAD.CRED, at VM)
    FOR I = 1 TO CRED.COUNT
      READ STC.REC FROM F.STUD.ACAD.CRED,STUDENT.ACAD.CRED<1,I> THEN 
        IF STC.REC<13> GT 0 THEN
          X.TOTAL += STC.REC<13>
        END
      END
    NEXT I
  END
NEXT LEVEL
*
IF X.TOTAL THEN 
  RESULT = OCONV(X.TOTAL,"MD05") 
END
*
RETURN RESULT
END
 
If I try to do a DOWNLOAD using an EVAL, instead of the virtual field, I get:
 
:GET.LIST TEST.DVP
10 records retrieved to list 0.
>DOWNLOAD STUDENTS EVAL 'SUBR("DELTA.MU.DELTA.CREDITS",STUDENTS.ID)'
DOWNLOAD version 7.12
Creating temporary list DLDPREZ40567
10 key(s) saved to 1 record(s).
10 records retrieved to list 1.
Overwriting existing select list.
10 records retrieved to list 1.
Using input file STUDENTS
Output to screen
 
""
""
""
""
""
""
""
""
""
""
 
10 records processed.
Deleting temporary list DLDPREZ40567
'DLDPREZ40567' deleted.
:
 
It should be returning some number (if only 0) instead of the null strings.  If I do a LIST statement I get:
 
:GET.LIST TEST.DVP
10 records retrieved to list 0.
>LIST STUDENTS STU.DMD.CREDITS

LIST STUDENTS STU.DMD.CREDITS 11:31:21 Nov 03 2005 1
STUDENTS.. STU.D
 
0936711       27
0816629       16
0896532       18
0936713       12
0936719       18
0736451       18
0976714        6
0616439       28
0896540       17
0556488       12
10 records listed
 
I have messed around with the subroutine code (there didn't used to be common, and it didn't used to verify the presence of data) to no avail. Any ideas?
 
Thanks
 
Don

 
--
Don Prezioso
Director of Administrative Systems
Ashland University
Ashland, Ohio

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.cedarville.edu/pipermail/download-list/attachments/20051103/030b3e72/attachment.html>


More information about the download-list mailing list