コード例 #1
0
ファイル: Set_prob.c プロジェクト: mmase/wgrib2
int f_set_prob(ARG5) {

    int pdt, val, scale;
    double value;
    unsigned char *p;

    if (mode < 0) return 0;
    pdt = code_table_4_0(sec);

    switch(pdt) {
	case 0:
	case 1:
	case 2:
	case 4:
	case 6:
	    f_set_pdt(call_ARG1(inv_out, NULL, "+5"));
	    break;
	case 8:
	case 10:
	case 11:
	case 12:
	case 13:
	case 14:
	case 15:
	    f_set_pdt(call_ARG1(inv_out, NULL, "+9"));
	    break;
    }
    p = code_table_4_9_location(sec);
    p[-2] = (unsigned char) atoi(arg1);
    p[-1] = (unsigned char) atoi(arg2);
    p[0] = (unsigned char) atoi(arg3);

    // encode lower limit
    value = atof(arg4);
    best_scaled_value(value, &scale,&val);
    p[1] = scale & 255;
    uint_char(val, p+2);

    // encode upper limit
    value = atof(arg5);
    best_scaled_value(value, &scale,&val);
    p[6] = scale & 255;
    uint_char(val, p+7);
    return 0;
}
コード例 #2
0
ファイル: Tosubmsg.c プロジェクト: erget/wgrib2
/*
 * HEADER:100:tosubmsg:output:1:convert GRIB message to submessage and write to file X
 */
int f_tosubmsg(ARG1) {
    struct submsg *save;

    if (mode == -1) {
        *local = save = (struct submsg *) malloc( sizeof(struct submsg));
        if (save == NULL) fatal_error("memory allocation tosubmsg","");
        init_tosubmsg(call_ARG1(inv_out,local,arg1), save);
    }
    else if (mode >= 0) {
        save = (struct submsg *) *local;
        write_tosubmsg(call_ARG1(inv_out,local,arg1), save);
    }
    else if (mode == -2) {
        save = (struct submsg *) *local;
        cleanup_tosubmsg(call_ARG1(inv_out,local,arg1), save);
    }
    return 0;
}
コード例 #3
0
ファイル: Tosubmsg.c プロジェクト: mmase/wgrib2
/*
 * HEADER:100:tosubmsg:output:1:convert GRIB message to submessage and write to file X
 */
int f_tosubmsg(ARG1) {
    struct submsg *save;

    if (flush_mode)
      fatal_error("Tosubmsg: requires random access I/O, incompatible with -flush" ,"");

    if (mode == -1) {
        *local = save = (struct submsg *) malloc( sizeof(struct submsg));
        if (save == NULL) fatal_error("memory allocation tosubmsg","");
        init_tosubmsg(call_ARG1(inv_out,local,arg1), save);
    }
    else if (mode >= 0) {
        save = (struct submsg *) *local;
        write_tosubmsg(call_ARG1(inv_out,local,arg1), save);
    }
    else if (mode == -2) {
        save = (struct submsg *) *local;
        cleanup_tosubmsg(call_ARG1(inv_out,local,arg1), save);
    }
    return 0;
}
コード例 #4
0
ファイル: Set_percentile.c プロジェクト: mmase/wgrib2
int f_set_percentile(ARG1) {

    int i,pdt, percent;
    unsigned char *p;

    if (mode < 0) return 0;

    pdt = code_table_4_0(sec);
    percent = atoi(arg1);
    if (percent < 0) percent = 0;
    if (percent > 100 ) percent = 100;

    switch(pdt) {
	case 0:
	case 1:
	case 2:
	case 4:
	case 5:
	    f_set_pdt(call_ARG1(inv_out, NULL, "+6"));
	    break;
	case 8:
	case 9:
	case 11:
	case 12:
	case 13:
	case 14:
	case 15:
	    f_set_pdt(call_ARG1(inv_out, NULL, "+10"));
	    break;
    }

    p = percentile_value_location(sec);
    if (p != NULL) *p = (unsigned char) percent;

    return 0;
}