/*Copyright (C) 1992, 1994 by Thomas Glen Smith. All Rights Reserved.*/ /* lovfscb APL2 V1.0.0 ************************************************* * Called from apllov1 to read an apl variable during )load operations. * ***********************************************************************/ #define INCLUDES APLCB+IO+STDIO+STRING #include "includes.h" Aplcb lovfscb(fp,flags) int fp; /* file descriptor handle */ int flags; /* aplflags, already read by apllov_ */ { Getcb; Lovfscb; extern int aplerr; Aplcb out; int count,i,j,k,rank,size,tflags,type; int *ip; char *cp; i = read(fp,&(count), sizeof(count)); i = read(fp,&(rank), sizeof(rank)); i = read(fp,&(size), sizeof(size)); out = getcb(NULL,count,flags,rank,NULL); if (aplerr) return(NULL); /* out of memory */ ip = out->apldim; /* dimensions ptr */ for ( j = out->aplrank ; j > 0 ; j-- ) i = read(fp, ip++, sizeof(int)); cp = out->aplptr.aplchar; /* save data */ for ( j = out->aplcount ; j > 0 ; j-- ) { if (flags & APLAPL) { i = read(fp,&tflags,sizeof(int)); /* read flags */ *((Aplcb*)cp) = lovfscb(fp, tflags); /* read nested */ } else i = read(fp, cp, out->aplsize); cp += out->aplsize; } return(out); }