/*-------------------------------------------------------------------+ | COPYRIGHT (C) 1995, SAS INSTITUTE INC. | | UNPUBLISHED - ALL RIGHTS RESERVED | | S A S / C S A M P L E | | | | NAME: GDDM.H | | LANGUAGE: C | | PURPOSE: This header file is included by the BARCHART sample | | program. It contains definitions of macros used | | to call GDDM functions. Only those functions used | | by the sample program are included. | | | | This header file can be used to cause the sample | | program to call either the non-reentrant or the | | reentrant version of the GDDM functions. The | | desired interface is controlled by the definition | | of the preprocessor symbol GDDMRENT. If GDDMRENT | | is defined, the reentrant functions are used; | | otherwise, the non-reentrant functions are used. | | | +-------------------------------------------------------------------*/ /*-------------------------------------------------------------------*/ /* */ /* Define the GDDM Application Anchor Block (AAB) only if the */ /* GDDMRENT symbol is defined. If GDDMRENT is not defined, AAB is */ /* defined to a null string. AABNC is defined without the trailing */ /* comma, so we don't cause syntax errors if AAB is the only */ /* argument. */ /* */ /*-------------------------------------------------------------------*/ #ifdef GDDMRENT struct aab { short sc; /* GDDM severity code */ short ec; /* GDDM error code */ void * ap; /* GDDM anchor pointer */ } aab = { 0, 0, NULL }; #define AAB @aab, #define AABNC @aab #else #define AAB #define AABNC #endif /*-------------------------------------------------------------------*/ /* */ /* Functions beginning with A */ /* */ /*-------------------------------------------------------------------*/ #define ascget(field_id,length,string) \ __asm_ascget (AAB @(field_id), @(length), string) #define ascput(field_id,length,string) \ __asm_ascput (AAB @(field_id), @(length), string) #define asdfld(field_id,row,column,depth,width,type) \ __asm_asdfld (AAB @(field_id), @(row), @(column), @(depth), \ @(width), @(type)) #define asdflt(count,array) \ __asm_asdflt (AAB @(count), array) #define asdfmt(n_fields,count,array) \ __asm_asdfmt (AAB @(n_fields), @(count), array) #define asfcol(field_id,color) \ __asm_asfcol (AAB @(field_id), @(color)) #define asfcur(field_id,row,column) \ __asm_asfcur (AAB @(field_id), @(row), @(column)) #define asftyp(field_id,type) \ __asm_asftyp (AAB @(field_id), @(type)) #define asread(attype,attval,count) \ __asm_asread (AAB @(attype), @(attval), @(count)) /*-------------------------------------------------------------------*/ /* */ /* Functions beginning with F */ /* */ /* Note that there are two different definitions of the fsinit */ /* macro depending on the setting of the GDDMRENT symbol. */ /* */ /*-------------------------------------------------------------------*/ #define fsalrm() \ __asm_fsalrm (AABNC) #ifdef GDDMRENT #define fsinit() \ __asm_fsinr (AABNC) #else #define fsinit() \ __asm_fsinn () #endif #define fsterm() \ __asm_fsterm (AABNC) /*-------------------------------------------------------------------*/ /* */ /* Functions beginning with G */ /* */ /*-------------------------------------------------------------------*/ #define gsarea(control) \ __asm_gsarea (AAB @(control)) #define gscb(width,height) \ __asm_gscb (AAB @(width), @(height)) #define gschar(x,y,length,string) \ __asm_gschar (AAB @(x), @(y), @(length), string) #define gscm(n) \ __asm_gscm (AAB @(n)) #define gscol(n) \ __asm_gscol (AAB @(n)) #define WHITE -2 #define BLACK -1 #define DEFAULT 0 #define BLUE 1 #define RED 2 #define MAGENTA 3 #define GREEN 4 #define CYAN 5 #define YELLOW 6 #define NEUTRAL 7 #define BACKGROUND 8 #define gscs(symbol_set_id) \ __asm_gscs (AAB @(symbol_set_id)) #define gsenda() \ __asm_gsenda (AABNC) #define gsline(x,y) \ __asm_gsline (AAB @(x), @(y)) #define gslss(type,symbol_set_name,symbol_set_id) \ __asm_gslss (AAB @(type), symbol_set_name, @(symbol_set_id)) #define gslw(linewidth) \ __asm_gslw (AAB @(linewidth)) #define gsmove(x,y) \ __asm_gsmove (AAB @(x), @(y)) #define gsplne(count,xarray,yarray) \ __asm_gsplne (AAB @(count), xarray, yarray) #define gsqcb(x,y) \ __asm_gsqcb (AAB @(x), @(y)) #define gsqtb(length,string,count,x_array,y_array) \ __asm_gsqtb (AAB @(length), string, @(count), x_array, y_array) #define gsscls() \ __asm_gsscls (AABNC) #define gssdel(segment_id) \ __asm_gssdel (AAB @(segment_id)) #define gsseg(segment_id) \ __asm_gsseg (AAB @(segment_id)) #define gsuwin(x1,x2,y1,y2) \ __asm_gsuwin (AAB @(x1), @(x2), @(y1), @(y2))