SUBROUTINE CDEGPT ( * * inputs * : XEDGE, YEDGE, DX, DY, NEDGE, : OFILE, XNAME, YNAME, DXNAME, DYNAME, * * output * : STATUS) * * Module number: * * Module name: * * Keyphrase: * ---------- * write the edge coordinate to a table * * Description: * ------------ * * FORTRAN name: CDEGPT.FOR * * Keywords of accessed files and tables: * -------------------------------------- * Name I/O Description / Comments * * output table column names * * (XNAME) O X coordinates * (YNAME) O Y coordinates * (DXNAME) O standard error of X coordinate * (DYNAME) O standard error of Y coordinate * * Subroutines Called: * ------------------- * CDBS: * CDTOUT * SDAS: * UTRPTR, UTTCLO, UMSPUT * Others: * None * * History: * -------- * Version Date Author Description * 1 01-20-87 J.-C. HSU design and coding * 2 10-20-87 J.-C. HSU F77 SDAS *------------------------------------------------------------------------------- * *== input: * --edge coordinates and their * --standard error REAL XEDGE(1), YEDGE(1), DX(1), DY(1) * --number of edge points INTEGER NEDGE * --file name of output table CHARACTER*(*) OFILE, * --column names of X and Y coordinates * --and their standard errors : XNAME, YNAME, DXNAME, DYNAME * *== output * --error status INTEGER STATUS * *== local: * --status and loop indices INTEGER STATOK, I, J, * --number of existed rows of the output * --table : NROWS, * --number of columns : NCOLS, * --pointer to table descripter : TP, * --column identifiers : COLIDN(40), * --data type : DTYPE(40) * --data buffer REAL CBUFF(40) * --dummy CHARACTER*5 CHAR5 * --column format CHARACTER*8 COLFMT(40) * --output SDAS table names CHARACTER*16 CNAME(40), * --column units : UNIT(40) * --error message context CHARACTER*130 CONTXT, MESS *==========================begin iraf77.inc (without INTEGER*2)================= * Include file for the iraf77 FORTRAN interface to the IRAF VOS * Get IRAF common into main program * LOGICAL MEMB(1) INTEGER MEMI(1) INTEGER MEML(1) REAL MEMR(1) DOUBLE PRECISION MEMD(1) COMPLEX MEMX(1) EQUIVALENCE (MEMB, MEMI, MEML, MEMR, MEMD, MEMX) COMMON /MEM/ MEMD * * File I/O access modes * INTEGER RDONLY PARAMETER (RDONLY = 1) INTEGER RDWRIT PARAMETER (RDWRIT = 2) INTEGER WRONLY PARAMETER (WRONLY = 3) INTEGER APPEND PARAMETER (APPEND = 4) INTEGER NEWFIL PARAMETER (NEWFIL = 5) INTEGER TMPFIL PARAMETER (TMPFIL = 6) INTEGER NEWCPY PARAMETER (NEWCPY = 7) INTEGER NEWIMG PARAMETER (NEWIMG = 5) * * codes for data types * INTEGER TYBOOL PARAMETER (TYBOOL = 1) INTEGER TYCHAR PARAMETER (TYCHAR = 2) INTEGER TYSHOR PARAMETER (TYSHOR = 3) INTEGER TYINT PARAMETER (TYINT = 4) INTEGER TYLONG PARAMETER (TYLONG = 5) INTEGER TYREAL PARAMETER (TYREAL = 6) INTEGER TYDOUB PARAMETER (TYDOUB = 7) INTEGER TYCPLX PARAMETER (TYCPLX = 8) INTEGER TYUSHT PARAMETER (TYUSHT = 11) INTEGER TYUBYT PARAMETER (TYUBYT = 12) * * TYTEXT is a special code for the iraf77 interface; it is not in the VOS * INTEGER TYTEXT PARAMETER (TYTEXT = 13) *========================end iraf77.inc========================================= *=========================begin hsp.inc========================================= * --status return code INTEGER OK, ERRNUM(20) INTEGER DEST, PRIO DATA OK /0/ DATA ERRNUM /701, 702, 703, 704, 705, 706, 707, 708, 709, 710, : 711, 712, 713, 714, 715, 716, 717, 718, 719, 720/ * --message destination and priority DATA DEST, PRIO /1, 0/ *=========================end hsp.inc=========================================== *------------------------------------------------------------------------------ * NCOLS = 4 * * specify column names * CNAME(1) = XNAME CNAME(2) = YNAME CNAME(3) = DXNAME CNAME(4) = DYNAME * * column data type * DO 10 I = 1, NCOLS DTYPE(I) = TYREAL 10 CONTINUE * * column units and display formats * DO 20 I = 1, NCOLS UNIT(I) = ' ' COLFMT(I) = ' ' 20 CONTINUE * * set up output table * CALL CDTOUT (OFILE, CNAME, UNIT, COLFMT, DTYPE, NCOLS, : TP, COLIDN, NROWS, STATUS) IF (STATUS .NE. OK) THEN CONTXT = 'error setting up output table' GO TO 999 END IF * * write result to output table * J = 1 DO 30 I = 1, NEDGE * * specify column content * CBUFF(1) = XEDGE(I) CBUFF(2) = YEDGE(I) CBUFF(3) = DX(I) CBUFF(4) = DY(I) * CALL UTRPTR (TP, COLIDN, 4, NROWS+J, CBUFF, STATOK) IF (STATOK .NE. OK) THEN WRITE (CHAR5, '(I5)') I CONTXT = 'error writing a row to the output table ' : // 'at row #' // CHAR5 CALL UMSPUT (CONTXT, DEST, PRIO, STATOK) ELSE J = J + 1 END IF 30 CONTINUE * * close output table * CALL UTTCLO (TP, STATUS) IF (STATUS .NE. OK) THEN CONTXT = 'cannot close output table' GO TO 999 END IF * STATUS = OK GO TO 1000 * * write error messages * 999 MESS = 'CDEGPT: ' // CONTXT CALL UMSPUT (MESS, DEST, PRIO, STATOK) * 1000 RETURN END