Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Canadian prefixes #739

Closed
wants to merge 18 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/c-cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ jobs:
- name: apt update
run: sudo apt-get update
- name: Install dependencies
run: sudo apt install -y --fix-missing make qmake6 qt6-base-dev qt6-declarative-dev libhamlib-dev build-essential libgl1-mesa-dev qt6-serialport-dev qt6-positioning-dev qt6-charts-dev qt6-l10n-tool
run: sudo apt install -y --fix-missing make qmake6 qt6-base-dev qt6-declarative-dev libhamlib-dev build-essential libgl1-mesa-dev libqt6serialport6-dev qt6-positioning-dev libqt6charts6-dev qt6-l10n-tools
- name: Move to sources folder
run: pwd
- name: qmake
run: qmake6 src.pro
- name: make
Expand Down
164 changes: 164 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,167 @@ tests/tst_mainwindow/moc_*.cpp
*.exe
*.idx
.qtc_clangd/compile_commands.json
Makefile
tests/tst_adif/moc_adif.cpp
tests/tst_adif/moc_wrapper.sh
tests/tst_adif/rcc_wrapper.sh
tests/tst_adif/target_wrapper.sh
tests/tst_adif/tst_adif
tests/tst_adif/uic_wrapper.sh
tests/tst_database/moc_adif.cpp
tests/tst_database/moc_database.cpp
tests/tst_database/moc_dataproxy_sqlite.cpp
tests/tst_database/moc_db_adif_primary_subdvisions_data.cpp
tests/tst_database/moc_qso.cpp
tests/tst_database/moc_queryexecutor.cpp
tests/tst_database/moc_utilities.cpp
tests/tst_database/moc_world.cpp
tests/tst_database/moc_wrapper.sh
tests/tst_database/rcc_wrapper.sh
tests/tst_database/target_wrapper.sh
tests/tst_database/tst_database
tests/tst_database/tst_database.cpp
tests/tst_database/uic_wrapper.sh
tests/tst_dataproxy/moc_adif.cpp
tests/tst_dataproxy/moc_database.cpp
tests/tst_dataproxy/moc_dataproxy_sqlite.cpp
tests/tst_dataproxy/moc_db_adif_primary_subdvisions_data.cpp
tests/tst_dataproxy/moc_qso.cpp
tests/tst_dataproxy/moc_queryexecutor.cpp
tests/tst_dataproxy/moc_utilities.cpp
tests/tst_dataproxy/moc_wrapper.sh
tests/tst_dataproxy/rcc_wrapper.sh
tests/tst_dataproxy/target_wrapper.sh
tests/tst_dataproxy/tst_dataproxy
tests/tst_dataproxy/uic_wrapper.sh
tests/tst_dxspot/moc_dxspot.cpp
tests/tst_dxspot/moc_frequency.cpp
tests/tst_dxspot/moc_wrapper.sh
tests/tst_dxspot/rcc_wrapper.sh
tests/tst_dxspot/target_wrapper.sh
tests/tst_dxspot/tst_dxspot
tests/tst_frequency/moc_frequency.cpp
tests/tst_frequency/moc_wrapper.sh
tests/tst_frequency/rcc_wrapper.sh
tests/tst_frequency/target_wrapper.sh
tests/tst_frequency/tst_frequency
tests/tst_locator/moc_wrapper.sh
tests/tst_locator/rcc_wrapper.sh
tests/tst_locator/target_wrapper.sh
tests/tst_locator/tst_locator
tests/tst_locator/uic_wrapper.sh
tests/tst_main/moc_wrapper.sh
tests/tst_main/rcc_wrapper.sh
tests/tst_main/target_wrapper.sh
tests/tst_main/uic_wrapper.sh
tests/tst_mainqsoentrywidget/moc_adif.cpp
tests/tst_mainqsoentrywidget/moc_database.cpp
tests/tst_mainqsoentrywidget/moc_dataproxy_sqlite.cpp
tests/tst_mainqsoentrywidget/moc_db_adif_primary_subdvisions_data.cpp
tests/tst_mainqsoentrywidget/moc_mainqsoentrywidget.cpp
tests/tst_mainqsoentrywidget/moc_qso.cpp
tests/tst_mainqsoentrywidget/moc_queryexecutor.cpp
tests/tst_mainqsoentrywidget/moc_utilities.cpp
tests/tst_mainqsoentrywidget/moc_wrapper.sh
tests/tst_mainqsoentrywidget/rcc_wrapper.sh
tests/tst_mainqsoentrywidget/target_wrapper.sh
tests/tst_mainqsoentrywidget/tst_mainqsoentrywidget
tests/tst_mainqsoentrywidget/uic_wrapper.sh
tests/tst_mainwindow/moc_wrapper.sh
tests/tst_mainwindow/qrc_klog.cpp
tests/tst_mainwindow/rcc_wrapper.sh
tests/tst_mainwindow/tst_mainwindow
tests/tst_mainwindow/uic_wrapper.sh
tests/tst_mainwindowinputqso/moc_adif.cpp
tests/tst_mainwindowinputqso/moc_database.cpp
tests/tst_mainwindowinputqso/moc_dataproxy_sqlite.cpp
tests/tst_mainwindowinputqso/moc_db_adif_primary_subdvisions_data.cpp
tests/tst_mainwindowinputqso/moc_mainwindowinputqso.cpp
tests/tst_mainwindowinputqso/moc_qso.cpp
tests/tst_mainwindowinputqso/moc_queryexecutor.cpp
tests/tst_mainwindowinputqso/moc_utilities.cpp
tests/tst_mainwindowinputqso/moc_wrapper.sh
tests/tst_mainwindowinputqso/rcc_wrapper.sh
tests/tst_mainwindowinputqso/target_wrapper.sh
tests/tst_mainwindowinputqso/tst_mainwindowinputqso
tests/tst_mainwindowinputqso/uic_wrapper.sh
tests/tst_mainwindowsattab/moc_adif.cpp
tests/tst_mainwindowsattab/moc_database.cpp
tests/tst_mainwindowsattab/moc_dataproxy_sqlite.cpp
tests/tst_mainwindowsattab/moc_db_adif_primary_subdvisions_data.cpp
tests/tst_mainwindowsattab/moc_mainwindowsattab.cpp
tests/tst_mainwindowsattab/moc_qso.cpp
tests/tst_mainwindowsattab/moc_queryexecutor.cpp
tests/tst_mainwindowsattab/moc_utilities.cpp
tests/tst_mainwindowsattab/moc_wrapper.sh
tests/tst_mainwindowsattab/rcc_wrapper.sh
tests/tst_mainwindowsattab/target_wrapper.sh
tests/tst_mainwindowsattab/tst_mainwindowsattab
tests/tst_mainwindowsattab/uic_wrapper.sh
tests/tst_qso/moc_adif.cpp
tests/tst_qso/moc_qso.cpp
tests/tst_qso/moc_utilities.cpp
tests/tst_qso/moc_wrapper.sh
tests/tst_qso/rcc_wrapper.sh
tests/tst_qso/target_wrapper.sh
tests/tst_qso/tst_qso
tests/tst_qso/uic_wrapper.sh
tests/tst_setuphamlibnetworkwidget/moc_hamlibnetworkconfigwidget.cpp
tests/tst_setuphamlibnetworkwidget/moc_wrapper.sh
tests/tst_setuphamlibnetworkwidget/rcc_wrapper.sh
tests/tst_setuphamlibnetworkwidget/target_wrapper.sh
tests/tst_setuphamlibnetworkwidget/tst_setuphamlibnetworkwidget
tests/tst_setuphamlibnetworkwidget/uic_wrapper.sh
tests/tst_setuphamlibserialwidget/moc_hamlibserialconfigwidget.cpp
tests/tst_setuphamlibserialwidget/moc_wrapper.sh
tests/tst_setuphamlibserialwidget/rcc_wrapper.sh
tests/tst_setuphamlibserialwidget/target_wrapper.sh
tests/tst_setuphamlibserialwidget/tst_setuphamlibserialwidget
tests/tst_setuphamlibserialwidget/uic_wrapper.sh
tests/tst_setuppageelog/moc_adif.cpp
tests/tst_setuppageelog/moc_database.cpp
tests/tst_setuppageelog/moc_dataproxy_sqlite.cpp
tests/tst_setuppageelog/moc_db_adif_primary_subdvisions_data.cpp
tests/tst_setuppageelog/moc_qso.cpp
tests/tst_setuppageelog/moc_queryexecutor.cpp
tests/tst_setuppageelog/moc_setuppageelog.cpp
tests/tst_setuppageelog/moc_utilities.cpp
tests/tst_setuppageelog/moc_wrapper.sh
tests/tst_setuppageelog/rcc_wrapper.sh
tests/tst_setuppageelog/target_wrapper.sh
tests/tst_setuppageelog/tst_setuppageelog
tests/tst_setuppageelog/uic_wrapper.sh
tests/tst_utilities/moc_adif.cpp
tests/tst_utilities/moc_database.cpp
tests/tst_utilities/moc_dataproxy_sqlite.cpp
tests/tst_utilities/moc_db_adif_primary_subdvisions_data.cpp
tests/tst_utilities/moc_qso.cpp
tests/tst_utilities/moc_queryexecutor.cpp
tests/tst_utilities/moc_utilities.cpp
tests/tst_utilities/moc_wrapper.sh
tests/tst_utilities/rcc_wrapper.sh
tests/tst_utilities/target_wrapper.sh
tests/tst_utilities/tst_utilities
tests/tst_utilities/uic_wrapper.sh
tests/tst_wizard/moc_adif.cpp
tests/tst_wizard/moc_downloadcty.cpp
tests/tst_wizard/moc_startwizard.cpp
tests/tst_wizard/moc_utilities.cpp
tests/tst_wizard/moc_wrapper.sh
tests/tst_wizard/rcc_wrapper.sh
tests/tst_wizard/target_wrapper.sh
tests/tst_wizard/tst_wizard
tests/tst_wizard/uic_wrapper.sh
tests/tst_world/moc_adif.cpp
tests/tst_world/moc_database.cpp
tests/tst_world/moc_dataproxy_sqlite.cpp
tests/tst_world/moc_db_adif_primary_subdvisions_data.cpp
tests/tst_world/moc_qso.cpp
tests/tst_world/moc_queryexecutor.cpp
tests/tst_world/moc_utilities.cpp
tests/tst_world/moc_world.cpp
tests/tst_world/moc_wrapper.sh
tests/tst_world/rcc_wrapper.sh
tests/tst_world/target_wrapper.sh
tests/tst_world/tst_world
tests/tst_world/uic_wrapper.sh
10 changes: 10 additions & 0 deletions src/Changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
TODO-Bug: EA8, EA9 fails for subdivisions, it is detected as EA
TODO-Bug: CT9 is detected as Portugal but subdivision is properly detected

TODO-Bug: XE Mexico subdivisions are not properly detected

TODO-BUg: Query fails due to "continent" row not existing in entity table - dataproxy::getContinentShortNameFromEntity
Make sure the table entity is updated or checked.

TODO-Bug: Add QSOs from wsjtx does not work. Failure close to int QSO::toDB(int _qsoId)
WIP: Subdivisions only works with the main prefix. It is needed to find the prefix (EB, EC for EA and so on)
TODO-Test: Add tests to test the subsivisions
TODO-Test: the copy constructor of QSO
Complete: void MainWindow::slotQSOReceived(const QSO &_qso) to add the QSO
Expand Down
12 changes: 12 additions & 0 deletions src/adif.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,18 @@ void Adif::setSponsorsList()
sponsorsList = psponsorsList;
}

bool Adif::isValidMode (const QString &_s)
{
return modes.contains(_s);
}

void Adif::setModes(const QStringList &_modes)
{ // TODO: Add here the list/table of modes to feed DB creation and/or to prevent depending on external sources
// from this class
modes.clear();
modes << _modes;
}

bool Adif::isValidFreq(const QString &_b)
{
//qDebug() << Q_FUNC_INFO << ": freq: " << _b;
Expand Down
5 changes: 4 additions & 1 deletion src/adif.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ class Adif : public QObject {
bool isValidTenTen(const QString &_b); //>0
bool isValidLogId(const QString &_b); //>0
bool isValidAntPath(const QString &_s);
bool isValidMode (const QString &_s);
bool isValidQSO_COMPLETE(const QString &_s); // "Y", "N", "NIL", "?"
QString getQSO_COMPLETEFromDB(const QString &_s); // Translates the DB value into an ADIF value
bool isValidPOTA(const QString &_s); // TODO
Expand All @@ -80,6 +81,7 @@ class Adif : public QObject {
void setLogLevel(DebugLogLevel _l);
QString getADIFField(const QString &_fieldName, const QString &_data);
QString getADIFBoolFromBool(const bool _b); // Will produce the ADIF format if a bool is received
void setModes(const QStringList &_modes); //TODO: Do not depend on external source to fill

signals:
void debugLog (QString _func, QString _msg, DebugLogLevel _level);
Expand All @@ -91,13 +93,14 @@ class Adif : public QObject {
void setContinents();
void setSponsorsList();


bool isValidCall(const QString &_c);

QString parentName;
DebugLogLevel logLevel;
QHash<QString, QString> ADIFHash; // Name, type

QStringList ARRL_sects, continents, sponsorsList;
QStringList ARRL_sects, continents, sponsorsList, modes;
};

#endif // ADIF_H
Expand Down
17 changes: 8 additions & 9 deletions src/database.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1078,7 +1078,7 @@ int DataBase::getBandIdFromName(const QString &b)
//qDebug() << Q_FUNC_INFO << ": " << b ;
QString band = b.toUpper();

QString queryString = QString("SELECT id FROM band WHERE name=:band");
QString queryString = QString("SELECT id FROM band WHERE name= :band");
QSqlQuery query;
query.prepare(queryString);
query.bindValue(":band", b);
Expand All @@ -1104,7 +1104,7 @@ int DataBase::getModeIdFromName(const QString &b)
//qDebug() << Q_FUNC_INFO << ": " << b ;
QString band = b.toUpper();

QString queryString = QString("SELECT id FROM mode WHERE name=:mode");
QString queryString = QString("SELECT id FROM mode WHERE name= :mode");
QSqlQuery query;
query.prepare(queryString);
query.bindValue(":mode", b);
Expand All @@ -1129,7 +1129,7 @@ int DataBase::getModeIdFromSubMode(const QString &b)
//qDebug() << Q_FUNC_INFO << ": " << b ;
QString band = b.toUpper();

QString queryString = QString("SELECT id FROM mode WHERE submode=:submode");
QString queryString = QString("SELECT id FROM mode WHERE submode= :submode");
QSqlQuery query;
query.prepare(queryString);
query.bindValue(":submode", b);
Expand Down Expand Up @@ -1355,7 +1355,7 @@ bool DataBase::isValidMode (const QString &b, const bool _tmp)

if (!_tmp)
return (getModeIdFromSubMode(b)>0);
QString stringQuery = QString("SELECT id FROM modetemp WHERE submode=:submode");
QString stringQuery = QString("SELECT id FROM modetemp WHERE submode= :submode");
QSqlQuery query;
query.bindValue(":submode", b);
query.prepare(stringQuery);
Expand Down Expand Up @@ -2582,10 +2582,10 @@ bool DataBase::populateTableMode(const bool NoTmp)
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('DSTAR', 'DIGITALVOICE', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('FREEDV', 'DIGITALVOICE', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('M17', 'DIGITALVOICE', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('VARA HF', 'DYNAMIC', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('VARA SATELLITE', 'DYNAMIC', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('VARA FM 1200', 'DYNAMIC', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('VARA FM 9600', 'DYNAMIC', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('VARA HF', 'DYNAMIC', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('VARA SATELLITE', 'DYNAMIC', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('VARA FM 1200', 'DYNAMIC', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('VARA FM 9600', 'DYNAMIC', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('DOMINO', 'DOMINO', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('DOMINOEX', 'DOMINO', 'NO', '0')").arg(tableName));
execQuery(Q_FUNC_INFO, QString("INSERT INTO %1 (submode, name, cabrillo, deprecated) VALUES ('DOMINOF', 'DOMINO', 'NO', '1')").arg(tableName));
Expand Down Expand Up @@ -6597,7 +6597,6 @@ int DataBase::getLastInsertedQSO()
}
query.finish();
return id;

//qDebug() << Q_FUNC_INFO << " - END";
}

Expand Down
36 changes: 18 additions & 18 deletions src/database/db_adif_primary_subdvisions_data.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,52 +29,52 @@ bool DB_ADIF_Primary_Subdvisions_data::addData()
"FOREIGN KEY (dxcc) REFERENCES entity (dxcc) )");
*/

qDebug() << Q_FUNC_INFO << " - Checking if DB exists";
//qDebug() << Q_FUNC_INFO << " - Checking if DB exists";
if (!isDBCreated())
return false;
qDebug() << Q_FUNC_INFO << " - Adding 1";
//qDebug() << Q_FUNC_INFO << " - Adding 1";
if (!add_Canada_1()) // Adds the data for Canada
return false;
qDebug() << Q_FUNC_INFO << " - Adding 6";
//qDebug() << Q_FUNC_INFO << " - Adding 6";
if (!add_USA_6()) // Adds the data for Alaska
return false;
qDebug() << Q_FUNC_INFO << " - Adding 21";
//qDebug() << Q_FUNC_INFO << " - Adding 21";
if (!add_EA6_21()) // Adds the data for Balearic Is
return false;
qDebug() << Q_FUNC_INFO << " - Adding 29";
//qDebug() << Q_FUNC_INFO << " - Adding 29";
if (!add_EA8_29()) // Adds the data for Canary Is
return false;
qDebug() << Q_FUNC_INFO << " - Adding 32";
//qDebug() << Q_FUNC_INFO << " - Adding 32";
if (!add_EA9_32()) // Adds the data for Ceuta y Melilla
return false;
qDebug() << Q_FUNC_INFO << " - Adding 50";
//qDebug() << Q_FUNC_INFO << " - Adding 50";
if (!add_Mexico_50()) // Adds the data for Mexico
return false;
qDebug() << Q_FUNC_INFO << " - Adding 100";
//qDebug() << Q_FUNC_INFO << " - Adding 100";
if (!add_Argentina_100()) // Adds the data for Argentina
return false;
qDebug() << Q_FUNC_INFO << " - Adding 108";
//qDebug() << Q_FUNC_INFO << " - Adding 108";
if (!add_Brazil_108()) // Adds the data for Brazil
return false;
qDebug() << Q_FUNC_INFO << " - Adding 110";
//qDebug() << Q_FUNC_INFO << " - Adding 110";
if (!add_USA_110()) // Adds the data for Hawaii
return false;
qDebug() << Q_FUNC_INFO << " - Adding 149";
//qDebug() << Q_FUNC_INFO << " - Adding 149";
if (!add_CT_149()) // Adds the data for Azores
return false;
qDebug() << Q_FUNC_INFO << " - Adding 256";
//qDebug() << Q_FUNC_INFO << " - Adding 256";
if (!add_CT_256()) // Adds the data for Madeira
return false;
qDebug() << Q_FUNC_INFO << " - Adding 272";
//qDebug() << Q_FUNC_INFO << " - Adding 272";
if (!add_CT_272()) // Adds the data for Portugal
return false;
qDebug() << Q_FUNC_INFO << " - Adding 281";
//qDebug() << Q_FUNC_INFO << " - Adding 281";
if (!add_EA_281()) // Adds the data for Spain
return false;
qDebug() << Q_FUNC_INFO << " - Adding 291";
//qDebug() << Q_FUNC_INFO << " - Adding 291";
if (!add_USA_291()) // Adds the data for United States of America
return false;
qDebug() << Q_FUNC_INFO << " - Adding 339";
//qDebug() << Q_FUNC_INFO << " - Adding 339";
if (!add_Japan_339()) // Adds the data for Japan
return false;

Expand Down Expand Up @@ -131,7 +131,7 @@ bool DB_ADIF_Primary_Subdvisions_data::add_Canada_1()
<< "'1', 'New Brunswick', 'NB', 'VE9', '05', '09', '', '-1', '', '', 'N'"
<< "'1', 'New foundland', 'NL', 'VO1', '02', '09', '', '-1', '', '', 'N'"
<< "'1', 'New foundland', 'NL', 'VO1', '05', '09', '', '-1', '', '', 'N'"
<< "'1', 'Yukon', 'YT', 'vy1', '01', '02', '', '-1', '', '', 'N'"
<< "'1', 'Yukon', 'YT', 'VY1', '01', '02', '', '-1', '', '', 'N'"
<< "'1', 'Prince Edward island', 'PE', 'VY2', '05', '09', '', '-1', '', '', 'N'"
<< "'1', 'Nunavut', 'NU', 'VY0', '02', '04', '', '-1', '', '', 'N'"
<< "'1', 'Nunavut', 'NU', 'VY0', '02', '09', '', '-1', '', '', 'N'"
Expand Down Expand Up @@ -563,7 +563,7 @@ bool DB_ADIF_Primary_Subdvisions_data::add_Japan_339()
<< "'339', 'Tokyo', '10', 'JA1', '25', '45', 'Kanto', '-1', '', '', 'N'"
<< "'339', 'Yamanashi', '17', 'JA1', '25', '45', 'Kanto', '-1', '', '', 'N'"
<< "'339', 'Aichi', '20', 'JA2', '25', '45', 'Tokai', '-1', '', '', 'N'"
<< "'339', 'Gifu', '19', 'JA', '25', '45', 'Tokai', '-1', '', '', 'N'"
<< "'339', 'Gifu', '19', 'JA2', '25', '45', 'Tokai', '-1', '', '', 'N'"
<< "'339', 'Mie', '21', 'JA2', '25', '45', 'Tokai', '-1', '', '', 'N'"
<< "'339', 'Shizuoka', '18', 'JA2', '25', '45', 'Tokai', '-1', '', '', 'N'"
<< "'339', 'Hyogo', '27', 'JA3', '25', '45', 'Kansai', '-1', '', '', 'N'"
Expand Down
Loading
Loading