char* cfield$(char* inputstr, long long* sel_field, char* delimiter_char)
{
    char delim;
    if (delimiter_char == NULL){  // if delimiter not provided
       delim = ',';               // default char ','
    }else{
        delim = delimiter_char[1]; // BASIC string character
    }

    unsigned char sel;             // if selected field not provided
    if(sel_field == NULL) {        // Error!
       sel = 0;
    }else{
       sel = (unsigned char)*sel_field; // selected field
    }

    unsigned char delim_count=1;    // counter for delimiters
    unsigned char len = inputstr[0]; // BASIC string length
    char* p_istr=inputstr+1; // set pointer to the string content
    char* p_astr=inputstr+1; // begin pointer
    char* p_estr=inputstr;   // end pointer

    char* p_ret;     // pointer to return string
    char* p_tmp;     // temp string pointer

    len++;
    while(--len && (delim_count <= sel)){ // count fields with trailing
                                          // delimiters
       if (*p_istr++ == delim){
            p_astr=p_estr+1;
            p_estr=p_istr-1;
            delim_count++;
        }
    }

    if(!len){  // last field has no delimiter
        p_astr=p_estr+1;
        p_estr=p_istr;
    }

    p_ret = GetTempMemory(256);
    *p_ret      = '\0';               // Store BASIC (trimmed) string length
    if (!(delim_count < sel) && sel){ // if sel_field not out of range
        p_tmp = p_ret;            // Copy pointer to ret string
        *p_ret = p_estr - p_astr; // store string length
        while (p_astr <= p_estr) {// Copy the string, starting from the first char
            *++p_tmp = *p_astr++;
        }
    }
    return p_ret;
 }

void main(){}