[Date Prev][Date Next][Thread Prev][Thread Next]
[Author Index] [Date Index] [Thread Index]
[SQR-USERS Info] [SQRUG Home Page]

PSRECFIELD.USEEDIT



for those of you working on the highly technical end of PeopleSoft
(namely, the back-end), you should find the following quite useful.

having no way of determining (easily) which bit i needed to mask
in the USEEDIT field in PSRECFIELD to determine whether or
not the "Required" bit had been set, i sat down and coded up
an SQR that searched our PS-delivered databases (which has
quite a few Record definitions for Time & Labor, Payroll, etc.)
to see if specific bits had been set on/off...

and after much trial and error, i have unearthed this information:

PSRECFIELD.USEEDIT
bit    value  flag
  0        1  Key
  1        2  Duplicate Order Key
  2        4  System Maintained
  3        8  Audit Field Add
  4       16  Alternate Search Key
  5       32  List Box Item
  6       64  Descending Key
  7      128  Audit Field Change
  8      256  Required
  9      512  Translate Table Edit
 10     1024  Audit Field Delete
 11     2048  Search Key
 12     4096  Reasonable Date
 13     8192  Yes/No Table Edit
 14    16384  Prompt Table Edit
 15    32768  Auto-Update
 16    65536  Identifies field as Field in SubRecord
 17   131072  (Reserved / Not Used)
 18   262144  From Search Field
 19   524288  Through Search Field


if you want to try do some bitmasking yourself, here's how i did it...

begin-setup
create-array name=bit size=20
  field=n:number
end-setup

begin-program
begin-select
rf.recname   &rec
rf.fieldname &fld
rf.useedit   &use
  let $RECNAME = &rec
  let $FIELDNAME = &fld
  let #USEEDIT = &use
  if #USEEDIT <> 0
    do getUSEEDIT
    do printUSEEDIT
  end-if
from psrecfield rf
order by recname,fieldname
end-select
end-program

begin-procedure getUSEEDIT
let #n = #USEEDIT
let #i = 19
let #b = 0
while #i >= 0
  let #p = power(2,#i)
  if #p > #n
    let #b = 0
  else
    let #b = 1
    subtract #p from #n
  end-if
  put #b into bit(#i) n
  subtract 1 from #i
end-while
end-procedure getUSEEDIT

begin-procedure printUSEEDIT
let $d = lpad($RECNAME,20,'  ') || ' '
let $c = lpad(to_char(#USEEDIT),5,' ')
let $d = $d || rpad($FIELDNAME,20,' ') || '  ' || $c || ' : '
let #i = 19
while #i >= 0
  get #b from bit(#i) n
  let $c = to_char(#b)
  let $d = $d || $c
  subtract 1 from #i
end-while
display $d
end-procedure printUSEEDIT


this is easy enough to hack up in order to determine if a particular bit has been set.
bon appetit!



(kris)janis p. gale
hrsd - federal reserve bank of new york
x8163