.sogot.de/". If the filesize or file creation
'date do not match, then please do not complain about problems.
'
'Examples using Visual Basic are available on the same web address.
'
'Published by <NAME>, 
'mailto: <EMAIL> if you find errors in this file.

'-----------------------------------------------------------------------------

ENDOFHEADER

}

sub VBFooter {
return <<ENDFOOTER;

'*****************************************************************************
'*                                                                           *
'*                    End of Visual Basic Functions                          *
'*                                                                           *
'****************************************************************************}

ENDFOOTER
}

# subroutine to handle simple enum elements
sub enums {
    my $Index = 0; # startvalue = 0 for enum entries
    my $_S;
    foreach (@_) {
        chomp;
        s/^\s+//;   # delete leading whitespace
        if (m/(\w+)\s*=\s*(\d+).*$/) {
        		# new value is being set, $index must be updated
            $_S.= "  Public Const $1 As Long = $2\n";
            eval($Index = $2+1);
        }
        else {
            $_S.= "  Public Const $_ As Long = ".$Index++."\n";
        }
    }
    return $_S;
}

# subroutine to handle typedef enum ( with intermediate constant definitions )
sub enumt {
    my $LINES = "";
    my $parval;
    my $newpar;
    foreach $parval (@_) {
        if ($parval =~ /^([^',]+)\,\s*([^'\t \n]+)/) {
            $parval =~ s/^(\s*)([^',]+)\,\s*(.*)$/$1$2/;
            $newpar = "$1$3";
        } 
        else { 
            $newpar = "" 
        }
        $parval =~ s/\,\s*$//;
        $parval =~ s/^(\s*\w+\s*\=\s*[^']+\s*)\,/$1 /g;
        $parval =~ s/^(\s*\w+\s*)\,/$1 /g;
        $LINES.= "$parval\n";
        $parval = $newpar;
        redo if $parval;
    }
    return $LINES;
}
#   handle the lines of a "typedef struct {... } structname"
sub typelist {
    my $tmp = "";
    foreach my $par (@_) {
        while ($par =~ s/^(\s*)\'(.+)\n(.*)/$3/) {   # embedded comments
            $tmp.= "$1'$2\n";
        }
        if ($par =~ s/^(\s*)(.*)\s(\w+)\s*\[\s*(\w+)\s*\]\s*$//) {    # index conversion
            $tmp.= "$1$3($4-1) As ".&typeconv($2);
        }
        elsif ($par =~ s/^(\s*)(.*)\s(\w+)\s*$//) {  # normal conversion
            $tmp.= "$1$3 As ".&typeconv($2);
        }
        else {$tmp.= $par}                          # leave it alone
    }
    return $tmp;
}

#   type conversion from C types to Visual Basic types
#   only the types from cryptlib.h are handled!!!
sub typeconv {
    my $param = shift;
    return $param if $param =~ s/\bint\b/Long/;
    return $param if $param =~ s/\bunsigned char\b/Byte/;
    return $param if $param =~ s/\bchar\s+C_PTR\b/String/;
    return $param if $param =~ s/\bchar\b/Byte/;
    return $param if $param =~ s/\bC_CHR\b/Byte/;						  # new cryptlib type C_CHR in current V3.1
    return $param if $param =~ s/\bvoid\s+C_PTR\b/String/;
    return $param if $param =~ s/\bC_STR\b/String/;						# new cryptlib type C_STR in current V3.1

    return $param if $param =~ s/\bCRYPT_CERTIFICATE\b/Long/;
    return $param if $param =~ s/\bCRYPT_CONTEXT\b/Long/;
    return $param if $param =~ s/\bCRYPT_DEVICE\b/Long/;
    return $param if $param =~ s/\bCRYPT_ENVELOPE\b/Long/;
    return $param if $param =~ s/\bCRYPT_KEYSET\b/Long/;
    return $param if $param =~ s/\bCRYPT_SESSION\b/Long/;
    return $param if $param =~ s/\bCRYPT_USER\b/Long/;
    return $param if $param =~ s/\bCRYPT_HANDLE\b/Long/;
    return $param;
}

#   parameter conversion for parameter lists in procedure calls
sub convpar {
    my $tmp = '';
    $Warn = "";
    LOOP: foreach my $parval (@_) {
        $tmp.= &convpar1($parval).", _\n";
    }
    $tmp =~ s/, _\n$//;
    return $tmp;
}

#   conversion of a single parameter in a parameter list
sub convpar1 {
    my $par = shift;
    if ($par =~ s/^\s*(C_IN\s+|C_IN_OPT\s+)(.+)\s+(\w+)\s*/&typeconv($2)/e) {
        return " ByVal $3 As $par";
    }
    if ($par =~ s/^\s*C_INOUT\s+(.+)\s+(\w+)\s*/&typeconv($1)/e) {
        $Warn = "will replace the String '$2'";
        return " ByVal $2 As $par";
    }
    if ($par =~ s/^\s*(C_OUT\s+|C_OUT_OPT\s+)void\s+C_PTR\s+(\w+)\s*/$2/) {
        $Warn = "will modify the String '$par'";
        return " ByVal $par As String";
    }
    if ($par =~ s/^\s*(C_OUT\s+|C_OUT_OPT\s+)(.+)\s+C_PTR\s+(\w+)\s*/&typeconv($2)/e) {
        return " ByRef $3 As $par";
    }
    if ($par =~ s/^\s*(C_OUT\s+|C_OUT_OPT\s+)(.+)\s+(\w+)\s*/&typeconv($2)/e) {
        return " $3 As $par";
    }
    return $par;
}

Vectibix® (panitumumab) was non-inferior to Erbitux® (cetuximab) for overall survival in the treatment of wild-type KRAS metastatic colorectal cancer in patients who have not responded to chemotherapy, according to the results of a study presented at the ESMO 2013 Congress of the European Society for Medical Oncology in Amsterdam.
Targeted therapies are anticancer drugs that interfere with specific pathways involved in cancer cell growth or survival. Vectibix inhibits cancer cell growth and survival by targeting a protein known as the epidermal growth factor receptor (EGFR). Vectibix has been approved for the treatment of EGFR-expressing metastatic colorectal cancer that has progressed on or following fluoropyrimidine, oxaliplatin-, and irinotecan-containing chemotherapy regimens. An estimated 40-50 percent of metastatic colorectal cancers contain a in a gene known as KRAS. Vectibix appears to benefit only those patients whose cancers do not contain the mutation. This is referred to as wild-type KRAS.
This phase III trial included 999 patients with chemo-resistant wild-type KRAS metastatic colorectal cancer who were randomized to receive Vectibix or Erbitux. The prospective study showed that the median overall survival for patients treated with Vectibix was 10.4 months compared to 10 months for patients treated with Erbitux. Progression-free survival was a median of 4.1 months in patients treated with Vectibix versus 4.4 months in patients treated with Erbitux. Objective response rate, which is the percentage of patients who experienced tumor size reduction, was 22 percent for patients treated with Vectibix compared to 19.8 percent for patients treated with Erbitux.
The researchers concluded that Vectibix was non-inferior to Erbitux for the treatment of