37 COMMON /hrdwrd/ nbytw,nbitw,iord(8)
38 COMMON /charac/ iascii,iatoe(0:255),ietoa(0:255)
41 CHARACTER*128 bort_str,errstr
42 CHARACTER*8 cint,dint,cvstr
43 CHARACTER*6 cndian,clang
79 10
IF(i.GE.65) goto 900
80 IF(mod(i,8).NE.0) goto 901
98 int = ishft(1,(nbytw-i)*8)
100 IF(cint(j:j).NE.dint(j:j)) goto 20
103 20
IF(j.GT.nbytw) goto 902
114 ELSEIF(ia.EQ.193)
THEN
415 errstr =
'=============== ' //
416 .
'WELCOME TO THE BUFR ARCHIVE LIBRARY' //
' =============='
418 WRITE ( unit=errstr, fmt=
'(A,I2)' )
419 .
' MACHINE CHARACTERISTICS: NUMBER OF BYTES PER WORD =', nbytw
421 WRITE ( unit=errstr, fmt=
'(A,I3)' )
422 .
' NUMBER OF BITS PER WORD =', nbitw
424 errstr =
' BYTE ORDER IS ' // cndian //
427 errstr =
' ' // clang //
428 .
' IS THE NATIVE LANGUAGE'
430 errstr =
'====================== VERSION: ' // cvstr //
431 .
'=========================='
440 900
WRITE(bort_str,
'("BUFRLIB: WRDLEN - MACHINE WORD LENGTH IS '//
441 .
'LIMITED TO 64 BITS (THIS MACHINE APPARENTLY HAS",I4," BIT '//
444 901
WRITE(bort_str,
'("BUFRLIB: WRDLEN - MACHINE WORD LENGTH (",I4,"'//
445 .
') IS NOT A MULTIPLE OF 8 (THIS MACHINE HAS WORDS NOT ON WHOLE'//
446 .
' BYTE BOUNDARIES!)")') i
448 902
WRITE(bort_str,
'("BUFRLIB: WRDLEN - BYTE ORDER CHECKING MISTAKE'//
449 . .GT.
', LOOP INDEX J (HERE =",I3,") IS NO. OF BYTES PER WORD '//
450 .
'ON THIS MACHINE (",I3,")")') j,nbytw
452 903
WRITE(bort_str,
'("BUFRLIB: WRDLEN - CAN''T DETERMINE MACHINE '//
453 .
'NATIVE LANGUAGE (CHAR. A UNPACKS TO INT.",I4," NEITHER ASCII '//
454 .
' (65) NOR EBCDIC (193)")') ia
function iupm(CBAY, NBITS)
THIS FUNCTION UNPACKS AND RETURNS A BINARY INTEGER WORD CONTAINED WITHIN NBITS BITS OF A CHARACTER ST...
subroutine wrdlen
This subroutine figures out some important information about the local machine on which the BUFRLIB s...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...