#include #include #include #include #include #include typedef struct { float buoyID; float satID; float Year; float Month; float Day; float refHour; float buoyTimeVar; float satTimeVar; float buoyLat; float buoyLon; float satZenAng; float solZenAng; float relAzAng; float buoyAirT; float buoyDewT; float buoy_SST; float buoyWindDir; float buoyWindSpd; float buoySLP; float satReflCh1[49]; float satReflCh2[49]; float satReflCh3[49]; float satBTCh1[49]; float satBTCh2[49]; float satBTCh3[49]; float satBTCh4[49]; float satBTCh5[49]; float satBTCh6[49]; float satSST[49]; float satSSTerr[49]; float satSSTbias[49]; float firstPassPclear[49]; float firstPassPspectral[49]; float firstPassPtexture[49]; float revisedPclear[49]; float pixelPriorSST[49]; float ffmRefls[3]; float ffmBTs[6]; float dBTdSSTs[6]; float dBTdTCWVs[6]; float dBTdTas[6]; float dBTCh1Glint; float dBTCh1Scatter; float nwpMonth; float nwpDay; float nwpHour; float nwpSkinT[4]; float nwpSLP[4]; float nwpV10[4]; float nwpU10[4]; float nwpRH2m[4]; float nwpT2m[4]; float nwpRHp[4][18]; float nwpTCWV[4]; float nwpTp[4][18]; float nwpAerosol[4][6]; float diurnalSkinSSTmodel; float nwpInterpWindSpd[5]; float nwpInterpSSI[5]; float nwpInterpDLI[5]; float nwpInterpLHF[5]; float nwpInterpSHF[5]; float nwpInterpSkinST[5]; float ADD_slot[4]; } MDB_REC; #define HEADER_SZ 256 long openf_(fName, fd, cCode, NCEPmv, btFFMv, rfFFMv, coeffn) ///////////////////////////////////////////////////////////////////////////////// ////////// changes on mar. 2009 ///////////////////////// ///char fName[12]; /* 2009_076.18B */ char fName[22]; /* match_gen_2009_076.18B */ int *fd; /* Switched to a file descriptor */ char cCode[32]; char NCEPmv[16]; char btFFMv[16]; char rfFFMv[16]; char coeffn[32]; { /* * This function opens a given filename (complete path), writes the * user-supplied header information and returns both a valid file * pointer in the argument list (because the file will be kept open * and this must be retained by the main program) and a success/fail * indicator in the returned function value. * * Andy Harris, NOAA-CICS, December 7, 2004. */ /// char fName2[13]; char fName2[22]; char *ptr, *header; /* char *malloc(); -rip-16jun2006- */ void *malloc(); int nItems, result; /* First, just to make sure that the string has been correctly terminated... */ /// if((ptr = memcpy(fName2, fName, 12)) == NULL) /* Copy fName to fName2... */ if((ptr = memcpy(fName2, fName, 22)) == NULL) /* Copy fName to fName2... */ { return(-1); /* ...if this fails, all is lost!! */ } /// fName2[11] = 'B'; /* Guarantees that fName2 will be correctly terminated */ /// fName2[12] = '\0'; /* Guarantees that fName2 will be correctly terminated */ fName2[21] = 'B'; /* Guarantees that fName2 will be correctly terminated */ fName2[22] = '\0'; /* Guarantees that fName2 will be correctly terminated */ ///////// // End of chang --mar. 2009 //////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// /* Now open the file using fName2... */ /* if((*fd = open(fName2, O_WRONLY+O_CREAT+O_TRUNC)) < 0) *//* rip 14Jun2006 */ /* if((*fd = open(fName2, O_RDWR+O_CREAT+O_TRUNC)) < 0) */ /* if((*fd = open(fName2, O_RDWR|O_CREAT|O_TRUNC)) < 0) */ if((*fd = open(fName2, O_RDWR|O_CREAT|O_TRUNC,0644)) < 0) { return(-2); /* ...failure to open file is an error */ } /* Now construct the header. Don't actually anticipate any of these errors to occur */ if((header = (char *)malloc(HEADER_SZ)) == NULL) { result = close(*fd); return(-3); } if((ptr = memcpy(header, cCode, 32)) == NULL) /* Copy create Code to header... */ { result = close(*fd); return(-4); } if((ptr = memcpy((header + 32), NCEPmv, 16)) == NULL) /* Copy BT FFM vers num to header... */ { result = close(*fd); return(-5); } if((ptr = memcpy((header + 48), btFFMv, 16)) == NULL) /* Copy BT FFM vers num to header... */ { result = close(*fd); return(-5); } if((ptr = memcpy((header + 64), rfFFMv, 16)) == NULL) /* Copy reflectance FFM vers num to header... */ { result = close(*fd); return(-6); } if((ptr = memcpy((header + 80), coeffn, 32)) == NULL) /* Copy coefficient file name to header... */ { result = close(*fd); return(-7); } /* Now write the 256-byte header to file */ if((nItems = write(*fd, header, HEADER_SZ)) != HEADER_SZ) { result = close(*fd); return(-8); } /* Return '0' if all has gone well */ return(0); } long openfr_(fName, fd) char fName[12]; int *fd; /* Switched to a file descriptor */ { /* * This function opens a given filename (complete path), reads the * header information and returns a valid file * pointer in the argument list (because the file will be kept open * and this must be retained by the main program) and a success/fail * indicator in the returned function value. * */ char fName2[13], *ptr, header[HEADER_SZ]; int nItems, result; /* First, just to make sure that the string has been correctly terminated... */ if((ptr = memcpy(fName2, fName, 12)) == NULL) /* Copy fName to fName2... */ { return(-1); /* ...if this fails, all is lost!! */ } fName2[11] = 'B'; /* Guarantees that fName2 will be correctly terminated */ fName2[12] = '\0'; /* Guarantees that fName2 will be correctly terminated */ /* Now open the file using fName2... */ /*if((*fd = open(fName2, 0)) < 0)*/ /* if((*fd = open(fName2, O_RDWR+O_CREAT+O_TRUNC)) < 0) */ if((*fd = open(fName2, O_RDWR|O_CREAT|O_TRUNC)) < 0) { return(-2); /* ...failure to open file is an error */ } /* Read header from file (the info in the header is never used) */ if((nItems = read(*fd, &(header[0]), HEADER_SZ)) != HEADER_SZ) { printf("nitems=%i\n",nItems); result = close(*fd); return(-8); } /* Return '0' if all has gone well */ return(0); } long wrtrec_(fd, buoyID, satID, Year, Month, Day, refHour, buoyTimeVar, satTimeVar, buoyLat, buoyLon, satZenAng, solZenAng, relAzAng, buoyAirT, buoyDewT, buoy_SST, buoyWindDir, buoyWindSpd, buoySLP, satReflCh1, satReflCh2, satReflCh3, satBTCh1, satBTCh2, satBTCh3, satBTCh4, satBTCh5, satBTCh6, satSST, satSSTerr, satSSTbias, firstPassPclear, firstPassPspectral, firstPassPtexture, revisedPclear, pixelPriorSST, ffmRefls, ffmBTs, dBTdSSTs, dBTdTCWVs, dBTdTas, dBTCh1Glint, dBTCh1Scatter, nwpMonth, nwpDay, nwpHour, nwpSkinT, nwpSLP, nwpV10, nwpU10, nwpRH2m, nwpT2m, nwpRHp, nwpTCWV, nwpTp, nwpAerosol, diurnalSkinSSTmodel, nwpInterpWindSpd, nwpInterpSSI, nwpInterpDLI, nwpInterpLHF, nwpInterpSHF, nwpInterpSkinST,ADD_slot) int *fd; float *buoyID; float *satID; float *Year; float *Month; float *Day; float *refHour; float *buoyTimeVar; float *satTimeVar; float *buoyLat; float *buoyLon; float *satZenAng; float *solZenAng; float *relAzAng; float *buoyAirT; float *buoyDewT; float *buoy_SST; float *buoyWindDir; float *buoyWindSpd; float *buoySLP; float satReflCh1[49]; float satReflCh2[49]; float satReflCh3[49]; float satBTCh1[49]; float satBTCh2[49]; float satBTCh3[49]; float satBTCh4[49]; float satBTCh5[49]; float satBTCh6[49]; float satSST[49]; float satSSTerr[49]; float satSSTbias[49]; float firstPassPclear[49]; float firstPassPspectral[49]; float firstPassPtexture[49]; float revisedPclear[49]; float pixelPriorSST[49]; float ffmRefls[3]; float ffmBTs[6]; float dBTdSSTs[6]; float dBTdTCWVs[6]; float dBTdTas[6]; float *dBTCh1Glint; float *dBTCh1Scatter; float *nwpMonth; float *nwpDay; float *nwpHour; float nwpSkinT[4]; float nwpSLP[4]; float nwpV10[4]; float nwpU10[4]; float nwpRH2m[4]; float nwpT2m[4]; float nwpRHp[4][18]; float nwpTCWV[4]; float nwpTp[4][18]; float nwpAerosol[4][6]; float *diurnalSkinSSTmodel; float nwpInterpWindSpd[5]; float nwpInterpSSI[5]; float nwpInterpDLI[5]; float nwpInterpLHF[5]; float nwpInterpSHF[5]; float nwpInterpSkinST[5]; float ADD_slot[4]; { /* * This routine constructs a single binary output MDB record from the input data and * writes it to the [already open] output file. Returns '0' upon success, -ve number * if there is an error. * * Andy Harris, NOAA-CICS, December 7, 2004.NWP 10m wind east around pixel: * * CPO - 04/12/17 - Added missing variables (buoylat, buoylon) * */ MDB_REC mdb; char *ptr; int nItems, errNum=0, result; /* Use memcpy() to copy the items - don't expect these operations to fail... */ --errNum; if((ptr = memcpy(&(mdb.buoyID), buoyID, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satID), satID, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.Year), Year, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.Month), Month, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.Day), Day, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.refHour), refHour, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoyTimeVar), buoyTimeVar, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satTimeVar), satTimeVar, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoyLat), buoyLat, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoyLon), buoyLon, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satZenAng), satZenAng, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.solZenAng), solZenAng, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.relAzAng), relAzAng, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoyAirT), buoyAirT, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoyDewT), buoyDewT, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoy_SST), buoy_SST, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoyWindDir), buoyWindDir, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoyWindSpd), buoyWindSpd, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.buoySLP), buoySLP, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satReflCh1), satReflCh1, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satReflCh2), satReflCh2, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satReflCh3), satReflCh3, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satBTCh1), satBTCh1, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satBTCh2), satBTCh2, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satBTCh3), satBTCh3, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satBTCh4), satBTCh4, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satBTCh5), satBTCh5, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satBTCh6), satBTCh6, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satSST), satSST, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satSSTerr), satSSTerr, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.satSSTbias), satSSTbias, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.firstPassPclear), firstPassPclear, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.firstPassPspectral), firstPassPspectral, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.firstPassPtexture), firstPassPtexture, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.revisedPclear), revisedPclear, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.pixelPriorSST), pixelPriorSST, 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.ffmRefls), ffmRefls, 3*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.ffmBTs), ffmBTs, 6*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.dBTdSSTs), dBTdSSTs, 6*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.dBTdTCWVs), dBTdTCWVs, 6*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.dBTdTas), dBTdTas, 6*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.dBTCh1Glint), dBTCh1Glint, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.dBTCh1Scatter), dBTCh1Scatter, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpMonth), nwpMonth, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpDay), nwpDay, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpHour), nwpHour, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpSkinT), nwpSkinT, 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpSLP), nwpSLP, 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpV10), nwpV10, 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpU10), nwpU10, 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpRH2m), nwpRH2m, 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpT2m), nwpT2m, 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpRHp), nwpRHp, 72*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpTCWV), nwpTCWV, 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpTp), nwpTp, 72*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpAerosol), nwpAerosol, 24*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.diurnalSkinSSTmodel), diurnalSkinSSTmodel, sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpInterpWindSpd), nwpInterpWindSpd, 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpInterpSSI), nwpInterpSSI, 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpInterpDLI), nwpInterpDLI, 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpInterpLHF), nwpInterpLHF, 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpInterpSHF), nwpInterpSHF, 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.nwpInterpSkinST), nwpInterpSkinST, 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(&(mdb.ADD_slot), ADD_slot, 4*sizeof(float))) == NULL) return(errNum); /* Now write record out to file */ --errNum; if((nItems = write(*fd, &mdb, sizeof(MDB_REC))) != sizeof(MDB_REC)) return(errNum); /* Return '0' upon successful completion */ return(0); } long rdrec_(fd, buoyID, satID, Year, Month, Day, refHour, buoyTimeVar, satTimeVar, buoyLat, buoyLon, satZenAng, solZenAng, relAzAng, buoyAirT, buoyDewT, buoy_SST, buoyWindDir, buoyWindSpd, buoySLP, satReflCh1, satReflCh2, satReflCh3, satBTCh1, satBTCh2, satBTCh3, satBTCh4, satBTCh5, satBTCh6, satSST, satSSTerr, satSSTbias, firstPassPclear, firstPassPspectral, firstPassPtexture, revisedPclear, pixelPriorSST, ffmRefls, ffmBTs, dBTdSSTs, dBTdTCWVs, dBTdTas, dBTCh1Glint, dBTCh1Scatter, nwpMonth, nwpDay, nwpHour, nwpSkinT, nwpSLP, nwpV10, nwpU10, nwpRH2m, nwpT2m, nwpRHp, nwpTCWV, nwpTp, nwpAerosol, diurnalSkinSSTmodel, nwpInterpWindSpd, nwpInterpSSI, nwpInterpDLI, nwpInterpLHF, nwpInterpSHF, nwpInterpSkinST, ADD_slot) int *fd; int *buoyID; int *satID; int *Year; int *Month; int *Day; int *refHour; int *buoyTimeVar; int *satTimeVar; float *buoyLat; float *buoyLon; float *satZenAng; float *solZenAng; float *relAzAng; float *buoyAirT; float *buoyDewT; float *buoy_SST; float *buoyWindDir; float *buoyWindSpd; float *buoySLP; float satReflCh1[49]; float satReflCh2[49]; float satReflCh3[49]; float satBTCh1[49]; float satBTCh2[49]; float satBTCh3[49]; float satBTCh4[49]; float satBTCh5[49]; float satBTCh6[49]; float satSST[49]; float satSSTerr[49]; float satSSTbias[49]; float firstPassPclear[49]; float firstPassPspectral[49]; float firstPassPtexture[49]; float revisedPclear[49]; float pixelPriorSST[49]; float ffmRefls[3]; float ffmBTs[6]; float dBTdSSTs[6]; float dBTdTCWVs[6]; float dBTdTas[6]; float *dBTCh1Glint; float *dBTCh1Scatter; float *nwpMonth; float *nwpDay; float *nwpHour; float nwpSkinT[4]; float nwpSLP[4]; float nwpV10[4]; float nwpU10[4]; float nwpRH2m[4]; float nwpT2m[4]; float nwpRHp[4][18]; float nwpTCWV[4]; float nwpTp[4][18]; float nwpAerosol[4][6]; float *diurnalSkinSSTmodel; float nwpInterpWindSpd[5]; float nwpInterpSSI[5]; float nwpInterpDLI[5]; float nwpInterpLHF[5]; float nwpInterpSHF[5]; float nwpInterpSkinST[5]; float ADD_slot[4]; { /* This routine reads a single binary output MDB record from a MDB file. Name of the file to read is supplied as the first argument to the procedure. Returns '0' upon success, -ve number if there is an error. * * modified by Frolov, March 28, 2005 * */ MDB_REC mdb; char *ptr; int nItems, errNum=0, result; /* Read record from file */ --errNum; if((nItems = read(*fd, &mdb, sizeof(MDB_REC))) != sizeof(MDB_REC)) return(errNum); /* Use memcpy() to copy the items - don't expect these operations to fail... */ --errNum; /* printf("buoyID=%i\n", mdb.buoyID);*/ if((ptr = memcpy(buoyID, &(mdb.buoyID), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satID, &(mdb.satID), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(Year, &(mdb.Year), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(Month, &(mdb.Month), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(Day, &(mdb.Day), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(refHour, &(mdb.refHour), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoyTimeVar, &(mdb.buoyTimeVar), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satTimeVar, &(mdb.satTimeVar), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoyLat, &(mdb.buoyLat), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoyLon, &(mdb.buoyLon), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satZenAng, &(mdb.satZenAng), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(solZenAng, &(mdb.solZenAng), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(relAzAng, &(mdb.relAzAng), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoyAirT, &(mdb.buoyAirT), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoyDewT, &(mdb.buoyDewT), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoy_SST, &(mdb.buoy_SST), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoyWindDir, &(mdb.buoyWindDir), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoyWindSpd, &(mdb.buoyWindSpd), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(buoySLP, &(mdb.buoySLP), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satReflCh1, &(mdb.satReflCh1), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satReflCh2, &(mdb.satReflCh2), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satReflCh3, &(mdb.satReflCh3), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satBTCh1, &(mdb.satBTCh1), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satBTCh2, &(mdb.satBTCh2), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satBTCh3, &(mdb.satBTCh3), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satBTCh4, &(mdb.satBTCh4), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satBTCh5, &(mdb.satBTCh5), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satBTCh6, &(mdb.satBTCh6), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satSST, &(mdb.satSST), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satSSTerr, &(mdb.satSSTerr), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(satSSTbias, &(mdb.satSSTbias), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(firstPassPclear, &(mdb.firstPassPclear), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(firstPassPspectral, &(mdb.firstPassPspectral), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(firstPassPtexture, &(mdb.firstPassPtexture), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(revisedPclear, &(mdb.revisedPclear), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(pixelPriorSST, &(mdb.pixelPriorSST), 49*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(ffmRefls, &(mdb.ffmRefls), 3*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(ffmBTs, &(mdb.ffmBTs), 6*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(dBTdSSTs, &(mdb.dBTdSSTs), 6*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(dBTdTCWVs, &(mdb.dBTdTCWVs), 6*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(dBTdTas, &(mdb.dBTdTas), 6*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(dBTCh1Glint, &(mdb.dBTCh1Glint), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(dBTCh1Scatter, &(mdb.dBTCh1Scatter), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpMonth, &(mdb.nwpMonth), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpDay, &(mdb.nwpDay), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpHour, &(mdb.nwpHour), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpSkinT, &(mdb.nwpSkinT), 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpSLP, &(mdb.nwpSLP), 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpV10, &(mdb.nwpV10), 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpU10, &(mdb.nwpU10), 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpRH2m, &(mdb.nwpRH2m), 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpT2m, &(mdb.nwpT2m), 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpRHp, &(mdb.nwpRHp), 72*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpTCWV, &(mdb.nwpTCWV), 4*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpTp, &(mdb.nwpTp), 72*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpAerosol, &(mdb.nwpAerosol), 24*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(diurnalSkinSSTmodel, &(mdb.diurnalSkinSSTmodel), sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpInterpWindSpd, &(mdb.nwpInterpWindSpd), 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpInterpSSI, &(mdb.nwpInterpSSI), 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpInterpDLI, &(mdb.nwpInterpDLI), 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpInterpLHF, &(mdb.nwpInterpLHF), 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpInterpSHF, &(mdb.nwpInterpSHF), 5*sizeof(float))) == NULL) return(errNum); --errNum; if((ptr = memcpy(nwpInterpSkinST, &(mdb.nwpInterpSkinST), 5*sizeof(float))) == NULL) return(errNum); if((ptr = memcpy(ADD_slot, &(mdb.ADD_slot), 4*sizeof(float))) == NULL) return(errNum); /* Return '0' upon successful completion */ return(0); } long closef_(fd) int *fd; { /* * This routine just closes the file associated with the user-supplied file pointer. * A value of '0' is returned upon success, -1 otherwise. * * Andy Harris, NOAA-CICS, December 7, 2004. */ int result; if((result = close(*fd)) != 0) { return(-1); } return(0); }