SEND_DATA

Kata kerja SEND_DATA menempatkan data di buffer pengiriman unit logis lokal (LU) untuk transmisi ke program transaksi mitra (TP).

Struktur berikut menjelaskan blok kontrol kata kerja (VCB) yang digunakan oleh kata kerja SEND_DATA .

Sintaksis

  
struct send_data {  
    unsigned short      opcode;  
    unsigned char       opext;  
    unsigned char       reserv2;  
    unsigned short      primary_rc;  
    unsigned long       secondary_rc;  
    unsigned char       tp_id[8];  
    unsigned long       conv_id;  
    unsigned char       rts_rcvd;  
       unsigned char       data_type;  
    unsigned short int  dlen;  
    unsigned char FAR * dptr ;  
    unsigned char       type;  
    unsigned char       reserv4;  
};   

Anggota

Opcode
Parameter yang disediakan. Menentukan kode operasi kata kerja, AP_B_SEND_DATA.

opext
Parameter yang disediakan. Menentukan ekstensi operasi kata kerja, AP_BASIC_CONVERSATION.

reserv2
Bidang yang dipesan.

primary_rc
Parameter yang dikembalikan. Menentukan kode pengembalian utama yang ditetapkan oleh APPC pada penyelesaian kata kerja. Kode pengembalian yang valid bervariasi tergantung pada kata kerja APPC yang dikeluarkan. Lihat Mengembalikan Kode untuk kode kesalahan yang valid untuk kata kerja ini.

secondary_rc
Parameter yang dikembalikan. Menentukan kode pengembalian sekunder yang ditetapkan oleh APPC pada penyelesaian kata kerja. Kode pengembalian yang valid bervariasi tergantung pada kata kerja APPC yang dikeluarkan. Lihat Mengembalikan Kode untuk kode kesalahan yang valid untuk kata kerja ini.

tp_id
Parameter yang disediakan. Mengidentifikasi TP lokal.

Nilai parameter ini dikembalikan oleh TP_STARTED dalam TP pemanggilan atau dengan RECEIVE_ALLOCATE dalam TP yang dipanggil.

conv_id
Parameter yang disediakan. Menyediakan pengidentifikasi percakapan.

Nilai parameter ini dikembalikan oleh ALOKASI dalam TP pemanggilan atau dengan RECEIVE_ALLOCATE dalam TP yang dipanggil.

rts_rcvd
Parameter yang dikembalikan. Menyediakan indikator request-to-send-received.

  • AP_YES menunjukkan bahwa TP mitra telah mengeluarkan REQUEST_TO_SEND, yang meminta agar TP lokal mengubah percakapan menjadi status RECEIVE. Untuk mengubah status RECEIVE, TP lokal dapat menggunakan PREPARE_TO_RECEIVE, RECEIVE_AND_WAIT, atau RECEIVE_AND_POST.

  • AP_NO menunjukkan bahwa TP mitra belum mengeluarkan REQUEST_TO_SEND.

    data_type
    Parameter yang disediakan. Menentukan jenis data yang akan dikirim jika Titik Sinkronisasi didukung. Parameter yang valid adalah:

    AP_APPLICATION

    AP_USER_CONTROL_DATA

    AP_PS_HEADER

    dlen
    Parameter yang disediakan. Menentukan jumlah byte data yang akan dimasukkan ke dalam buffer pengiriman LU lokal. Kisarannya adalah dari 0 hingga 65535.

    dptr
    Parameter yang disediakan. Menentukan alamat buffer yang berisi data yang akan dimasukkan ke dalam buffer kirim LU lokal.

    Untuk sistem operasi Microsoft Windows, buffer data dapat berada di area data statis atau di area yang dialokasikan secara global. Buffer data harus sepenuhnya pas di dalam area ini.

    jenis
    Parameter yang disediakan. Memungkinkan TP mengirim data dan melakukan fungsi lain dalam satu panggilan API. Misalnya, Anda dapat menggabungkan SEND_DATA dengan jenis yang diatur ke CONFIRM untuk mencapai tujuan yang sama seperti mengeluarkan SEND_DATA diikuti oleh CONFIRM.

  • AP_SEND_DATA_CONFIRM sesuai dengan SEND_DATA diikuti oleh CONFIRM.

  • AP_SEND_DATA_FLUSH sesuai dengan SEND_DATA diikuti oleh FLUSH.

  • AP_SEND_DATA_DEALLOC_ABEND sesuai dengan SEND_DATA diikuti oleh DEALLOCATE dengan dealloc_type AP_ABEND_PROG.

  • AP_SEND_DATA_DEALLOC_FLUSH sesuai dengan SEND_DATA diikuti oleh DEALLOCATE dengan dealloc_type AP_FLUSH.

  • AP_SEND_DATA_DEALLOC_SYNC_LEVEL sesuai dengan SEND_DATA diikuti oleh DEALLOCATE dengan dealloc_type AP_SYNC_LEVEL.

  • AP_SEND_DATA_P_TO_R_FLUSH sesuai dengan SEND_DATA diikuti oleh PREPARE_TO_RECEIVE dengan ptr_type AP_FLUSH.

  • AP_SEND_DATA_P_TO_R_SYNC_LEVEL sesuai dengan SEND_DATA diikuti oleh PREPARE_TO_RECEIVE dengan ptr_type AP_SYNC_LEVEL dan kunci yang diatur ke AP_SHORT.

    reserv4
    Bidang yang dipesan.

Kode Pengembalian

AP_OK
Kode pengembalian utama; kata kerja berhasil dijalankan.

AP_PARAMETER_CHECK
Kode pengembalian utama; kata kerja tidak dijalankan karena kesalahan parameter.

AP_BAD_CONV_ID

Kode pengembalian sekunder; nilai conv_id tidak cocok dengan pengidentifikasi percakapan yang ditetapkan oleh APPC.

AP_BAD_LL

Kode pengembalian sekunder; bidang panjang rekaman logis dari rekaman logis yang berisi nilai yang tidak valid—0x0000, 0x0001, 0x8000, atau 0x8001. Lihat Tentang Program Transaksi untuk informasi tentang catatan logis.

AP_BAD_TP_ID

Kode pengembalian sekunder; nilai tp_id tidak cocok dengan pengidentifikasi TP yang ditetapkan oleh APPC.

AP_INVALID_DATA_SEGMENT

Kode pengembalian sekunder; panjang yang ditentukan untuk buffer data lebih panjang dari segmen yang dialokasikan untuk berisi buffer.

AP_SEND_DATA_INVALID_TYPE

Kode pengembalian sekunder; jenis yang ditentukan tidak dikenali oleh APPC.

AP_SEND_DATA_CONFIRM_SYNC_NONE

Kode pengembalian sekunder; tipe CONFIRM tidak diizinkan untuk percakapan yang dialokasikan dengan sync_level NONE.

AP_STATE_CHECK
Kode pengembalian utama; kata kerja tidak dijalankan karena dikeluarkan dalam status tidak valid.

AP_SEND_DATA_NOT_SEND_STATE

Kode pengembalian sekunder; TP lokal dikeluarkan SEND_DATA, tetapi percakapan tidak dalam status KIRIM.

AP_SEND_DATA_NOT_LL_BDY

Kode pengembalian sekunder; TP dimulai tetapi tidak selesai mengirim rekaman logis. Ini hanya terjadi ketika parameter jenis adalah salah satu dari yang berikut:

AP_SEND_DATA_CONFIRM

AP_SEND_DATA_DEALLOC_FLUSH

AP_SEND_DATA_DEALLOC_SYNC_LEVEL

AP_SEND_DATA_P_TO_R_FLUSH

AP_SEND_DATA_P_TO_R_SYNC_LEVEL

AP_ALLOCATION_ERROR
Kode pengembalian utama; APPC gagal mengalokasikan percakapan. Status percakapan diatur ke RESET.

Kode ini dapat dikembalikan melalui kata kerja yang dikeluarkan setelah ALOKASI.

AP_ALLOCATION_FAILURE_NO_RETRY

Kode pengembalian sekunder; percakapan tidak dapat dialokasikan karena kondisi permanen, seperti kesalahan konfigurasi atau kesalahan protokol sesi. Untuk menentukan kesalahan, administrator sistem harus memeriksa file log kesalahan. Jangan coba lagi alokasi sampai kesalahan telah diperbaiki.

AP_ALLOCATION_FAILURE_RETRY

Kode pengembalian sekunder; percakapan tidak dapat dialokasikan karena kondisi sementara, seperti kegagalan tautan. Alasan kegagalan dicatat dalam log kesalahan sistem. Coba lagi alokasinya.

AP_CONVERSATION_TYPE_MISMATCH

Kode pengembalian sekunder; LU atau TP mitra tidak mendukung jenis percakapan (dasar atau dipetakan) yang ditentukan dalam permintaan alokasi.

AP_PIP_NOT_ALLOWED

Kode pengembalian sekunder; permintaan alokasi yang ditentukan data PIP, tetapi TP mitra tidak memerlukan data ini, atau LU mitra tidak mendukungnya.

AP_PIP_NOT_SPECIFIED_CORRECTLY

Kode pengembalian sekunder; TP mitra memerlukan data PIP, tetapi permintaan alokasi yang ditentukan tidak ada data PIP atau jumlah parameter yang salah.

AP_SECURITY_NOT_VALID

Kode pengembalian sekunder; pengidentifikasi pengguna atau kata sandi yang ditentukan dalam permintaan alokasi tidak diterima oleh LU mitra.

AP_SYNC_LEVEL_NOT_SUPPORTED

Kode pengembalian sekunder; TP mitra tidak mendukung sync_level (AP_NONE atau AP_CONFIRM_SYNC_LEVEL) yang ditentukan dalam permintaan alokasi, atau sync_level tidak dikenali.

AP_TP_NAME_NOT_RECOGNIZED

Kode pengembalian sekunder; LU mitra tidak mengenali nama TP yang ditentukan dalam permintaan alokasi.

AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

Kode pengembalian sekunder; LU jarak jauh menolak permintaan alokasi karena tidak dapat memulai TP mitra yang diminta. Kondisinya permanen. Alasan kesalahan mungkin dicatat pada simpul jarak jauh. Jangan coba lagi alokasi sampai kesalahan telah diperbaiki.

AP_TRANS_PGM_NOT_AVAIL_RETRY

Kode pengembalian sekunder; LU jarak jauh menolak permintaan alokasi karena tidak dapat memulai TP mitra yang diminta. Kondisinya mungkin bersifat sementara, seperti waktu habis. Alasan kesalahan mungkin dicatat pada simpul jarak jauh. Coba lagi alokasinya.

AP_COMM_SUBSYSTEM_ABENDED
Kode pengembalian utama; menunjukkan salah satu kondisi berikut:

  • Simpul yang digunakan oleh percakapan ini menemukan ABEND.

  • Koneksi antara TP dan simpul PU 2.1 telah rusak (kesalahan LAN).

  • SnaBase di komputer TP mengalami ABEND.

    Administrator sistem harus memeriksa log kesalahan untuk menentukan alasan ABEND.

    AP_COMM_SUBSYSTEM_NOT_LOADED
    Kode pengembalian utama; komponen yang diperlukan tidak dapat dimuat atau telah dihentikan saat memproses kata kerja. Dengan demikian, komunikasi tidak dapat terjadi. Hubungi administrator sistem untuk tindakan korektif.

    Ketika kode pengembalian ini digunakan dengan ALLOCATE, mungkin menunjukkan bahwa tidak ada sistem komunikasi yang dapat ditemukan untuk mendukung LU lokal. (Misalnya, alias LU lokal yang ditentukan dengan TP_STARTED salah atau belum dikonfigurasi.) Perhatikan bahwa jika lu_alias atau mode_name kurang dari delapan karakter, Anda harus memastikan bahwa bidang ini diisi dengan spasi di sebelah kanan. Kesalahan ini dikembalikan jika parameter ini tidak diisi dengan spasi, karena tidak ada simpul yang tersedia yang dapat memenuhi permintaan ALOKASI .

    Ketika ALOKASI menghasilkan kode pengembalian ini untuk sistem Klien Server Integrasi Host yang dikonfigurasi dengan beberapa simpul, ada dua kode pengembalian sekunder sebagai berikut:

    0xF0000001

    Kode pengembalian sekunder; tidak ada simpul yang telah dimulai.

    0xF0000002

    Kode pengembalian sekunder; setidaknya satu simpul telah dimulai, tetapi LU lokal (ketika TP_STARTED dikeluarkan) tidak dikonfigurasi pada simpul aktif apa pun. Masalahnya bisa salah satu dari yang berikut ini:

  • Simpul dengan LU lokal tidak dimulai.

  • LU lokal tidak dikonfigurasi.

    AP_CONV_FAILURE_NO_RETRY
    Kode pengembalian utama; percakapan dihentikan karena kondisi permanen, seperti kesalahan protokol sesi. Administrator sistem harus memeriksa log kesalahan sistem untuk menentukan penyebab kesalahan. Jangan coba lagi percakapan sampai kesalahan telah dikoreksi.

    AP_CONV_FAILURE_RETRY
    Kode pengembalian utama; percakapan dihentikan karena kesalahan sementara. Mulai ulang TP untuk melihat apakah masalah terjadi lagi. Jika ya, administrator sistem harus memeriksa log kesalahan untuk menentukan penyebab kesalahan.

    AP_CONVERSATION_TYPE_MIXED
    Kode pengembalian utama; TP telah mengeluarkan kata kerja percakapan dasar dan terpetakan. Hanya satu jenis yang dapat dikeluarkan dalam satu percakapan.

    AP_INVALID_VERB_SEGMENT
    Kode pengembalian utama; VCB diperluas di luar akhir segmen data.

    AP_PROG_ERROR_PURGING
    Kode pengembalian utama; saat dalam status RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND, atau CONFIRM_DEALLOCATE, TP mitra mengeluarkan SEND_ERROR dengan err_type diatur ke AP_PROG. Data yang dikirim tetapi belum diterima dibersihkan.

    AP_STACK_TOO_SMALL
    Kode pengembalian utama; ukuran tumpukan aplikasi terlalu kecil untuk menjalankan kata kerja. Tingkatkan ukuran tumpukan aplikasi Anda.

    AP_CONV_BUSY
    Kode pengembalian utama; hanya ada satu kata kerja percakapan yang luar biasa pada satu waktu pada percakapan apa pun. Ini dapat terjadi jika TP lokal memiliki beberapa utas, dan lebih dari satu utas mengeluarkan panggilan APPC menggunakan conv_id yang sama.

    AP_THREAD_BLOCKING
    Kode pengembalian utama; utas panggilan sudah dalam panggilan pemblokiran.

    AP_UNEXPECTED_DOS_ERROR
    Kode pengembalian utama; sistem operasi telah mengembalikan kesalahan ke APPC saat memproses panggilan APPC dari TP lokal. Kode pengembalian sistem operasi dikembalikan melalui secondary_rc. Ini muncul dalam urutan intel byte-swapped. Jika masalah berlanjut, konsultasikan dengan administrator sistem.

    AP_DEALLOC_ABEND_PROG
    Kode pengembalian utama; percakapan telah dibatalkan alokasinya karena salah satu alasan berikut:

  • TP mitra telah mengeluarkan DEALLOCATE dengan dealloc_type diatur ke AP_ABEND_PROG.

  • TP mitra telah menemukan ABEND, menyebabkan LU mitra mengirim permintaan DEALLOCATE .

    AP_DEALLOC_ABEND_SVC
    Kode pengembalian utama; percakapan telah dibatalkan alokasinya karena TP mitra mengeluarkan DEALLOCATE dengan dealloc_type diatur ke AP_ABEND_SVC.

    AP_DEALLOC_ABEND_TIMER
    Kode pengembalian utama; percakapan telah dibatalkan alokasinya karena TP mitra mengeluarkan DEALLOCATE dengan dealloc_type diatur ke AP_ABEND_TIMER.

    AP_SVC_ERROR_PURGING
    Kode pengembalian utama; mitra TP (atau MITRA LU) mengeluarkan kata kerja SEND_ERROR dengan err_type diatur ke AP_SVC saat dalam status RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND, atau CONFIRM_DEALLOCATE. Data yang dikirim ke TP mitra mungkin telah dihapus menyeluruh.

Komentar

Percakapan harus dalam status KIRIM ketika TP mengeluarkan kata kerja ini. Perubahan status, berdasarkan primary_rc, dirangkum dalam tabel berikut.

primary_rc Status baru
AP_OK Tidak ada perubahan
AP_ALLOCATION_ERROR ATUR ULANG
AP_CONV_FAILURE_RETRY ATUR ULANG
AP_CONV_FAILURE_NO_RETRY ATUR ULANG
AP_DEALLOC_ABEND ATUR ULANG
AP_DEALLOC_ABEND_PROG ATUR ULANG
AP_DEALLOC_ABEND_SVC ATUR ULANG
AP_DEALLOC_ABEND_TIMER ATUR ULANG
AP_PROG_ERROR_PURGING MENERIMA
AP_SVC_ERROR_PURGING MENERIMA

SEND_DATA mungkin menunggu tanpa batas waktu karena TP mitra belum mengeluarkan kata kerja terima. Jika ini terjadi, buffer kirim mungkin terisi.

Data yang dikumpulkan dalam buffer pengiriman LU lokal ditransmisikan ke LU mitra (dan mitra TP) ketika salah satu hal berikut terjadi:

  • Buffer pengiriman terisi.

  • TP lokal mengeluarkan FLUSH, CONFIRM, atau DEALLOCATE (atau kata kerja lain yang menyiram buffer kirim LU).