/*$$$  SUBPROGRAM DOCUMENTATION BLOCK
C
C SUBPROGRAM:    CWBMG
C   PRGMMR: ATOR             ORG: NP12       DATE: 2005-11-29
C
C ABSTRACT:  THIS ROUTINE WRITES A SPECIFIED NUMBER OF BYTES TO THE
C   SYSTEM FILE MOST RECENTLY OPENED FOR WRITING/OUTPUT VIA BUFR
C   ARCHIVE LIBRARY ROUTINE COBFL.
C
C PROGRAM HISTORY LOG:
C 2005-11-29  J. ATOR    -- ORIGINAL AUTHOR
C
C USAGE:    CALL CWBMG( BMG, NMB, IRET )
C   INPUT ARGUMENT LIST:
C     BMG      - CHARACTER*1: ARRAY CONTAINING BYTES TO BE WRITTEN
C     NMB      - INTEGER: NUMBER OF BYTES WITHIN BMG TO BE WRITTEN
C
C   OUTPUT ARGUMENT LIST:
C     IRET     - INTEGER: RETURN CODE:
C                  0 = normal return
C                 -1 = I/O error occurred while writing
C
C REMARKS:
C    THIS ROUTINE CALLS:        BORT
C    THIS ROUTINE IS CALLED BY: None
C                               Normally called only by application
C                               programs.
C
C ATTRIBUTES:
C   LANGUAGE: C
C   MACHINE:  PORTABLE TO ALL PLATFORMS
C
C$$$*/

#include "bufrlib.h"

void cwbmg( char *bmg, f77int *nmb, f77int *iret )
{
    char errstr[129];

/*
**  Make sure that a file is open for writing.
*/
    if ( pbf[1] == NULL ) {
	sprintf( errstr, "BUFRLIB: CWBMG - NO FILE IS OPEN FOR WRITING" );
        bort( errstr, ( f77int ) strlen( errstr ) );
    }
/*
**  Write the BUFR message to the file.
*/
    *iret = ( ( fwrite( bmg, 1, *nmb, pbf[1] ) == *nmb ) ? 0 : -1 );

    return;
}