mcs_fortran.inc

00001       CHARACTER*(*) FUNCTION ifd_last_error()
00002       CALL wf77_ifd_last_error(ifd_last_error, LEN(ifd_last_
00003      .error))
00004       RETURN
00005       END
00006 
00007 
00008 
00009       INTEGER*4 FUNCTION ifd_got_error()
00010       CALL wf77_ifd_got_error(ifd_got_error)
00011       RETURN
00012       END
00013 
00014 
00015 
00016       SUBROUTINE ifd_reset_error()
00017       CALL wf77_ifd_reset_error()
00018       RETURN
00019       END
00020 
00021 
00022 
00023       INTEGER*8 FUNCTION ifd_null()
00024       CALL wf77_ifd_null(ifd_null)
00025       RETURN
00026       END
00027 
00028 
00029 
00030       INTEGER*8 FUNCTION new_Data(dummy, type, maxLength, is
00031      .unsigned)
00032       INTEGER*8 dummy
00033       INTEGER*4 type
00034       INTEGER*4 maxLength
00035       INTEGER*4 isunsigned
00036       CALL wf77_new_Data(dummy, type, maxLength, isunsigned,
00037      . new_Data)
00038       RETURN
00039       END
00040 
00041 
00042 
00043       INTEGER*8 FUNCTION copy_Data(obj)
00044       INTEGER*8 obj
00045       CALL wf77_copy_Data(obj, copy_Data)
00046       RETURN
00047       END
00048 
00049 
00050 
00051       SUBROUTINE del_Data(obj)
00052       INTEGER*8 obj
00053       CALL wf77_del_Data(obj)
00054       RETURN
00055       END
00056 
00057 
00058 
00059       CHARACTER*(*) FUNCTION Data_name(obj)
00060       INTEGER*8 obj
00061       CALL wf77_Data_name(obj, Data_name, LEN(Data_name))
00062       RETURN
00063       END
00064 
00065 
00066 
00067       INTEGER*4 FUNCTION Data_type(obj)
00068       INTEGER*8 obj
00069       CALL wf77_Data_type(obj, Data_type)
00070       RETURN
00071       END
00072 
00073 
00074 
00075       INTEGER*4 FUNCTION Data_maxLength(obj)
00076       INTEGER*8 obj
00077       CALL wf77_Data_maxLength(obj, Data_maxLength)
00078       RETURN
00079       END
00080 
00081 
00082 
00083       INTEGER*4 FUNCTION Data_length(obj)
00084       INTEGER*8 obj
00085       CALL wf77_Data_length(obj, Data_length)
00086       RETURN
00087       END
00088 
00089 
00090 
00091       INTEGER*4 FUNCTION Data_isUnsigned(obj)
00092       INTEGER*8 obj
00093       CALL wf77_Data_isUnsigned(obj, Data_isUnsigned)
00094       RETURN
00095       END
00096 
00097 
00098 
00099       INTEGER*4 FUNCTION Data_isNull(obj)
00100       INTEGER*8 obj
00101       CALL wf77_Data_isNull(obj, Data_isNull)
00102       RETURN
00103       END
00104 
00105 
00106 
00107       INTEGER*4 FUNCTION Data_ival(obj)
00108       INTEGER*8 obj
00109       CALL wf77_Data_ival(obj, Data_ival)
00110       RETURN
00111       END
00112 
00113 
00114 
00115       INTEGER*8 FUNCTION Data_uival(obj)
00116       INTEGER*8 obj
00117       CALL wf77_Data_uival(obj, Data_uival)
00118       RETURN
00119       END
00120 
00121 
00122 
00123       INTEGER*8 FUNCTION Data_lval(obj)
00124       INTEGER*8 obj
00125       CALL wf77_Data_lval(obj, Data_lval)
00126       RETURN
00127       END
00128 
00129 
00130 
00131       INTEGER*8 FUNCTION Data_ulval(obj)
00132       INTEGER*8 obj
00133       CALL wf77_Data_ulval(obj, Data_ulval)
00134       RETURN
00135       END
00136 
00137 
00138 
00139       REAL*4 FUNCTION Data_fval(obj)
00140       INTEGER*8 obj
00141       CALL wf77_Data_fval(obj, Data_fval)
00142       RETURN
00143       END
00144 
00145 
00146 
00147       REAL*8 FUNCTION Data_dval(obj)
00148       INTEGER*8 obj
00149       CALL wf77_Data_dval(obj, Data_dval)
00150       RETURN
00151       END
00152 
00153 
00154 
00155       CHARACTER*(*) FUNCTION Data_sval(obj)
00156       INTEGER*8 obj
00157       CALL wf77_Data_sval(obj, Data_sval, LEN(Data_sval))
00158       RETURN
00159       END
00160 
00161 
00162 
00163       INTEGER*8 FUNCTION Data_tval(obj)
00164       INTEGER*8 obj
00165       CALL wf77_Data_tval(obj, Data_tval)
00166       RETURN
00167       END
00168 
00169 
00170 
00171       SUBROUTINE Data_setNull(obj)
00172       INTEGER*8 obj
00173       CALL wf77_Data_setNull(obj)
00174       RETURN
00175       END
00176 
00177 
00178 
00179       SUBROUTINE Data_setival(obj, val)
00180       INTEGER*8 obj
00181       INTEGER*4 val
00182       CALL wf77_Data_setival(obj, val)
00183       RETURN
00184       END
00185 
00186 
00187 
00188       SUBROUTINE Data_setuival(obj, val)
00189       INTEGER*8 obj
00190       INTEGER*8 val
00191       CALL wf77_Data_setuival(obj, val)
00192       RETURN
00193       END
00194 
00195 
00196 
00197       SUBROUTINE Data_setlval(obj, val)
00198       INTEGER*8 obj
00199       INTEGER*8 val
00200       CALL wf77_Data_setlval(obj, val)
00201       RETURN
00202       END
00203 
00204 
00205 
00206       SUBROUTINE Data_setulval(obj, val)
00207       INTEGER*8 obj
00208       INTEGER*8 val
00209       CALL wf77_Data_setulval(obj, val)
00210       RETURN
00211       END
00212 
00213 
00214 
00215       SUBROUTINE Data_setdval(obj, val)
00216       INTEGER*8 obj
00217       REAL*8 val
00218       CALL wf77_Data_setdval(obj, val)
00219       RETURN
00220       END
00221 
00222 
00223 
00224       SUBROUTINE Data_setsval(obj, val)
00225       INTEGER*8 obj
00226       CHARACTER*(*) val
00227       CALL wf77_Data_setsval(obj, val, LEN(val))
00228       RETURN
00229       END
00230 
00231 
00232 
00233       SUBROUTINE Data_setblob(obj, lbuf, size)
00234       INTEGER*8 obj
00235       INTEGER*8 lbuf
00236       INTEGER*8 size
00237       CALL wf77_Data_setblob(obj, lbuf, size)
00238       RETURN
00239       END
00240 
00241 
00242 
00243       SUBROUTINE Data_settimeval(obj, val)
00244       INTEGER*8 obj
00245       INTEGER*8 val
00246       CALL wf77_Data_settimeval(obj, val)
00247       RETURN
00248       END
00249 
00250 
00251 
00252       CHARACTER*(*) FUNCTION Data_print(obj)
00253       INTEGER*8 obj
00254       CALL wf77_Data_print(obj, Data_print, LEN(Data_print))
00255       RETURN
00256       END
00257 
00258 
00259 
00260       SUBROUTINE Data_setTag(obj, tag)
00261       INTEGER*8 obj
00262       INTEGER*4 tag
00263       CALL wf77_Data_setTag(obj, tag)
00264       RETURN
00265       END
00266 
00267 
00268 
00269       INTEGER*4 FUNCTION Data_getTag(obj)
00270       INTEGER*8 obj
00271       CALL wf77_Data_getTag(obj, Data_getTag)
00272       RETURN
00273       END
00274 
00275 
00276 
00277       INTEGER*8 FUNCTION new_Record(dummy)
00278       INTEGER*8 dummy
00279       CALL wf77_new_Record(dummy, new_Record)
00280       RETURN
00281       END
00282 
00283 
00284 
00285       SUBROUTINE del_Record(obj)
00286       INTEGER*8 obj
00287       CALL wf77_del_Record(obj)
00288       RETURN
00289       END
00290 
00291 
00292 
00293       SUBROUTINE Record_clear(obj)
00294       INTEGER*8 obj
00295       CALL wf77_Record_clear(obj)
00296       RETURN
00297       END
00298 
00299 
00300 
00301       INTEGER*8 FUNCTION Record_count(obj)
00302       INTEGER*8 obj
00303       CALL wf77_Record_count(obj, Record_count)
00304       RETURN
00305       END
00306 
00307 
00308 
00309       SUBROUTINE Record_addField(obj, d)
00310       INTEGER*8 obj
00311       INTEGER*8 d
00312       CALL wf77_Record_addField(obj, d)
00313       RETURN
00314       END
00315 
00316 
00317 
00318       INTEGER*8 FUNCTION Record_pop(obj, x)
00319       INTEGER*8 obj
00320       INTEGER*4 x
00321       CALL wf77_Record_pop(obj, x, Record_pop)
00322       RETURN
00323       END
00324 
00325 
00326 
00327       INTEGER*8 FUNCTION Record_field(obj, x)
00328       INTEGER*8 obj
00329       INTEGER*4 x
00330       CALL wf77_Record_field(obj, x, Record_field)
00331       RETURN
00332       END
00333 
00334 
00335 
00336       INTEGER*4 FUNCTION Record_posWhoseNameIs(obj, name)
00337       INTEGER*8 obj
00338       CHARACTER*(*) name
00339       CALL wf77_Record_posWhoseNameIs(obj, name, LEN(name), 
00340      .Record_posWhoseNameIs)
00341       RETURN
00342       END
00343 
00344 
00345 
00346       SUBROUTINE Record_setFieldMap(obj, s)
00347       INTEGER*8 obj
00348       CHARACTER*(*) s
00349       CALL wf77_Record_setFieldMap(obj, s, LEN(s))
00350       RETURN
00351       END
00352 
00353 
00354 
00355       INTEGER*4 FUNCTION RecordSet_setFirst(obj)
00356       INTEGER*8 obj
00357       CALL wf77_RecordSet_setFirst(obj, RecordSet_setFirst)
00358       RETURN
00359       END
00360 
00361 
00362 
00363       INTEGER*4 FUNCTION RecordSet_setLast(obj)
00364       INTEGER*8 obj
00365       CALL wf77_RecordSet_setLast(obj, RecordSet_setLast)
00366       RETURN
00367       END
00368 
00369 
00370 
00371       INTEGER*4 FUNCTION RecordSet_setNext(obj)
00372       INTEGER*8 obj
00373       CALL wf77_RecordSet_setNext(obj, RecordSet_setNext)
00374       RETURN
00375       END
00376 
00377 
00378 
00379       INTEGER*4 FUNCTION RecordSet_setPrev(obj)
00380       INTEGER*8 obj
00381       CALL wf77_RecordSet_setPrev(obj, RecordSet_setPrev)
00382       RETURN
00383       END
00384 
00385 
00386 
00387       INTEGER*4 FUNCTION RecordSet_setWhereS(obj, field, whe
00388      .re)
00389       INTEGER*8 obj
00390       INTEGER*8 field
00391       CHARACTER*(*) where
00392       CALL wf77_RecordSet_setWhereS(obj, field, where, LEN(w
00393      .here), RecordSet_setWhereS)
00394       RETURN
00395       END
00396 
00397 
00398 
00399       INTEGER*4 FUNCTION RecordSet_setWhereI(obj, field, whe
00400      .re)
00401       INTEGER*8 obj
00402       INTEGER*8 field
00403       INTEGER*4 where
00404       CALL wf77_RecordSet_setWhereI(obj, field, where, Recor
00405      .dSet_setWhereI)
00406       RETURN
00407       END
00408 
00409 
00410 
00411       INTEGER*4 FUNCTION RecordSet_setPos(obj, newpos)
00412       INTEGER*8 obj
00413       INTEGER*8 newpos
00414       CALL wf77_RecordSet_setPos(obj, newpos, RecordSet_setP
00415      .os)
00416       RETURN
00417       END
00418 
00419 
00420 
00421       SUBROUTINE RecordSet_dump(obj, fn)
00422       INTEGER*8 obj
00423       CHARACTER*(*) fn
00424       CALL wf77_RecordSet_dump(obj, fn, LEN(fn))
00425       RETURN
00426       END
00427 
00428 
00429 
00430       INTEGER*4 FUNCTION RecordSet_know_nRows(obj)
00431       INTEGER*8 obj
00432       CALL wf77_RecordSet_know_nRows(obj, RecordSet_know_nRo
00433      .ws)
00434       RETURN
00435       END
00436 
00437 
00438 
00439       INTEGER*4 FUNCTION RecordSet_eof(obj)
00440       INTEGER*8 obj
00441       CALL wf77_RecordSet_eof(obj, RecordSet_eof)
00442       RETURN
00443       END
00444 
00445 
00446 
00447       INTEGER*4 FUNCTION RecordSet_alwaysSameStructure(obj)
00448       INTEGER*8 obj
00449       CALL wf77_RecordSet_alwaysSameStructure(obj, RecordSet
00450      ._alwaysSameStructure)
00451       RETURN
00452       END
00453 
00454 
00455 
00456       INTEGER*8 FUNCTION RecordSet_nRows(obj)
00457       INTEGER*8 obj
00458       CALL wf77_RecordSet_nRows(obj, RecordSet_nRows)
00459       RETURN
00460       END
00461 
00462 
00463 
00464       INTEGER*8 FUNCTION RecordSet_nFields(obj)
00465       INTEGER*8 obj
00466       CALL wf77_RecordSet_nFields(obj, RecordSet_nFields)
00467       RETURN
00468       END
00469 
00470 
00471 
00472       INTEGER*8 FUNCTION RecordSet_pos(obj)
00473       INTEGER*8 obj
00474       CALL wf77_RecordSet_pos(obj, RecordSet_pos)
00475       RETURN
00476       END
00477 
00478 
00479 
00480       INTEGER*8 FUNCTION RecordSet_rec(obj)
00481       INTEGER*8 obj
00482       CALL wf77_RecordSet_rec(obj, RecordSet_rec)
00483       RETURN
00484       END
00485 
00486 
00487 
00488       INTEGER*8 FUNCTION RecordSet_metarec(obj)
00489       INTEGER*8 obj
00490       CALL wf77_RecordSet_metarec(obj, RecordSet_metarec)
00491       RETURN
00492       END
00493 
00494 
00495 
00496       INTEGER*8 FUNCTION new_DBConn(dummy)
00497       INTEGER*8 dummy
00498       CALL wf77_new_DBConn(dummy, new_DBConn)
00499       RETURN
00500       END
00501 
00502 
00503 
00504       SUBROUTINE del_DBConn(obj)
00505       INTEGER*8 obj
00506       CALL wf77_del_DBConn(obj)
00507       RETURN
00508       END
00509 
00510 
00511 
00512       SUBROUTINE DBConn_connect(obj, user, pass, db, host)
00513       INTEGER*8 obj
00514       CHARACTER*(*) user
00515       CHARACTER*(*) pass
00516       CHARACTER*(*) db
00517       CHARACTER*(*) host
00518       CALL wf77_DBConn_connect(obj, user, LEN(user), pass, L
00519      .EN(pass), db, LEN(db), host, LEN(host))
00520       RETURN
00521       END
00522 
00523 
00524 
00525       SUBROUTINE DBConn_close(obj)
00526       INTEGER*8 obj
00527       CALL wf77_DBConn_close(obj)
00528       RETURN
00529       END
00530 
00531 
00532 
00533       INTEGER*4 FUNCTION DBConn_isOpen(obj)
00534       INTEGER*8 obj
00535       CALL wf77_DBConn_isOpen(obj, DBConn_isOpen)
00536       RETURN
00537       END
00538 
00539 
00540 
00541       INTEGER*8 FUNCTION DBConn_newDBConn(obj)
00542       INTEGER*8 obj
00543       CALL wf77_DBConn_newDBConn(obj, DBConn_newDBConn)
00544       RETURN
00545       END
00546 
00547 
00548 
00549       INTEGER*8 FUNCTION new_Query(dummy, lconn, handleNewDB
00550      .Conn)
00551       INTEGER*8 dummy
00552       INTEGER*8 lconn
00553       INTEGER*4 handleNewDBConn
00554       CALL wf77_new_Query(dummy, lconn, handleNewDBConn, new
00555      ._Query)
00556       RETURN
00557       END
00558 
00559 
00560 
00561       SUBROUTINE del_Query(obj)
00562       INTEGER*8 obj
00563       CALL wf77_del_Query(obj)
00564       RETURN
00565       END
00566 
00567 
00568 
00569       SUBROUTINE Query_query(obj, query, StoreResult)
00570       INTEGER*8 obj
00571       CHARACTER*(*) query
00572       INTEGER*4 StoreResult
00573       CALL wf77_Query_query(obj, query, LEN(query), StoreRes
00574      .ult)
00575       RETURN
00576       END
00577 
00578 
00579 
00580       SUBROUTINE Query_prepare(obj, query)
00581       INTEGER*8 obj
00582       CHARACTER*(*) query
00583       CALL wf77_Query_prepare(obj, query, LEN(query))
00584       RETURN
00585       END
00586 
00587 
00588 
00589       SUBROUTINE Query_prepare_with_parameters(obj, op, fiel
00590      .ds, table, where)
00591       INTEGER*8 obj
00592       INTEGER*4 op
00593       CHARACTER*(*) fields
00594       CHARACTER*(*) table
00595       CHARACTER*(*) where
00596       CALL wf77_Query_prepare_with_parameters(obj, op, field
00597      .s, LEN(fields), table, LEN(table), where, LEN(where))
00598       RETURN
00599       END
00600 
00601 
00602 
00603       INTEGER*8 FUNCTION Query_nAffectedRows(obj)
00604       INTEGER*8 obj
00605       CALL wf77_Query_nAffectedRows(obj, Query_nAffectedRows
00606      .)
00607       RETURN
00608       END
00609 
00610 
00611 
00612       INTEGER*8 FUNCTION Query_param(obj)
00613       INTEGER*8 obj
00614       CALL wf77_Query_param(obj, Query_param)
00615       RETURN
00616       END
00617 
00618 
00619 
00620       INTEGER*8 FUNCTION Query_lookup(obj, field, table, whe
00621      .re)
00622       INTEGER*8 obj
00623       CHARACTER*(*) field
00624       CHARACTER*(*) table
00625       CHARACTER*(*) where
00626       CALL wf77_Query_lookup(obj, field, LEN(field), table, 
00627      .LEN(table), where, LEN(where), Query_lookup)
00628       RETURN
00629       END
00630 
00631 
00632 
00633       INTEGER*4 FUNCTION Query_gotRecordSet(obj)
00634       INTEGER*8 obj
00635       CALL wf77_Query_gotRecordSet(obj, Query_gotRecordSet)
00636       RETURN
00637       END
00638 
00639 
00640 
00641       SUBROUTINE Query_execute(obj, StoreResult)
00642       INTEGER*8 obj
00643       INTEGER*4 StoreResult
00644       CALL wf77_Query_execute(obj, StoreResult)
00645       RETURN
00646       END
00647 
00648 
00649 
00650       SUBROUTINE Query_close(obj)
00651       INTEGER*8 obj
00652       CALL wf77_Query_close(obj)
00653       RETURN
00654       END
00655 
00656 
00657 
00658       INTEGER*8 FUNCTION new_Table(dummy, lconn, table, fiel
00659      .dkey)
00660       INTEGER*8 dummy
00661       INTEGER*8 lconn
00662       CHARACTER*(*) table
00663       CHARACTER*(*) fieldkey
00664       CALL wf77_new_Table(dummy, lconn, table, LEN(table), f
00665      .ieldkey, LEN(fieldkey), new_Table)
00666       RETURN
00667       END
00668 
00669 
00670 
00671       SUBROUTINE del_Table(obj)
00672       INTEGER*8 obj
00673       CALL wf77_del_Table(obj)
00674       RETURN
00675       END
00676 
00677 
00678 
00679       SUBROUTINE Table_loadTable(obj)
00680       INTEGER*8 obj
00681       CALL wf77_Table_loadTable(obj)
00682       RETURN
00683       END
00684 
00685 
00686 
00687       INTEGER*8 FUNCTION Table_newRec(obj)
00688       INTEGER*8 obj
00689       CALL wf77_Table_newRec(obj, Table_newRec)
00690       RETURN
00691       END
00692 
00693 
00694 
00695       SUBROUTINE Table_insert(obj)
00696       INTEGER*8 obj
00697       CALL wf77_Table_insert(obj)
00698       RETURN
00699       END
00700 
00701 
00702 
00703       SUBROUTINE Table_update(obj)
00704       INTEGER*8 obj
00705       CALL wf77_Table_update(obj)
00706       RETURN
00707       END
00708 
00709 
00710 
00711       INTEGER*8 FUNCTION new_Client(dummy, path, server, por
00712      .t, ssl, timeout)
00713       INTEGER*8 dummy
00714       CHARACTER*(*) path
00715       CHARACTER*(*) server
00716       INTEGER*4 port
00717       INTEGER*4 ssl
00718       INTEGER*8 timeout
00719       CALL wf77_new_Client(dummy, path, LEN(path), server, L
00720      .EN(server), port, ssl, timeout, new_Client)
00721       RETURN
00722       END
00723 
00724 
00725 
00726       SUBROUTINE del_Client(obj)
00727       INTEGER*8 obj
00728       CALL wf77_del_Client(obj)
00729       RETURN
00730       END
00731 
00732 
00733 
00734       INTEGER*4 FUNCTION Client_login(obj, user, pass, db)
00735       INTEGER*8 obj
00736       CHARACTER*(*) user
00737       CHARACTER*(*) pass
00738       CHARACTER*(*) db
00739       CALL wf77_Client_login(obj, user, LEN(user), pass, LEN
00740      .(pass), db, LEN(db), Client_login)
00741       RETURN
00742       END
00743 
00744 
00745 
00746       INTEGER*4 FUNCTION Client_exec(obj, cmd, data)
00747       INTEGER*8 obj
00748       CHARACTER*(*) cmd
00749       INTEGER*8 data
00750       CALL wf77_Client_exec(obj, cmd, LEN(cmd), data, Client
00751      ._exec)
00752       RETURN
00753       END
00754 
00755 
00756 
00757       INTEGER*8 FUNCTION Client_code(obj)
00758       INTEGER*8 obj
00759       CALL wf77_Client_code(obj, Client_code)
00760       RETURN
00761       END
00762 
00763 
00764 
00765       INTEGER*8 FUNCTION Client_msg(obj)
00766       INTEGER*8 obj
00767       CALL wf77_Client_msg(obj, Client_msg)
00768       RETURN
00769       END
00770 
00771 
00772 
00773       INTEGER*8 FUNCTION Client_out(obj)
00774       INTEGER*8 obj
00775       CALL wf77_Client_out(obj, Client_out)
00776       RETURN
00777       END
00778 
00779 
00780 
00781       INTEGER*8 FUNCTION Client_recv(obj)
00782       INTEGER*8 obj
00783       CALL wf77_Client_recv(obj, Client_recv)
00784       RETURN
00785       END
00786 
00787 
00788 
00789       INTEGER*8 FUNCTION Client_aux(obj)
00790       INTEGER*8 obj
00791       CALL wf77_Client_aux(obj, Client_aux)
00792       RETURN
00793       END
00794 
00795 
00796 
00797       INTEGER*8 FUNCTION new_Conf(dummy, filename)
00798       INTEGER*8 dummy
00799       CHARACTER*(*) filename
00800       CALL wf77_new_Conf(dummy, filename, LEN(filename), new
00801      ._Conf)
00802       RETURN
00803       END
00804 
00805 
00806 
00807       SUBROUTINE del_Conf(obj)
00808       INTEGER*8 obj
00809       CALL wf77_del_Conf(obj)
00810       RETURN
00811       END
00812 
00813 
00814 
00815       CHARACTER*(*) FUNCTION Conf_sval(obj, section, key)
00816       INTEGER*8 obj
00817       CHARACTER*(*) section
00818       CHARACTER*(*) key
00819       CALL wf77_Conf_sval(obj, section, LEN(section), key, L
00820      .EN(key), Conf_sval, LEN(Conf_sval))
00821       RETURN
00822       END
00823 
00824 
00825 
00826       INTEGER*4 FUNCTION Conf_ival(obj, section, key)
00827       INTEGER*8 obj
00828       CHARACTER*(*) section
00829       CHARACTER*(*) key
00830       CALL wf77_Conf_ival(obj, section, LEN(section), key, L
00831      .EN(key), Conf_ival)
00832       RETURN
00833       END
00834 
00835 
00836 

mcslogo

MCS (My Customizable Server) ver. 0.3.3-alpha3
Documentation generated on Thu Mar 22 13:22:23 UTC 2012