データ流し込みプロフラムの例 ( gcc / gpre )
0001: /******************************************** 0002: * ctest002.e 0003: ********************************************/ 0004: #include <stdio.h> 0005: #include <time.h> 0006: #include <stdlib.h> 0007: #include <string.h> 0008: #include <ibase.h> 0009: 0010: double getnanosec() 0011: { 0012: double sec, nsec; 0013: struct timeval tv; 0014: gettimeofday(&tv, 0); 0015: sec=(double)tv.tv_sec; 0016: nsec=(double)tv.tv_usec; 0017: return sec+nsec/1000000; 0018: } 0019: 0020: char* parseline(char **p, char **q) 0021: { 0022: char *pp; 0023: *q=strchr(*p, ','); 0024: if (*q) **q=0; 0025: pp=*p; 0026: *p=*q+1; 0027: return pp; 0028: } 0029: 0030: int main(int argc, char **argv) 0031: { 0032: double nsec0, nsec1, nsec2; 0033: FILE *INFIL; 0034: char buff[1024]; 0035: char *p, *q; 0036: int updt; 0037: int r1, r2, r3, r4; 0038: int c1, c2, c3, c4; 0039: int i; 0040: 0041: c1=c2=c3=c4=0; 0042: 0043: EXEC SQL SET DATABASE DB="/DB/birds/birdsX.fdb" 0044: USER "SYSDBA" PASSWORD "********"; 0045: BASED ON ORDERTAB.SEQNO O_seqno; 0046: BASED ON ORDERTAB.ORDERNAME O_ordername; 0047: BASED ON ORDERTAB.ORDERJPN O_orderjpn; 0048: BASED ON FAMILY.SEQNO F_seqno; 0049: BASED ON FAMILY.ORDERNAME F_ordername; 0050: BASED ON FAMILY.FAMILYNAME F_familyname; 0051: BASED ON FAMILY.FAMILYJPN F_familyjpn; 0052: BASED ON GENUS.SEQNO G_seqno; 0053: BASED ON GENUS.FAMILYNAME G_familyname; 0054: BASED ON GENUS.GENUSNAME G_genusname; 0055: BASED ON GENUS.GENUSJPN G_genusjpn; 0056: BASED ON SPECIES.SEQNO S_seqno; 0057: BASED ON SPECIES.GENUSNAME S_genusname; 0058: BASED ON SPECIES.SPECIESNAME S_speciesname; 0059: BASED ON SPECIES.SPECIESJPN S_speciesjpn; 0060: BASED ON SPECIES.SPECIESENG S_specieseng; 0061: BASED ON SPECIES.SPECIESENGCAP S_speciesengcap; 0062: 0063: EXEC SQL SET NAMES EUCJ_0208; 0064: EXEC SQL CONNECT DB USER 'SYSDBA' PASSWORD '********'; 0065: 0066: nsec0=getnanosec(); 0067: nsec1=nsec0; 0068: if ((INFIL=fopen("/DB/birds/isql/BIRDLIST.TXT", "r"))==NULL) exit(1); 0069: 0070: i=0; 0071: EXEC SQL SET TRANSACTION; 0072: while (fgets(buff, 1024, INFIL)){ 0073: if (strncmp(buff, "//", 2)==0) continue; 0074: i++; 0075: if (i%1000==0){ 0076: printf("o"); 0077: fflush(stdout); 0078: }else if (i%100==0){ 0079: printf("."); 0080: fflush(stdout); 0081: } 0082: if (i%10000==0){ 0083: nsec2=getnanosec(); 0084: printf("%6d %8.3f %5d\n", i, nsec2-nsec1, i/((int)nsec2-(int)nsec1)); 0085: nsec1=nsec2; 0086: } 0087: 0088: p=strrchr(buff, '\n'); 0089: if (p) *p=0; 0090: strcat(buff, ","); 0091: p=buff; 0092: strcpy(S_speciesname, parseline(&p, &q)); 0093: strcpy(S_specieseng, parseline(&p, &q)); 0094: strcpy(S_speciesjpn, parseline(&p, &q)); 0095: strcpy(G_genusname, parseline(&p, &q)); 0096: strcpy(G_genusjpn, parseline(&p, &q)); 0097: strcpy(F_familyname, parseline(&p, &q)); 0098: strcpy(F_familyjpn, parseline(&p, &q)); 0099: strcpy(O_ordername, parseline(&p, &q)); 0100: strcpy(O_orderjpn, parseline(&p, &q)); 0101: strcpy(S_speciesengcap, S_specieseng); 0102: for (p=S_speciesengcap; *p; p++) *p=toupper(*p); 0103: updt=0; 0104: EXEC SQL EXECUTE PROCEDURE 0105: PSGFO_CHKINSERT 0106: :updt, 0107: :O_ordername, :O_orderjpn, 0108: :F_familyname, :F_familyjpn, 0109: :G_genusname, :G_genusjpn, 0110: :S_speciesname, :S_speciesjpn, :S_specieseng, :S_speciesengcap 0111: RETURNING_VALUES 0112: :r1, :r2, :r3, :r4; 0113: c1+=r1; 0114: c2+=r2; 0115: c3+=r3; 0116: c4+=r4; 0117: } 0118: EXEC SQL COMMIT; 0119: fclose(INFIL); 0120: 0121: nsec2=getnanosec(); 0122: printf("%6d %8.3f %5d\n", i, nsec2-nsec1, i/((int)nsec2-(int)nsec1)); 0123: 0124: printf("%6d%6d%6d%6d elapsed:%8.3f\n", c1, c2, c3, c4, nsec2-nsec0); 0125: 0126: EXEC SQL COMMIT; 0127: EXEC SQL DISCONNECT DB; 0128: exit(0); 0129: }
この HTML を検査する。( XHTML 1.0 Strict で書かれています )
Another HTML Lint Gateway ( Mirrored by htmllint.oosato.org )